版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/ZJSEE 0058.4-2025电力行业信息技术应用创新基础软硬件测试方法 第4部分:服务器操作系统
- 2026年江西萍乡科协招聘考试练习试卷(含答案)
- 2026年河南博物馆安全管理专员招聘考试练习试卷(含答案)
- 2026年甘肃公交集团招聘考试练习试卷(含答案)
- T/CARP 0016-2023综合备份仪表系统
- DB32/T 5005-2025软包装件密封度检测方法
- T/DGGC 012-2025盾构法隧道工程绿色施工标准
- 东营广饶县稻庄镇城镇公益性岗招聘考试真题及答案
- T/JGE 0149-2025江西绿色生态 实木餐桌餐椅
- 2027年上海市虹口“百人工程”储备人才招录计划14人考试备考题库及答案解析
- 各地2026年H1经济财政债务盘点:化债下半场的区域分化
- 2026-2027学年秋苏科版新版小学信息科技三年级上册教学计划及进度表
- 快乐读书吧 《读书真快乐》 课件 2026-2027学年一年级上册语文统编版
- 暖通专业专项施工方案
- 2026年新教材人教PEP版五年级上册英语Unit 2 My feelings教案
- 施工现场有限空间作业风险辨识方案
- 2026年辽宁大学转专业笔试考试题库及答案
- 幼儿园入学准备教育指导要点
- (2026年)外科规培学习汇报课件
- 养老院安宁服务工作制度
- GB/T 46227-2025半导体单晶材料透过率测试方法
评论
0/150
提交评论