《单片机项目教学案例汇编(13页).doc》由会员分享,可在线阅读,更多相关《单片机项目教学案例汇编(13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 案例一 单片机最小系统设计一、 功能要求1、 设计一个单片机最小系统;2、 通过锁存器实现地址信息和数据信息的隔离。二、 硬件电路设计1、方案设计结构示意图:2、 电路设计原理图:三、 参考程序ORG 0000HJMP MAINORG 0040HMAIN: MOV SP,#07H MOV DPTR,#0FF45H MOV A,#88H MOVX DPTR,A SJMP $ END 案例二 信号灯控制一、 功能要求1、 设计一个延时程序,使与P1.0相连的发光二极管每隔1秒亮一次;2、 采用循环控制,使8个发光二极管呈跑马灯方式闪烁,其中发光二 极管点亮时长为1秒,熄灭时长为2秒。二、 硬件
2、电路设计1、电路设计原理图三、 参考程序org 0000hljmp startorg 100hstart:mov dptr,#tabmov a,#0mov r3,#8loop4: mov 30h,amovc a,a+dptrmov p1,alcall delaymov a,30hinc amov 30h,amovc a,a+dptrmov p1,alcall delaylcall delaymov a,30hinc adjnz r3,loop4ljmp startdelay: mov r7,#100 loop2:mov r6,#100loop1: mov r5,#49 djnz r5,$ dj
3、nz r6,loop1 djnz r7,loop2 ret tab: db 0feh,0ffh,0fdh,0ffh,0fbh,0ffh,0f7h,0ffh db 0efh,0ffh,0dfh,0ffh,0bfh,0ffh,07fh,0ffh End 案例三 交通灯控制一、 功能要求利用单片机设计制作具有下列功能的交通灯:1、 自动计时,由两位数码管静态显示;2、 发光二极管分四组分别代表东、南、西、北四个方向交通灯,东、西方向红灯亮时,南北方向绿灯亮;反之南北方向红灯亮时,东西方向绿灯亮;小灯每30S交替一次。二、 硬件电路设计三、 参考程序ORG 0000HLJMP STARTORG 010
4、0HBCD1EQU50HBCD2EQU51HSTART:MOV SP,#60HSTATE0:MOV A,#0F6H ;初始状态全红灯MOV P1,AMOV R2,#1 ;延时1秒S0:LCALLBINBCDLCALLDISPLAYLCALLDELAYDJNZ R2,S0STATE1:MOV A,#0F5H ;南北绿灯,东西红灯MOV P1,AMOV R2,#20 ;延时20秒S1:LCALLBINBCDLCALLDISPLAYLCALLDELAYDJNZ R2,S1STATE2:MOV A,#0F3H ;南北黄灯,东西红灯MOV P1,AMOV R2,#5 ;延时5秒S2:LCALLBINBC
5、DLCALLDISPLAYLCALLDELAYDJNZ R2,S2STATE3:MOV A,#0EEH ;南北红灯,东西绿灯MOV P1,AMOV R2,#20 ;延时20秒S3:LCALLBINBCDLCALLDISPLAYLCALLDELAYDJNZ R2,S3STATE4:MOV A,#0DEH ;南北红灯,东西黄灯MOV P1,AMOV R2,#5 ;延时5秒S4:LCALLBINBCDLCALLDISPLAYLCALLDELAYDJNZ R2,S4LJMP STATE1 ;转至状态1DELAY:MOV R7,#20 ;1秒延时子程序D1:MOV R6,#200D2:MOV R5,#1
6、23NOPDJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETBINBCD:MOVA,R2;二进制转换非压缩BCD码子程序MOVB,#10DIVABMOVBCD2,A;存十位BCD码MOVBCD1,B;存个位BCD码RETDISPLAY:MOVA,BCD1;显示子程序MOVDPTR,#TABMOVCA,A+DPTR;查个位字形码MOVP2,AMOVA,BCD2MOVCA,A+DPTR;查十位字形码MOVP0,ARET TAB:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H END 案例四 简易电子密码锁设计一、 功能要求1、 初始状态
7、下显示屏显示“HELLO”,并保持显示5秒后清屏;2、 如果密码输入错误则显示“ERROR”,并保持显示5秒后清屏;3、 如果密码输入正确则显示“RIGHT”,并保持显示5秒后清屏 。二、 硬件电路设计1、 系统方案设计理论图(1) 键盘电路图(2) 数码管显示电路三、 参考程序*;以下8个字节存放8位数码管的段码LED_BIT_1EQU30HLED_BIT_2EQU31HLED_BIT_3EQU32HLED_BIT_4EQU33HLED_BIT_5EQU34HLED_BIT_6EQU35HLED_BIT_7EQU36HLED_BIT_8EQU37H;以下6个字节存放初始密码WORD_1EQU
8、38HWORD_2EQU39HWORD_3EQU3AHWORD_4EQU3BHWORD_5EQU3CHWORD_6EQU3DH;以下6个字节存放用户输入的6位密码KEY_1EQU3EHKEY_2EQU3FHKEY_3EQU40HKEY_4EQU41HKEY_5EQU42HKEY_6EQU43H;*CNT_AEQU44HCNT_BEQU45HKEY_CNTEQU46H;已输出的密码位数LINEEQU47H;按键行号ROWEQU48H;按键列号VALEQU49H;键值;*;以下为初始化程序,包括数据存储空间初始化,设置初始密码ORG00HSJMPSTARTORG0050HSTART:MOV SP,
9、#60HMOVCNT_A,#00H;程序初始化MOVCNT_B,#00HMOVKEY_CNT,#00HMOVLINE,#00HMOVROW,#00HMOVVAL,#00HSETBP1.0MOVLED_BIT_1,#00H;段码存储区清0MOVLED_BIT_2,#00HMOVLED_BIT_3,#00HMOVLED_BIT_4,#00HMOVLED_BIT_5,#00HMOVLED_BIT_6,#00HMOVLED_BIT_7,#79HMOVLED_BIT_8,#73HMOVKEY_1,#00H;输入密码存储区清0MOVKEY_2,#00HMOVKEY_3,#00HMOVKEY_4,#00HM
10、OVKEY_5,#00HMOVKEY_6,#00HMOVWORD_1,#6;设置初始密码为123456MOVWORD_2,#5MOVWORD_3,#4MOVWORD_4,#3MOVWORD_5,#2MOVWORD_6,#1A0:LCALLDISP;*;以下为键盘扫描程序,计算键值并存入VALLSCAN:MOVP3,#0F0H;扫描行码L1:JNBP3.0,L2LCALLDLY_SJNBP3.0,L2MOVLINE,#00HLJMPRSCANL2:JNBP3.1,L3LCALLDLY_SJNBP3.1,L3MOVLINE,#01HLJMPRSCANL3:JNBP3.2,L4LCALLDLY_SJ
11、NBP3.2,L4MOVLINE,#02HLJMPRSCANL4:JNBP3.3,A0LCALLDLY_SJNBP3.3,A0MOVLINE,#03HRSCAN:MOVP3,#0FH;扫描列码C1:JNBP3.4,C2MOVROW,#00HLJMPCALCUC2:JNBP3.5,C3MOVROW,#01HLJMPCALCUC3:JNBP3.6,C1MOVROW,#02HCALCU:MOVA,LINE;计算键值MOVB,#03HMULABADDA,ROWMOVVAL,A;*;以下为按键处理程序,对不同的按键作出响应CJNEA,#0AH,J1;是否为CLR键MOVR1,KEY_CNTCJNER1,
12、#00H,J2LCALLALARM_1LJMPSTART J2:LCALLSHIFTR DECKEY_CNTW00:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W01LJMPA0W01:MOVA,P3CJNEA,#0F0H,W02LJMPA0W02:SJMPW00J1:MOVA,VALCJNEA,#0BH,J3;判断是否为ENTER键MOVR1,KEY_CNTCJNER1,#06H,J4MOVA,WORD_1;比较密码CJNEA,3EH,J5MOVA,WORD_2CJNEA,3FH,J5MOVA,WORD_3CJNEA,40H,J5MOVA,WORD_4CJNEA,41
13、H,J5MOVA,WORD_5CJNEA,42H,J5MOVA,WORD_6CJNEA,43H,J5CLRP1.0MOVP2,#0ffhLCALLDLY_LLJMPSTARTJ5:LCALLALARM_2LJMPSTARTJ4:LCALLALARM_1LJMPSTARTJ3:INCKEY_CNT;按下数字键MOVA,KEY_CNTCJNEA,#07H,K1LCALLALARM_1W10:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W11LJMPSTARTW11:MOVA,P3CJNEA,#0F0H,W12LJMPSTARTW12:SJMPW10K1:LCALLSHIFT
14、LW20:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W21LJMPA0W21:MOVA,P3CJNEA,#0F0H,W22LJMPA0W22:SJMPW20LJMPA0ALARM_1:LCALL SEC;操作错误报警RETALARM_2:LCALL SEC;密码错误报警LCALLDLY_LRET;*;音频信号产生程序,用于声音报警SEC: MOV R2, #100 SEC_LP:clr P1.7 LCALL T1MSD NOP setb P1.7LCALL T1MSD DJNZ R2,SEC_LP RET;*;段码,输入密码左移子程序SHIFTL:MOVLED_BIT
15、_6,LED_BIT_5MOVLED_BIT_5,LED_BIT_4MOVLED_BIT_4,LED_BIT_3MOVLED_BIT_3,LED_BIT_2MOVLED_BIT_2,LED_BIT_1MOVLED_BIT_1,#40HMOVKEY_6,KEY_5MOVKEY_5,KEY_4MOVKEY_4,KEY_3MOVKEY_3,KEY_2MOVKEY_2,KEY_1MOVKEY_1,VALRET;*;段码,输入密码右移子程序SHIFTR:MOVLED_BIT_1,LED_BIT_2MOVLED_BIT_2,LED_BIT_3MOVLED_BIT_3,LED_BIT_4MOVLED_BIT
16、_4,LED_BIT_5MOVLED_BIT_5,LED_BIT_6MOVLED_BIT_6,#00HMOVKEY_1,KEY_2MOVKEY_2,KEY_3MOVKEY_3,KEY_4MOVKEY_4,KEY_5MOVKEY_5,KEY_6MOVKEY_6,#00HRET;*;以下为数码显示子程序DISP:PUSH ACCPUSH PSWSETB RS0MOV R0,#LED_BIT_1MOV R2,#8MOV R3,#0FEHDISP1:mov P2,R3 MOV P0,R0LCALLDLY_SMOV a,R3RL AMOV R3,AINC R0djnz R2,DISP1POP PSWPO
17、P ACCRET;*T1MSD:MOV R3, #2 D0:MOV R4, #250 DJNZ R4, $ DJNZ R3, D0 RETDLY_S:MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETDLY_L:MOVR5,#100D2:MOVR6,#100D3:MOVR7,#248DJNZR7,$DJNZR6,D3DJNZR5,D2RETFINI:NOPEND 案例五 双机通信一、 功能要求利用AT89S52串行口,通过双机通信,实现单片机之间数据块的传送 (1) 甲机发送,乙机接收;(2) 甲机发送地址信息,然后发送一批数据;(3) 乙机把接收到的地址信息
18、作为存放数据的首地址,然后将数据存入相应单元;(4) 校验方式:累加校验和。二、 硬件电路设计1、 硬件电路结构示意图三、 参考程序发送方:ORG0000HAJMPMAINORG0100HMAIN:MOV SP,#60H MOVSCON,#40H; 串行口以方式1工作MOVTMOD,#20H; T1以方式2工作MOVTH1,#0FDH; 波特率9600MOVTL1,#0FDHSETBTR1 MOVP1,#0FFHMOV30H,#0FFH;设拨码开关初始值K0:MOVA,P1;读入拨码开关CJNEA,30H,K1;判断与前次是不是相同,不同则跳至K1SJMPK0 K1:MOV30H,A ;存入拨动开关新值MOVSBUF,A ;输入SBUF发送WAIT:JBCTI,K0 ;是否发送完毕?SJMPWAIT END接收方:ORG0000HAJMPMAINORG0100HMAIN:MOVSP,#60 MOVSCON,#50H MOVTMOD,#20H MOVTH1,#0FDH MOVTL1,#0FDH SETBTR1 MOVP1,#0FFHK0:JBRI,KK;是否接收到数据,有则跳至KK SJMPK0KK:MOVA,SBUF;将接收到的数据保存到累加器 MOVP1,A ;输出至P1 CLRRI ;清除RI SJMP K0 END 案例六 数字电压表设计-第 13 页-