版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、参考代码:#include STC15F2K60S2.H#include MAIN.H#include HAREWARE.H#include DIG.H#include I2C.H#include DELAY.H#include LED.Hsbit s4 = P33;/按键S4sbit s5 = P32;/按键S5sbit s6 = P31;/按键S6sbit s7 = P30;/按键S7unsigned int PCF_NUM = 0;/电压值unsigned char led_mode = 0xff; /LED灯点亮模式unsigned int f_num = 0;/频率数值unsigne
2、d char j = 0;/频率测量里面的等待中断标志unsigned char diya_num = 0;/储存模数转换返回的电压值unsigned char timer = 0;bit s4_mode = 1;/1为电压测量模式,0为频率测量模式bit s5_mode = 0;/1为输出2.0v电压,为0跟随PCF8591三通道电压输出bit s6_mode = 1;/1为开启LED灯显示,0为关显示bit s7_mode = 1;/1为开启数码管显示,0为关显示bit gensui = 0;/0为不跟随电压输出,1为跟随电压输出unsigned char useg_num=0x3e,0,
3、0,0,0,0,0,0;/电压数值数组unsigned char fseg_num=0x71,0,0,0,0,0,0,0;/频率数值数组 void key_scan();/按键扫描函数原型unsigned char dian_ya_ce_liang(); /电压测量函数原型void TimerInit();/定时计数初始化函数原型/*/*函数*/*/void main()/主函数 HAREWARE_init();/关闭外部设备 DIG_init();/数码管初始化 LED_init();/LED灯初始化 TimerInit();/定时器1初始化 P20 = 1; while(1)/等待中断 k
4、ey_scan();/按键扫描 if(s5_mode)/判断是否是电压跟随模式 PCF_DA(103); /没有跟随 gensui = 0; /没有跟随 else gensui = 1; /跟随电压 if(s4_mode)/判断是否为电压测量模式 diya_num = dian_ya_ce_liang(); led_mode = 0xfe;/电压测量模式指示灯亮 if(diya_num * 0.01953125 = 1.5) & (diya_num * 0.01953125 = 3.5) led_mode &= 0xfb;/满足条件第三个指示灯亮 if(gensui) led_mode &=
5、0xef;/电压跟随第五个指示灯亮 PCF_NUM = diya_num * 1.953125;/变成十进制的数字,把小数乘一百 useg_num5=DIG_CODEPCF_NUM/100;/百位数字 PCF_NUM = PCF_NUM % 100; useg_num6=DIG_CODEPCF_NUM/10;/十位数字 PCF_NUM %=10; useg_num7=DIG_CODEPCF_NUM;/个位数字 LED_show(led_mode);/LED等显示 DIG_show(useg_num);/数码管显示 if(gensui)/判断是否是电压跟随模式 PCF_DA(diya_num);
6、 /没有跟随 else/频率测量模式 TR1 = 1;/开始计时 TR0 = 1;/开始计数 j = 1;/等待中断标志置1 while(j);/等待中断 /void TimerInit()/定时计数器初始化函数 AUXR &= 0x3F;/12分频 TMOD &= 0x00;/TMOD(定时/计数器模式寄存器)清零 TMOD |= 0x15;/T0设置为模式1,计数;T1设置为模式1,定时 TH0 = TL0 = 0;/计数器清零 TL1 = 0xF0; /设置定时初值 TH1 = 0xD8; /设置定时初值 EA = 1;/开总中断 ET1 = 1;/开定时器1中断/unsigned ch
7、ar dian_ya_ce_liang() return PCF_AD(3);/返回模数转换值 /void key_scan()/键盘扫描函数 P3 |= 0x0f;/P3低4位设为全1 if(s4)/判断S4按键 delay1ms(5);/按键消抖 if(s4)/判断S4按键 s4_mode = s4_mode; if(s5)/判断S5按键 delay1ms(5);/按键消抖 if(s5)/判断S5按键 if(s4_mode)/如果在电压测量模式则改变电压跟随标志 s5_mode = s5_mode;/s5_mode取反 if(s6)/判断S6按键 delay1ms(5);/按键消抖 if(
8、s6)/判断S6按键 s6_mode = s6_mode; if(s6_mode) LED_init();/关LED灯 if(s7)/判断S7按键 delay1ms(5);/按键消抖 if(s7)/判断S7按键 s7_mode = s7_mode;/取反 if(s7_mode)/如果数码管开关标志为0,关数码管显示 DIG_init();/关数码管 while(s4|s5|s6|s7)/松手检测 if(s4_mode)/如果为电压测量模式,数码管显示电压值,防止出现数码管黑屏现象 DIG_show(useg_num);/数码管显示电压测量值 LED_show(led_mode);/LED显示电
9、压测量模式 else/如果为频率测量模式,数码管显示频率值,防止出现数码管黑屏现象 DIG_show(fseg_num);/数码管显示频率测量值 LED_show(led_mode);/LED显示频率测量模式 /*/定时器1中断函数/*/void T1()interrupt 3/定时器1中断函数 unsigned char i = 0; unsigned int f_num2 = 0; P20 = P20; TR0 = 0;/停止计数 TR1 = 0;/停止定时 TL1 = 0xF0;/设置定时初值 TH1 = 0xD8;/设置定时初值 timer+;/计数器加1 j = 0;/等待中断标志清零 if(timer = 20) f_num = (TH0 * 256 + TL0) * 5; /计算频率 timer = 0; TL0 = TH0 = 0;/计数器清零 for(i=7;i2;i-)/重新初始化频率数值数组 fseg_numi = 0;/除数组的第一位和第二位其他的初始化为0 if(f_num = 1000 & f_num = 10000) led_mode = 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学四年级下册人教PEP英语期末知识点+综合试卷
- 生理模考试题及答案
- 2026年重庆初级银行从业考试(银行业专业实务个人理财)模拟题库及答案
- 2026年银行业专业人员初级职业资格考试(银行业法律法规与综合能力)试题及答案(广东省)
- 2026年全国公安机关面向公安院校毕业生招警统一考试题法律基础
- 2026年护士考试《妇产科护理学》冲刺押题卷
- 2026年妇联主席考试试题含答案解析
- 2026年放射技师年度培训考核实施方案
- 2026土建施工方面试题及答案
- 2026纬创软件ai面试题及答案
- 2025年城市规划师《城市规划实务》练习题(含答案)
- 2026江苏无锡宜兴市和桥镇公开招聘行政村编外工作人员6人备考题库及答案详解一套
- 2026年北师大版八年级数学下册期末考试卷附答案
- 宝兴县兴产投资有限责任公司2026年度公开招聘工作人员(8人)笔试备考题库及答案详解
- 2026年公需课《人工智能赋能制造业高质量发展》试题及答案
- 时空穿越的启蒙之作:《时间机器》文学与科幻价值探索
- 2026年现代交换技术能力检测试卷带答案详解(突破训练)
- 2026江苏省中医院中药制剂研发中心招聘1人备考题库附答案详解(黄金题型)
- 2025华润电力投资有限公司新疆分公司招聘笔试历年常考点试题专练附带答案详解
- 一年级下册语文1-8单元生字词专项练习
- 老年共病患者肾功能不全的用药调整
评论
0/150
提交评论