四乘四键盘显示

上传人:优*** 文档编号:50838150 上传时间:2022-01-22 格式:DOC 页数:8 大小:43KB
收藏 版权申诉 举报 下载
四乘四键盘显示_第1页
第1页 / 共8页
四乘四键盘显示_第2页
第2页 / 共8页
四乘四键盘显示_第3页
第3页 / 共8页
资源描述:

《四乘四键盘显示》由会员分享,可在线阅读,更多相关《四乘四键盘显示(8页珍藏版)》请在装配图网上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。四乘四键盘显示1、 设计要求4*4矩阵键盘共16个键,每按一次键,数码管就显示一次按键代表的值。2、 元件选取单片机:STC89C52RC;电阻:470;发光二极管;4*4键盘;共阳极七段数码管3、 设计思想本设计硬件上采用STC89C52RC单片机的最小系统,单片机的P1口与键盘相连,P1.0P1.3管脚分别与键盘的四行连接,P1.4P1.7管脚分别与键盘的四列相连;P0口P1.0P1.7管脚与数码管1的adp相连,P2口P2.0P2.7管脚分别与数码管2的adp相连,数码管的公共端接+5V电源,控制数码管的显示;发光二极管的阴极与单片机的P3

2、.0管脚连接,阳极与+5V电源连接,低电平有效,控制二极管发光;程序上采用定时扫描方式,利用定时T0产生50ms定时中断,CPU响应中断后进入Scan_Key()子程序对键盘进行扫描,对P1口初值0xf7扫描第一行,进入延时程序消抖动后,进入switch()语句,屏蔽行的低四位,取列的高四位,检测哪一列有键按下,若有键按下,标志位FLAG0=1,发光二极管的到低电平发光;令P1口的初值右移一位后或0x80进行高位补一,扫描第二行,如此循环右移,四行便全都检测到了。当有键按下时,m!=0xf0,进入while循环不停地执行m&0xf0语句,使m=0xf0;按键松开后,m=0xf0跳出while循

3、环,执行中断程序,显示按键的值。如此软件与硬件结合,能合理的完成设计要求,每按一次键,数码管就显示一次按键代表的值。四、原理图YNY开始开定时器中断,定时器0初始化是否有键按下?键盘扫描发光二极管发光,确定按键值中断程序开始数码管显示按键值定时器0重装初值中断返回数码管显示按键值按键是否放开?N四、程序流程5、 调试过程调试过程中,遇到了以下问题:一是数码管不能正常显示,经检查是数码管公共端未接电源,连接后数码管还是不能正常显示,经检查是单片机接触不良,将单片机拔出,对照底座重新插入,然后在仿真数码管显示正常;二是发光二极管在按键按下后不能正常发光,经检查是软件编程存在缺陷,定时时间短,单片机

4、接收不到二极管的低电平,故不发光。经改进后,将二极管管脚赋低电平的语句嵌入到键盘扫描程序中,二极管工作正常。6、 程序清单#include#define RELOAD_H ( 65536-50000)/256;/定义定时器0重装值#define RELOAD_L ( 65536-50000)%256;extern void Timer0_Init(void); /定时器初始化子函数extern void Delay(unsigned int n);extern void Scan_Key(void);unsigned char dispcode2;unsigned char dofly16;u

5、nsigned char ptr,m;unsigned int t,c;bit FLAG0=0; /定义是否有键按下sbit Beep = P30;/发光二极管管脚void main(void)Timer0_Init(); while(1) Scan_Key();/扫描键盘void Timer0_Init(void) /定时器0初始化TMOD=0x01; /定时器0,方式1 TL0=RELOAD_L; /TL0定时器0低8位计数器 TH0=RELOAD_H; /TH0定时器0高8位计数器 TR0=1; /定时器/计数器0启动位./TR0=1:开始计时或计数ET0=1; /定时器/计数器0中断使

6、能EA=1; /全局中断使能void Timer0_ISR(void) interrupt 1 /定时器0中断服务程序 P0=doflyc; P2=doflyt;TL0=RELOAD_L; /定时器0初值重装 TH0=RELOAD_H;void Delay(unsigned int n) /延时unsigned int i,j; for(i=0;in;i+) for(j=0;j80;j+);unsigned char dofly16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码管显示程序void Scan_Key(void) / 键盘扫描程序char a1,i;bit FLAG0=0;a1=0xf7; /列扫描初值ptr=0;for(i=0;i1)|0x80; while(m!=0xf0)m=P1;m=m&0xf0; Beep=1; if(FLAG0) dispcode0=ptr % 10; /求个位的数值 dispcode1=ptr / 10;/求十位上的数值 c=dispcode0; t=dispcode1;8 / 8

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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