8255A键盘输入课程设计.docx

上传人:b****1 文档编号:2142412 上传时间:2023-05-02 格式:DOCX 页数:12 大小:141.75KB
下载 相关 举报
8255A键盘输入课程设计.docx_第1页
第1页 / 共12页
8255A键盘输入课程设计.docx_第2页
第2页 / 共12页
8255A键盘输入课程设计.docx_第3页
第3页 / 共12页
8255A键盘输入课程设计.docx_第4页
第4页 / 共12页
8255A键盘输入课程设计.docx_第5页
第5页 / 共12页
8255A键盘输入课程设计.docx_第6页
第6页 / 共12页
8255A键盘输入课程设计.docx_第7页
第7页 / 共12页
8255A键盘输入课程设计.docx_第8页
第8页 / 共12页
8255A键盘输入课程设计.docx_第9页
第9页 / 共12页
8255A键盘输入课程设计.docx_第10页
第10页 / 共12页
8255A键盘输入课程设计.docx_第11页
第11页 / 共12页
8255A键盘输入课程设计.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

8255A键盘输入课程设计.docx

《8255A键盘输入课程设计.docx》由会员分享,可在线阅读,更多相关《8255A键盘输入课程设计.docx(12页珍藏版)》请在冰点文库上搜索。

8255A键盘输入课程设计.docx

8255A键盘输入课程设计

物理科学与工程技术学院

课程设计说明书

 

课题名称:

微机原理

设计题目:

设计一个16键的键盘系统

专业班级:

11级自动化

学生姓名:

袁广

学号:

1134307138

目 录

第1章设计目的

第2章设计原理与分析

第3章所选元件清单

第4章课程设计心得

第2章

课程设计目的

 

1.了解键盘电路的工作原理。

本实验要求在实验台上,用并行接口实验卡PPI8255为PC机扩展可编程并行接口;利用实验卡上的8位拨动开关提供输入数据,用8个LED指示灯显示输出结果;用单脉冲按钮PI提供输入选通脉冲/STBA模拟输入设备送数,用单脉冲按钮PO提供输出应答脉冲/ACKA和/ACKB模拟输出设备取数。

2.掌握键盘接口电路的编程方法。

设计人机界面接口,要求在微机屏幕上动态地显示当前实验的内容和实验的结果,包括8255A的工作方式,输入的数据和输出的结果

设计人机界面接口,要求在微机屏幕上,以菜单方式列出并行接口8255A原理实验的内容,并根据实验内容设置好工作方式选择跳线开关,用户可以通过键盘选择实验的内容。

方式0

8255为方式0、A口输入、B口输出,可用无条件传送方式控制输入/出。

方式1

其它要求同方式0,改用查询方式控制输入/出,用中断方式也可以,通过读取C口的状态字来获取状态。

方式2

使A口既能接受开关状态又能控制LED指示灯显示;要求先接收A口的开关数据,可用查询方式控制输入/出。

 

第3章设计原理与分析

3.1、实验原理:

1、识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验例程采用的是行反转法。

行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。

这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。

2、程序设计时,要学会灵活地对8255A的各端口进行方式设置。

可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。

3、利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。

3.2、实验步骤:

将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。

3.3、实验电路:

图3-1实验电路图

3.4、程序框图:

图3-2程序框图

3.5、程序接线图:

键盘RL10接8255APB0

键盘RL11接8255APB1

键盘RL12接8255APB2

键盘RL13接8255APB3

键盘RL14接8255APB4

键盘RL15接8255APB5

键盘RL16接8255APB6

键盘RL17接8255APB7

键盘KA10接8255APA0

键盘KA12接8255APA1

键盘KA12接8255APA28

键盘PC0发光二极管L1

键盘PC1发光二极管L2

键盘PC2发光二极管L3

键盘PC3发光二极管L4

键盘PC4发光二极管L5

键盘PC5发光二极管L6

键盘PC6发光二极管L7

键盘PC7发光二极管L8

8255A芯片的片选信号8255CS接CS0

如图3-3所示:

 

图3-3连程序线图

 

3.6、参考程序:

T8.ASM

NAMEt8;8255键盘实验

PAEQU0CFA0H

PBEQUPA+1

PC0EQUPB+1

PCTLEQUPC0+1

CSEGAT4000H

LJMPSTART

CSEGAT4100H

START:

MOV42H,#0FFH;42H中放显示的字符码,初值为0FFH

STA1:

MOVDPTR,#PCTL;设置控制字,ABC口工作于方式0

;AC口输出而B口用于输入

MOVA,#82H

MOVX@DPTR,A

LINE:

MOVDPTR,#PC0;将字符码从C口输出显示

MOVA,42H

CPLA

MOVX@DPTR,A

MOVDPTR,#PA;从A口输出全零到键盘的列线

MOVX@DPTR,A

MOVDPTR,#PB;从B口读入键盘行线值

MOVXA,@DPTR

MOV40H,A;行线值存于40H中

CPLA;取反后如为全零

