版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四乘四键盘显示一、设计要求4*4 矩阵键盘共 16 个键,每按一次键,数码管就显示一次按键代表的值。二、元件选取单片机: STC89C52RC;电阻: 470;发光二极管; 4*4 键盘;共阳极七段数码管三、设计思想本设计硬件上采用STC89C52RC 单片机的最小系统,单片机的P1 口与键盘相连, P1.0P1.3 管脚分别与键盘的四行连接,P1.4P1.7 管脚分别与键盘的四列相连;P0 口 P1.0P1.7 管脚与数码管 1 的 adp 相连, P2 口 P2.0P2.7 管脚分别与数码管2 的 adp 相连,数码管的公共端接 +5V 电源,控制数码管的显示;发光二极管的阴极与单片机的P
2、3.0 管脚连接,阳极与 +5V 电源连接,低电平有效,控制二极管发光;程序上采用定时扫描方式,利用定时T0 产生 50ms 定时中断, CPU 响应中断后进入Scan_Key()子程序对键盘进行扫描,对P1 口初值 0xf7 扫描第一行,进入延时程序消抖动后,进入 switch()语句,屏蔽行的低四位,取列的高四位,检测哪一列有键按下,若有键按下,标志位 FLAG0=1 ,发光二极管的到低电平发光;令 P1 口的初值右移一位后或 0x80 进行高位补一,扫描第二行,如此循环右移,四行便全都检测到了。 当有键按下时, m!=0xf0,进入 while 循环不停地执行 m&0xf0 语句
3、,使 m=0xf0 ;按键松开后, m=0xf0 跳出 while 循环,执行中断程序,显示按键的值。如此软件与硬件结合,能合理的完成设计要求,每按一次键,数码管就显示一次按键代表的值。四、原理图四、程序流程开始开定时器中断,定时器 0 初始化键盘扫描是否有键按下?NY发光二极管发光,确定按键值按键是否放开?NY中断程序开始数码管显示按键值定时器 0 重装初值中断返回数码管显示按键值五、调试过程调试过程中,遇到了以下问题 :一是数码管不能正常显示, 经检查是数码管公共端未接电源,连接后数码管还是不能正常显示,经检查是单片机接触不良,将单片机拔出,对照底座重新插入,然后在仿真数码管显示正常;二是
4、发光二极管在按键按下后不能正常发光,经检查是软件编程存在缺陷,定时时间短,单片机接收不到二极管的低电平,故不发光。经改进后,将二极管管脚赋低电平的语句嵌入到键盘扫描程序中,二极管工作正常。六、程序清单#include<reg52.h>#define RELOAD_H #define RELOAD_L( 65536-50000)/256; /定义定时器 ( 65536-50000)%256;0 重装值extern void Timer0_Init(void); / 定时器初始化子函数 extern void Delay(unsigned int n); extern void Sca
5、n_Key(void);unsigned char dispcode2;unsigned char dofly16;unsigned 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,方式1TL0=RELOAD_L;/TL0定时器0 低8 位计数器TH0=RELOAD_H;/TH0定时器0 高8 位
6、计数器TR0=1;/定时器 /计数器0启动位./TR0=1:开始计时或计数ET0=1;/定时器 /计数器0 中断使能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;i<n;i+)for(j=0;j<80;j+);unsigned char dofly16=0xc0,0xf9,0xa4,0xb0,0x9
7、9,0x92,0x82,0xf8,0x80,0x90; / 数码管显示程序void Scan_Key(void)/ 键盘扫描程序char a1,i;bit FLAG0=0;a1=0xf7;ptr=0;/列扫描初值for(i=0;i<4;i+)/键盘4 个扫描列P1=a1;Delay(10);m=P1;switch(m&0xf0)/取行的高4 位,侦测哪一行有按键被按下case 0x70:ptr=i*4;/第一行被按否?如有则是tabi*4键FLAG0=1;Beep=0;/表示有按键break;case 0xb0:ptr=i*4+1;/第二行被按否?如有则是tabi*4+1键FLAG0=1;Beep=0;break;case 0xd0:ptr=i*4+2;/第三行被按否 ? 如有则是 tabi*4+2 键FLAG0=1; Beep=0;break;case 0xe0: ptr=i*4+3;/第四行被按否 ?如有则是 tabi*4+3 键FLAG0=1; Beep=0;break;default:break;a1=(a1>>1)|0x80;while(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牙科种植体研发工程师考试试卷及答案
- 2026年山东省乐陵市高二生物下册期末考试测试卷及答案参考
- 2026年河北省南宫市高二生物下册期末考试模拟卷附答案【考试直接用】
- 2026年辽宁省北镇市高二生物下册期末考试试卷及参考答案【A卷】
- 2026年吉林省桦甸市高二生物下册期末考试试卷附答案(突破训练)
- 2026年吉林省扶余市高二生物下册期末考试考试卷附完整答案(典优)
- 2026年安徽省桐城市高二生物下册期末考试模拟卷审定版附答案
- 2025年江苏省如皋市高二生物下册期末考试试卷附答案(黄金题型)
- 2026年四川省万源市高二生物下册期末考试检测卷有完整答案
- 2025年吉林省临江市高二生物下册期末考试模拟卷(必刷)附答案
- 中国海洋大学2026年综合评价面试模拟试题+答案解析
- 2025年中组部机关遴选工作人员笔试真题及答案解析
- 2026年上海市初中学业水平考试地理试卷真题(含答案详解)
- GJB827B--2020军事设施建设费用定额
- T/CECS 10214-2022钢面镁质复合风管
- 计算机应用基础-终结性考试试题国开要求
- 电力系统自动化毕业设计
- 产科临床技术操作标准
- YS/T 473-2015工业镓化学分析方法杂质元素的测定电感耦合等离子体质谱法
- GB/T 11022-2020高压交流开关设备和控制设备标准的共用技术要求
- 三大构成之立体构成-课件
评论
0/150
提交评论