键盘及LED显示实验.docx

上传人:b****3 文档编号:1450693 上传时间:2022-10-22 格式:DOCX 页数:14 大小:131.99KB
下载 相关 举报
键盘及LED显示实验.docx_第1页
第1页 / 共14页
键盘及LED显示实验.docx_第2页
第2页 / 共14页
键盘及LED显示实验.docx_第3页
第3页 / 共14页
键盘及LED显示实验.docx_第4页
第4页 / 共14页
键盘及LED显示实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

键盘及LED显示实验.docx

《键盘及LED显示实验.docx》由会员分享,可在线阅读,更多相关《键盘及LED显示实验.docx(14页珍藏版)》请在冰豆网上搜索。

键盘及LED显示实验.docx

键盘及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显示器,只要按地址输出相应的数据,就可以显示所需数码。

显示字形

0

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口)

——

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.主程序流程图

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

{

unsignedchari=0x80;

unsignedcharKeyResult0=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中断服务程序

voidINT_Timer0(void)interrupt1

{

if(((KeyResult<8)&&!

bLine0)||

((KeyResult>=8)&&!

bLine1))

{

bKey=1;//有键按下,键值在KeyResult中

}

TR0=0;

}

voidmain()

{

chari;

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扩展键盘和显示器的接口方法,丰富了我们的单片机知识,锻炼我们的动手实践能力。

实验能让我们检验和巩固学到的理论知识,不断加深我们对知识的记忆。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1