广工单片机大作业
- 格式:doc
- 大小:829.50 KB
- 文档页数:13
广工单片机大作业
————————————————————————————————作者:————————————————————————————————日期:
单片机及嵌入式系统大作业
学院自动化
专业班级 14级自动化(1)班
学号 3114000825
姓名伍宏淳
指导老师廉迎战
2017年06月05日
一.实验目的
1巩固和掌握对“单片机及嵌入式系统”课程内容的认识和理解,提高应用水平。
2掌握汇编语言程序的编制方法。
3熟悉键盘控制和七段码管及74系列芯片的使用。
二.主要仪器和设备
PC机一台,TD-PITE教学实验系统+TD-51系统平台。
三.系统结构
图一键盘和LED显示器控制电路
图二电路图详细原理图
系统主要包括:
1.8051单片机系统
2.两片74LS07六高压输出缓冲器、驱动器
3.行列式(4×4)键盘
4.LED数码管
实现功能:
将SST89E554RC单元与键盘及数码管显示单元连接,编写程序,扫描键盘输入,并将扫描结果送数码管显示。
而键码产生后如何去实现按键的特定功能,是操作系统和应用程序的任务。
编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。
四.系统部件功能以及原理
1. 8051单片机系统
作为系统信息的处理器。
通过硬件和软件程序的结合,读取从P0端口的信息,检查是否有键按下,在通过P2口的状态,根据P0,P2口的信息确定按下的是键。
在将按键所代表的功能通过8051的软件程序进行处理,若是需要显示的字符,则利用8051通过查表的方
法所以这字符所对应的LED码,通过P1口输出到LED数码管显示。
2. 74LS07
74LS07是集电极开路输出的六缓冲器/驱动器。
管脚排列如下图,其中14脚Vcc接+5V 电源,7脚GND接电源地,1A是通道1的输入端、1Y是通道1的输出端,2A是通道2的输入端、2Y是通道2的输出端,依此类推。
输出和输入是同相位的,但是输出端要通过电阻外接到正电压上,这个外接正电压最高可以达到30V。
引脚图真值表
3. 行列式(4×4)键盘
原理图
原理:无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。
功能:1.去抖动
2.防串键
3.识别被按键并产生与之对应的键码
4.释放键
4.LED数码管
其基本单元是发光二极管,每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
优点是编程简单,显示亮度高,缺点是占用I/O端口多。
本实验采用的是共阳数码管
LED数码管
功能:从P1口送段代码,P0口送位选信号。
段码虽同时到达6个LED,但一次仅一个LED 被选中。
利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个……循环扫描即可。
五.系统软件框图
开始
扫描整个键盘
有键按下吗?
延时10ms
有键按下吗?
第一列输出为低电平
此列有键按下吗?
下一列输出为低电平
各列扫描完了吗?
返回
记录列值
读取行值
延时10ms
键释放了吗?
按键处理程序
Y
N
Y
Y
N
N
Y
N
N
六.软件代码
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
MOV R5,#55H BEGIN: MOV P0,#00H
MOV A,P2
ANL A,#0FH
CJNE A,#0FH,INK1 ACALL DIS
AJMP BEGIN
INK1: ACALL DL1MS MOV A,P2
ANL A,#0FH
CJNE A,#0FH,INK2
AJMP BEGIN
INK2: MOV P0,#0FEH MOV A,P2
JNB ACC.0,KEY0
JNB ACC.1,KEY4
JNB ACC.2,KEY80
JNB ACC.3,KEYC0 MOV P0,#0FDH MOV A,P2
JNB ACC.0,KEY1
JNB ACC.1,KEY5
JNB ACC.2,KEY9
JNB ACC.3,KEYD0 MOV P0,#0FBH MOV A,P2
JNB ACC.0,KEY2
JNB ACC.1,KEY6
JNB ACC.2,KEYA
JNB ACC.3,KEYE0 MOV P0,#0F7H MOV A,P2
JNB ACC.0,KEY3
JNB ACC.1,KEY7
JNB ACC.2,KEYB
JNB ACC.3,KEYF0 LJMP STTK
KEY80: AJMP KEY8 KEYC0: AJMP KEYC KEYD0: AJMP KEYD KEYE0: AJMP KEYE KEYF0: AJMP KEYF KEY0: MOV A,#00H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY1: MOV A,#01H ACALL PUTBUF ACALL DIS
LJMP STTK
KEY2: MOV A,#02H ACALL PUTBUF ACALL DIS
LJMP STTK
KEY3: MOV A,#03H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY4: MOV A,#04H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY5: MOV A,#05H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY6: MOV A,#06H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY7: MOV A,#07H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY8: MOV A,#08H ACALL PUTBUF ACALL DIS
AJMP STTK
KEY9: MOV A,#09H ACALL PUTBUF ACALL DIS
AJMP STTK
KEYA: MOV A,#0AH ACALL PUTBUF ACALL DIS
AJMP STTK
KEYB: MOV A,#0BH ACALL PUTBUF ACALL DIS
AJMP STTK
KEYC: MOV A,#0CH ACALL PUTBUF ACALL DIS
AJMP STTK
KEYD: MOV A,#0DH ACALL PUTBUF ACALL DIS
AJMP STTK
KEYE: MOV A,#0EH ACALL PUTBUF ACALL DIS
AJMP STTK
KEYF: MOV A,#0FH ACALL PUTBUF ACALL DIS
AJMP STTK PUTBUF: PUSH 00H PUSH ACC
MOV A,R5
MOV R0,A
POP ACC
MOV @R0,A
DEC R5
CJNE R5,#4FH,GOBACK MOV R5,#55H GOBACK: POP 00H RET
DIS: PUSH ACC PUSH 00H
PUSH 03H
MOV R0,#50H
MOV R3,#0DFH
AA2: M OV A,@R0 MOV DPTR,#AA1 MOVC A,@A+DPTR MOV P1,A
MOV P0,R3
ACALL DL1MS
MOV A,R3
JNB ACC.0,AA3
RR A MOV R3,A
INC R0
AJMP AA2
AA3: POP 03H
POP 00H
POP ACC
RET
AA1: DB
3FH,06H,5BH,4FH
,66H,6DH,7DH,07
H
DB
7FH,6FH,77H,7CH,39H,5EH,79 H,71H
DL1MS: MOV R7,#01H
DL0: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL0 RET
STTK: ACALL DIS
MOV P0,#00H
MOV A,P2
ANL A,#0FH
CJNE A,#0FH, STTK
AJMP BEGIN
END
六.实验总结
通过这次大作业:实现按下“按键显示相应的数字”,我不仅仅巩固和掌握对“单片机及嵌入式系统”课程内容的认识和理解,提高应用水平而且
掌握汇编语言程序的编制方法。
让我学到了许多。
自己亲自操作,加深了对课程的理解和认识,也巩固和掌握课内的知识,将书上的原理应用到实际。
同时,对汇编语言程序有了进一步的了解和熟悉,虽然过程当中也出现了很多错误,不过还是一一解决了。
希望自己以后能更加学以致用,从中学到更多东西。