单片机原理(按键识别)实验报告_第1页
单片机原理(按键识别)实验报告_第2页
单片机原理(按键识别)实验报告_第3页
单片机原理(按键识别)实验报告_第4页
单片机原理(按键识别)实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称单片机原理实验名称独立按键识别专 业 计算机科学与技术(软工)教育资料实验目的与要求:目的:1. 掌握查询式按键的原理和编程方法2. 理解按键防抖技术要求:1. 在 Proteus 软件中画好 51 单片机最小核心电路,包括复 位电路和晶振电路2. 在电路中增加按键、 Led 灯、八位 7 段数码管 (共阳 /共阴 自选 ),将 P2 口作数据输出口与 7 段数码管数据引脚相连 , P3 引脚输出位选控制信号。3. 实现单按键控制 Led 灯闪烁4. 实现单按键多功能识别控制 4 路 Led 灯闪烁5. 实现 0-99 的计数器效果,按一下数值加一6. 实现 0-99 码表 (

2、 按一次开始计时, 第二次停止, 第三 次清零 )7. 扩展要求: 通过 3 个按键实现时钟的调整 ( KEY1 模 式 , KEY2 + ,KEY3 - )实验设备(环境):1计算机2 Proteus ISIS 7 Professional 应用程序 3Keil 应用程序教育资料实验内容:按键识别 要求实现:1. 实现单按键控制 Led 灯闪烁2. 实现单按键多功能识别控制 4 路 Led 灯闪烁3. 实现 0-99 的计数器效果,按一下数值加一4. 实现 0-99 码表 ( 按一次开始计时, 第二次停止, 第三 次清零 )5. 扩展要求: 通过 3 个按键实现时钟的调整 ( KEY1 模

3、式 , KEY2 + ,KEY3 - )P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15343332212223242728教育资料.0/RXD.1/TXD.2/INT0.3/INT1P3.4/T0P3.5/T11011121314D4LED-GREEN参考原理图教育资料 实验步骤、实验结果及分析:1 实验步骤:1、使用 Proteus ISIS 7 Professional 应用程序,建立一

4、个 .DSN 文 件2、在“库”下拉菜单中,选中“拾取元件”(快捷键 P),分别选择 以下元件: AT89C51 、CAP、CAP-ELEC、CRYSTAL、RESPACK-8。3、构建仿真电路教育资料教育资料图1按键识别 1、 2图2 按键识别 3CDCDICDUJ5r-角THF!3 d.ls uw H1&I-12 !:.!- a-f-A u L-Lf i5.XErr US jtwprai FwomT- :i奎4 ULkA-a 2- 3m im Jfra -disr !_ IJ 3CDCO-iT訂ore FH 1 i初scf Mn.ukX 一 meMshdco教育资料图 5 时钟调整电路图教

5、育资料 4、创建一个 Keil 应用程序:新建一个工程项目文件;为工程选 择目标器件( 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(

6、)教育资料while (1)if(key=0) delay(1000);if(key=0)led=led; while(key=0);( 2)按键识别 ( 按下灭,再按闪) #include#define uint unsigned int#define uchar unsigned char sbit 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);教育资料

7、switch(j)case 0 : led=0;break;case 1 : led=led;delay(100);break; default:break;( 3)按键识别 ( 按下数码管数值加 1) #include#define uint unsigned int#define uchar unsigned char uchar code LedCode= 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar DispBuf8;sbit led=P26;教育资料 sbit key=P27; void delay(uin

8、t x) while(x-);void disnum(uint n)uint i; for(i=0;i=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 闪,

9、L3,L4依次闪 烁)#include#define uint unsigned int #define uchar unsigned char sbit 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)c

10、ase 0 :led1=led1;delay(100);led4=0;break;case 1 :led2=led2;delay(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 char uc

11、har code LedCode= 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x40;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;D

12、ispBuf1=hour%10;DispBuf0=hour/10;void play(void)uchar i;for(i=0;i8;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 :PntN

13、um( );play( );break;case 2 :hour=0,min=0,sec=0;PntNum( );play( );break; default:break;(6) 通过 3个按键实现时钟的调整 ( KEY1 模式 , KEY2 + , KEY3 - )?#include #define uint unsigned int#define uchar unsigned char#define disnull 10教育资料 uchar hour=15,min=24,sec=20;uchar code LedCode= 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x

14、7d,0x07,0x7f,0x6f,0x40;uchar dispbuff 8;void pnttime( )dispbuff7=sec%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)s

15、ec+; ms =0;教育资料if(sec=60) min+; sec=0;if(min=60) hour+; min=0; if(hour=24) hour=0;教育资料3 实验总结(包括过程总结、心得体会及实验改进意见等):过程总结:通过本次实验对单片机的知识进一步了解, 通过单片机可 以实现很多电子功能的实现,比如时钟的实现。掌握查询式按键 的原理和编程方法,理解按键防抖技术。本次实验大多数是为了 熟悉按键设计,对按键设计进行更加的了解与熟练。心得体会:本次实验过程之中,有很多难度,比以前的数码管多了一个 按键,这个按键就是本次实验的关键,经过不停的修改和同学的 讨论,做了出来,虽然不怎么样,但是还是做出来了。以后的遇 到相同的按键操作就不会这样什么都不懂了。教育资料 指导教师评语:1、完成所有规定的实验内容,实验步骤正确,结果正确;2、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论