数码管显示4×4矩阵键盘的键盘号(-程序解释好了-)大作业

上传人:仙*** 文档编号:126309191 上传时间:2022-07-28 格式:DOC 页数:10 大小:217.50KB
返回 下载 相关 举报
数码管显示4×4矩阵键盘的键盘号(-程序解释好了-)大作业_第1页
第1页 / 共10页
数码管显示4×4矩阵键盘的键盘号(-程序解释好了-)大作业_第2页
第2页 / 共10页
数码管显示4×4矩阵键盘的键盘号(-程序解释好了-)大作业_第3页
第3页 / 共10页
点击查看更多>>
资源描述
精心整理单片机原理及应用课程设计报告数码管显示44矩 阵键盘的键盘号专 业: 电子信息科学与技术 班 级: 姓 名: 学 号: 指导老师: 2012年 5月15日1、课程设计目的1.1稳固和加深对单片机原理和接口技术学问的理解;1.2造就依据课题须要选学参考书籍、查阅手册和文献资料的实力;1.3学会方案论证的比拟方法,拓宽学问,初步驾驭工程设计的根本方法;1.4驾驭常用仪器、仪表的正确运用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和试验成果,能用计算机绘制电路图和流程图。2、课程设计要求单片机的P1口的P1.0P1.7连接44矩阵键盘,P0口限制一只数码管,当44矩阵键盘中的某一按键按下时,数码管上显示对应的键号。例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。3、硬件设计3.1 设计思想分析本任务的要求,在课程设计的根底上,添加要求,使设计能够完成当44矩阵键盘中的某一按键按下时,数码管上显示对应的键号。3.2主要元器件介绍:AT89C51单片机 LED数码管 4X4矩阵键盘3.3 功能电路介绍AT89C51单片机:限制器。程序中将单片机的引脚置高电平低电平,单片机通过读取IO引脚的电平,在依据读取的数据去查找数组中相应的按键值,然后在送到数码管也就是P0口去显示.(51单片机通过IO口来读取键盘的电平,再通过程序来查找对应的数值,在送到数码管去显示)LED数码管 :输出设备 4X4矩阵键盘:输入设备4、软件设计4.1 设计思想通过对矩阵键盘的逐行扫描,来获得所按下键的键盘号,最终通过数码管显示出来。4.2软件流程图起先初始化完毕,返回假设有按键按下,显示键盘号扫描键盘第一行假设无按键按下扫描键盘其次行假设无按键按下扫描键盘第三行假设无按键按下扫描键盘第四行假设无按键按下完毕,返回4.3源程序#include#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/定义显示段码uchar num,temp;void delay(uchar k)/定义延时函数 uchar i,j; for(i=k;i0;i-) for(j=110;j0;j-); void disp(char num1)/定义显示函数 P0=tablenum1;/将段码值送入P0口显示char keyscan()/定义键盘检测函数 P1=0xfe;/给P1口送检测信号11111110,即先检测第一列有无按键被按下key1key4 temp=P1;/将检测信号赋给变量temp temp=temp&0xf0;/与11110000相“与”去除低四位检测局部 while(temp!=0xf0)/判定是否有按键被按下,即key1-key4有随意按键被按下temp便不等于0xff delay(5);/按键防抖动延时时间要求不严格 while(temp!=0xf0)/延时之后再次判定 temp=P1;/进入函数说明有按键被按下,再将p1值赋给temp进展判定是哪位被按下 switch(temp)/利用switch函数判定temp值 case 0xee:/假设P0等于0xee,即11101110,那么由判定为0的位被按下即第四位最低位,那么应赋值num为0; num=0; break; case 0xde:/11011110同理判定其为第三位被按下该行其次位num=1 num=1; break; case 0xbe:/同上那么num=2 num=2; break; case 0x7e:/同上num=3 num=3; break; while(temp!=0xf0)/判定按键是否松开,循环判定直至按键松开 temp=P1; temp=temp&0xf0; P1=0xfd;/给P1口再次送检测信号11111101,来检测其次列有无按键被按下key5key8,以下几步同上 temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=P1; switch(temp) case 0xed: num=4; break; case 0xdd: num=5; break; case 0xbd: num=6; break; case 0x7d: num=7; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P1=0xfb;/给P1口再次送检测信号11111011,来检测第三列有无按键被按下key9key12,以下几步同上 temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=P1; switch(temp) case 0xeb: num=8; break; case 0xdb: num=9; break; case 0xbb: num=10; break; case 0x7b: num=11; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; P1=0xf7;/给P1口再次送检测信号11110111,来检测第四列有无按键被按下key13key16,以下几步同上 temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=P1; switch(temp) case 0xe7: num=12; break; case 0xd7: num=13; break; case 0xb7: num=14; break; case 0x77: num=15; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0; return num;/子函数最终返回num值void main() P0=0x00;/清屏 delay(5);/延时 while(1)/主循环 disp(keyscan();/检测并显示 5、调试运行电路图 依次按下开关k1-k16,数码管会对应显示出0f的16个数字K=2的数码管显示2.K=15时的数码管显示:6、设计心得体会硬件设计方面,此课题所需的硬件并不负责,只许少量的导线、简洁的电路便可以完成。软件设计方面,我感觉到在编写循环嵌套程序时特别简洁出错,须要反复的查错和耐性的调试。我虽然能够编写出程序,其可读性却有待于提高。经过这次课程设计,我对51系统的单片机内部构造的了解相识有了必须程度的提高。我体会到做设计是一项细致的工作,必须要投入时间及精力,要有耐性有韧性。我坚信这次的课程设计为我以后的开展打下必须的根底,我会更加努力,争取自己在单片机的开发上有更深层次的提高。参考书目:1 肖金球. 单片机原理与接口技术.M.北京:清华大学出版社,2004.12
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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