单片机实验报告矩阵键盘控制点阵的显示.doc_第1页
单片机实验报告矩阵键盘控制点阵的显示.doc_第2页
单片机实验报告矩阵键盘控制点阵的显示.doc_第3页
单片机实验报告矩阵键盘控制点阵的显示.doc_第4页
单片机实验报告矩阵键盘控制点阵的显示.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验报告 实验名称: 矩阵键盘控制点阵的显示 专业班级: 控制科学与工程 学号:s20100394 学生姓名: 李佛垚 指导教师:李晓林、李丽宏、牛昱光 2013 年 1 月 18 日 矩阵键盘控制点阵显示实验报告 i 目目 录录 一、实验目的1 二、实验内容1 (一)扫描矩阵键盘读出键值。1 (二)数码管显示键号。1 (三)点阵显示不同按键需要输出的信息。 (根据需要可以修改) 。1 三、实验设备及配套软件1 四、实验原理2 五、实验电路及功能说明2 (一)stc89c52rc 单片机主要性能2 (二) 矩阵键盘 4 1.连接线路图.4 2.矩阵键盘说明:.4 (三) 点阵 5 1.连接线路图.5 2.8x8 点阵 led 等效电路连接图:5 3.显示原理说明:6 (四) 数码管 6 1数码管连接线路图6 2.动态显示原理.6 (五)xt100 最小系统原理图7 (六)实验结果分析8 1.实物图.8 2.结果分析.8 六、软件设计流程图8 (一)程序说明8 (二)流程图9 1.主程序流程图.9 2.键盘扫描程序流程图.10 (三)程序11 七、实验中的问题与心得16 矩阵键盘控制点阵显示实验报告 1 一、实验目的一、实验目的 一般任何一个适用的系统都少不了键盘和显示这两个部分,键盘为使 用者设定功能提供操作平台;显示反映出使用者设定功能的状态。在传统 的设计中,一般都是把键盘模块和显示模块分开设计,这样结构清晰,软 件设计简单,当 i/o 口不够用时,通常通过扩展 i/o 的方法来解决问题。 以上做法有优点但同时也暴露了一个问题,它们都需要通过增加芯片来扩 展 i/o 口。当硬件成本要求苛刻的情况下,这种设计理念就很难适应其要 求,而本设计采用显示模块和键盘模块共用端口的方法,分时显示和按键 扫描,很好的解决了这一矛盾。 二、实验内容二、实验内容 利用 xt100 开发板中的 stc89c52 单片机的 p0 口和 p2 口的分时复用 以及单片机执行速度快和人的视觉反应有限的原理,通过对同一 i/o 端口 分时作为键盘电路的输入端口和数码管以及点阵显示电路的输出及控制端 口来实现 i/o 端口的公用。由于 xt100 开发板已经固化,p0 口作为数码管 的数据输出口同时还是点阵的数据输出口,p2 口作为矩阵键盘和点阵的控 制端口,在不用扩展 i/o 口和增加成本的基础上解决 i/o 不够用的问题。 实验具体内容: (一)扫描矩阵键盘读出键值。 (二)数码管显示键号。 (三)点阵显示不同按键需要输出的信息。 (根据需要可以修改) 。 三、实验设备及配套软件三、实验设备及配套软件 xt100 学习开发板,keil uvision 软件,microsoft visual c+,stc_isp_v483 矩阵键盘控制点阵显示实验报告 2 四、实验原理四、实验原理 我们知道微控制器的运行速度快,人的视觉灵敏度有限,同时显示器 件(主要是发光二极管,数码管)具有余光效应,所以我们可以充分利用以 上特点,合理分配显示和键盘扫描的时间,就可以实现显示模块和键盘模 块共用端口以及不同显示共用端口的功能。在本实验中利用模拟的方式, 通过不同的按键来显示不同的信息,达到实验的目的。 硬件原理框图如图 1 所示 共用的共用的 i/0 端口端口 矩阵键盘模块矩阵键盘模块 数码管显示模块数码管显示模块 点阵显示模块点阵显示模块 图 1 五、实验电路及功能说明五、实验电路及功能说明 (一)stc89c52rc 单片机主要性能 1. 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任 意选择,指令代码完全兼容传统 8051. 2. 工作电压:5.5v3.3v(5v 单片机)/3.8v2.0v(3v 单片机) 3. 工作频率范围:040mhz,相当于普通 8051 的 080mhz,实际工 作频率可达 48mhz 4. 用户应用程序空间为 8k 字节 矩阵键盘控制点阵显示实验报告 3 5. 片上集成 512 字节 ram 6. 通用 i/o 口(32 个) ,复位后为:p1/p2/p3/p4 是准双向口/弱上拉, p0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 i/o 口用时,需加上拉电阻。 7. isp(在系统可编程)/iap(在应用可编程) ,无需专用编程器,无 需专用仿真器,可通过串口(rxd/p3.0,txd/p3.1)直接下载用户 程序,数秒即可完成一片 8. 具有 eeprom 功能 9. 具有看门狗功能 10.共 3 个 16 位定时器/计数器。即定时器 t0、t1、t2 11.外部中断 4 路,下降沿中断或低电平触发电路,power down 模式可 由外部中断低电平触发中断方式唤醒 12.通用异步串行口(uart) ,还可用定时器软件实现多个 uart 13.工作温度范围:-40+85(工业级)/075(商业级) 14.pdip 封装 15. stc89c52rc 引脚图 矩阵键盘控制点阵显示实验报告 4 (二) 矩阵键盘 1.连接线路图 2.矩阵键盘说明: 键盘是人机对话不可缺少的组件之一,在按键比较少时,我们可以一 个单片机 i/o 口接一个按键,但当按键需要很多,i/o 资源又比较紧张时, 使用矩阵式键盘无疑是最好的选择。其原理是初使化时我们先让 p2 口的 低四位输出低电平,高四位输出高电平,即让 p2 口输出 0xf0。扫描键盘 的时候,我们读 p2 口,看 p2 是 否还为 0xf0,如果仍为 0xf0,则表示没 有按键按下;如果不 0xf0,读 p2 口,说明有按键按下了,我们就可以读 键码来识别到底是哪一个键按下了,识别的过程是这样的,初使化时我们 让 p2 口的低四位输出低电平,高四位输出高电平,确认了真的有按键按 下时,我们首先读 p2 口的高四位,然后 p2 口输出 0x0f,即让 p2 口的低 四位输出高电平,高四位输出低电平,然后读 p2 口的低四位,最后我们 把高四位读到的值与低四位读到的值做或运算就得到了该按键的键值。就 可以知道是哪个键按下了。 矩阵键盘控制点阵显示实验报告 5 (三) 点阵 1.连接线路图 2.8x8 点阵 led 等效电路连接图: 矩阵键盘控制点阵显示实验报告 6 3.显示原理说明: 点阵 led 扫描法介绍 点阵 led 一般采用扫描式显示,实际运用分为三种方式: (1)点扫描; (2)行扫描; (3)列扫描。 若使用第一种方式,其扫描频率必须大于 1664=1024hz,周期小于 1ms 即可。若使用第二和第三种方式,则频率必须大于 168=128hz,周 期小于 7.8ms 即可符合视觉暂留要求。此外一次驱动一列或一行(8 颗 led)时需外加驱动电路提高电流,否则 led 亮度会不足。在本实验的点 阵是 8x8 共阳极,所采用的是列扫描方法。所有行的数据由 p0 口输出, 每一列由 p2 口动态扫描,并且有 1k 的排阻所接的驱动电路。 (四) 数码管 1数码管连接线路图 2.动态显示原理 数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一, 动态驱动是将所有数码管的 8 个显示笔划“a,b,c,d,e,f,g,dp “的同名端 连在一起,另外为每个数码管的公共极 com 增加位选通控制电路,位选通 矩阵键盘控制点阵显示实验报告 7 由各自独立的 i/o 线控制,当单片机输出字形码时,所有数码管都接收到 相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元 选通 com 端电路的控制,所以我们只要将需要显示的数码管的选通控制打 开,该位就显示出字形,没有选通的数码管就不会亮。 透过分时轮流控制各个 led 数码管的 com 端,就使各个数码管轮流受 控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各 位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组 稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的, 能够节省大量的 i/o 口,而且功耗更低。 (五)xt100 最小系统原理图 矩阵键盘控制点阵显示实验报告 8 (六)实验结果分析 1.实物图 2.结果分析 矩阵键盘的扫描过程中没有延时确认按键,因为具体实物中按键 的动作是比较慢的,不会出现有“假按”的现象,另一方面是由于整个程 序是顺序执行的,要求整个程序要快速的顺序执行,如果太多延时会影响 程序的实时性。在点阵的显示中,会出现“阴影”这是由于扫描时需等待 p0 口完成数据的输出,经过适当延时可以得到很好的解决。 六、软件设计流程图六、软件设计流程图 (一)程序说明 在键盘扫描的过程中需要用到 p2 口,因此为了在点阵显示中不影 响到点阵,必须在键盘扫描完后的时间内初始化,同理,在数码管显 示中用到了 p0 口作为数据输出口,因此在程序中也要对 p0 口初始化, 这样在点阵的显示中需要用到 p0 与 p2 口才不受影响,同时在点阵和 数码管的动态扫描过程中要合理划分好时间,以免影响到各自显示的 亮度和清晰度。 矩阵键盘控制点阵显示实验报告 9 (二)流程图 1.主程序流程图 开始 键盘扫描 p2 口初始化 读取键值 数码管显示 p0 口初始化 选取图像信息 点阵显示 返回 矩阵键盘控制点阵显示实验报告 10 2.键盘扫描程序流程图 开始 p2 口低四位置低电平 读取 p2 口的高四位 判断高四位全为 1? 否 是 保存 p2 口高四位 p2 口高四位置低电平 判断低四位全为 1? 读取 p2 口的低四位 p2 口初始化 否 保存 p2 口低四位 组合键值 返回 是 矩阵键盘控制点阵显示实验报告 11 (三)程序 #include /包含头文件 unsigned char code face18=0x0,0x80,0x80,0xff,0x88,0x88,0x80,0x0; unsigned char code face28=0x0,0x2,0x2,0xfe,0xa,0x12,0x22,0x0; unsigned char code face38=0x40,0x24,0x54,0x5c,0x77,0x54,0x44,0x0; unsigned char code face48=0x40,0x24,0x14,0x7c,0x57,0x74,0x4,0x0; unsigned char code face58=0x0,0x8,0xc,0xfa,0x81,0xfa,0xc,0x8; unsigned char code face68=0x10,0x30,0x5f,0x81,0x5f,0x30,0x10,0x0; unsigned char code face78=0x8,0x14,0x22,0x77,0x14,0x14,0xf4,0xfc; unsigned char code face88=0xfc,0xf4,0x14,0x14,0x77,0x22,0x14,0x8; unsigned char code face98=0x9,0xe,0xfe,0x89,0xfa,0x2c,0x48,0x80; unsigned char code face108=0x12,0x34,0x5f,0x91,0x7f,0x70,0x90,0x0; unsigned char code face118=0x88,0x54,0x22,0x77,0x1c,0xf4,0xfe,0x1; unsigned char code face128=0x1,0xfe,0xf4,0x1c,0x77,0x22,0x54,0x88; unsigned char code face138=0x42,0xe7,0x42,0x18,0x18,0x42,0xe7,0x42; unsigned char code face148=0x24,0x24,0xe7,0x0,0x0,0xe7,0x24,0x24; unsigned char code face158=0x50,0x50,0x48,0x44,0x42,0x59,0x54,0x52; unsigned char code face168=0x1,0x2,0xff,0xf9,0x19,0x29,0x46,0x80; unsigned char code table16= 0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77; /键值 unsigned char code a16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /共阳极数码管的段码 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char b3,b4; unsigned char key; unsigned char keyh;/检测到键值高 4 位 矩阵键盘控制点阵显示实验报告 12 unsigned char keyl;/检测到键值低 4 位 sbit led_0=p10;/以下定义 p1 各口为控制口 sbit led_1=p11; sbit led_2=p12; sbit led_3=p13; #define kl_0 p2/x 为延时长度,可以设置 for(i=0;ix;i+) void delay() /延时函数 unsigned int c; c=300; while(c-) void sj(void) unsigned char t; p2=0xff;/p2 口初始化 kl_0;/p2 低 4 位设置为低电平 t=p2/取 p2 的高 4 位 if(t!=0xf0)/如果高 4 位不全为 1(有键按下) 矩阵键盘控制点阵显示实验报告 13 keyh=t/把高 4 位的键码保存到 keyh 得到的是第几列有键按下 p2=0xff;/恢复 p2 p2/设置 p2 高 4 位为 0 t=p2/读 p2 低 4 位状态 if(t!=0x0f)/如果低 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;/键值翻译为可显 示的数码管数字序号 unsigned char res=0;/在键值表中查到 的序号 for(i=0;i16;i+) /在表中查找 key 所在的序号 位置,并返回位置 if(tablei=h) res=i; 矩阵键盘控制点阵显示实验报告 14 d3=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=0; delay1(50); led_2=1; p0=ad4;/选中第四位,发送第四位段码 led_3=0; delay1(50); led_3=1; p0=0x00; /以免影响到点阵,因为 p0 口有数据输出 void dz(unsigned char aj) /去除影响点阵选择性输出 unsigned char i; for(i=0;i8;i+)/点阵 8 列动态扫描法显示,每次扫描一列并发送 数据码 if(aj=table0) p0=face1i; 矩阵键盘控制点阵显示实验报告 15 if(aj=table1) p0=face2i; if(aj=table2) p0=face3i; if(aj=table3) p0=face4i; if(aj=table4) p0=face5i; if(aj=table5) p0=face6i; if(aj=table6) p0=face7i; if(aj

温馨提示

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

评论

0/150

提交评论