单片机键盘显示接口电路设计说明
键盘输入显示系统设计课程设计说明书

课程设计键盘输入显示系统设计初始条件:1.选用8086最小模式;2. 内存芯片使用2片6116(2K×8),1片2716(2K×8)EPROM;3. 8255、8259、74LS138、LCD字符型液晶显示器及其驱动器;4. 8255、8259的片选信号线分别接74LS138的Y1、Y2引脚;5. 采用4×4键盘进行菜单功能选择;6. 其他必须的配套元件。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 查阅参考资料,自学相关元件的内部结构、工作方式或初始化编程过程;2. 完成微机基本系统及其扩展接口电路设计,绘制微机系统硬件原理图;3. 绘制汇编源程序流程图,编制扩展接口电路工作的汇编源程序,包括初始化和监控工作程序;4. 通过微机或DSG-88实验装置进行汇编源程序的调试;5. 撰写设计说明书,设计说明书字数不少于5000字,具体要求见附录。
时间安排:指导教师签名:2008年11 月23日系主任(或责任教师)签名:年月日摘要键盘输入显示系统是我们日常生活中最常见的系统,我们知道,从外观上看普通的微型计算机系统是由主机箱、显示器、键盘、鼠标构成。
所以对键盘输入显示系统进行设计是非常必有和有用的。
当然本次课程设计的主要目的是达到在设计好的键盘输入显示系统中,在键盘上输入一个字符,然后在显示器上相应显示出对应的字符。
我的设计思想是:1、要实现键盘输入显示系统,首先要连接好硬件,如硬件图所示,其中各芯片接CPU,键盘的行线、列线分别接8255C口上半部、下半部,而且四根行线通过一个与非门接8259的IR0,LCD字符型液晶显示器接8255的B口,然后是编写程序。
2、编写主程序,先关中断,填写中断向量表,然后是对8259初始化,再开中断,执行其他程序。
3、编写子程序,其中有中断向量子程序、按键识别子程序、LCD显示子程序。
4、键盘输入显示:按键时,四根行线信号通过一个与非门产生一个高信号给8259IR0,8259查找中断向量表,产生中断子程序,并且在中断子程序中CALL子程按键识别序和LCD显示子程序。
单片机键盘输入编程电路设计

单片机键盘输入编程电路设计
输入电路的设计
1、电路的结构
本文的电路设计主要是用于实现单片机键盘输入编程的功能,所以电路的结构从上到下分为三部分,分别是:
(1)键盘输入部分:由上排按键及下排按键,两排按键组成。
(2)电源部分:由DC电源组成。
(3)输出部分:由多路复用器(一般称为MUX),控制部分组成,多路复用器可以将键盘输入的按键信号转变为单片机可以识别的数据位,控制部分是连接单片机的部分,可以与单片机连接,以实现键盘输入指令的操作。
2、基本电路
本文设计的电路主要由以下电路组件构成:
(1)DC电源:由7805,5V的DC电源模块组成,用于给键盘、多路复用器和控制部分提供电源。
(2)键盘输入部分:由上排按键及下排按键组成,每行按键由四列电路器件组成,四列电路器件的抽头线连接在一起,以实现按键的控制,当按键按下时,输入信号为低电平,反之,当按键处于松开状态时,输入信号为高电平。
(3)多路复用器:多路复用器主要用于将键盘输入的多个按键信号转换为单片机可以识别的数据,该多路复用器的信号输入端接收键盘上每行按键输入的信号。
单片机的输入输出设备接口详述

