单片机程序+连线119Word文档下载推荐.docx
《单片机程序+连线119Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机程序+连线119Word文档下载推荐.docx(89页珍藏版)》请在冰点文库上搜索。
![单片机程序+连线119Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/f58e4415-d49c-48cb-a271-65f80b128315/f58e4415-d49c-48cb-a271-65f80b1283151.gif)
MOVP1,#2fH
ACALLDELAY
MOVP1,#6fH
MOVP1,#4fH
MOVP1,#0CfH
MOVP1,#8fH
MOVP1,#9fH
ACALLDELAY
AJMPSTART
DELAY:
MOVR6,#5
DD1:
MOVR5,#0
DD2:
MOVR7,#0
DD3:
DJNZR7,DD3
DJNZR5,DD2
DJNZR6,DD1
RET
JP1.4_1.7接JP6DE4-7
步进电机接步进电机接口
实验四步进电机正反转实验
该程序对SETP1作了改进,可以进行正、反转以及步进控制
MOVDPTR,#TAB1
MOVR4,#7;
初始表内指针
MOVP1,#0;
初始角度,0度,停止
KEY:
JNBP1.3,NEG;
控制步进电机反转
JNBP1.2,POS;
控制步进电机正转
SJMPKEY
POS:
CJNER4,#7,LOOPP;
判断是否到头
MOVR4,#0;
重新赋首值
AJMPPP
LOOPP:
INCR4;
赋新值
PP:
MOVA,R4
MOVCA,@A+DPTR
MOVP1,A
ACALLDELAY
AJMPKEY
NEG:
CJNER4,#0,LOOPN;
AJMPNN
LOOPN:
DECR4;
NN:
DJNZR5,DD2
DJNZR6,DD1
RET
TAB1:
DB1fH,3fH,2fH,6fH
DB4fH,0CfH,8fH,9fH;
控制数据表
连线:
JP1接IP6
实验五扩展存储器读写实验
LJMPSTART
ORG0040H
MOVSP,#60H
MOVR0,#00H
SETBP3.4
STR:
MOVDPTR,#0000H;
置外部RAM读写地址
MOVA,R0
MOVB,A
MOVX@DPTR,A;
写外部RAM
MOVXA,@DPTR;
读外部RAM
XRLA,B;
比较读回的数据
JNZERROR
MOVA,B;
异或后,A中数据以不对,需要从B中重取数据
CPLA;
状态取反
MOVP1,A;
数据在P1口输出
INCR0;
数据加1
MOVA,DPL;
地址是否到IFFFH,
CJNEA,#0FFH,DIN1
MOVA,DPH
CJNEA,#1FH,DIN1
JMPSTR;
若空间已存满,则从头开始
DIN1:
INCDPTR;
地址加1
ERROR:
CLRP3.4;
测试失败,鸣叫
SJMP$
实验六LED灯轮换点亮实验
LJMPSTART
MOVSP,#60H
LD1:
MOVA,#0FEH
CLRP2.7
ROTATE:
MOVP0,A;
写P0口
SETBP2.7
NOP
LCALLDELAY;
延时
RLA;
循环左移
SJMPROTATE
MOVR0,#0AH;
延时子程序(1秒)
DELAY1:
MOVR1,#00H
DELAY2:
MOVR2,#0B2H
DJNZR2,$
DJNZR1,DELAY2
DJNZR0,DELAY1
实验七:
交通灯控制实验
LJMPMAIN
MAIN:
MOVSP,#60H
CLRP2.6
LCALLSTATUS0;
初始状态(都是红灯)
CIRCLE:
LCALLSTATUS1;
南北绿灯,东西红灯
LCALLSTATUS2;
南北绿灯闪转黄灯,东西红灯
LCALLSTATUS3;
南北红灯,东西绿灯
LCALLSTATUS4;
南北红灯,东西绿灯闪转黄灯
LJMPCIRCLE
STATUS0:
;
南北红灯,东西红灯
MOVP0,#09H
SETBP2.6
NOP
CLRP2.6
MOVR2,#10;
延时1秒
LCALLDELAY
STATUS1:
MOVP0,#21H
SETBP2.6;
74HC573数据锁存
MOVR2,#50;
延时5秒
STATUS2:
南北绿灯闪转黄灯,东西红灯
MOVR3,#03H;
绿灯闪3次
FLASH:
MOVP0,#021H
MOVR2,#03H
MOVP0,#01H
MOVR2,#03H
DJNZR3,FLASH
MOVP0,#11H;
南北黄灯,东西红灯
STATUS3:
MOVP0,#0CH
STATUS4:
FLASH1:
MOVP0,#08H
DJNZR3,FLASH1
MOVP0,#0AH
延时子程序
PUSH2;
将R2、R1、R0压入堆栈
PUSH1
PUSH0
MOVR0,#0B2H
DJNZR0,$
DJNZR1,DELAY2;
延时100mS
DJNZR2,DELAY1
POP0
POP1
POP2
实验八LED数码管显示实验
系统复位时,显示"
12345678"
显示内容放到主程序中,用50H~57H作为显示缓冲单元,由30H放位控码;
AJMPMAIN
MOV50H,#01H;
设置了显示缓冲单元50H~57H
MOV51H,#02H;
显示"
MOV52H,#03H
MOV53H,#04H
MOV54H,#05H
MOV55H,#06H
MOV56H,#07H
MOV57H,#08H
HERE:
ACALLDISP
AJMPHERE
DISP:
PUSHDPH
PUSHDPL
PUSHPSW
PUSHACC
MOVR0,#50H;
显示缓冲单元首地址
MOV30H,#0FEH;
位控码
LD0:
MOVP0,#0FFH;
清位控口,修改
SETBP2.7
CLRP2.7
MOVDPTR,#TABLE;
查段码
MOVA,@R0
MOVCA,@A+DPTR
送段码
CLRP2.6
MOVA,30H
送位控码
INCR0
MOVA,30H
JNBACC.7,LD1
RLA
MOV30H,A
AJMPLD0
MOVP0,#00;
清段控口,修改
MOVP0,#0FFH;
清位控口,修改
CLRP2.7
POPACC
POPPSW
POPDPL
POPDPH
TABLE:
DB3FH,06H,5BH,4FH,66H;
01234
DB6DH,7DH,07H,7FH,6FH;
56789
DB77H,7CH,39H,5EH,79H;
ABCDE
DB71H,00H,76H,38H,40H;
F灭HL-
MOVR1,#02H;
延时约1ms
DEL0:
MOVR2,#00H
DEL1:
DJNZR2,DEL1
DJNZR1,DEL0
END
实验九LED数码管显示与按钮输入
HELLO-88"
,当按下任何时,在最右边LED上显示该键号,原显示内容自动左移
显示程序采用了子程序的结构,有利于独立性,并使用了查表指令
新键标记位01H,新键38H,新键暂存37H
该程序的关键在于按键处理,处理前先消除新键标记位
AJMPMAIN
MOV50H,#11H;
MOV51H,#0EH;
MOV52H,#12H
MOV53H,#12H
MOV54H,#00H
MOV55H,#13H
MOV56H,#08H
CLR01H;
清新按钮标记为
ACALLDISP
ACALLKEYSCAN
ACALLKEYPRO
AJMPHERE
KEYSCAN:
PUSHDPH
PUSHDPL
MOVP0,#00H;
送全0码,检查是否有按钮按下
JNBP3.2,ONE
CLR01H
KEY_END:
POPACC
ONE:
ACALLDISP;
调用现实延时,消抖
MOVP0,#0FEH;
送01#键扫描码
JBP3.2,TWO
MOV37H,#01H
AJMPKEY_D
TWO:
MOVP0,#0FDH;
送02#键扫描码
JBP3.2,THREE
MOV37H,#02H
THREE:
MOVP0,#0FBH;
送03#键扫描码
JBP3.2,FOUR
MOV37H,#03H
FOUR:
MOVP0,#0F7H;
送04#键扫描码
JBP3.2,FIVE
MOV37H,#04H
AJMPKEY_D
FIVE:
MOVP0,#0EFH;
送05#键扫描码
JBP3.2,SIX
MOV37H,#05H
SIX:
MOVP0,#0DFH;
送06#键扫描码
JBP3.2,SEVEN
MOV37H,#06H
SEVEN:
MOVP0,#0BFH;
送07#键扫描码
JBP3.2,EIGHT
MOV37H,#07H
EIGHT:
MOVP0,#7FH;
送08#键扫描码
JBP3.2,KEY_E
MOV37H,#08H
KEY_D:
MOVP0,#00H;
JNBP3.2,KEY_D;
是否弹开
MOVA,37H
MOV38H,37H
SETB01H;
设定新键标记
AJMPKEY_END
KEY_E:
CLR01H
AJMPKEY_END
KEYPRO:
JNB01H,PROEND
CLR01H;
移位处理
MOV50H,51H
MOV51H,52H
MOV52H,53H
MOV53H,54H
MOV54H,55H
MOV55H,56H
MOV56H,57H
MOV57H,38H
PROEND:
RET
实验十带应急状态的交通灯控制实验
ORG0003H;
INT0中断入口地址
LJMPINTA
SETBIT0;
下降沿有效
SETBEA
SETBEX0;
INT0中断有效
INTA:
PUSHPSW;
保护现场
PUSH2;
将R2压入堆栈
MOVP0,#09H;
东西南北均红灯
MOVR2,#100;
延时10秒
LCALLDELAY
POPPSW
RETI
PUSH2;
实验十一点阵显示实验
LED点阵每隔3秒轮换显示0123456789*
数据口通过P0扩展口和P1作为点阵扫描接口
显示内容放到主程序中,用50H~57H作为显示缓冲单元,
SANEQU30H;
扫描码单元
TIMEQU31H;
定时循环次数
CNTAEQU3