2022年2022年键盘显示程序设计实验 .pdf

上传人:Che****ry 文档编号:34878116 上传时间:2022-08-19 格式:PDF 页数:9 大小:91.17KB
返回 下载 相关 举报
2022年2022年键盘显示程序设计实验 .pdf_第1页
第1页 / 共9页
2022年2022年键盘显示程序设计实验 .pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2022年2022年键盘显示程序设计实验 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年键盘显示程序设计实验 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验四 键盘显示程序设计实验目的1、理解串行接口键盘单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握几个的基本的传送类、控制类指令的使用方法实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、 键盘接口电路工作原理串行接口键盘盘电路如图4-15 所示。键盘扫描线与显示位选扫描信号共用。键盘输入只需要一根线,电路简单。键盘扫描信号从74LS164 输出,低电平有效。当扫描到某个键时,若按键按下,在KEY 端得到低电平,否则得到高电平。通过判断KEY 的电平就可以知道相应键盘是否按下。图 4-15 键盘接口电路图2、 读键盘程序设计从上面工作原理分析可知,读

2、键程序可以和显示程序结合在一起,也可以单独设计。这种结构的键盘同样存在抖动问题。为了减少程序误动作,程序设计时也要考虑去抖动问题。这里设计一个把键值显示在LED 上的程序。为了简化问题,把读键程序与显示结合起来。程序流程图如图4-16 所示。主程序初 值 化 ,显 示 缓 冲区 , 键 值暂 存 , 键盘缓存调用键盘显示程序键盘显示程序显示程序延时程序执行后读当前扫描的键状态,并存入键值暂存寄存器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - -

3、- - - - 图 4-16 键盘扫描程序流程图实验内容1、 设计程序把键值显示在数码管。#include #includedisplay.h extern uchar point; extern uchar table8; uchar t,temp,time; char num; bit flag1; /*void main() uchar i; table0=0 x0; for(i=1;i8;i+) tablei=0 x11; while(1) num=dispkey(); if(flag=1) table0=num; delay_1ms(2); */ /* 2、设计程序按不同键时实现不同

4、功能。功能:按向上键:最右边一位数码管数值加1(0-9) ,到 9时加 1 回到 0 按向下键:最右边一位数码管数值减加1(9-0) ,到 0 时减 1 回到 9 按向左键:显示数字左移一位按向右键:显示数字右移一位 keypointr: 短按小数点右移,长按显示学号;接口:上下左右keypointr keypointl 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - */ void main() uchar i,j=7,k=0

5、; for(i=0;i0;x-) for(y=123;y0;y-); uchar dispkey(void) uchar i,keynum=0; i=8; DAT=disptabletablei-1; if(point&tablepointi-1) DAT=DAT&0 xfe; / 加入小数点DISPDIN =0; DISPCLK =0; DISPCLK =1; DISPDIN =1; delay_1ms(1); if(!key) delay_1ms(5); if(!key) keynum=i; for (i=7;i0;i-) DAT =0 xff; DAT =disptabletablei-

6、1; if(point&tablepointi-1) DAT=DAT&0 xfe; / 加入小数点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - DISPCLK =0; DISPCLK =1; delay_1ms(1); if(!key) delay_1ms(5); if(!key) keynum=i; DAT=0 xff; return keynum; 思考题1、 当按加 1 键时,每按一次数码管值变化可能超过1,是什么原因?

7、答:原因是机械按键会有抖动现象,所以每按一次数码管值变化可能超过1。 2、如何实现长按键处理。当长按最左键时(约2 秒) ,显示学号后8 位。答:显示函数与主函数为:uchar dispkey(void) uchar i; i=8; next=0; DAT=disptabletablei-1; /if(point&tablepointi-1) /DAT=DA T&0 xfe; / 加入小数点DISPDIN =0; DISPCLK =0; DISPCLK =1; DISPDIN =1; delay_1ms(1); if(!key) / 左键 delay_1ms(10; if(!key) dela

8、y_1ms(400); if(!key) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - delay_1ms(400);if(!key)flag1=1; else falg1=0;next=i; for (i=7;i0;i-) DAT =0 xff; DAT =disptabletablei-1; / if(point&tablepointi-1) / DAT=DAT&0 xfe; / 加入小数点DISPCLK =0; DISP

9、CLK =1; delay_1ms(1); if(!key) delay_1ms(5); if(!key) next=i; DAT=0 xff; if(before=0&next!=0) flag=1;return 0; if(before!=0&next=0) return before; void main() uchar i,j=7,k=0; for(i=0;i8;i+) tablei=0 x11; table7=0 x1; while(1) temp=dispkey(); if(flag=1&temp!=0) if(flag1=1) 名师资料总结 - - -精品资料欢迎下载 - - -

10、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - table0=0 x9; table1=0 x4; table2=0 x0; table3=0 x8; table4=0 x1; table5=0 x0; table6=0 x3; table7=0 x1; if(flag1=0) if(k=7) point=tablepoint7; k=0;continue; point=tablepointk; k+; delay_1ms(1); before=next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