版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版保健食品电商平台数据分析与用户画像合同2篇
- 二零二五版电影后期特效制作赞助合同3篇
- 二零二五年度建筑节能玻璃检测与绿色建筑认证合同3篇
- 二零二五年技术服务合同服务内容和技术要求2篇
- 二零二五版存量房买卖合同家庭定制版2篇
- 二零二五版智能公厕建设与运营管理合同3篇
- 二零二五版体育用品促销员赛事赞助合同3篇
- 二零二五版钟点工家政服务合同-含家政员行为规范3篇
- 二零二五版国际汽车运输与品牌合作推广合同3篇
- 二零二五版能源节约型产品采购合同规范范本2篇
- 销售礼盒营销方案
- 领导沟通的艺术
- 发生用药错误应急预案
- 南浔至临安公路(南浔至练市段)公路工程环境影响报告
- 绿色贷款培训课件
- 大学生预征对象登记表(样表)
- 主管部门审核意见三篇
- 初中数学校本教材(完整版)
- 父母教育方式对幼儿社会性发展影响的研究
- 新课标人教版数学三年级上册第八单元《分数的初步认识》教材解读
- (人教版2019)数学必修第一册 第三章 函数的概念与性质 复习课件
评论
0/150
提交评论