8255键盘扫描与LED数码管显示
利用8255和51单片机实现数码管显示按键值的实验
期中大作业姓名:性别:专业:学号:课题:【利用51单片机、8255实现数码管显示按键值的程序实验】要求:【4*4矩阵键盘,按0-15数码管上分别显示0-9、a-f】一、芯片资料;8255:8255的内部结构,由三部分电路组成:与CPU的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路。
D7~D0(data bus):三态、双向数据线,与CPU数据总线连接,用来传送数据。
(chip select):片选信号线,低电平有效时,芯片被选中。
A1, A0(port address):地址线,用来选择内部端口。
(read):读出信号线,低电平有效时,允许数据读出。
(write):写入信号线,低电平有效时,允许数据写入。
RESET(reset):复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0(port A):A口输入/输出信号线。
PB7~PB0(port B):B口输入/输出信号线。
PC7~PC0(port C):C口输入/输出信号线。
VCC:+5V电源。
GND:电源地线。
8255的工作方式方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路8255初始化编程8255的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。
8255由编程写入的控制字有两个:方式控制字和置位/复位控制字。
方式控制字用于设置端口A, B, C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PC i(i=0~7)的电平。
两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。
(1)方式控制字的格式8255工作方式控制字的格式。
D0:设置PC3~PC0的数据传送方向。
利用8255和5单片机实现数码管显示按键值的实验21页word文档
物理与电子工程学院单片机原理及其应用期中大作姓名:专业:学号:课题:使用8255和51单片机实现对数码管显示案件数值控制要求:从0--15,数码管上分别显示0--9,A--F,4*4矩阵键盘芯片资料8255一、简介8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O 口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
二、内部结构8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C 口及控制寄存器,故地址线为两根A0~A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。
(2)地址总线AB:编号为A0~A1,用于选择A、B、C口与控制寄存器。
(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。
当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
2)与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。
各通道的引脚编号如下:(1)A口:编号为PA0~PA7,用于8255向外设输入输出8位并行数据。
实验5(8255并行接口键盘及显示实验)
8255接口键盘及显示综合设计实验(曹建文2009年10月10日)一、实验目的1、掌握8255的工作方式及应用编程。
2、自行设计、制作和连接基于8255并行接口的键盘及显示实验电路。
3、实现扫描式矩阵键盘的功能和作用。
二、实验设备PC机1台,TD-PIT实验台1台,实验元器件若干。
三、实验内容1、使用8255实现键盘按键和七段LED数码显示管显示功能。
2、根据实验要求自行设计实验线路图,制作和焊接实验电路板和实验元器件。
3、按照实验要求和实验电路图编写实验程序,使得按下不同的数字按键后数码管显示相应的数字值(4位数码管)。
4、按照实验要求设计和编写实验程序,实现普通计算器的加/减法功能。
四、实验原理1、8255结构及原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图-2所示。
图-1:8255内部结构及引脚图(a)工作方式控制字(b)c口按位置位/复位控制字图-2:8255控制字格式(1)8255的内部结构如图-1所示,8255的内部结构由以下4个部分组成:(1)输入/输出端口A、B、C 。
这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。
A口和B口是一个独立的8位I/O口。
C口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。
(2)A组和B组控制电路。
这是两组根据CPU命令控制8255工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255的工作方式,也可以根据编程命令来对C口的指定位进行置位/复位的操作。
51单片机键盘数码管显示_利用8255和51单片机实现数码管显示按键数值的程序(带程序)
期中大作业学院:物理与电子信息工程学院课题:【利用8255和51单片机实现数码管显示按键数值的程序】要求:【4*4矩阵键盘,按0到15,数码管上分别显示0~9,A~F】芯片资料:8255:8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
8255特性:1.一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
2.具有24个可编程设置的I/O口,即3组8位的I/O口,分别为PA口、PB口和PC 口。
它们又可分为两组12位的I/O口:A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。
A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O三种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.引脚说明RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。
RD:读信号线,当这个输入引脚为低电平时,即CS=0且RD=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即CS=0且WR=0时,允许CPU将数据或控制字写入8255。
键盘及LED显示实验
实验三键盘及LED显示实验一、实验内容利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED 显示器显示出来。
二、实验目的及要求(一)实验目的通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。
(二)实验要求1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。
2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。
三、实验条件及要求计算机,C51语言编辑、调试仿真软件及实验箱50台套。
四、实验相关知识点1.C51编程、调试。
2.扩展8255芯片的原理及应用。
3.键盘扫描原理及应用。
4.LED显示器原理及应用。
5.外部中断的应用。
五、实验说明本实验仪提供了8位8段LED显示器,学生可选用任一位LED显示器,只要按地址输出相应的数据,就可以显示所需数码。
六、实验原理图P1口桥接。
八、实验参考流程图1.主程序流程图2.外中断服务程序流程图外部中断0 外部中断1定时器0中断程序,用于消抖动:3.LED显示程序流程图九、C51语言参考源程序#include "reg52.h"unsigned char KeyResult; //存放键值unsigned char buffer[8]; //显示缓冲区bit bKey; //是否有键按下xdata unsigned char P_8255 _at_ 0xf003; //8255的控制口xdata unsigned char PA_8255 _at_ 0xf000; //8255的PA口xdata unsigned char PB_8255 _at_ 0xf001; //8255的PB口xdata unsigned char PC_8255 _at_ 0xf002; //8255的PC口code unsigned char SEG_TAB[] = { //段码0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0};sbit bLine0 = P3^2;sbit bLine1 = P3^3;//延时1msvoid Delay1ms(){unsigned char i;i = 0;while (--i);}//显示void Display(){unsigned char i = 0x7f;unsigned char j;for (j = 0; j < 8; j++){PA_8255 = i; //扫描PB_8255 = SEG_TAB[buffer[j]]; //段数据i = i / 2 + 0x80;Delay1ms();}}//更新显示缓冲区数据void RefurbishData(){char i;for (i = 7; i >0; i--)buffer[i] = buffer[i-1];buffer[0] = KeyResult;}void Int0Int() interrupt 0{unsigned char i = 0x80;unsigned char KeyResult0 = 0x0;EX0 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine0 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine0 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE0 = 0; //清除中断EX0 = 1; //开外部中断0}void Int1Int() interrupt 2{unsigned char i = 0x80;unsigned char KeyResult0 = 8;EX1 = 0; //关外部中断0P_8255 = 0x89; //PC口输入bLine1 = 0; //P3.2作行输出while (i){if ((PC_8255 & i) == 0)break;KeyResult0++;i >>= 1;}P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0;bLine1 = 1;if (i){TH0 = 60; //定时中断计数器初值TL0 = 176; //定时50msTR0 = 1;KeyResult = KeyResult0;}IE1 = 0; //清除中断EX1 = 1; //开外部中断0}//50ms中断服务程序void INT_Timer0(void) interrupt 1{if (((KeyResult < 8) && !bLine0) ||((KeyResult >= 8) && !bLine1)){bKey = 1; //有键按下,键值在KeyResult中}TR0 = 0;}void main(){char i;bKey = 0; //没有键按下TMOD = 1; //定时器0:方式一P_8255 = 0x80; //8255的PA、PB、PC口全作输出口PC_8255 = 0x0;ET0 = 1; //开定时器0中断EX0 = 1; //开外部中断0EX1 = 1; //开外部中断1IT0 = 1; //边沿触发IT1 = 1; //边沿触发EA = 1; //允许中断for (i = 0; i < 8; i++)buffer[i] = 0x10;// TR0 = 1; //开定时器T0// bRefurbish = 1;while (1){if (bKey){bKey = 0;RefurbishData();}Display(); //调用显示}}十、实验实施步骤1.仔细阅读实验内容及要求,编写C51源程序。
实验七8255键盘显示实验
实验七 8255 键盘显示实验一.实验目的1.掌握8255与单片机的接线和I/O编程方法;2.掌握8255扫描键盘与读取键值的编程;3.掌握数码管的显示原理与编程。
二、实验内容1.使用单片机、8255模块和数码管显示电路,编程实现在数码管上从右至左显示0-5;2. 使用单片机、8255模块和键盘显示电路,编程实现在数码管最右1位显示按键的键码。
三、实验设计1.硬件电路设计使用8255模块(E3区),PA口作为位扫描口(键扫描口),PB口输出字形码,PC口作为键值读入口,与数码管显示电路和矩阵键盘模块电路(F6区)相应接口连接, 8255的数据总线D0-D7、读(/RD)、写(/WR)、端口选择A0、A1和片选/CS已和单片机接好,各端口地址如下:PA口:0FF28H;PB口:0FF29H;PC口:0FF2AH;控制口:0FF2BH单片机与8255的接线原理图和8255与键盘显示模块接线原理图如下:2.程序设计主程序流程图和显示子程序、读键子程序流程图见图6-1,6-2,6-3.YN入口 数据存储区取数据数据表中取字形码 输出字形码 输出位扫描信号6位显示完否? 返回延时图6-2 显示子程序Y N 开始初始化 扫描键盘有键按下?延时消抖读键值 显示键码图6-1 主程序流程图显示数据程序设计要点:(1)数码管显示:数码管是共阴极的,但数码管的接口电路(74LS240,754510)决定了PB口应输出共阳码,PA口应输出低电平扫描信号,数码管才能正确显示数据;(2)每一位数码管选通时间应保持在1-5ms之内,PA口轮扫一遍的时间应保持在50ms之内;(3)扫描键盘:PA口输出00H, PC口读入,判断A的值不等于03H,有键按下;(4)延时消抖:检测到有按键后,延时10-20ms再读键值;(5)读键值:PA口分列输出0,PC口读入,根据A的值和扫描的列数值确定键值。
三、实验操作1.硬件连线:根据硬件电路原理图连接各模块,SW3、SW4、SW5拨向off。
利用8255和51单片机实现数码管显示按键值的实验
三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处 于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平, 如表 3.3.5 所示。这三个控制端也叫做“片选”输入端,利用片选的作 用可以将多篇连接起来以扩展译码器的功能。 带控制输入端的译码 器又是一个完整的数据分配器。在图 3.3.8 电路中如果把作为“数据” 输入端(同时),而将作为“地址”输入端,那么从送来的数据只能通 过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入 了。例如当=101 时,门的输入端除了接至输出端的一个以外全是高 电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个 输出端上。 【例 3.3.2】 试用两片 3 线-8 线译码器 74LS138 组成 4 线-16 线译码器,将输入的 4 位二进制代码译成 16 个独立的低电平 信号。 解:由图 3.3.8 可见,74LS138 仅有 3 个地址输入端。如果 想对 4 位二进制代码,只能利用一个附加控制端(当中的一个)作为 第四个地址输入端。 取第(1)片 74LS138 的和作为它的第四个地 址输入端(同时令),取第(2)片的作为它的第四个地址输入端(同 时令),取两片的、、,并将第(1)片的和接至,将第(2)片的接至, 如图 3.3.9 所示,于是得到两片 74LS138 的输出分别为 图 3.3.9 用 两片 74LS138 接成的 4 线-16 线译码器 式(3.3.8)表明时第(1) 片 74LS138 工作而第(2)片 74LS138 禁止,将的 0000~0111 这 8 个代码译成 8 个低电平信号。而式(3.3.9)表明时,第(2)片 74LS138 工作,第(1)片 74LS138 禁止,将的 1000~1111 这 8 个代码译成 8 个低电平信号。这样就用两个 3 线-8 线译码器扩展成一个 4 线-
键盘扫描与LED数码管显示课件
设计温度传感器模块,如 DS18B20,用于获取环境温
度。
编写程序读取温度传感器数 据,并进行处理和转换。
04
05
使用LED数码管显示当前温 度值,如“25℃”。
THANKS
感谢观看
特点
LED数码管具有高亮度、低功耗、寿命长、耐腐蚀等特点,且体积小、重量轻, 易于安装和携带。
LED数码管的应用场景与优势
应用场景
LED数码管广泛应用于各种需要数字 显示的场合,如仪表盘、计时器、遥 控器等。
优势
LED数码管具有高亮度、低功耗、寿 命长等特点,能够提供清晰、稳定的 数字显示,同时价格相对较低,易于 实现大规模生产。
联合应用的常见问题与解决方案
常见问题
键盘扫描可能会出现按键抖动、串扰等 问题;LED数码管显示可能会出现亮度不 均、闪烁等问题。
VS
解决方案
针对按键抖动问题,可以采用软件消抖或 硬件消抖的方法;针对串扰问题,可以增 加隔离电路或采用差分信号传输方式。针 对LED数码管亮度不均问题,可以调整各 段数码管的电流参数;针对闪烁问题,可 以增加刷新频率或采用动态扫描显示方式 。
放相应音符。
01
设计音符键区,包括 do-re-mi等音符按键。
03
使用LED数码管显示当 前播放的音符名称,如
“C”。
05
详细描述
02
编写程序识别按键并播 放相应音符,如播放C
大调音阶。
04
案例四:温度显示系统设计
详细描述
总结词:通过温度传感器获 取温度值,使用LED数码管
显示温度值。
01
02
03
键盘扫描原理
通过逐行或逐列扫描键盘的每个按键 ,检测是否有键被按下。当某个按键 被按下时,相应的行或列电平发生变 化,从而识别出被按下的按键。
键盘输入与七段数码管显示实验
;查第 5 行无键按下,转查第 6 行 ;第 5 行有键按下,行首键码#05H 送(A) ;转求键码
;查第 6 行无键按下,转查第 7 行 ;第 6 行有键按下,行首键码#06H 送(A) ;转求键码
实 才知道原因,原来是我们那设备箱没有初始化好。后来在老师的指导下,我
验 们把设备箱设置好后,终于做出了结果。也达到了实验目的。①.学会利用
总 8255 扩展 I/O 口;
结
②.掌握行列式键盘、7 段数码显示器接口的设计方法,验证 7 段数码管
显示原理;
③.通过软硬件结合,了解单片机应用中软硬件的相依性。 总的来说,这次实验让我收获颇多啊,锻炼了我独自想考和动手的能力。
;查第 2 行无键按下,转查第 3 行
.
MOV A, #02H
AJMP LKP
LTHR: JB ACC.3, LFOU
MOV A, #03H
AJMP LKP
LFOU: JB
ACC.4, LFIV
MOV A, #04H
AJMP LKP
LFIV: JB
ACC.5, LSIX
MOV A, #05H
AJMP LKP
MOV A, #00H
;第 0 行有键按下,行首键码#00H 送(A)
AJMP LKP
;转求键码
LONE: JB
ACC.1, LTWO
;查第 1 行无键按下,转查第 2 行
MOV A, #01H
;第 1 行有键按下,行首键码#01H 送(A)
AJMP LKP
;转求键码
LTWO: JB
ACC.2, LTHR
课程设计(论文)-8255扫描键盘(4X4)显示设计
课程设计(论文)-8255扫描键盘(4X4)显示设计目录8255扫描键盘,4X4,显示:一、设计要求………………………………………… 1 二、设计目的………………………………………… 1 三、主要芯片及器件介绍…………………………… 1 四、电路原理图………………………………………5 五、编程方法................................................ 7 六、设计体会................................................ 10 七、参考文献 (10)1系别:电子电气工程系专业名称:电子信息工程班级:电子,3,班学生姓名:学号:20048602115指导教师:2006 年 8 月 29 日2一、设计要求利用可编程并行接口8255芯片与MCS-51单片机相连做一个有输入/输出的并行接口。
输入端口接4×4的键盘,输出端口接8个七段数码管,作为输出显示。
二、设计目的1(理解MCS-51单片机输入输出的原理及工作方式。
2(掌握8255的编程方法。
3(掌握利用8279实现编码式键盘的连接和编程方法。
4(掌握多个七段数码管按位显示的实现方法。
三、主要芯片及器件介绍1(可编程并行接口 82558255是8位通用可编程并行输入输出接口芯片,它具有很强的功能,在使用时可利用软件编程来指定完成它的功能。
1(8255的外部引线如图1:D0~D7:双向数据信号线。
用来传送数据和控制字。
RD:读信号线。
通常接系统总线的IOR。
:写信号线。
通常接系统总线的IOW。
WD:片选输入端,低电平有效。
CSA0 A1:口地址选择信号线。
8255内部有3个口(即A口,B口,C口)还有一个控制寄存器,他们即可由程序寻址。
A0 A1 上的不同编码可分别寻址上述3个口号一个控制寄存器,具体规定如下:A0 A1 选择0 0 A口0 1 B口1 0 C口1 1 控制寄存器图 1 8255管脚图A0 A1与一起决定8255的接口地址。
微机原理键盘扫描及显示完整实验报
实验9键盘扫描及显示实验
实验时间2019年12月18日
实验类型■验证性□设计性□综合性
1.实验目的
了解键盘扫描及数码显示的基本原理,熟悉8255的编程。
2.实验内容及过程(主要内容、操作步骤)
将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。
键盘采用4X4键盘,每个数码管显示值可为0~F 共16个数。
实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。
3.测试数据及实验结果
4.实验分析及总结(主要考察内容)
通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结
1/ 1。
【单片机实验七】键盘扫描及显示设计实验
程序及注解见附件CLEAR: MOV DPTR, #B_8255 ;清屏 MOV A,#00H MOVX @DPTR,A RET DIS: PUSH ACC ;显示子程序 PUSH 00H PUSH 03H MOV R0,#50H ;显示缓冲首地址 MOV R3,#0DFH ;显示扫描值AGAIN: MOV A,#0FFH ;关闭显示 MOV DPTR,#A_8255 MOVX @DPTR,A MOV A,@R0 MOV DPTR,#DSEGS ;数码管段表地址 MOVC A,@A+DPTR ;查表 MOV DPTR,#B_8255 ;送段显示 MOVX @DPTR,A MOV A,R3 MOV DPTR,#A_8255 MOVX @DPTR,A ACALL DL1MS INC R0 ;显示缓冲加1 MOV A,R3 JNB ACC.0,OUT ;扫描结束否 RR A ;向右移一位 MOV R3,A AJMP AGAIN OUT: POP 03H POP 00H POP ACC RET ;数码管段显示值DSEGS: DB 03FH, 06H,05BH,04FH,066H,06DH,07DH, 07H DB 07FH,06FH,077H,07CH,039H,05EH,079H,071H DL1MS: MOV R7,#01H DL0: MOV R6,#080H DL1: DJNZ R6,DL1 DJNZ R7,DL0 RET PUTBUF: PUSH 00H ;保存键值到缓冲RAM 中 PUSH ACC MOV A,R5 MOV R0,A POP ACC MOV @R0,A DEC R5 CJNE R5,#04FH,GOBACK MOV R5,#55H ;重置缓冲地址GOBACK: POP 00H RET END ;==============================================================; 文件名称: KeyScan.Asm; 功能描述: 8255扩展IO, 完成键盘及数码管显示实验.; 按下按键, 数码管显示相应键值.;==============================================================A_8255 EQU 7F00H ;8255端口定义B_8255 EQU 7F01HC_8255 EQU 7F02HCON_8255 EQU 7F03HORG 0000HLJMP MAINORG 0100HMAIN: MOV 50H,#00H ;键值缓冲清0MOV 51H,#00HMOV 52H,#00HMOV 53H,#00HMOV 54H,#00HMOV 55H,#00HMOV R5, #55HMOV A, #81H MOV DPTR, #CON_8255 ;8255控制端口MOVX @DPTR, A ;写入控制字BEGIN: LCALL DIS ;调用显示子程序LCALL CLEAR ;清屏LCALL CCSCAN ;调用键扫子程序JNZ INK1 ;判是否有键按下LJMP BEGININK1: LCALL DISLCALL DL1MS ;消除按键抖动LCALL DL1MSLCALL CLEARLCALL CCSCANJNZ INK2AJMP BEGININK2: MOV R2,#0FEHMOV R4,#00H ;从第0列开始扫描COLUM: MOV DPTR,#A_8255MOV A,R2MOVX @DPTR,A ;写入列扫描值MOV DPTR, #C_8255MOVX A,@DPTRJB ACC.0,LINE1 ;判第0行的值MOV A,#00H ;第0行AJMP KCODELINE1: JB ACC.1,LINE2MOV A,#04H ;第1行AJMP KCODELINE2: JB ACC.2,LINE3MOV A,#08H ;第2行AJMP KCODELINE3: JB ACC.3,NEXTMOV A, #0CH ;第3行KCODE: ADD A,R4 ;得到键值ACALL PUTBUFPUSH ACCKON: ACALL DISACALL CLEARACALL CCSCANJNZ KONPOP ACCNEXT: INC R4MOV A,R2JNB ACC.4,KERRRL AMOV R2,AAJMP COLUMKERR: AJMP BEGINCCSCAN: MOV DPTR,#A_8255 ;按键扫描MOV A,#00HMOVX @DPTR,AMOV DPTR,#C_8255MOVX A,@DPTRCPL A ;取反ANL A,#0FHRET。
8255和LED数码管显示实验
实验八 8255和LED数码管显示实验二、实验电路实验电路如图2及图3所示。
图2 静态显示电路图3 动态显示电路五、实验项目1.静态显示:按图2连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
程序框图、源代码(含注释)及实验结果如下:1、静态显示;0-9程序:data segmentioport equ2400h-280hio8255a equ ioport+288hio8255ctr equ ioport+28bhled db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255ctr ;使8255的A口为输出方式mov ax,80hout dx,alsss: mov dx,offset mesg1 ;显示提示信息mov ah,9int21hmov ah,1;从键盘接收字符int21hcmp al,'0' ;是否小于0jb exit ;若是则退出cmp al,'9' ;是否大于9ja exit ;若是则退出sub al,30h;将所得字符的ASCII码减30Hmov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp sss ;转SSSexit: mov ax,4c00h;返回int21hcode endsend start2.动态显示(选做):按图3连接好电路,七段数码管段码连接不变,位码驱动输入端S1S0接8255C口的PC1、PC0。
8255键盘扫描与LED数码管显示
即(行数-1)*8+列值
mov
bh,0
mov
cx,bx ;显示码在discode表中的偏移量送CX
display:
;显示输出
mov si, offset discode
add si, cx ;显示码偏移地址
mov dx,04a4h ;C口地址
mov al,0fh
out dx,al ;写入C口内容,使位控(LED1)有效
mov ah,0
mov al, 0fbh ; 0fbh=1111 1011B
contin: push ax
;将ax的内容(0fbh)入栈保存
mov dx,04a4h ;C口地址
out dx,al ;写入C口内容0fbh=1111 1011B,即将第三行置为低电平
mov dx,04a0h ;A口地址
in
loop contin ;循环扫描下一行,确定行
jmp check0 ;若所有行都没有被按下,则返回check0重新检测
next: mov ch,cl ;保存行值至ch
mov cl,7 ;列值从0开始编号0-7
begin0: shl ah,1 ; ah为A口的内容,逻辑左移1位,末位补0
jnc goon ;无进位则转移,即可确定列
1
D6
D5
D4
D3
D2
D1
D0
1:端口C(PC3~PC0)输入
0:端口C(PC3~PC0)输出
方
1:端口B输入
式 控
0:端口B输出
制
1:端口B方式1
字
0:端口B方式0
标 志
1:端口C(PC7~PC4)输入
位
0:端口C(PC7~PC4)输出
微机原理8255A并行接口按键数码管显示讨论报告范文
微机原理8255A并行接口按键数码管显示讨论报告范文讨论课报告学校:上海电机学院班级:电子13某某学号:某某某某某某某某姓名:W某一、题目:通过8255A并行接口,8086CPU连接LED数码管、4某4矩阵键盘。
按下任意键,数码管显示对应键号。
二、硬件设计讨论问题:(1)CPU8086与8255A的连接问题:●复用引脚上的数据信号与地址信号如何分离画出电路连接示意图,解释实现的方法。
答:数据缓存DENDT/R8086AB/TBALEM/IOWRRDA1A2地址锁存A15~A3地址译码将8086上的20位复用数据地址引脚分别接数据缓存器和地址锁存器在8086总线周期的T1期间作为存储器/IO地址总线将地址锁存在地址锁存器中,另外期间作为数据总线将8位数据缓存在数据缓存器中。
缓存器与8255A数据引脚相连,地址锁存后经过译码与地址线相连。
●假设8255A的芯片地址范围为80H~86H(偶地址),利用74LS138译码器实现8255A芯D7~D0A0A18255ACSWRRD片的片选控制,画出电路连接示意图,解释译码电路的设计原理。
D7~D0RDWRRESETM/IO8086A7A6A5A4A3A0A2A1≥1G2aY0Y1G1Y2G2bY374LS138Y4CY5BY6AY7D7~D0RDWRRESETCS8255AA1A08086系统有16根数据线,而8255A只有8根数据线,将8255A的8条数据线与低8位数据线相连。
此时8255A的4个端口地址必须为偶地址,即8086寻址8255A时A0脚必须为低,将8255A的A0、A1分别接8086的A1、A2脚。
由图可见,8255A的数据线D7~D0与8086的低8位数据总线D7~D0相连,A0必须总等于0,用地址线的A2、A1来选择片内4个端口。
图中地址线A7接译码器的G1,M/IO与G2a相连,A6、A5接或门输入端,或门输出与G2b相连。
当A7A6A5=100,A4A3A0=000时,Y0=0,选中8255A,4个端口地址分别为80H、82H、84H和86H,对应于8255A的A口、B口、C口和控制寄存器。
8255扫描键盘、显示实验
实验九8255扫描键盘、显示实验一. 实验要求利用8255可编程并行口做一个扫描键盘实验,的七段数码管上。
8255PA 口做键盘输入线,二. 实验目的 1•掌握8255编程方法。
2•掌握扫描键盘和显示的编程方法。
三. 实验电路及连线CS8255接8500H ,则命令字地址为 8506H,PA 口地址为 8500H , PB 口地址为8502H , PC 口地址为8504H 。
CS8279接8700H ,贝U 8279的状态口地址为 8701H; 8279的数据口地址为 8700H; 模块中的十个短路套都套在8255侧。
四.实验说明在PA 口与PB 口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本 实验采用8疋的阵列,共可按16个键。
显示部分由 8279控制,由7407驱动8位数码 管显示。
五•实验程序框图那岀DO mDJ E IM 惦 肋的JUJA1砰C327 • •: 154 V12 ■ 6 P ------------------ VCC把按键输入的键码, PB 口作扫描线。
显示在由8279控制六.实验程序:D8255 EQU 8506H ;8255 状态 / 数据口地址 D8255A EQU 8500H ;8255 PA 口地址D8255B EQU 8502H ;8255 PB 口地址Z8279 EQU 8701H ;8279 状态口地址D8279 EQU 8700H ;8279 数据口地址DISPTR EQU 08H 当前显示位置KEYVAL EQU 09H 读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY 延时MOV DISPTR,#30H 显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置 8255 状态;方式0,PB,PC 口输出,PA 口输入MOVX @DPTR,AMOV DPTR,#Z8279 置 8279 命令字MOV A,#0D3HMOVX @DPTR,A 清 LED 显示MOV A,#00HMOVX @DPTR,A主程序框图 分框图读键显示部MOV A,#38HMOVX @DPTR,AMOV A,#0D1HKB_DIS:LCALL RD_KB 读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF 判J读至U键SJMP KB_DIS ;没有则继续读键DISBUF: LCALL DISP ;把键移入显存LCALL DELAY延时消抖LCALL DELAYSJMP KB_DISDISP:;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,@R1DEC R1MOV @R1,AINC R1INC R1CJNE R1,#38H,MOVEMOV 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX @DPTR,AMOV R0,#08HMOV R1,#30HMOV DPTR,#D8279LP: MOV A,@R1MOVX @DPTR,AINC R1DJNZ R0,LPRETRD_KB:;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKE 丫无键按下KEYCAL:;计算键码MOV R0,#08HSHIFT:RRC AJNC CALCINC R1DJNZ R0,SHIFTCALC:;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,@A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH返回无键标志RETDELAY: MOV R0,#0H延时子程序DELAY1: MOV R1,#0HDJNZ R1,$DJNZ R0,DELAY1RETDL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,FEND实验十8279显示实验一•实验要求编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
8255键盘扫描与LED数码管显示
十、实验程序
assume cs:code code segment org 100h start: mov dx,04a6h ;控制寄存器地址 mov ax,90h ;设置为A口输入,;B口输出,C输出 out dx,ax ;8255初始化 check0: ; check0检测是否有健被按下 mov ax,00h ;C口的PC0、PC1、PC2作为行选择线 mov dx,04a4h ;C口地址 out dx,ax ; 写入C口内容00H,即令所有行为低电平 mov dx,04a0h ;A口地址 in ax,dx ;读入A口的内容 cmp al,0ffh ;判定是否有列线为低电平 je check0 ;没有,无闭合键,则循环等待 mov cx,05ffh ;延迟常数,可以修改来改变延时时间 delay: loop delay ;有,则延迟清除抖动,当cx=0时则停止该 循环
OUT DX,AL ;将AL的内容输出到地址为200H的端口
编程 1 :把8255 工作方式设定为: A 口指定为方式 0 , 输入, C 口为输出; B 口指定为方式 0 ,输出;设 8255控制字寄存器端口地址为04a6H。 分析:根据题目得工作方式命令代码是10010000B或
90H。
五、实验设备
MUT—Ⅲ型实验箱、8086CPU模块。
六、8255与8086及8255与键盘的电路连接
8255
D0~D7
系 统 总 线 IOW IOR A2 DB D0~D7 WR RD A1 PC KA10~KA12 (行选择线) LED1(位控) LED-A~LED-DP (段控) PA
RL10~RL17 (列选择线)
本实验中8255的地址分配如下: 端口A 04A0H 端口B 04A2H 端口C 04A4H 控制口 04A6H
8255键盘及显示接口设计
班级:姓名:学号:日期: 2009年12月28日成绩:目录一、课程设计的意义 (3)二、课程设计的主要内容 (3)三、课程设计的组织与安排 (3)四、课程设计的要求 (4)五、课程设计正文 (5)1.设计原理 (5)2.设计电路原理图 (6)3.键盘及数码管显示电路接线图 (7)4.使用原器件 (7)5.课程设计总结 (7)6.论文参考资料 (7)六、附录一:程序流程图 (8)七、附录二:课程设计程序 (9)课程论文(设计)指导书一、课程论文(设计)的意义:1.通过《微型计算机原理与应用》课程设计,使学生能够进一步理解微型计算机工作原理, 微型计算机的硬件结构及微型计算机的应用软件编程。
2.要求学生能够根据功能要求初步进行硬件接口电路的设计,以及有关应用程序的设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。
3.课程设计是培养和锻炼学生在学习完本课程后综合应用所学理论知识解决实际工程设计和应用问题的能力、进行工程实训的重要教学环节,它具有动手、动脑,理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。
4.通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
培养学生事实求是和严肃认真的工作态度。
5.通过设计过程,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件硬件调试、查阅资料、绘图、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练的熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
11--8255控制键盘显示实验
;//*********************************************************;文件名: 8255KD for MCU51;功能: 8255控制键盘显示实验;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口); ; JD2E到8255模块的JD4C(PB口);; JD4E到8255模块的JD5C(PC口);; 用导线连接CPU模块的8000H到8255模块的CS_8255。
;//*********************************************************;---------------------------------------------------------D8255A EQU 8000H ;8255 PA 口地址D8255B EQU 8001H ;8255 PB 口地址D8255C EQU 8002H ;8255 PC 口地址D8255 EQU 8003H ;8255 状态/命令口地址LEDBUF EQU 50H ;显示缓存KEYV AL EQU 60H ;读到的键码;---------------------------------------------------------ORG 0000HLJMP STARTORG 0100HSTART: MOV SP,#80HMOV DPTR,#D8255MOV A,#90H ;方式0,PB,PC口输出,PA口输入MOVX @DPTR,AMOV LEDBUF,#10HMOV LEDBUF+1,#11HMOV LEDBUF+2,#11HMOV LEDBUF+3,#11HMOV LEDBUF+4,#5MOV LEDBUF+5,#5MOV LEDBUF+6,#2MOV LEDBUF+7,#8KB_DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYV AL,TOSHOW ;判读到键SJMP SHOW ;没有则继续读键TOSHOW:MOV LEDBUF,KEYV ALSHOW: LCALL DISPLAYSJMP KB_DISRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255CMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255CMOVX @DPTR,AMOV DPTR,#D8255AMOVX A,@DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: MOV R0,#08H ;计算键码SHIFT: RRC AJNC TORETINC R1DJNZ R0,SHIFTSJMP NOKEY ;无键按下TORET: MOV KEYV AL,R1RETNOKEY: MOV KEYV AL,#0FFH ;返回无键标志RETDisplay:MOV R7,#8 ;8个数码管MOV R5,#0MOV R0,#LEDBUFDLOOP:MOV A,R5RL ARL ARL AANL A,#11111011BINC R5MOV DPTR,#D8255CMOVX @DPTR,A ;点亮对应的LEDMOV A,@R0MOV DPTR,#LEDSEGMOVC A,@A+DPTRINC R0MOV DPTR,#D8255BMOVX @DPTR,A ;显示数据LCALL DelayDJNZ R7,DLOOPRETDelay: PUSH R7MOV R7,#200DelayLoop:NOPDJNZ R7,DelayLoopPOP R7RETLEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,BDB 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,-END。