键盘及LED显示实验Word格式.docx
- 文档编号:14366410
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:14
- 大小:131.99KB
键盘及LED显示实验Word格式.docx
《键盘及LED显示实验Word格式.docx》由会员分享,可在线阅读,更多相关《键盘及LED显示实验Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
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
六、实验原理图
七、连线说明
F4区:
CS、A0、A1
——
A3区:
CS1、A0、A1
B6区:
JP56(PA口)
JP41(C)
JP53(PB口)
JP42(B)
JP52(PC口)
JP47(A)
JP51
JP92(D)
P1.6、P1.7
INT0、INT1
注:
F4的D无法与INT0(P3.2)、INT1(P3.3)直接连接,所以使用P1口桥接。
八、实验参考流程图
1.主程序流程图
2.外中断服务程序流程图
外部中断0外部中断1
定时器0中断程序,用于消抖动:
3.LED显示程序流程图
九、C51语言参考源程序
#include"
reg52.h"
unsignedcharKeyResult;
//存放键值
unsignedcharbuffer[8];
//显示缓冲区
bitbKey;
//是否有键按下
xdataunsignedcharP_8255_at_0xf003;
//8255的控制口
xdataunsignedcharPA_8255_at_0xf000;
//8255的PA口
xdataunsignedcharPB_8255_at_0xf001;
//8255的PB口
xdataunsignedcharPC_8255_at_0xf002;
//8255的PC口
codeunsignedcharSEG_TAB[]={//段码
0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x0};
sbitbLine0=P3^2;
sbitbLine1=P3^3;
//延时1ms
voidDelay1ms()
{
unsignedchari;
i=0;
while(--i);
}
//显示
voidDisplay()
unsignedchari=0x7f;
unsignedcharj;
for(j=0;
j<
8;
j++)
{
PA_8255=i;
//扫描
PB_8255=SEG_TAB[buffer[j]];
//段数据
i=i/2+0x80;
Delay1ms();
}
//更新显示缓冲区数据
voidRefurbishData()
chari;
for(i=7;
i>
0;
i--)
buffer[i]=buffer[i-1];
buffer[0]=KeyResult;
voidInt0Int()interrupt0
unsignedchari=0x80;
unsignedcharKeyResult0=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
voidInt1Int()interrupt2
unsignedcharKeyResult0=8;
EX1=0;
bLine1=0;
bLine1=1;
IE1=0;
EX1=1;
//50ms中断服务程序
voidINT_Timer0(void)interrupt1
if(((KeyResult<
8)&
&
!
bLine0)||
((KeyResult>
=8)&
bLine1))
bKey=1;
//有键按下,键值在KeyResult中
TR0=0;
voidmain()
bKey=0;
//没有键按下
TMOD=1;
//定时器0:
方式一
PC_8255=0x0;
ET0=1;
//开定时器0中断
//开外部中断1
IT0=1;
//边沿触发
IT1=1;
EA=1;
//允许中断
for(i=0;
i<
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扩展键盘和显示器的接口方法,丰富了我们的单片机知识,锻炼我们的动手实践能力。
实验能让我们检验和巩固学到的理论知识,不断加深我们对知识的记忆。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘 LED 显示 实验