Dispaly(key); } }
} void delay10ms(unsigned char time)
{ unsigned char i; while(time--)
{ for(i=0;i<120;i++) ; } } void Dispaly(unsigned char k) { P0=table[k];
void main() { LABA=0; while(1) { KeyScan(); } } void KeyScan() { P0=0xFF; P0_0=0; temp=P0; temp&=0xF0; if(temp !=0xF0) { buzzer(); delay10ms(20);
temp=P0; key=13;break;
图12-8码拨盘开关
12.1.7 旋转拨码开关 旋转拨码开关常用于示波器手持电台等电子仪器设备
的输入,既具有数字输入的特点,又有电位器模拟操作方 便的优点。通过旋转拨码调节输入,旋转拨码开关是由 装在同一轴上的两个机械开关组成,转动转轴开关通断 可以完成输入,顺逆转动时两个开关的通断顺序不同, 可区分出增加还是减小输入量。旋转拨码开关的原理及 应用见图12-9。
BCD码盘拨盘后面有5个接点,其中A为输入控制线,另外4 根是BCD码输出信号。拨盘拨到不同位置时,输入控制线A分别 与4根BCD码输出线中的某根或几根接通,且拨盘的BCD码输出 线的状态正好是拨盘指示的十进制数码的8421码。
拨码开关可以直接接到口线上,由口线直接读入,但这样 需要较多的输入口线,可以采用动态的输入方法,实现拨码开 关与口线的连接,此方法与动态数码管相似。
temp&=0xF0; if(temp !=0xF0) {
单片机数字输入输出接口扩展设计方法

单片机数字输入输出接口扩展设计方法单片机作为一种常见的微控制器,其数字输入输出接口的扩展设计方法是我们在电子工程领域中经常遇到的任务之一。
在本文中,我们将讨论单片机数字输入输出接口的扩展设计方法,并探讨其中的原理和应用。
在单片机系统中,数字输入输出(I/O)接口在连接外围设备时起着至关重要的作用。
通过扩展数字 I/O 接口可以为单片机系统提供更多的输入输出通道,从而提高系统的功能和性能。
下面将介绍几种常见的单片机数字 I/O 接口扩展设计方法。
1. 并行输入输出接口扩展并行输入输出接口扩展是最常见和直接的扩展方法之一。
通常,单片机的内部I/O口数量有限,无法满足一些复杂的应用需求。
通过使用外部并行输入输出扩展芯片,可以将单片机的I/O口扩展到更多的通道,同时保持高速数据传输。
这种方法可以使用注册器和开关阵列来实现数据的输入和输出。
2. 串行输入输出接口扩展串行输入输出接口扩展是一种节省外部引脚数量的方法。
使用串行输入输出扩展器,可以通过仅使用几个引脚实现多个输入输出通道。
这种方法适用于具有较多外设设备且外围设备数量有限的应用场景。
通过串行接口(如SPI或I2C)与扩展器通信,可以实现高效的数据传输和控制。
3. 矩阵键盘扩展矩阵键盘扩展是一种常见的数字输入接口扩展方法。
很多应用中,需要通过键盘输入数据或控制系统。
通过矩阵键盘的使用,可以大大减少所需的引脚数量。
通过编程方法可以实现键盘按键的扫描和解码,从而获取用户输入的数据或控制信号。
4. 脉冲编码调制(PCM)接口扩展脉冲编码调制是一种常见的数字输出接口扩展方法。
它通过对数字信号进行脉冲编码,将数字信号转换为脉冲信号输出。
这种方法适用于需要输出多个连续的数字信号的应用,如驱动器或步进电机控制。
通过适当的电路设计和编程,可以实现高效的数字信号输出。
5. PWM(脉冲宽度调制)接口扩展PWM接口扩展是一种常用的数字输出接口扩展方法。
PWM技术通过改变信号的脉冲宽度来实现模拟信号输出。
1-单片机键盘与显示电路设计

独立式按键 单片机控制系统中,往往只需要几个 功能键,此时,可采用独立式按键结构。 1.独立式按键结构 独立式按键是直接用I/O口线构成的单 个按键电路,其特点是每个按键单独占 用一根I/O口线,每个按键的工作不会影 响其它I/O口线的状态。独立式按键的典 型应用如图9-3所示。
V CC
P 1.0 P 1.1 P 1.2 P 1.3 P 1.4 P 1.5 P 1.6 P 1.7
P1口某位结构
P1口电路中包含有一个数据输出锁存器、一个三态数据输入缓冲器 、一个数据输出的驱动电路。 P1口的功能和驱动能力
P1口只可以作为通用的I/O口使用;
P1可以驱动4个标准的TTL负载电路; 注意在P1口作为通用的I/O口使用时,在从I/O端口读入数据时,应 该首先向相应的I/O口内部锁存器写“1”。 举例:从P1口的低四位输入数据 MOV MOV P1,#00001111b ;;先给P1口底四位写1 A,P1 ;;再读P1口的底四位
依此规律循环,即可使各位数码管显 示将要显示的字符。虽然这些字符是在不 同的时刻分别显示,但由于人眼存在视觉 暂留效应,只要每位显示间隔足够短就可 以给人以同时显示的感觉。 采用动态显示方式比较节省I/O口,硬 件电路也较静态显示方式简单,但其亮度 不如静态显示方式,而且在显示位数较多 时,CPU要依次扫描,占用CPU较多的时 间。
矩阵式按键 单片机系统中,若使用按键较多时,通 常采用矩阵式(也称行列式)键盘 1.矩阵式键盘的结构及原理 矩阵式键盘由行线和列线组成,按键位 于行、列线的交叉点上,其结构如下图9-4 所示。
+5 V 0 4 8 12 0 1 5 9 13 1 2 6 10 14 2 3 7 11 15 3 0 1 2 3
4.3 单片机键盘接口电路设计

//函数功能:键盘扫描 //检测到有键按下 //延时10ms再去检测 //按键k1被按下 //按键k2被按下 //按键k3被按下 //按键k4被按下
▲▲▲
独立式键盘接口设计案例
void forward(void) { P3=0xfe; led_delay(); P3=0xfd; led_delay(); P3=0xfb; led_delay(); P3=0xf7; led_delay(); P3=0xef; led_delay(); P3=0xdf; led_delay(); P3=0xbf; led_delay(); P3=0x7f; led_delay(); }
break;
}
}
}
▲▲▲
独立式键盘接口设计案例
void key_scan(void) { P1=0xff; if((P1&0x0f )!=0x0f ) { delay10ms(); if(S1==0) keyval=1; if(S2==0) keyval=2; if(S3==0) keyval=3; if(S4==0) keyval=4; }
//处理按下的k1键,“……”为处理程序 //跳出switch语句 //处理按下的k2键 //跳出switch语句 //处理按下的k3键 //跳出switch语句 //处理按下的k4键 //跳出switch语句 //处理按下的k5键 //跳出switch语句
独立式键盘接口设计案例
1.独立式键盘的查询工作方式
{
case 1:forward(); //键值为1,调用正向流水点亮函数
break;
case 2:backward(); //键值为2,调用反向流水点亮函数
break;
case 3:Alter(); //键值为3,调用高、低4位交替点亮函数
第5章 MCS–51单片机的接口与应用 99页 5.8M

(1) 用键盘连接的I/O线的二进制组合表示键码。例如用4行、
4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4 位口线的二进制数的组合表示16个键的编码,如图5.4(a)所示。 各键相应的键值为88H、84H、82H、81H、48H、44H、42H、 41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键 值编码软件较为简单直观,但离散性大,不便安排散转程序的 入口地址。
第5章 MCS–51单片机的接口与应用 JNB ACC.2,K2 JNB ACC.3,K3 JNB ACC.4,K4 JNB ACC.5,K5 JNB ACC.6,K6 ;检测2号键是否按下,按下转 ;检测3号键是否按下,按下转 ;检测4号键是否按下,按下转 ;检测5号键是否按下,按下转 ;检测6号键是否按下,按下转
;0号键功能程序
;0号键功能程序执行完返回 ;0号键功能程序
JMP START
……………………… PROM7: ……………………… JMP START …
;1号键功能程序执行完返回
;7号键功能程序 ;7号键功能程序执行完返回
第5章 MCS–51单片机的接口与应用
5.1.4 行列式键盘
行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构, 按键设置在行列的交点上。例如4×4的行列结构可组成16个键 的键盘。因此,在按键数量较多时,可以节省I/O口线。 1.行列式键盘的接口 行列式键盘的接口方法有许多,例如直接接口于单片机的 I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接 口;利用一种可编程的键盘、显示接口芯片8279进行接口等。 其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系
MOVX @DPTR,A
单片机原理及接口技术(C51编程)单片机的开关检测、键盘输入 与显示的接口设计

5.2.1 开关检测案例1
图5-3 开关、LED发光二极管与P1口的连接
5.2.1 开关检测案例1
参考程序如下: #include <reg51.h> #define uchar unsigned char void delay( ) {
uchar i,j; for(i=0; i<255; i++) for(j=0; j<255; j++); }
5.1.2 I/O端口的编程举例
03 用循环左、右移位函数实现
OPTION
使用C51提供的库函数,即循环左移n位函数和循环右
移n位函数,控制发光二极管点亮。参考程序:
#include <reg51.h> #include <intrins.h> 函数的头文件 #define uchar unsigned char void delay( ) {
5.1.2 I/O端口的编程举例
#include <reg51.h> #define uchar unsigned char uchar tab[ ]={ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; /*前8个数据为左移点亮 数据,后8个为右移点亮数据*/ void delay( ) {
// P1口为输入 // 读入P1口的状态,送入state // 屏蔽P1口的高6位
5.2.2 开关检测案例2
switch (state) {
// 判P1口低2位开关状态
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学
单片机及其接口技术
课程设计说明书
学生:学号:
学院:
专业:
题目:单片机键盘显示接口电路设计
指导教师:小林职称: 副教授
2012年6月17日
中北大学
单片机及其接口技术
课程设计任务书
11/12 学年第二学期
学院:
专业:
学生姓名:学号:
课程设计题目:单片机键盘显示接口电路设计
起迄日期:6月11日~6月17日
课程设计地点:中北大学
指导教师:小林
系主任:王忠庆
下达任务书日期: 2012年06月11日课程设计任务书
课程设计任务书
第一章、绪论89C51是一种带4KB闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL 的89C51是一种高效微控制器,89C2051是它的一种精简版本。
89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
在本次课程设计中,便采用89C51单片机。
第二章、设计容
一、4×4键盘
原理:4
行
行
行
行
图1
电路原理图见附图一
本次设计为4×4的矩阵键盘,这样的设计可以有效的减少键盘与单片机接口时所占用的I/O接口。
在这种非编码键盘的单片机系统中,键盘处理程序首先执行有无按键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常采用逐行(逐列)扫描的方法。
首先判断有无按键按下。
方法是:向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入到累加器A中,如果有按键按下,会使列线电平被拉至低电平,是列输入不全为1。
判断键盘哪一个键被按下。
方法是:一次给行线送低电平,然后查所有列线状态,称为行扫描,如果全为1,则所按下键不在此行,如果不全为1,则所按下键必在此行,而且是在与零电平列线相交的交点上的那个键。
在此,按键的位置码并不等于按键的实际定义键值,因此还必须进行转换,即键值译码,本次设计中采用软件实现键值的译码,译码方式如下:
第0行键值为:0行×4+列号(0~3)为0、1、2、3;
第1行键值为:1行×4+列号(0~3)为4、5、6、7;
第2行键值为:2行×4+列号(0~3)为8、9、A、B;
第3行键值为:3行×4+列号(0~3)为C、D、E、F;
译码程序如下:
MOV A,R0 ;取行号送A
MOV B,#04 ;每一行按键个数
MUL AB ;行号×按键数
ADD A,R2 ;R2中存放列号,行号×按键数+列号=键值,在A 中
键盘行扫描流程图如下:
图2
二、8位LED七段数码管显示
原理:
在显示电路中,需要使用到74LS48与74LS138两块集成芯片。
74LS48用作七段数码管数值显示译码器,将P0.0-P0.3输出的数值BCD码译码后得到的段选码送给七段数码管,使得数码管能够正确显示数值。
74LS138做选位段译码器,将P0.4-P0.6输出的位选BCD码转化为二进制反码,进行选位。
在本次设计中,8为LED七段数码管均采用共阳极接法。
通过八个非门对74LS138输出的电平进行取反,与74LS48共同实现共阳极接法对七段LED数码管的显示驱动。
具体电路原理见附图二。
74LS48芯片的电路结构原理及引脚图:引脚图中的大写字母A、B、C、D为BCD码输入端,小写字母a、b、c、d、e、f、g为字型码输出端,LT为灯测试输入端,RBI为消隐输入,RBO为消隐输出。
表1为74LS48 BCD-7段锁存/译码/驱动器作为段驱动器的输入输出信号的对应关系。
在使用时,将芯片的输入端引脚A、B、C、D与单片机的P0口相连接,该芯片的输出端七个管脚,与LED显示器的七个段码引脚相连接。
74LS48的作用是接受来自单片机的BCD码型的输入信号,经锁存、译码和放大后,输出七段字型码到LED显示器,完成对BCD码到七段字型码的锁存、译码和驱动的功能。
74LS48 BCD-7段译码器输入/输出端信号对照表
输入端电平输出端电平显示
字型输出端电平输出端电平显示
字型
D C B A g f e d c b a D C B A g f e d c b a
0 0 0 0 0 1 1 1 1 1 1(3FH) 0 0 1 0 1 1 1 0 1 0 11(6DH) 5
0 0 0 1 0 0 0 0 1 1 0(06H) 1 0 1 1 0 1 1 1 1 0 11(7DH) 6
0 0 1 0 1 0 1 1 0 1 1(5BH) 2 0 1 1 1 0 0 0 0 1 11(07H) 7
0 0 1 1 1 0 0 1 1 1 1(4FH) 3 1 0 0 0 1 1 1 1 1 11(7FH) 8
0 1 0 0 1 1 0 0 1 1 0(66H) 4 1 0 0 1 1 1 0 1 1 11(6FH) 9
表1
74LS138 为3 线-8 线译码器工作原理如下:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
其输入输出真值表如表2.
表2
此电路可以实现静态与动态两种显示方式:
1、静态显示可实现一位显示。
既选位段选中一位,数据段输出数值,使得数码管显示数值。
静态显示器的亮度较高。
这种显示方式
编程容易,管理也较简单,但占用I/O口线资源较多。
在显示位数较多的情况下,一般都采用动态显示方式。
2、动态显示可以实现八位同时显示不同数值。
段选码与位选码没送入一次后延时1ms,因为人眼的视觉暂留时间为100ms,所以,每次每次显示的时间不超过20ms,并保持一段时间,易造成视觉暂留效果,给人看上去每个数码管总在亮。
这种方式称作软件扫描显示。
例如要显示“0123”,必须对P0口进行如下编辑:
MOV P0,#80H
LCALL DYI
MOV P1,#41H
LCALL DYI
MOV P1,#22H
LCALL DYI
MOV P1,#13H
LCALL DYI
第三章、课程设计心得体会
通过这次课程设计,让我了解了89C51在实际生活中的一些应用,单片机键盘和LED电路的设计及工作原理。
让我在学习单片机理
论知识同时,让我明白了要在实际生活中学会应用,提高了我的动手能力,要手脑并用。
本次设计是通过使用PROTEL软件来进行设计,让我熟悉的掌握了此软件的基本操作。
本来有些遗忘的知识点通过查参考资料,让我对旧的知识有所巩固,同时也明白了原来疑惑的地方。
让我的专业知识有一定的提高,且提高我的综合能力,以便在今后社会生活中不但要学会运用所学的知识来解决实际问题,而且要不断的提高自己的实际动手能力,从而有自己的一些经验去解决问题。
附录1:
参考文献:
1.焱,艳华,王康谊.数字电子技术基础.:电子工业,2009
2.薛小玲,志群,贾俊荣.单片机接口模块应用与开发实例详解.:航
天航空大学,2010
3.振辉.改进式MCS-51单片机实验.:科学,2006
4.高伟.AT89单片机原理及其应用.:国防工业,2008
5.北明,于铭.单片机原理与实践教程.:工程大学,2009
6.余永泉.Flash单片机原理及应用.:电子工业,1997
7.守义.单片机应用技术.:电子科技大学,2006
8.毅刚.MCS-51单片机原理及应用.:工业大学,2004
9.建中.单片机原理及应用.:电子科技大学,2002
10.朝青.单片机原理及接口技术.:航空航天大学,2006
附图一:
键盘电路图
13 附图二:
8位七段LED显示电路图
14。