;表示没有键闭合,继续扫描

JZLINE

MOVR7,#10H;有键按下,延时10MS去抖动

DL0:

MOVR6,#0FFH

DL1:

DJNZR6,DL1

DJNZR7,DL0

MOVDPTR,#PCTL;重置控制字,让A为输入,BC为输出

MOVA,#90H

MOVX@DPTR,A

MOVA,40H

MOVDPTR,#PB;刚才读入的行线值取出从B口送出

MOVX@DPTR,A

MOVDPTR,#PA;从A口读入列线值

MOVXA,@DPTR

MOV41H,A;列线值存于41H中

CPLA;取反后如为全零

JZSTA1;表示没有键按下

MOVDPTR,#TABLE;TABLE表首地址送DPTR

MOVR7,#18H;R7中置计数值16

MOVR6,#00H;R6中放偏移量初值

TT:

MOVXA,@DPTR;从表中取键码前半段字节,行线值与实

CJNEA,40H,NN1;际输入的行线值相等吗?

不等转NN1

INCDPTR;相等,指针指向后半字节,即列线值

MOVXA,@DPTR;列线值与实际输入的列线值

CJNEA,41H,NN2;相等吗?

不等转NN2

MOVDPTR,#CHAR;相等,CHAR表基址和R6中的偏移量

MOVA,R6;取出相应的字符码

MOVCA,@A+DPTR

MOV42H,A;字符码存于42H

BBB:

MOVDPTR,#PCTL;重置控制字,让AC为输出,B为输入

MOVA,#82H

MOVX@DPTR,A

AAA:

MOVA,42H;将字符码从C口送到二极管显示

MOVDPTR,#PC0

CPLA

MOVX@DPTR,A

MOVDPTR,#PA;判断按下的键是否释放

CLRA

MOVX@DPTR,A

MOVDPTR,#PB

MOVXA,@DPTR

CPLA

JNZAAA;没释放转AAA

MOVR5,#2;已释放则延时0.2秒,减少总线负担

DEL1:

MOVR4,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR4,DEL2

DJNZR5,DEL1

JMPSTART;转START

NN1:

INCDPTR;指针指向后半字节即列线值

NN2:

INCDPTR;指针指向下一键码前半字节即行线值

INCR6;CHAR表偏移量加一

DJNZR7,TT;计数值减一,不为零则转TT继续查找

JMPBBB

TABLE:

DW0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占

DW0BF06H,07F06H,0FE05H,0FD05H;两个字节,第一个字节为行

DW0EF05H,0DF05H,0BF05H,07F05H;线值,第二个为列线值

DW0FB03H,0F703H,0EF03H,0DF03H;

CHAR:

DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H;字符码表

DB0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13H

DB14H,15H,16H,17H

END

第4章所选元件清单

4.1元件清单:

表4-1元件清单

原件

数量

电源座

1

7805

1

IN4007

4

100UF/16V

1

按键

9

32.768KHZ

1

12MHZ

1

1UF电容

5

红色发光二极管

5

绿色发光二级管

4

数码管

8

DIP40

1

DIP16

1

DIP8

2

DIP20

1

9013

9

IN4148

4

STC89C51或STC89C52

1

74HC244或74LS244

1

MAX232

1

24CO2

1

10K排阻

4

100电阻

8

1K电阻

9

2K电阻

1

10K电阻

2

单排针

2

0.1UF电容

2

15PF电容

2

 

4.2程序实际接线

数码管的不同笔段的组合构成了不同字符的字形。

为了获得不同的字形,各笔段所加的电平也不同,因此各个字形所形成的编码是不一样的。

例如,对于共阳极数码管,如果要显示字符2,则笔段a、b、g、e、d发光,对应的引脚为低电平;其余各笔段不发光,对应的引脚为该电平。

所以字符2的字形编码为如dpgfedcba=10100100B=A4H。

阴极数码管的字形编码与用阳极数码管的字形编码是逻辑“非”的关系。

根据上述编码方法可以得出数码管显示的字符与对应的字形编码的关系,如表4-2所示

表4-2数码表的字形编码表

第5章 课程设计心得

通过这次单片机课设,我更加清晰的认识了到了单片机内的引脚。

单片机的40个引脚按引脚功能大致可分为4个种类:

电源、时钟、控制和I/O引脚。

 

⒈电源:

 

 ⑴VCC-芯片电源,接+5V; 

 ⑵VSS-接地端;(用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。

但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。

)  

⒉时钟:

XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。

 

⒊控制线:

控制线共有4根,

⒋I/O线:

  

 ⑴80C51共有4个8位并行I/O端口:

P0、P1、P2、P3口,共32个引脚。

  ⑵P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线) 

5.P3口第二功能

  P30RXD串行输入口、P31TXD串行输出口、P32INT0外部中断0(低电平有效)、P33INT1外部中断1(低电平有效)、P34T0定时计数器0、P35T1定时计数器1、P36WR外部数据存储器写选通(低电平有效)、P37RD外部数据存储器读选通(低电平

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2