键盘与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 显示器,只要按地址输出相应的数据,就可以显示所需数码。
显示字形
1
2
3
4
5
6
7
8
9
A
b
C
d
E
F
段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e
六、实验原理图
01e 1d 2dp
3
c 4g 56
b 78
9
a b c g d dp
f 10a b f c
g d
e
dp
a 11GND3a
b f
c g d
e
dp
12
GND4
a b f c g d
e
dp
GND1GND2DS29
LG4041AH
234
567
89A B C D E F
e 1d 2dp
3
c 4g 56
b 78
9
a b c g d dp
f 10a b f c
g d
e
dp
a 11GND3a
b f
c g d
e
dp
12
GND4
a b f c g d e
dp
GND1
GND2DS30
LG4041AH
1
2
3
4
5
6
7
8
JP4112345678
JP4712345678JP42
SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH
SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH
A
C
B
12345678
JP92D
5.1K R162
5.1K
R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7
10
RD 5WR 36A09A18RESET 35CS
6
U36
8255
D0D1D2D3D4D5D6D7WR
RD RST
A0A1PC5PC6PC7
PC2PC3PC4PC0PC1CS
12345678JP56
12345678JP53
12345678
JP52
PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7
(8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0)
(8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0)
(8255 PA0)
(8255 PA1)
(8255 PA2)
(8255 PA3)
(8255 PA4)
(8255 PA5)
(8255 PA6)
(PA7)
I N T 0(P 3.2)
I N T 0(P 3.3)
七、连线说明
F4区:CS、A0、A1 ——A3区:CS1、A0、
A1
B6区:JP56(PA口)——F4区:JP41(C)
B6区:JP53(PB口)——F4区:JP42(B)
B6区:JP52(PC口)——F4区:JP47(A)
A3区:JP51 ——F4区:JP92(D)
A3区:P1.6、P1.7 ——A3区:INT0、INT1
注:F4的D无法与INT0(P3.2)、INT1(P3.3)直接连接,所以使用P1口桥接。
八、实验参考流程图
1.主程序流程图
Y
按键标志=1
开始
0->按键标志
8255初始化(PA, PB, PC 口作输出) 0->8255PC 口
定时器0:方式一 允许定时器0中断 允许外部中断0(行线0) 允许外部中断1(行线1) 外部中断0、1边沿触发 允许中断
0->按键标志 显示缓冲区左移一次 键值->最低位显示缓冲区
调用显示
N
0x10填充显示缓冲区(消隐)
2.外中断服务程序流程图
外
部中断0
外部中断1
Y
清外部中断0 允许外部中断0
有键按下
开始
8255PC 口改为输入 关外部中断0
0->P3.2(键的行线0)
读8255PC 口
转化为0..7的键值->变量0
8255的PC 口改为输出 1->P3.2 0->8255PC 口 设置定时器0初值(50ms 定时) 开定时器0 键值变量=变量0
N
定时器0中断程序,用于消抖动:
Y
1->按键标志
P3.2=0
开始 N
中断返回
键值变量<8
P3.3=0
键值变量>=8
N Y
N
N
Y
Y
Y
清外部中断1 允许外部中断1
有键按下
开始
8255PC 口改为输入 关外部中断1
0->P3.3(键的行线1)
读8255PC 口
转化为8..F 的键值->变量0
8255的PC 口改为输出 1->P3.3 0->8255PC 口 设置定时器0初值(50ms 定时) 开定时器0 键值变量=变量0
N
中断返回
3.LED 显示程序流程图
九、C51语言参考源程序
#include "reg52.h"
unsigned char KeyResult; //存放键值 unsigned char buffer[8]; //显示缓冲区 bit bKey;
//是否有键按下
xdata unsigned char P_8255 _at_ 0xf003;
//8255的控制口
7FH->数码块选择变量 8->计数器
数码块选择变量->8255PA 口 显示缓冲区中对应数据转化为段码 段码->8255PB 口
数码块选择变量循环右移一次 延时1ms
开始
计数器 – 1 = 0
返回
Y
N
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;
//延时1ms
void 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; //关外部中断0
P_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; //定时50ms
TR0 = 1;
KeyResult = KeyResult0;
}
IE0 = 0; //清除中断
EX0 = 1; //开外部中断0
}
void Int1Int() interrupt 2
{
unsigned char i = 0x80;
unsigned char KeyResult0 = 8;
EX1 = 0; //关外部中断0
P_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; //定时50ms
TR0 = 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; //开外部中断0
EX1 = 1; //开外部中断1
IT0 = 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源程序。
2.上机编辑、仿真调试源程序。
3.按要求接线。
4.在线调试源程序,观查运行结果。
十一、实验心得
此次实验要求我们利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。通过实验我验证了这一实验内容,在按
键的控制下实现0~15显示在LED显示器。学到了新的知识,掌握了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 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明
键盘扫描显示实验原理及分析报告
键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15
实验五 键盘显示控制实验
实验五键盘显示控制实验 一、实验目的 1、掌握8255控制键盘及显示电路的基本功能及编程方法 2、2、掌握一般键盘和显示电路的工作原理 二、实验内容 8255单元与键盘及数码管显示单元连接,扫描键盘输入,并将结果送数码管显示。键盘采用4*4键盘,每个数码管显示值可为0~F共16个数。具体实验内容为:将键盘警醒编号,记作0~F,当按下一个键时,将该键对应的编号在下一个数码管上显示出来。再按下一个键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。键盘与显示的字符的对应关系如下: 接线: PC7~PC0/8255 接行3~列0/4x4键盘 PA7~PA0/8255 接dp~a/led数码管 CS/8255 接Y1/IO地址 +5v 接S0/LED数码管 GND 接S3~S1/LED数码管 三、实验过程 1、设置8255C口键盘输入、A口为数码管段码输出 2、实验流程图如下图所示
N Y Y N 未找到 找到 程序代码如下图所示: ;*********************; ;* 键盘显示 8255LED *; ;*********************; ;********************; ;* 8255薄膜按键实验 *; ;********************; a8255 equ 288H ;8255 A 口 c8255 equ 28aH ;8255 C 口 k8255 equ 28bH ;8255控制口 data segment table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h dw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表 LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH DB 39h,5EH,79h,71h,0ffh ;LED 段码表, 开始 行线输出 是否有按键按下 列线输出 是否有按键按下 查找键码 查询键盘号 显示键盘号
汇编实验-显示与键盘实验
汇编语言与接口技术实验报告 开课实验室:实验中心微机原理与接口技术实验室2014年12月1 日 学院计算机科 学教育软 件学院 年级、专 业、班姓名成绩 课程名称汇编语言 与接口技 术 实验项目 名称显示与键盘实验 指导老师 签名古鹏 一、实验要求 1.硬件实验十六八段数码管显示 利用实验仪提供的显示电路,动态显示一行数据. 2.硬件实验十七键盘扫描显示实验 在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。 实验程序可分成三个模块。 ①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。 二、实验目的 1. 硬件实验十六八段数码管显示 1.了解数码管动态显示的原理。 2.了解用总线方式控制数码管显示 2. 硬件实验十七键盘扫描显示实验 1、掌握键盘和显示器的接口方法和编程 方法。 2、掌握键盘扫描和LED八段码显示器的 工作原理。 三、实验电路及连线 1. 硬件实验十六八段数码管显示连线连接孔1 连接孔2 1 KEY/LED_CS CS0 位选通 信号 段码输 出 (0x004 数据总线
2. 硬件实验十七键盘扫描显示实验 连线连接孔1 连接孔2 1 KEY/LED_CS CS0 四、使用仪器、材料 计算机一台 Wave6000试验仪 五、实验程序、过程 1.硬件实验十六八段数码管显示 代码: OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 data segment LEDBuf db 6 dup(?) ; 显示缓冲 Num db 1 dup(?) ; 显示的数据 DelayT db 1 dup(?) LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data ends code segment assume cs:code, ds:data Delay proc near push ax ; 延时子程序 push cx
按键及显示实验
一、实验原理及电路 1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。, 2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。 实验电路图 二、功能说明 设计并实现一4×4键盘的接口,键盘与1602显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送1602显示,键盘采用4×4键盘。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个1602显示出来,当按下下一个按键时便将这个按键的编号1602上显示出来 实验框图
四、实验代码 #include
硬件实验三按键与显示实验
本科实验报告课程名称:微机原理与接口技术 姓 名:张开桓 学 院:信息学院 系 : 控制系 专 业:自动化 学 号 : 3080104703 指导教师:齐杭丽 2010 年12 月15 H
专业:自动化(控制系) 姓名: 张开桓 学号: 3080104703 日期:2010/12/15 地点: 东4-606 课程名称: 微机原理与接口技术 指导老师: 齐杭丽 成 绩:____ 实脸名称:按键与显示实验实验类型:设汁型同组学生姓名: ____________________________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 1. 实验目的 ① 熟练运用keil 环境对硬件接口进行调试。 ② 掌握IO 扩展键盘的软硬件设计方法; ③ 掌握数字转换成显示段码的软件译码方法: ④ 掌握静态显示的原理和相关程序的编写。 ⑤ 掌握动态显示的原理和相关程序的编写; 2. 预习要求 ① 理解51单片机IO 实现独立式键盘扩展的工作原理。 ② 理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点: ③ 理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点: ④ 理解8段数码管静态显示的10控制方式及同步串行口控制方式如何实现软件设 计; 3. 实验设备 计算机 1台: ZDGDTH-1型8OC51实验开发系统 1套: 2号导线、8P 数据线 若干条。 4. 基础型实验内容 ①査询式键盘和静态显示实验 8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。 设将P0 口连接到键盘接口,则如果有键按下,相应的口线输岀为低,否则输出为髙。单片 机通过读取接口的状态,判断按下什么键。有键按下后,要有一泄的延时,防止由于键盘抖 动而引起误操作。 溯沪乂唆实验报告 件实验三 按键与显示实验
《单片机原理及应用》“实验五 按键及显示实验”任务书
单片机原理及应用 随堂实验报告 实验五按键与显示实验 学院计算机与电子信息学院 专业电子信息工程班级电信12 -1 班 姓名许锐佳学号 指导教师左敬龙 实验报告评分:_______
一、实验原理及电路 实验原理:单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。下图为实验原理电路图 (此时按下的是第10个按键): 二、功能说明 16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显
示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。 三、实验框图: 四、实验代码 #include
#define uint unsigned int uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar num; void delay(uchar time) { uchar i,j; for(i=0;i