设计键盘与显示课程设计采用8031单片机设计键盘与显示.docVIP

  • 19
  • 0
  • 约6.19千字
  • 约 15页
  • 2016-12-10 发布于陕西
  • 举报

设计键盘与显示课程设计采用8031单片机设计键盘与显示.doc

目 录 第一部分 设计题目…………………………………………… 2 第二部分 设计要求…………………………………………… 2 第三部分 硬件设计…………………………………………… 2 1 、 硬件设计原理……………………………………………………… 2 2 、 硬件设计电路……………………………………………………… 2 第四部分 软件设计…………………………………………… 3 1 、 软件设计思想……………………………………………………… 3 2 、 流程图 …………………………………………………………… 4 3 、 源程序 …………………………………………………………… 5 第五部分 仿真功能…………………………………………… 13 第六部分 收获与总结……………………………………………14 第七部分 附录………………………………………………… 14 设计题目 采用8031单片机设计键盘与显示。 设计要求 1. 采用4位数码管显示通过键盘所按的数; 2. 设计键盘与显示硬件电路要求键盘有12个按键(0~9),一个确认键,一个开关键; 3.编写软件,要求将按键数字显示在数码管上,具体格式:按数字键n个,然后按确认键,显示刚才键入的数。如果两次确认键之间按键数超过4位,则只显示按确认键最近的4位;如果两次确认键之间按键数少于4位,则显示实际按确位数;先按的键显示在高位。开关键用于显示的开关,按一开显示,再按一次关显示; 4.详细叙说软件设计方法。 三、 硬件设计 硬件设计原理 (1)的矩阵键盘,第1行与89C51的P3.0口相连,第2行与89C51的P3.1口相连,第3行与89C51的P3.2口相连;第1列与89C51的P3.4口相连,第2列与89C51的P3.5口相连,第3列与89C51的P3.6口相连,第4列与89C51的P3.7口相连。用来检测哪个按键被按下。 (2)4个数码显示管,由89C51的P0口通过两个74HC573芯片控制显示,其中P2.6通过控制一个573来控制段码输入(段选),P2.7控制另一个573从而控制位码的输入(位选)。 硬件电路图 (1)独立矩阵键盘与8031单片机P3口的连接图: 图1 (2)P0口控制数码管显示电路: 图2 (3)模拟仿真电路图: 图3 四、 软件设计 设计思想 本题可分为两部分,一部分为键盘扫描,另一部分为显示,并且选定第三行第三列为“确定键”,第三行第四列为“显示键”。为了方便录入数据和显示,采用两个数组,一个作为接收数组,用来接收按键值,一个作为显示数组,作为动态扫描显示。采用赋值、读值的方法确定是否存在按键输入,若有按键输入,则依次按键位顺序赋给接收数组高位0到9中的值(即按键值),每次有按键输入时数组左移,以保证每次数组中保留的都是最近的四个输入值。设置变量作为判定显示开关的依据,显示开时,将接收数组中的值赋给显示数组,用动态扫描的办法使数码管显示录入值。 流程图 否 否 是 是 源程序(含注释) #includereg51.h #define int8 unsigned char #define int16 unsigned int sbit dula=P2^6; //读段码,申明U1锁存器的锁存端 sbit wela=P2^7; //读位码,申明U2锁存器的锁存端 //段码 code unsigned char seg_code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; int8 pre_array[4]={0x0a,0x0a,0x0a,0x0a}; //接收按键数组 int8 hold_array[]={0x0a,0x0a,0x0a,0x0a}; //显示数组 int8 a=0,temp; //a控制显示与否即显示键 ,n与key确定 int8 key=0xff; //key初始值 //延时程序 void delay(unsigned int x) { unsigned char t; while(x--) for(t=0;t120;t++); } void mai

文档评论(0)

1亿VIP精品文档

相关文档