单片机实验报告矩阵键盘控制点阵的显示

上传人:痛*** 文档编号:41150759 上传时间:2021-11-19 格式:DOC 页数:18 大小:1.85MB
收藏 版权申诉 举报 下载
单片机实验报告矩阵键盘控制点阵的显示_第1页
第1页 / 共18页
单片机实验报告矩阵键盘控制点阵的显示_第2页
第2页 / 共18页
单片机实验报告矩阵键盘控制点阵的显示_第3页
第3页 / 共18页
资源描述:

《单片机实验报告矩阵键盘控制点阵的显示》由会员分享,可在线阅读,更多相关《单片机实验报告矩阵键盘控制点阵的显示(18页珍藏版)》请在装配图网上搜索。

1、 实验报告实验报告 实验名称: 矩阵键盘控制点阵的显示 专业班级: 控制科学与工程 学号:s20100394 学生姓名: 李佛垚 指导教师:李晓林、李丽宏、牛昱光 2013 年 1 月 18 日矩阵键盘控制点阵显示实验报告I目目 录录一、实验目的.1二、实验内容.1(一)扫描矩阵键盘读出键值。.1(二)数码管显示键号。.1(三)点阵显示不同按键需要输出的信息。 (根据需要可以修改) 。.1三、实验设备及配套软件.1四、实验原理.2五、实验电路及功能说明.2(一)STC89C52RC 单片机主要性能.2(二) 矩阵键盘 .41.连接线路图.42.矩阵键盘说明:.4(三) 点阵 .51.连接线路图

2、.52.8x8 点阵 LED 等效电路连接图:.53.显示原理说明:.6(四) 数码管 .61数码管连接线路图.62.动态显示原理.6(五)XT100 最小系统原理图.7(六)实验结果分析.81.实物图.82.结果分析.8六、软件设计流程图.8(一)程序说明.8(二)流程图.91.主程序流程图.92.键盘扫描程序流程图.10(三)程序.11七、实验中的问题与心得.16矩阵键盘控制点阵显示实验报告1一、实验目的一、实验目的一般任何一个适用的系统都少不了键盘和显示这两个部分,键盘为使用者设定功能提供操作平台;显示反映出使用者设定功能的状态。在传统的设计中,一般都是把键盘模块和显示模块分开设计,这样

3、结构清晰,软件设计简单,当 I/O 口不够用时,通常通过扩展 I/O 的方法来解决问题。以上做法有优点但同时也暴露了一个问题,它们都需要通过增加芯片来扩展 I/O 口。当硬件成本要求苛刻的情况下,这种设计理念就很难适应其要求,而本设计采用显示模块和键盘模块共用端口的方法,分时显示和按键扫描,很好的解决了这一矛盾。二、实验内容二、实验内容利用 XT100 开发板中的 STC89C52 单片机的 P0 口和 P2 口的分时复用以及单片机执行速度快和人的视觉反应有限的原理,通过对同一 I/O 端口分时作为键盘电路的输入端口和数码管以及点阵显示电路的输出及控制端口来实现 I/O 端口的公用。由于 XT

4、100 开发板已经固化,P0 口作为数码管的数据输出口同时还是点阵的数据输出口,P2 口作为矩阵键盘和点阵的控制端口,在不用扩展 I/O 口和增加成本的基础上解决 I/O 不够用的问题。实验具体内容:(一)扫描矩阵键盘读出键值。(二)数码管显示键号。(三)点阵显示不同按键需要输出的信息。 (根据需要可以修改) 。三、实验设备及配套软件三、实验设备及配套软件XT100 学习开发板,Keil uVision 软件,Microsoft Visual C+,STC_ISP_V483矩阵键盘控制点阵显示实验报告2四、实验原理四、实验原理我们知道微控制器的运行速度快,人的视觉灵敏度有限,同时显示器件(主要

5、是发光二极管,数码管)具有余光效应,所以我们可以充分利用以上特点,合理分配显示和键盘扫描的时间,就可以实现显示模块和键盘模块共用端口以及不同显示共用端口的功能。在本实验中利用模拟的方式,通过不同的按键来显示不同的信息,达到实验的目的。硬件原理框图如图 1 所示共用的共用的 I/0 端口端口矩阵键盘模块矩阵键盘模块数码管显示模块数码管显示模块点阵显示模块点阵显示模块图 1五、实验电路及功能说明五、实验电路及功能说明(一)STC89C52RC 单片机主要性能1. 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意选择,指令代码完全兼容传统 8051.2. 工作电压:5.5

