片机应用技术汇编+C51项目教程_第1页
片机应用技术汇编+C51项目教程_第2页
片机应用技术汇编+C51项目教程_第3页
片机应用技术汇编+C51项目教程_第4页
片机应用技术汇编+C51项目教程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

书名:单片机应用技术汇编+C51项目教程ISBN:978-7-111-50040-7作者:姚存治出版社:机械工业出版社本书配有电子课件,项目3可以调控的走马灯设计与制作走在大街上,看到五彩斑斓的走马灯,你是不是也想自己一试伸手,亲自做一个出来?本项目就将设计一个带按键控制的非常漂亮的走马灯效果。本项目涉及到的知识点有键盘接口、中断系统、定时器定时、C51编程。任务3.1学习键盘接口技术任务3.2可以调控的走马灯的设计与仿真,下一页,任务3.1学习键盘接口技术键盘接口是单片机系统的一个非常常见、实用的接口。用于实现人机交互中指令的输入。常见的键盘接口有独立式按键和行列式(也叫矩阵式)键盘。3.1.1独立式键盘应用3.1.2按键的消抖处理3.1.3矩阵式键盘应用,上一页,下一页,返回,3.1.1独立式键盘应用一、独立式按键结构如图所示。,上一页,下一页,返回,独立式按键的结构特点:每个按键单独占有一根I/O口线,按键的两个端子一端接地,另外一端接到一个单独的I/O口线,同时通过上拉电阻接到+5v电源端。每个按键的工作不会影响其它I/O口线的状态。在此电路中,按键输入为低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可以不配置上拉电阻。,上一页,下一页,返回,二、独立式按键的软件设计按上图的电路,设计出独立式键盘程序如下,此程序中Keyfun1Keyfun8分别为每个按键对应的功能子程序标号(可根据实际需要编写),按键去除抖动采用软件延时,按键的接口选用P1端口。汇编源程序清单如下:START:MOVA,P1;读入键盘状态MOV30H,A;保存键盘状态值LCALLDL10ms;延时10ms消抖MOVA,P1;再读键盘状态CJNEA,30H,RETURN;再次结果不同。说明是抖动引起,返回CJNEA,#0FFH,KEY-1;确认是否有键按下LJMPRETURN,上一页,下一页,返回,KEY-1:CJNEA,#0FEH,KEY-2;K1键未按下,转KEY-2LJMPKeyfun1;是Kl键按下,转KEY1对应的功能子程序KEY-2:CJNEA,0FDH,KEY-3;K2键未按下,转KEY-3LJMPKeyfun2;K2键按下,转Keyfun2处理KEY-3:CJNEA,#0FBH,KEY-4;K3键未按下,转KEY-4LJMPKeyfun3;K3键按下,转Keyfun3处理KEY-4:CJNEA,#0F7H,KEY-5LJMPKeyfun4KEY-5:CJNEA,#0EFH,KEY-6LJMPKeyfun5KEY-6:CJNEA,#0DFH,KEY-7LJMPKeyfun6KEY-7:CJNEA,0BFH,KEY-8LJMPKeyfun7KEY-8:CJNEA,7FH,RETURN;K8未按下,返回LJMPKeyfun8;K8键按下,转Keyfun8处理RETURN:RET;重键或无键按下,不处理返回DL10ms:MOVR7,#12H;三循环延时程序,大约10ms。D0:MOVR5,#10HD1:MOVR4,#10HD2:DJNZR4,$D3:DJNZR5,D1DJNZR7,D0RET,上一页,下一页,返回,对应的C51程序为:#includevoiddelay()unsignedinti;for(i=0;i2000;i+);voidmain()unsignedcharkey;while(1)key=P1;if(key!=0 xFF)delay();if(key!=0 xFF)key=P1;while(P1!=0 xFF);,上一页,下一页,返回,switch(key)case0 xFE:Keyfun1();break;case0 xFD:Keyfun2();break;case0 xFB:Keyfun3();break;case0 xF7:Keyfun4();break;case0 xEF:Keyfun5();break;case0 xDF:Keyfun6();break;case0 xBF:Keyfun7();break;case0 x7F:Keyfun8();break;,3.1.2按键的消抖处理在单片机应用系统中所用的键盘按键是一种机械开关,其机械触点在闭合或断开瞬间,会出现电压抖动现象,如图所示。为了保证按键识别的准确性,可采用硬件消抖和软件消抖两种方式进行消抖处理。硬件方法可采用RS触发器等消抖电路。软件方法则是采用时间延迟,由于键的前沿抖动时间大约为10ms左右,因此可在延时10ms后待按键稳定闭合时再判别键盘的状态,若仍有按键闭合,则确认有键按下,否则认为是按键的抖动。,上一页,下一页,返回,例3-1:如图所示,实现如下功能,按下某个键,在单个数码管上显示出键号。,上一页,下一页,返回,本题中,按键全部为独立式按键,读取P1口的状态即可判断按下的是哪个键,读取相应的键的编码送入P1口即可。C51源程序如下:#includeunsignedcharled=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8;voiddelay()unsignedinti;for(i=0;iMovingBit);if(MovingBit=15)Direction=!Direction;break;case3:if(Direction)LedLight(0 x0001MovingBit);if(MovingBit=15)Direction=!Direction;break;case4:if(Direction)LedLight(0 x000FMovingBit);if(MovingBit=15)Direction=!Direction;break;case5:if(Direction)LedLight(0 x000FMovingBit);if(MovingBit=15)Direction=!Direction;break;,上一页,下一页,返回,case6:if(Direction)LedLight(0 xFFFEMovingBit);if(MovingBit=15)Direction=!Direction;break;case7:if(Direction)LedLight(0 xFFFEMovingBit);elseLedLight(0 xFFFEMovingBit);if(MovingBit=15)Direction=!Direction;break;MovingBit=(MovingBit+1)%16;,上一页,下一页,返回,/主函数voidmain()u8Key;P0=P1=P2=P3=0 xFF;ModeNo=0;Tdx=4;Speed=SpeedCommonTdx;P3=ModeDisplayModeNo;IE=0 x88;TMOD=0 x00;TR1=1;while(1)Key=GetKey();if(Key!=0)KeyProcess(

温馨提示

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

评论

0/150

提交评论