单片机项目教学案例汇编Word下载.docx
《单片机项目教学案例汇编Word下载.docx》由会员分享,可在线阅读,更多相关《单片机项目教学案例汇编Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
mova,#0
movr3,#8
loop4:
mov30h,a
movca,@a+dptr
movp1,a
lcalldelay
mova,30h
inca
djnzr3,loop4
delay:
movr7,#100
loop2:
movr6,#100
loop1:
movr5,#49
djnzr5,$
djnzr6,loop1
djnzr7,loop2
ret
tab:
db0feh,0ffh,0fdh,0ffh,0fbh,0ffh,0f7h,0ffh
db0efh,0ffh,0dfh,0ffh,0bfh,0ffh,07fh,0ffh
End
案例三交通灯控制
利用单片机设计制作具有下列功能的交通灯:
1、自动计时,由两位数码管静态显示;
2、发光二极管分四组分别代表东、南、西、北四个方向交通灯,东、西方向红灯亮时,南北方向绿灯亮;
反之南北方向红灯亮时,东西方向绿灯亮;
小灯每30S交替一次。
ORG0000H
LJMPSTART
ORG0100H
BCD1EQU50H
BCD2EQU51H
START:
MOVSP,#60H
STATE0:
MOVA,#0F6H;
初始状态全红灯
MOVP1,A
MOVR2,#1;
延时1秒
S0:
LCALLBINBCD
LCALLDISPLAY
LCALLDELAY
DJNZR2,S0
STATE1:
MOVA,#0F5H;
南北绿灯,东西红灯
MOVR2,#20;
延时20秒
S1:
LCALLBINBCD
DJNZR2,S1
STATE2:
MOVA,#0F3H;
南北黄灯,东西红灯
MOVR2,#5;
延时5秒
S2:
DJNZR2,S2
STATE3:
MOVA,#0EEH;
南北红灯,东西绿灯
S3:
DJNZR2,S3
STATE4:
MOVA,#0DEH;
南北红灯,东西黄灯
S4:
DJNZR2,S4
LJMPSTATE1;
转至状态1
DELAY:
MOVR7,#20;
1秒延时子程序
D1:
MOVR6,#200
D2:
MOVR5,#123
NOP
DJNZR5,$
DJNZR6,D2
DJNZR7,D1
RET
BINBCD:
MOVA,R2;
二进制转换非压缩BCD码子程序
MOVB,#10
DIVAB
MOVBCD2,A;
存十位BCD码
MOVBCD1,B;
存个位BCD码
RET
DISPLAY:
MOVA,BCD1;
显示子程序
MOVDPTR,#TAB
MOVCA,@A+DPTR;
查个位字形码
MOVP2,A
MOVA,BCD2
查十位字形码
MOVP0,A
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
案例四简易电子密码锁设计
1、初始状态下显示屏显示“HELLO”,并保持显示5秒后清屏;
2、如果密码输入错误则显示“ERROR”,并保持显示5秒后清屏;
3、如果密码输入正确则显示“RIGHT”,并保持显示5秒后清屏。
1、系统方案设计理论图
(1)键盘电路图
(2)数码管显示电路
*******************************************************
;
以下8个字节存放8位数码管的段码
LED_BIT_1EQU30H
LED_BIT_2EQU31H
LED_BIT_3EQU32H
LED_BIT_4EQU33H
LED_BIT_5EQU34H
LED_BIT_6EQU35H
LED_BIT_7EQU36H
LED_BIT_8EQU37H
以下6个字节存放初始密码
WORD_1EQU38H
WORD_2EQU39H
WORD_3EQU3AH
WORD_4EQU3BH
WORD_5EQU3CH
WORD_6EQU3DH
以下6个字节存放用户输入的6位密码
KEY_1EQU3EH
KEY_2EQU3FH
KEY_3EQU40H
KEY_4EQU41H
KEY_5EQU42H
KEY_6EQU43H
******************************************************
CNT_AEQU44H
CNT_BEQU45H
KEY_CNTEQU46H;
已输出的密码位数
LINEEQU47H;
按键行号
ROWEQU48H;
按键列号
VALEQU49H;
键值
以下为初始化程序,包括数据存储空间初始化,设置初始密码
ORG00H
SJMPSTART
ORG0050H
MOVSP,#60H
MOVCNT_A,#00H;
程序初始化
MOVCNT_B,#00H
MOVKEY_CNT,#00H
MOVLINE,#00H
MOVROW,#00H
MOVVAL,#00H
SETBP1、0
MOVLED_BIT_1,#00H;
段码存储区清0
MOVLED_BIT_2,#00H
MOVLED_BIT_3,#00H
MOVLED_BIT_4,#00H
MOVLED_BIT_5,#00H
MOVLED_BIT_6,#00H
MOVLED_BIT_7,#79H
MOVLED_BIT_8,#73H
MOVKEY_1,#00H;
输入密码存储区清0
MOVKEY_2,#00H
MOVKEY_3,#00H
MOVKEY_4,#00H
MOVKEY_5,#00H
MOVKEY_6,#00H
MOVWORD_1,#6;
设置初始密码为"
123456"
MOVWORD_2,#5
MOVWORD_3,#4
MOVWORD_4,#3
MOVWORD_5,#2
MOVWORD_6,#1
A0:
LCALLDISP
***********************************************************
以下为键盘扫描程序,计算键值并存入VAL
LSCAN:
MOVP3,#0F0H;
扫描行码
L1:
JNBP3、0,L2
LCALLDLY_S
JNBP3、0,L2
LJMPRSCAN
L2:
JNBP3、1,L3
JNBP3、1,L3
MOVLINE,#01H
L3:
JNBP3、2,L4
JNBP3、2,L4
MOVLINE,#02H
L4:
JNBP3、3,A0
JNBP3、3,A0
MOVLINE,#03H
RSCAN:
MOVP3,#0FH;
扫描列码
C1:
JNBP3、4,C2
LJMPCALCU
C2:
JNBP3、5,C3
MOVROW,#01H
C3:
JNBP3、6,C1
MOVROW,#02H
CALCU:
MOVA,LINE;
计算键值
MOVB,#03H
MULAB
ADDA,ROW
MOVVAL,A
**************************************************
以下为按键处理程序,对不同的按键作出响应
CJNEA,#0AH,J1;
就是否为"
CLR"
键
MOVR1,KEY_CNT
CJNER1,#00H,J2
LCALLALARM_1
LJMPSTART
J2:
LCALLSHIFTR
DECKEY_CNT
W00:
LCALLDISP;
等待按键抬起
MOVA,P3
CJNEA,#0FH,W01
LJMPA0
W01:
MOVA,P3
CJNEA,#0F0H,W02
W02:
SJMPW00
J1:
MOVA,VAL
CJNEA,#0BH,J3;
判断就是否为"
ENTER"
CJNER1,#06H,J4
MOVA,WORD_1;
比较密码
CJNEA,3EH,J5
MOVA,WORD_2
CJNEA,3FH,J5
M