6、V3.3V(5V 单片机)/3.8V2.0V(3V 单片机)3. 工作频率范围:040MHz,相当于普通 8051 的 080MHz,实际工作频率可达 48MHz4. 用户应用程序空间为 8K 字节矩阵键盘控制点阵显示实验报告35. 片上集成 512 字节 RAM6. 通用 I/O 口(32 个) ,复位后为:P1/P2/P3/P4 是准双向口/弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程) ,无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序

7、,数秒即可完成一片8. 具有 EEPROM 功能9. 具有看门狗功能10.共 3 个 16 位定时器/计数器。即定时器 T0、T1、T211.外部中断 4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART) ,还可用定时器软件实现多个 UART13.工作温度范围:-40+85(工业级)/075(商业级)14.PDIP 封装15. STC89C52RC 引脚图矩阵键盘控制点阵显示实验报告4(二) 矩阵键盘1.连接线路图2.矩阵键盘说明:键盘是人机对话不可缺少的组件之一,在按键比较少时,我们可以一个单片机 I/O 口接一个按

8、键,但当按键需要很多,I/O 资源又比较紧张时,使用矩阵式键盘无疑是最好的选择。其原理是初使化时我们先让 P2 口的低四位输出低电平,高四位输出高电平,即让 P2 口输出 0 xF0。扫描键盘的时候,我们读 P2 口,看 P2 是 否还为 0 xF0,如果仍为 0 xF0,则表示没有按键按下;如果不 0 xF0,读 P2 口,说明有按键按下了,我们就可以读键码来识别到底是哪一个键按下了,识别的过程是这样的,初使化时我们让 P2 口的低四位输出低电平,高四位输出高电平,确认了真的有按键按下时,我们首先读 P2 口的高四位,然后 P2 口输出 0 x0F,即让 P2 口的低四位输出高电平,高四位输

9、出低电平,然后读 P2 口的低四位,最后我们把高四位读到的值与低四位读到的值做或运算就得到了该按键的键值。就可以知道是哪个键按下了。矩阵键盘控制点阵显示实验报告5(三) 点阵1.连接线路图2.8x8 点阵 LED 等效电路连接图:矩阵键盘控制点阵显示实验报告63.显示原理说明: 点阵 LED 扫描法介绍点阵 LED 一般采用扫描式显示,实际运用分为三种方式:(1)点扫描; (2)行扫描;(3)列扫描。若使用第一种方式,其扫描频率必须大于 1664=1024Hz,周期小于1ms 即可。若使用第二和第三种方式,则频率必须大于 168=128Hz,周期小于 7.8ms 即可符合视觉暂留要求。此外一次

10、驱动一列或一行(8 颗LED)时需外加驱动电路提高电流,否则 LED 亮度会不足。在本实验的点阵是 8x8 共阳极,所采用的是列扫描方法。所有行的数据由 P0 口输出,每一列由 P2 口动态扫描,并且有 1K 的排阻所接的驱动电路。(四) 数码管1数码管连接线路图2.动态显示原理数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极 COM 增加位选通控制电路,位选通矩阵键盘控制点阵显示实验报告7由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字

11、形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个 LED 数码管的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 口,而且功耗更低。(五)XT100 最小系统原理图矩阵键盘控制点阵显示实

12、验报告8(六)实验结果分析1.实物图2.结果分析矩阵键盘的扫描过程中没有延时确认按键,因为具体实物中按键的动作是比较慢的,不会出现有“假按”的现象,另一方面是由于整个程序是顺序执行的,要求整个程序要快速的顺序执行,如果太多延时会影响程序的实时性。在点阵的显示中,会出现“阴影”这是由于扫描时需等待P0 口完成数据的输出,经过适当延时可以得到很好的解决。六、软件设计流程图六、软件设计流程图(一)程序说明在键盘扫描的过程中需要用到 P2 口,因此为了在点阵显示中不影响到点阵,必须在键盘扫描完后的时间内初始化,同理,在数码管显示中用到了 P0 口作为数据输出口,因此在程序中也要对 P0 口初始化,这样

