单片机项目教学案例汇编.docx
- 文档编号:29448376
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:21
- 大小:131.60KB
单片机项目教学案例汇编.docx
《单片机项目教学案例汇编.docx》由会员分享,可在线阅读,更多相关《单片机项目教学案例汇编.docx(21页珍藏版)》请在冰豆网上搜索。
单片机项目教学案例汇编
案例一单片机最小系统设计
1、功能要求
1、设计一个单片机最小系统;
2、通过锁存器实现地址信息和数据信息的隔离。
2、硬件电路设计
1、方案设计结构示意图:
2、电路设计原理图:
3、参考程序
ORG0000H
JMPMAIN
ORG0040H
MAIN:
MOVSP,#07H
MOVDPTR,#0FF45H
MOVA,#88H
MOVX@DPTR,A
SJMP$
END
案例二信号灯控制
1、功能要求
1、设计一个延时程序,使与相连的发光二极管每隔1秒亮一次;
2、采用循环控制,使8个发光二极管呈跑马灯方式闪烁,其中发光二
极管点亮时长为1秒,熄灭时长为2秒。
2、硬件电路设计
1、电路设计原理图
3、参考程序
org0000h
ljmpstart
org100h
start:
movdptr,#tab
mova,#0
movr3,#8
loop4:
mov30h,a
movca,@a+dptr
movp1,a
lcalldelay
mova,30h
inca
mov30h,a
movca,@a+dptr
movp1,a
lcalldelay
lcalldelay
mova,30h
inca
djnzr3,loop4
ljmpstart
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、功能要求
利用单片机设计制作具有下列功能的交通灯:
1、自动计时,由两位数码管静态显示;
2、发光二极管分四组分别代表东、南、西、北四个方向交通灯,东、西方向红灯亮时,南北方向绿灯亮;反之南北方向红灯亮时,东西方向绿灯亮;小灯每30S交替一次。
2、硬件电路设计
3、参考程序
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;南北绿灯,东西红灯
MOVP1,A
MOVR2,#20;延时20秒
S1:
LCALLBINBCD
LCALLDISPLAY
LCALLDELAY
DJNZR2,S1
STATE2:
MOVA,#0F3H;南北黄灯,东西红灯
MOVP1,A
MOVR2,#5;延时5秒
S2:
LCALLBINBCD
LCALLDISPLAY
LCALLDELAY
DJNZR2,S2
STATE3:
MOVA,#0EEH;南北红灯,东西绿灯
MOVP1,A
MOVR2,#20;延时20秒
S3:
LCALLBINBCD
LCALLDISPLAY
LCALLDELAY
DJNZR2,S3
STATE4:
MOVA,#0DEH;南北红灯,东西黄灯
MOVP1,A
MOVR2,#5;延时5秒
S4:
LCALLBINBCD
LCALLDISPLAY
LCALLDELAY
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
MOVCA,@A+DPTR;查十位字形码
MOVP0,A
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END
案例四简易电子密码锁设计
1、功能要求
1、初始状态下显示屏显示“HELLO”,并保持显示5秒后清屏;
2、如果密码输入错误则显示“ERROR”,并保持显示5秒后清屏;
3、如果密码输入正确则显示“RIGHT”,并保持显示5秒后清屏。
2、硬件电路设计
1、系统方案设计理论图
(1)键盘电路图
(2)数码管显示电路
3、参考程序
*******************************************************
;以下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
START:
MOVSP,#60H
MOVCNT_A,#00H;程序初始化
MOVCNT_B,#00H
MOVKEY_CNT,#00H
MOVLINE,#00H
MOVROW,#00H
MOVVAL,#00H
SETB
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:
JNB,L2
LCALLDLY_S
JNB,L2
MOVLINE,#00H
LJMPRSCAN
L2:
JNB,L3
LCALLDLY_S
JNB,L3
MOVLINE,#01H
LJMPRSCAN
L3:
JNB,L4
LCALLDLY_S
JNB,L4
MOVLINE,#02H
LJMPRSCAN
L4:
JNB,A0
LCALLDLY_S
JNB,A0
MOVLINE,#03H
RSCAN:
MOVP3,#0FH;扫描列码
C1:
JNB,C2
MOVROW,#00H
LJMPCALCU
C2:
JNB,C3
MOVROW,#01H
LJMPCALCU
C3:
JNB,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
LJMPA0
W02:
SJMPW00
J1:
MOVA,VAL
CJNEA,#0BH,J3;判断是否为"ENTER"键
MOVR1,KEY_CNT
CJNER1,#06H,J4
MOVA,WORD_1;比较密码
CJNEA,3EH,J5
MOVA,WORD_2
CJNEA,3FH,J5
MOVA,WORD_3
CJNEA,40H,J5
MOVA,WORD_4
CJNEA,41H,J5
MOVA,WORD_5
CJNEA,42H,J5
MOVA,WORD_6
CJNEA,43H,J5
CLR
MOVP2,#0ffh
LCALLDLY_L
LJMPSTART
J5:
LCALLALARM_2
LJMPSTART
J4:
LCALLALARM_1
LJMPSTART
J3:
INCKEY_CNT;按下数字键
MOVA,KEY_CNT
CJNEA,#07H,K1
LCALLALARM_1
W10:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W11
LJMPSTART
W11:
MOVA,P3
CJNEA,#0F0H,W12
LJMPSTART
W12:
SJMPW10
K1:
LCALLSHIFTL
W20:
LCALLDISP;等待按键抬起
MOVA,P3
CJNEA,#0FH,W21
LJMPA0
W21:
MOVA,P3
CJNEA,#0F0H,W22
LJMPA0
W22:
SJMPW20
LJMPA0
ALARM_1:
LCALLSEC;操作错误报警
RET
ALARM_2:
LCALLSEC;密码错误报警
LCALLDLY_L
RET
;**************************************************
;音频信号产生程序,用于声音报警
SEC:
MOVR2,#100
SEC_LP:
clr
LCALLT1MSD
NOP
setb
LCALLT1MSD
DJNZR2,SEC_LP
RET
;**************************************************
;段码,输入密码左移子程序
SHIFTL:
MOVLED_BIT_6,LED_BIT_5
MOVLED_BIT_5,LED_BIT_4
MOVLED_BIT_4,LED_BIT_3
MOVLED_BIT_3,LED_BIT_2
MOVLED_BIT_2,LED_BIT_1
MOVLED_BIT_1,#40H
MOVKEY_6,KEY_5
MOVKEY_5,KEY_4
MOVKEY_4,KEY_3
MOVKEY_3,KEY_2
MOVKEY_2,KEY_1
MOVKEY_1,VAL
RET
;**************************************************
;段码,输入密码右移子程序
SHIFTR:
MOVLED_BIT_1,LED_BIT_2
MOVLED_BIT_2,LED_BIT_3
MOVLED_BIT_3,LED_BIT_4
MOVLED_BIT_4,LED_BIT_5
MOVLED_BIT_5,LED_BIT_6
MOVLED_BIT_6,#00H
MOVKEY_1,KEY_2
MOVKEY_2,KEY_3
MOVKEY_3,KEY_4
MOVKEY_4,KEY_5
MOVKEY_5,KEY_6
MOVKEY_6,#00H
RET
;**************************************************
;以下为数码显示子程序
DISP:
PUSHACC
PUSHPSW
SETBRS0
MOVR0,#LED_BIT_1
MOVR2,#8
MOVR3,#0FEH
DISP1:
movP2,R3
MOVP0,@R0
LCALLDLY_S
MOVa,R3
RLA
MOVR3,A
INCR0
djnzR2,DISP1
POPPSW
POPACC
RET
;**********************************************
T1MSD:
MOVR3,#2
D0:
MOVR4,#250
DJNZR4,$
DJNZR3,D0
RET
DLY_S:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
DLY_L:
MOVR5,#100
D2:
MOVR6,#100
D3:
MOVR7,#248
DJNZR7,$
DJNZR6,D3
DJNZR5,D2
RET
FINI:
NOP
END
案例五双机通信
1、功能要求
利用AT89S52串行口,通过双机通信,实现单片机之间数据块的传送
(1)甲机发送,乙机接收;
(2)甲机发送地址信息,然后发送一批数据;
(3)乙机把接收到的地址信息作为存放数据的首地址,然后将数据存入相应单元;
(4)校验方式:
累加校验和。
2、硬件电路设计
1、硬件电路结构示意图
3、参考程序
发送方:
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVSCON,#40H;串行口以方式1工作
MOVTMOD,#20H;T1以方式2工作
MOVTH1,#0FDH;波特率9600
MOVTL1,#0FDH
SETBTR1
MOVP1,#0FFH
MOV30H,#0FFH;设拨码开关初始值
K0:
MOVA,P1;读入拨码开关
CJNEA,30H,K1;判断与前次是不是相同,不同则跳至K1
SJMPK0
K1:
MOV30H,A;存入拨动开关新值
MOVSBUF,A;输入SBUF发送
WAIT:
JBCTI,K0;是否发送完毕
SJMPWAIT
END
接收方:
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOVSP,#60
MOVSCON,#50H
MOVTMOD,#20H
MOVTH1,#0FDH
MOVTL1,#0FDH
SETBTR1
MOVP1,#0FFH
K0:
JBRI,KK;是否接收到数据,有则跳至KK
SJMPK0
KK:
MOVA,SBUF;将接收到的数据保存到累加器
MOVP1,A;输出至P1
CLRRI;清除RI
SJMPK0
END
案例六数字电压表设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 项目 教学 案例 汇编