单片机键盘输入课程设计Word文件下载.docx
- 文档编号:18614843
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:11
- 大小:144.30KB
单片机键盘输入课程设计Word文件下载.docx
《单片机键盘输入课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机键盘输入课程设计Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
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
MOVDPTR,#PA;
从A口输出全零到键盘的列线
MOVDPTR,#PB;
从B口读入键盘行线值
MOVXA,@DPTR
MOV40H,A;
行线值存于40H中
CPLA;
取反后如为全零
表示没有键闭合,继续扫描
JZLINE
MOVR7,#10H;
有键按下,延时10MS去抖动
DL0:
MOVR6,#0FFH
DL1:
DJNZR6,DL1
DJNZR7,DL0
重置控制字,让A为输入,BC为输出
MOVA,#90H
MOVA,40H
刚才读入的行线值取出从B口送出
从A口读入列线值
MOV41H,A;
列线值存于41H中
JZSTA1;
表示没有键按下
MOVDPTR,#TABLE;
TABLE表首地址送DPTR
MOVR7,#18H;
R7中置计数值16
MOVR6,#00H;
R6中放偏移量初值
TT:
MOVXA,@DPTR;
从表中取键码前半段字节,行线值与实
CJNEA,40H,NN1;
际输入的行线值相等吗?
不等转NN1
INCDPTR;
相等,指针指向后半字节,即列线值
列线值与实际输入的列线值
CJNEA,41H,NN2;
相等吗?
不等转NN2
MOVDPTR,#CHAR;
相等,CHAR表基址和R6中的偏移量
MOVA,R6;
取出相应的字符码
MOVCA,@A+DPTR
MOV42H,A;
字符码存于42H
BBB:
重置控制字,让AC为输出,B为输入
AAA:
MOVA,42H;
将字符码从C口送到二极管显示
MOVDPTR,#PC0
判断按下的键是否释放
CLRA
MOVDPTR,#PB
JNZAAA;
没释放转AAA
MOVR5,#2;
已释放则延时0.2秒,减少总线负担
DEL1:
MOVR4,#200
DEL2:
MOVR3,#126
DEL3:
DJNZR3,DEL3
DJNZR4,DEL2
DJNZR5,DEL1
JMPSTART;
转START
NN1:
指针指向后半字节即列线值
NN2:
指针指向下一键码前半字节即行线值
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
IN4007
4
100UF/16V
按键
9
32.768KHZ
12MHZ
1UF电容
5
红色发光二极管
绿色发光二级管
数码管
8
DIP40
DIP16
DIP8
2
DIP20
9013
IN4148
STC89C51或STC89C52
74HC244或74LS244
MAX232
24CO2
10K排阻
100电阻
1K电阻
2K电阻
10K电阻
单排针
0.1UF电容
15PF电容
4.2程序实际接线
数码管的不同笔段的组合构成了不同字符的字形。
为了获得不同的字形,各笔段所加的电平也不同,因此各个字形所形成的编码是不一样的。
例如,对于共阳极数码管,如果要显示字符2,则笔段a、b、g、e、d发光,对应的引脚为低电平;
其余各笔段不发光,对应的引脚为该电平。
所以字符2的字形编码为如dpgfedcba=10100100B=A4H。
阴极数码管的字形编码与用阳极数码管的字形编码是逻辑“非”的关系。
根据上述编码方法可以得出数码管显示的字符与对应的字形编码的关系,如表4-2所示
表4-2数码表的字形编码表
第5章 课程设计心得
初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。
如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。
事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。
你完全可以在指令中按排一条SETBP3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。
通过这次单片机课设,我更加清晰的认识了到了单片机内的引脚。
单片机的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外部数据存储器读选通(低电平有效)
第6章 参考文献
[1]苏金明.周建斌.用VB.NET和VC#.NET开发交互式CAD系统[M].北京:
电子工业出版社.2004.
[2]普悠玛.VB.NET程序设计示例导学[M].北京:
科海电子出版社.2003.
[3]李万红.段恒勇.VB.NET实用培训教程[M].北京:
清华大学出版社.2002.
[4]李万红.梁靓.VB.NET程序设计入门[M].北京:
[5]刘斌文.精通VisualBasic.NET中文版[M].北京:
机械工业出版社.2004.
[6]李英顺.单片机原理与应用[M].北京:
中国水利水电出版社.2010.3.
[7]梅丽凤.单片机原理与接口实验[M].北京:
清华大学出版社.2006.
[8]张毅刚.单片机原理与应用[M].北京:
高等教育出版社.2007.
[9]张毅刚.MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社.2008.
[10]方立友.微机原理与汇编语言实用教程[M].北京:
清华大学出版社.2007.2.
[11]陈兴祥.MC7705芯片对单片机的动态掉电保护[J].宁夏机械.2002.(3).
[12]田志华.电池供电单片机的低功耗设计[J].宁夏机械.2002.(4).
[13]李学军.如何用MCS-51单片机扩展串口进行通讯[J].宁夏机械.2003.
(2).
[14]李海涛.关于如何提高单片机系统可靠性的探讨[J].宁夏机械.2005.(3).
[15]高彦波.李岩.毕晓燕.PC与单片机之间的远距离并行通讯卡[J].电站设备自动化.2001.(3).
[16]李艳红.单片机I/O口不宜用作直接驱动出口[J].电站设备自动化,2003,
(2).
[17]彭同明.杨少华.“单片机原理及应用”课程改革的分析[J].武汉电力职业技术学院学报.2004.
(1).
[18]宋青松.张旭东.王立贤.眭众国.MCS—96系列单片机与IBM-PC系列微机之间通讯的实现[J].电站设备自动化.2001.
(1).
[19]顾勇.李强.基于MC68HC908单片机的伸缩自动门控制系统[J].通信与广播电视.2003.(4).
[20]桂绍勇.彭同明.何新洲.基于MEGA103单片机的数控系统研制[J].武汉电力职业技术学院学报.2005.(4).
[21]李占芳.黄嘉兴.面向煤炭应用型人才的单片机课程教学改革探索[J].价值工程.2011.(7).
[22]石明江.顾亚雄.张禾.单片机原理与应用课程教学改革与实践[J].计算机教育.2011.(6).
[23]翟永前.蒋芳芳.基于MSP430单片机的智能数字电压表设计[J].化工自动化及仪表.2011.(3).
[24]许超.吴新杰.张丹.基于Proteus和Keil的单片机课程教学改革[J].辽宁大学学报(自然科学版).2011.
(1).
[25]李林.基于单片机的野外作业移动库房安防系统设计[J].工矿自化.2011.(4).
[26]李林.王心刚.FPGA与单片机在RLC测量系统设计中的应用[J].化工自动化及仪表.2011.(3).
[27]李玮华.杨秦建.基于单片机的多轴运动数控系统跟随误差补偿器的设计[J].机床与液压.2011.(4).
[28]陈堂敏.刘焕平主编.单片机原理与应用[M].北京:
北京理工大学出版社.2007.
[29]沈美明.温动蝉编著.IBM-PC汇编语言程序设计[M].北京:
清华大学出社.1994.
[30]张仰森等编.微型计算机常用软硬件技术速查手册[M].北京:
北京希望电脑公司.1994.
[31]江修汗等编.计算机控制原理与应用[M].西安:
西安电子科技大学出版社.1999.
[32]田闯.直流电源屏电池单片机监测系统[J].西铁科技.2001.
(1).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 键盘输入 课程设计