13、在点阵的显示中需要用到 P0 与 P2 口才不受影响,同时在点阵和数码管的动态扫描过程中要合理划分好时间,以免影响到各自显示的亮度和清晰度。矩阵键盘控制点阵显示实验报告9(二)流程图1.主程序流程图开始键盘扫描P2 口初始化读取键值数码管显示P0 口初始化选取图像信息点阵显示返回矩阵键盘控制点阵显示实验报告102.键盘扫描程序流程图开始P2 口低四位置低电平读取 P2 口的高四位判断高四位全为 1?否是保存 P2 口高四位P2 口高四位置低电平判断低四位全为 1?读取 P2 口的低四位P2 口初始化否保存 P2 口低四位组合键值返回是矩阵键盘控制点阵显示实验报告11(三)程序#include

14、/包含头文件 unsigned char code face18=0 x0,0 x80,0 x80,0 xFF,0 x88,0 x88,0 x80,0 x0; unsigned char code face28=0 x0,0 x2,0 x2,0 xFE,0 xA,0 x12,0 x22,0 x0;unsigned char code face38=0 x40,0 x24,0 x54,0 x5C,0 x77,0 x54,0 x44,0 x0;unsigned char code face48=0 x40,0 x24,0 x14,0 x7C,0 x57,0 x74,0 x4,0 x0;unsign

15、ed char code face58=0 x0,0 x8,0 xC,0 xFA,0 x81,0 xFA,0 xC,0 x8;unsigned char code face68=0 x10,0 x30,0 x5F,0 x81,0 x5F,0 x30,0 x10,0 x0;unsigned char code face78=0 x8,0 x14,0 x22,0 x77,0 x14,0 x14,0 xF4,0 xFC;unsigned char code face88=0 xFC,0 xF4,0 x14,0 x14,0 x77,0 x22,0 x14,0 x8;unsigned char code

16、 face98=0 x9,0 xE,0 xFE,0 x89,0 xFA,0 x2C,0 x48,0 x80;unsigned char code face108=0 x12,0 x34,0 x5F,0 x91,0 x7F,0 x70,0 x90,0 x0;unsigned char code face118=0 x88,0 x54,0 x22,0 x77,0 x1C,0 xF4,0 xFE,0 x1;unsigned char code face128=0 x1,0 xFE,0 xF4,0 x1C,0 x77,0 x22,0 x54,0 x88;unsigned char code face1

17、38=0 x42,0 xE7,0 x42,0 x18,0 x18,0 x42,0 xE7,0 x42;unsigned char code face148=0 x24,0 x24,0 xE7,0 x0,0 x0,0 xE7,0 x24,0 x24;unsigned char code face158=0 x50,0 x50,0 x48,0 x44,0 x42,0 x59,0 x54,0 x52;unsigned char code face168=0 x1,0 x2,0 xFF,0 xF9,0 x19,0 x29,0 x46,0 x80;unsigned char code table16=

18、0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77; /键值unsigned char code a16=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e; /共阳极数码管的段码 0 1 2 3 4 5 6 7 8 9 A B C D E Funsigned char b3,b4;unsigned char Key

19、;unsigned char KeyH;/检测到键值高 4 位矩阵键盘控制点阵显示实验报告12unsigned char KeyL;/检测到键值低 4 位sbit LED_0=P10;/以下定义 P1 各口为控制口sbit LED_1=P11;sbit LED_2=P12;sbit LED_3=P13;#define KL_0 P2&=0 xf0/P2 低 4 位为 0 指令#define KL_F P2|=0 x0f/P2 低 4 位为 1 指令#define KH_0 P2&=0 x0f/P2 高 4 位为 0 指令#define KH_F P2|=0 xf0/P2 高 4

