已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
22矩阵式键盘摘要:本设计主要是用来学习键盘扫描程序的设计,数码管的动态显示程序设计。设计中,将单片机8051的并行口P1的P1.0,P1.1接键盘的行,将P1.2,P1.3接键盘的列,将并行口P2的P2.7P2.0分别接数码管的数据段g,f,a,b,d,h,e,c. 以及将P3.6,P3.7分别接数码管的偏选端,当按下第0行0列时数码管就显示00,按下第0行1列时数码管就显示01,第1行0列时数码管就显示02,第1行1列时数码管就显示03。本设计一共四个按键,用双数码管动态显示。关键字:单片机,数码管动态显示 ,行列式键盘,共阴数码管一、 矩阵式键盘工作原理如下图1,I/O接口线组成行、列结构,按键设置在行、列的交点上。行线通过上拉电阻接+5V。 第一步是CPU检测键盘上是否有按键。具体过程如下:P1.2, P1.3输出0,即将列P1.2, P1.3置成低电平,然后将行线P1.0,P1.1电平状态读入累加器A中。如果有键按下,总有一根行线电平被拉至低电平,从而使行输入状态不全为“1”。第二步是识别是哪一个键按下。具体过程如下:先将P1.2输出为0,即将列P1.2置成低电平。然后读入行线P1.0,P1.1电平状态,如果全为“1”,则按下的键不在此列;如果不全为“1”,则按下的键必在此列;而且是该列与“0”电平线相交的交点上的那个键。再将P1.3输出为0,即将列P1.3置成低电平。做法如上。二、 数码管动态显示原理A.数码管原理:在单片机应用系统中,经常用到LED数码管作为显示输出设备。LED数码管虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,所以在应用中经常使用它。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,他有公阳极和共阴极两种。如图11所示。其中共阳极8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源,要使哪根数码管亮,则对应的阴极接低电平。而共阴极8段发光二极管的阴极端连接在一,阳极端分开控制,使用时公共端接地,要使哪根数码管亮,则对应的阳极接高电平即可。 从ag引脚输入不同的8位二进制编码,可显示不同的数字或字符。h为小数点位。图11在此我们着重介绍下本次实验中用到的共阴极结构的数码管。在共阴极结构中,各段发光二极管的阴极连在一起,将此公共点接地,某一段发光二极管的阴极为高电平时,该段发光。共阴极字段码:LED显示09某个字符时,则要求在adp送固定的字段码,如要使LED显示“0”,则 要求a、b、c、d、f各引脚为高电平,g和dp为低电平,字段码为“3fh” 。dp g f e d c b a对应为 0 0 1 1 1 1 1 1 。共阴极字符09七段码如下: 字符: 0 1 2 3 4 5 6 7 8 9 字段码:3fh 06h 5bh 4fh 66h 6dh 7dh 07h 7fh 6fhB.LED的动态显示方式LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O接口控制,公共端不是直接接地(共阴极)或电源(用阳极),而是通过相应的I/O接口控制。它是循环依次使每个LED的公共端接地(共阴极)或电源(用阳极),每次接通的时间为几毫秒的时间,一次循环完毕后,下一次循环又这样的开始依次进行,从计算机的角度看是一个一个的显示,但由于人的视觉暂留效应,只要循环周期足够快,看起来所有的数码管都是一起显示的了,这就是动态显示原理。 三、 系统设计部分如图1-0所示,此按键设计是以单片机8051为核心,以按键和数码管为扩展,实现键盘识别和动态显示的功能。 图1-03.2总体设计方案3.2.1 设计思路将单片机8051的并行口P1的P1.0,P1.1接键盘的行,将P1.2,P1.3接键盘的列,将并行口P2的P2.7P2.0分别接数码管的数据段g,f,a,b,d,h,e,c. 以及将P3.6,P3.7分别接数码管的偏选端,当按下第0行0列时数码管就显示00,按下第0行1列时数码管就显示01,第1行0列时数码管就显示02,第1行1列时数码管就显示03。3.2.2 方案论证与选择方案一:将单片机8051的并行口P1的P1.0,P1.1接键盘的行,将P1.2,P1.3接键盘的列,将并行口P2的P2.7P2.0分别接数码管的数据段g,f,a,b,d,h,e,c. 以及将P3.6,P3.7分别接数码管的偏选端。方案二:将单片机8051的并行口P0的P00,P01接键盘的行,将P0.2,P0.3接键盘的列,将并行口P2的P2.7P2.0分别接数码管的数据段g,f,a,b,d,h,e,c. 以及将P3.6,P3.7分别接数码管的偏选端。点评:由于在方案二中,P0口内部没有上拉电阻,如用此方案,就要比方案一多接几个上拉电阻,在键盘多的时候很容易弄错,所以在这里我们选择方案一。四. 单元电路设计部分4.1 数码管显示电路的设计这里是将单片机8051的并行口P2的P2.7P2.0分别接数码管的数据段g,f,a,b,d,h,e,c. 以及将P3.6,P3.7分别接数码管的偏选端,如图1-1。图1-14.2 矩阵式键盘的设计将单片机8051的并行口P1的P1.0,P1.1接键盘的行,将P1.2,P1.3接键盘的列。如图1-2。五. 软件设计 N N Y Y N N Y Y 六. 动态显示及键盘扫描程序#include /包含特殊功能寄存器库unsigned char code table=0x3f,0x06,0x5b,0x4f; unsigned char temp;unsigned char key1,key2;unsigned char i,j;void delay1() /延迟函数1for(i=0;i50;i+) for(j=0;j50;j+); void delay2() /延迟函数2 for(i=0;i50;i+) for(j=0;j200;j+); void main(void) /主函数while(1)P1=0x03; /置行P1.0,P1.1为1,列P1.2,P1.3为0temp=P1; /检测P1口temp=temp&0x0f; /检测列p1.2, p1.3是否有按键while(temp!=0x03) delay2(); temp=P1; /再次检测是否有按键 temp=temp&0x03; while(temp!=0x03) P1=0x0b; /置行P1.0,P1.1为1,列P1.2为0,P1.3为1 temp=P1; temp=temp&0x0f; switch(temp) case 0x0a:/检测行 p1.0是否有按键 key1=0; key2=1; break; case 0x09:/检测行 p1.1是否有按键 key1=1; key2=0; break; P1=0x07; /置行P1.0,P1.1为1,列P1.2为1,P1.3为0 temp=P1; temp=temp&0x0f; switch(temp) case 0x05:/检测行 p1.1是否有按键 key1=2; key2=3; break; case 0x06:/检测行 p1.0是否有按键 key1=3; key2=2; break; P2=0xef; /选择端口P2.4,数码管1显示P0=tablekey1;delay1();P2=0xdf;/选择端口P2.5,数码管2显示P0=tablekey2;delay1(); 七、双机通讯原理实现单片机的双机通讯是使用单片机的串口进行数据的发送和接收。两机之间遵循严格的通信协议。必须在一方发送的时候另一方进行接受,在时序上不能出现错误。进行双机通讯前必须先对单片机的串口方式进行设定。本设计中使用方式1,设定波特率为1250bps.Bps = *(T1的溢出率)/32。甲机发送数据 ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV TMOD,#20H ;定时器T1,工作方式2 MOV TH1,#0ecH ;设波特率 MOV TL1,#0ecH MOV PCON,#00H ;电源控制寄存器SMOD位为0 MOV SCON,#50H ;串口控制方式1 MOV DPTR,#LED MOV R0,#00HL4: MOV A,R0 MOVC A,A+DPTR ;查表指令 SETB TR1 ;启动定时器T1 MOV SBUF,A ;甲机开始发送数据LOOP:JNB TI,LOOP ;判断甲机数据有没发送完毕 ACALL DELAY ;调入延迟 CLR TI ;准备下一次发送数据 INC R0 CJNE R0,#0AH,L4 ;判断十个数据有没发送完毕 SJMP MAINDELAY: MOVR1,#05H ;延迟程序L2: MOVR2,#0FFHL3: MOVR3,#0FFH L1: DJNZ R3,L1 DJNZ R2,L3 DJNZ R1,L2 RETLED: DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH END乙机接收数据 ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV TMOD,#20H;定时器T1,工作方式2 MOV TH1,#0ecH ;设波特率 MOV TL1,#0ecH MOV PCON,#00H ;电源控制寄存器SMOD位为0 X: MOV SCON,#50H;串口控制方式1,允许接收 SETB TR1 ;启动定时器T1LOOP:JNB RI,LOOP ;判断乙机数据有没接收完毕 MOV A,SBUF ;乙机数据接收完毕,置入数据寄存器A,CPU来取数据 CLR P2.4 ;选择数码管显示 SETB P2.5 MOV P0,A ;P0口显示数据 CLR RI ;准备下一次接收数据 SJMP X End八总结通过这次设计,我学会了键盘识别程序,数码管动态显示程序的设计方法以及焊接电路时的几个问题,使我加深了对单片机矩阵式键盘工作原理、动态扫描原理及双机通讯的了解。比如:用两个数码管进行动态显示时,要将数码管的数据段连接在一起,但不能公共端接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽电气工程职业技术学院基础部数学教研室
- 多元函数微分法的应用
- 2026年成人高等学校招生全国统一考试(高升专)语文模拟试题及详细答案解析
- 事业编医疗卫生岗2026历年真题试卷及解析
- 《物联网应用综合实训》课件-项目2:智慧社区项目设计
- 物业小区道路维修合同范本
- 土地整体转让合同范本
- 2026元宇宙数字资产化视角下天使雕塑虚实共生商业模式探讨
- 医学概论溶血性贫血
- 城市水工程施工阶段监理
- 2026年新教科版科学六年级上册第一单元检测题(含答案)
- 概率论 课件全套 龙永红 第1-30讲:导论、集合-中心极限定理
- 网评员管理办法
- 2026年辽宁省中考数学试卷(含答案及解析)
- 2026年民航事故调查人员法规专项试题及答案
- 统编教材小学语文四年级上册全册教案教学设计
- 家庭健康管理方案指南手册
- 河南推拿职业学院2026年高职单招《职业适应性测试》面试题目及答案
- ISO28000:2022供应链安全管理体系
- 肝内胆管癌护理查房课件
- 常用有色金属资源循环利用体系构建
评论
0/150
提交评论