首页 单片机键盘显示程序设计

单片机键盘显示程序设计

举报
开通vip

单片机键盘显示程序设计单片机键盘显示程序设计 实验四 键盘显示程序设计 09电信一斑叶晓伟 学号:20094081007 实验目的 1、理解串行接口键盘单片机汇编语言程序的基本结构 2、了解单片机汇编语言程序的设计和调试方法 3、掌握几个的基本的传送类、控制类指令的使用方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、 键盘接口电路工作原理 串行接口键盘盘电路如图4-15所示。键盘扫描线与显示位选扫描信号共用。键盘输入只需要一根线,电路简单。键盘扫描信号从74LS164输出,低电平有效。当扫描...

单片机键盘显示程序设计
单片机键盘显示程序设计 实验四 键盘显示程序设计 09电信一斑叶晓伟 学号:20094081007 实验目的 1、理解串行接口键盘单片机汇编语言程序的基本结构 2、了解单片机汇编语言程序的设计和调试 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 3、掌握几个的基本的传送类、控制类指令的使用方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、 键盘接口电路工作原理 串行接口键盘盘电路如图4-15所示。键盘扫描线与显示位选扫描信号共用。键盘输入只需要一根线,电路简单。键盘扫描信号从74LS164输出,低电平有效。当扫描到某个键时,若按键按下,在KEY端得到低电平,否则得到高电平。通过判断KEY的电平就可以知道相应键盘是否按下。 图4-15 键盘接口电路图 2、 读键盘程序设计 从上面工作原理分析可知,读键程序可以和显示程序结合在一起,也可以单独设计。这种结构的键盘同样存在抖动问题。为了减少程序误动作,程序设计时也要考虑去抖动问题。这里设计一个把键值显示在LED上的程序。为了简化问题,把读键程序与显示结合起来。程序流程图如图4-16所示。 主程序 键盘显示程序 …… 初值化,显示缓冲 区,键值暂存,键盘显示程序 缓存 延时程序执行后 读当前扫描的键状态,并调用键盘显示程序 存入键值暂存寄存器 N N 显示计数为0 键值相同 图4-16 键盘扫描程序流程图 实验 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 1、 设计程序把键值显示在数码管。 2、设计程序按不同键时实现不同功能。 按最左边按键:小数点循环移位 按向上键:最右边一位数码管数值加1(0-9),到9时加1回到0 按向下键:最右边一位数码管数值减加1(9-0),到0时减1回到9 按向左键:显示数字左移一位 按向右键:显示数字右移一位 答:#include #define uint unsigned int #define uchar unsigned char sbit CLK=P3^4; sbit DIN=P2^3; sbit key=P1^0; bit flag; uchar a,b,c; char num,d,e; uint f; char code table[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x7 1,0xFe };//0到F的代码 void init_164() { uchar i; for(i=0;i<8;i++) { DIN=1; CLK=0; CLK=1; } } void delay(uint t) //延时函数 { uint i,j; for(i=t;i>0;i--) for(j=125;j>0;j--); } void key_num() { uchar i; DIN=0; flag=0; for(i=0;i<8;i++) { CLK=0; CLK=1; if(flag==0) { if(key==0) { delay(10); if(key==0) { ehile(!key) { a=i; flag=1; } if(a==7) { b++; if(b>8) b=1; } if(a==3) { num++; if(num>9) num=0; } if(a==4) { num--; if(num<0) num=9; } if(a==0) { c--; if(c<1) c=8; } if(a==6) { c++; if(c>8) c=1; } } } } } } void disp(uchar x,uchar n) { uchar y,z; for(y=8;y>9-x;y--) { DIN=1; CLK=0; CLK=1; } DIN=0; CLK=0; CLK=1; for(z=8;z>x;z--) { DIN=1; CLK=0; CLK=1; } P0=table[n]; //送数据显示 delay(1); //延时 P0=0xff; //消隐 } 思考题 1、 当按加1键时,每按一次数码管值变化可能超过1,是什么原因, 答:因为按键会抖动。 2、 如何实现长按键处理。当长按最左键时(约2秒),显示学号后8位。 答:void init() //初始化函数 { TMOD=0x11; //定时器0工作方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; //开总中断 ET0=1; //开定时器中断 TR0=1; //定时器0开始工作 } void main() { key=1; b=1; c=8; init(); ehile(1) { init_164(); key_num(); if(f<100) { f=0; disp(c,num); disp(b,16); } if(f>=100) { TR0=0; for(d=0;d<100;d++) for(e=0;e<10;e++) { disp(1,9); disp(2,4); disp(3,0); disp(4,8); disp(5,1); disp(6,0); disp(7,3); disp(8,3); } f=0; TR0=1; } } } void time0() interrupt 1 { TH0=(65535-20000)/256; TL0=(65535-20000)%256; if(a==7) { f++; } }
本文档为【单片机键盘显示程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266065
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:9
分类:理学
上传时间:2017-10-15
浏览量:49