1、独立按键识别 单片机原理 实验报告宁德师范学院计算机系实验报告(20142015学年 第 2学期)课程名称 单片机原理 实验名称 独立按键识别 专 业 计算机科学与技术(软工)年 级 2012级 学号 B2012103145 姓名 冯武 指导教师 杨烈君 实验日期 2015.5.27 实验目的与要求:目的:1. 掌握查询式按键的原理和编程方法2. 理解按键防抖技术要求:1. 在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中增加按键、Led灯、八位7段数码管(共阳/共阴自选),将P2口作数据输出口与7段数码管数据引脚相连 ,P3引脚输出位选控制信号。3. 实
2、现单按键控制Led灯闪烁 4. 实现单按键多功能识别控制4路Led灯闪烁 5. 实现0-99的计数器效果,按一下数值加一6. 实现0-99码表 ( 按一次开始计时,第二次停止,第三次清零 )7. 扩展要求: 通过3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + ,KEY3 - )实验设备(环境):1计算机2Proteus ISIS 7 Professional应用程序3Keil应用程序实验内容: 按键识别 要求实现:1. 实现单按键控制Led灯闪烁 2. 实现单按键多功能识别控制4路Led灯闪烁 3. 实现0-99的计数器效果,按一下数值加一4. 实现0-99码表 ( 按一次开始计
3、时,第二次停止,第三次清零 )5. 扩展要求: 通过3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + ,KEY3 - ) 参考原理图 实验步骤、实验结果及分析:1 实验步骤:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。3、构建仿真电路图1 按键识别1、2图2 按键识别3图3 按键识别4 图3按一下暂停 图4归零 图5时钟调整电路图4、创建一个Keil应用程序:新建一个工程项目文件;为工程
4、选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。5、把用户程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件文件路径)2 实验程序 (1)按键识别 ( 按下LED灯亮,再按灭)#include#define uint unsigned int#define uchar unsigned charsbit led=P26;sbit key=P27;void delay(uint x) while(x-);void main() while (1) if(key=0) delay(1000); if(key
5、=0) led=led; while(key=0); (2)按键识别 ( 按下灭,再按闪)#include#define uint unsigned int#define uchar unsigned charsbit led=P26;sbit key=P27;void delay(uint x) while(x-);void main() uint i,j; while (1) led=1; if(key=0) delay(1000); if(key=0) i+; j=i%2; while(key=0); switch(j) case 0 : led=0;break; case 1 : le
6、d=led;delay(100);break; default:break; (3)按键识别 ( 按下数码管数值加1)#include#define uint unsigned int#define uchar unsigned charuchar code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar DispBuf8;sbit led=P26;sbit key=P27;void delay(uint x) while(x-);void disnum(uint n) uint i; for(i=0;i
7、=7;i+) DispBuf7-i=n%10; if(n=0&i) DispBuf7-i =10; n=n/10; void main() uint i,j; while (1) led=1; if(key=0) delay(1000); if(key=0) i+; while(key=0); disnum(i) ; for(j=0;j8;j+) P1=1j; P3= LedCodeDispBufj; delay(100) ; (4)一键多功能识别 (按下L1闪,再按L2闪,L3,L4依次闪烁)#include#define uint unsigned int#define uchar uns
8、igned charsbit led1=P20;sbit led2=P21;sbit led3=P22;sbit led4=P23;sbit key=P27;void delay(uint x) while(x-);void main() uint i; led1=0; led2=0; led3=0; led4=0; while (1) if(key=0) delay(1000); if(key=0) i+; while(key=0); i=i%4; switch(i) case 0 :led1=led1;delay(100);led4=0;break; case 1 :led2=led2;d
9、elay(100);led1=0;break; case 2 :led3=led3;delay(100);led2=0;break; case 3 :led4=led4;delay(100);led3=0;break; default:break; (5)一键多功能识别 (秒表,按第1下开始,按第2下停,按第3下清零)#includereg51.h#define uint unsigned int#define uchar unsigned charuchar code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40
10、;uchar DispBuf8;uint hour=0,min=0,sec=0;sbit key=P27;void delay(uint x) /延迟函数 while(x-);void PntNum(void) /时间的拆分 DispBuf7=sec%10; / 获取秒钟的个位数 DispBuf6=sec/10; / 获取秒钟的十位数 DispBuf5=10; DispBuf4=min%10; DispBuf3=min/10; DispBuf2=10; DispBuf1=hour%10; DispBuf0=hour/10;void play(void) uchar i; for(i=0;i8;
11、i+) P1=1=0) sec+;n=0; if(sec=60) min+;sec=0; if(min=60) hour+;min=0; if(hour=24) hour=0; void main() uint i=2; while (1) if(key=0) delay(1000); if(key=0) i+; while(key=0); i=i%3; switch(i) case 0 :PntNum( );play( );time();break; case 1 :PntNum( );play( );break; case 2 :hour=0,min=0,sec=0;PntNum( );p
12、lay( );break; default:break; (6)通过3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + ,KEY3 - )#include #define uint unsigned int#define uchar unsigned char#define disnull 10uchar hour=15,min=24,sec=20;uchar code LedCode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;uchar dispbuff 8;void pnttime( ) dispbuff7=se
13、c%10; dispbuff6=sec/10; dispbuff5=disnull; dispbuff4=min%10; dispbuff3=min/10; dispbuff2=disnull; dispbuff1=hour%10; dispbuff0=hour/10;void delay ( uint x) while(x-);void main () uchar i,ms; while(1) pnttime(); for(i=0;i8;i+) P3=0; P3=1 =10) sec+; ms =0; if(sec=60) min+; sec=0; if(min=60) hour+; min
14、=0; if(hour=24) hour=0; 3 实验总结(包括过程总结、心得体会及实验改进意见等):过程总结: 通过本次实验对单片机的知识进一步了解,通过单片机可以实现很多电子功能的实现,比如时钟的实现。掌握查询式按键的原理和编程方法,理解按键防抖技术。本次实验大多数是为了熟悉按键设计,对按键设计进行更加的了解与熟练。心得体会:本次实验过程之中,有很多难度,比以前的数码管多了一个按键,这个按键就是本次实验的关键,经过不停的修改和同学的讨论,做了出来,虽然不怎么样,但是还是做出来了。以后的遇到相同的按键操作就不会这样什么都不懂了。指导教师评语:1、完成所有规定的实验内容,实验步骤正确,结果正确;2、完成绝大部分规定的实验内容,实验步骤正确,结果正确;3、完成大部分规定的实验内容,实验步骤正确,结果正确;4、基本完成规定的实验内容,实验步骤基本正确,所完成的结果基本正确;5、未能很好地完成规定的实验内容或实验步骤不正确或结果不正确。6、其它: 评定等级:A(优秀) B(良好) C(中等) D(及格) E(不及格)成绩评定 教师签字 年 月 日备注:注:1、报告内的项目或设置,可根据实际情况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1