20、 位为 1 指令void delay1(unsigned int x)/延时 unsigned int i;/x 为延时长度,可以设置for(i=0;ix;i+)void delay() /延时函数unsigned int c;c=300;while(c-)void SJ(void)unsigned char t;P2=0 xff;/p2 口初始化KL_0;/P2 低 4 位设置为低电平t=P2&0 xf0;/取 P2 的高 4 位if(t!=0 xf0)/如果高 4 位不全为 1(有键按下)矩阵键盘控制点阵显示实验报告13KeyH=t&0 xf0;/把高 4 位的键码保存到K

21、eyH 得到的是第几列有键按下P2=0 xff;/恢复 P2P2&=0 x0f;/设置 P2 高 4 位为 0t=P2&0 x0f;/读 P2 低 4 位状态if(t!=0 x0f)/如果低 4 位不全为 1(有键按下)KeyL=t;/把低 4 位的键码保存到 KeyL 得到的是第几行有键按下Key=KeyH|KeyL; /组合 KeyH 和KeyL 成为键值 Key P2=0Xff; /防止影响到点阵的显示因为扫键的时候用了 P2 口第四位void JH(unsigned char H) /计算键值unsigned char i;unsigned char d3, d4;/键

22、值翻译为可显示的数码管数字序号unsigned char res=0;/在键值表中查到的序号for(i=0;i16;i+) /在表中查找 Key 所在的序号位置,并返回位置if(tablei=H)res=i;矩阵键盘控制点阵显示实验报告14d3=res/10;/分离序号方便数码管显示d4=res%10;b3=d3;b4=d4;void display(unsigned char d3,unsigned char d4)/显示键号给数码管 P0=a5;/选中第二位,发送第二位段码 LED_1=0; delay1(50); LED_1=1; P0=ad3;/选中第三位,发送第三位段码 LED_2=

23、0; delay1(50); LED_2=1; P0=ad4;/选中第四位,发送第四位段码 LED_3=0; delay1(50); LED_3=1; P0=0 x00; /以免影响到点阵,因为 P0 口有数据输出void DZ(unsigned char AJ) /去除影响点阵选择性输出unsigned char i;for(i=0;i8;i+)/点阵 8 列动态扫描法显示,每次扫描一列并发送数据码if(AJ=table0)P0=face1i;矩阵键盘控制点阵显示实验报告15if(AJ=table1)P0=face2i;if(AJ=table2)P0=face3i;if(AJ=table3)

24、P0=face4i;if(AJ=table4)P0=face5i;if(AJ=table5)P0=face6i;if(AJ=table6)P0=face7i;if(AJ=table7)P0=face8i;if(AJ=table8)P0=face9i;if(AJ=table9)P0=face10i;if(AJ=table10)P0=face11i;if(AJ=table11)P0=face12i;if(AJ=table12)P0=face13i;if(AJ=table13)P0=face14i;if(AJ=table14)P0=face15i;if(AJ=table15)P0=face16i;矩

25、阵键盘控制点阵显示实验报告16P2=(1i);/扫描该列delay(); /必要的等待不然扫描太快有阴影void main(void)/主函数 /t 为判断键码的临时变量while(1) SJ(); JH(Key); display(b3,b4); /给数码管显示,第二位为 5,5 和 S 比较类似,这里理解为 S; DZ(Key);七、实验中的问题与心得七、实验中的问题与心得这次实验主要还是在软件编程中出现了一些问题,尤其是要想找出一个解决 I/O 口不够用又不想扩展 I/O 口,完全依靠软件解决,就得不断地调试和修改程序。在调试中不断地下载到实验板中观察找出问题再修改,再下载,需要非常多的耐心,尤其是在时间分配上尤其显得重要。下一步的想法是在允许的情况下利用 XT100 开发板在不扩展 I/O 口的情况下,如何把矩阵键盘实现控制蜂鸣器。通过本次学习实验,获得了实验室同学的帮助,也从他们身上学到了很多知识,在老师同学的指导下,我查阅了许多相关资料,综合运用了大学中所学相关知识,通过自学、请教老师、请教同学、耐心思考、上网查询等方式,终于解决了一个又一个难题,完成本次设计,此过程中,我受到了很大的启发。

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