北交单片机实验程序整理.docx
《北交单片机实验程序整理.docx》由会员分享,可在线阅读,更多相关《北交单片机实验程序整理.docx(33页珍藏版)》请在冰豆网上搜索。
![北交单片机实验程序整理.docx](https://file1.bdocx.com/fileroot1/2023-1/6/e0fb1632-be56-45c0-8950-98afe1c016be/e0fb1632-be56-45c0-8950-98afe1c016be1.gif)
北交单片机实验程序整理
实验二8155并行I/O口扩展和动态扫描程序编制
4.实验内容
基本要求:
通过实验板的上的8155(U16)显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在8个LED数码管上依次动态显示数字1~8。
扩展要求:
假定30H~33H的存储单元内容为4个字节16进制数,请依序将他们显示在8个LED数码管上
根据程序要求做如下程序流程图:
主程序流程图:
显示子程序流程框图:
基本要求编程如下:
ORG0000H
AJMPMAIN
ORG0050H
MAIN:
MOVSP,#60H;压栈
MOVDPTR,#4100H
MOVA,#0FH;方式控制字0FH送A
MOVX@DPTR,A;8155初始化
MOV70H,#01H
;设置显示缓冲区
MOV71H,#02H
MOV72H,#03H
MOV73H,#04H
MOV74H,#05H
MOV75H,#06H
MOV76H,#07H
MOV77H,#08H
LOOP:
ACALLDISPLAY;循环调用显示子程序
AJMPLOOP
DISPLAY:
MOVR0,#70H
;显示缓冲区首地址送R0
MOVR3,#0FEH
;字位控制初值送R3
LD0:
MOVDPTR,#4102H
MOVA,#0FFH
MOVX@DPTR,A;B口字位送高,关共阴显示
MOVA,@R0
MOVDPTR,#DISTAB
MOVCA,@A+DPTR;查表
MOVDPTR,#4101H
;PA口作字形
MOVX@DPTR,A
MOVDPTR,#4102H;PB口作字位
MOVA,R3
MOVX@DPTR,A
ACALLDELAY
;延时1ms
INCR0
;修正显示缓冲区指针
JNBACC.7,LD1
;若显示完一遍,则LD1
RLA
;字位码左移一位此处A中的值是R3
MOVR3,A
;送回R3
AJMPLD0
;显示下一个数码
LD1:
RET
;此处把每一个八位显示看成一次函数。
DISTAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(共阴极字形表)
DELAY:
MOVR7,#02H;1ms延时
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
END
实验中遇到的问题:
开始时没有预先在显示缓冲区中存入1~7,故实验显示的数据不是1、2、3、4、5、6、7、8,而是显示缓冲区中之前存在的无规则的一些数据,待向显示缓冲区重新赋值后,显示正常。
扩展要求编程如下:
ORG0000H
LJMPMAIN
ORG1000H
MAIN:
MOVSP,#50H
MOV30H,#0A1H
MOV31H,#0C2H
MOV32H,#0D3H
MOV33H,#0F4H
LCALLTRAN
MOVDPTR,#4100H
MOVA,#0FH
MOVX@DPTR,A
LOOP:
LCALLDISPLAY
SJMPLOOP
TRAN:
MOVR1,#30H;将30-31H里的十六进制数分成两位存在70-71H中
MOVR0,#70H
MOVR3,#04
LD2:
MOVA,@R1
ANLA,#0FH;取出低字节
MOV@R0,A
INCR0
MOVA,@R1
ANLA,#0F0H;取出高字节
SWAPA;高低字节交换,将十六进制数的两位分开存放
MOV@R0,A
INCR0
INCR1
DJNZR3,LD2
RET
DISPLAY:
MOVR1,#0FEH
;显示部分同基本要求
MOVR0,#70H
MOVA,R1
LD0:
MOVDPTR,#4102H
MOVX@DPTR,A
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4101H
MOVX@DPTR,A
LCALLDELAY
INCR0
MOVA,R1
JNBACC.7,LD1
RLA
MOVR1,A
SJMPLD0
LD1:
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H
DELAY:
MOVR7,#02H
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY2
RET
END实验三查询式键盘实验
1.实验目的
(1)掌握查询式按键检测方法
(2)掌握数码管动态扫描汇编语言的编制方法
2.预习要点
(1)按键检测的基本原理
(2)数码管动态扫描显示方法
3.实验设备
计算机、单片机实验箱。
4.实验内容
基本要求:
接实验二的实验内容,通过实验板的4个按键电路,将按键的检测线连接到CPU的p1.0~p1.3上。
当按下按键1到4时,在实验板显示电路(U16)分别对应显示1,2,3,4。
扩展要求:
30H~33H中放置字母A~D,字母在LED上循环显示,默认的循环周期为50ms,当按下按键1到4时,A~D循环间隔分别变为1至4秒,无按键按下时,恢复默认的时间间隔。
根据程序要求得到如下程序流程图:
基本要求编程如下:
ORG0000H
MAIN:
MOV70H,#0
MOV71H,#1
MOV72H,#2
MOV73H,#3
MOV74H,#4
MOVDPTR,#4100H
MOVA,#03H
MOVX@DPTR,A
READKEY:
MOVA,#0FFH
MOVP1,A
MOVA,P1
JNBACC.0,RP10
JNBACC.1,RP11
JNBACC.2,RP12
JNBACC.3,RP13
OFF:
MOVR0,#70H
MOVR3,#0FFH
SJMPLD0
RP10:
MOVR0,#70H
MOVR3,#0FEH
AJMPLD0
RP11:
MOVR0,#71H
MOVR3,#0FEH
AJMPLD0
RP12:
MOVR0,#72H
MOVR3,#0FEH
AJMPLD0
RP13:
MOVR0,#73H
MOVR3,#0FEH
AJMPLD0
LD0:
MOVA,R3
MOVDPTR,#4102H
MOVX@DPTR,A
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4101H
MOVX@DPTR,A
ACALLDELAY
AJMPMAIN
TAB:
DB06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH
DELAY:
MOVR7,#02H
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
SJMP$
END
扩展要求编程如下:
ORG0000H
LJMPMAIN
ORG1000H
MAIN:
MOVSP,#60H
MOV30H,#0AH
MOV31H,#0BH
MOV32H,#0CH
MOV33H,#0DH
MOVA,#0FH
MOVDPTR,#4100H
MOVX@DPTR,A
READKEY:
MOVA,#0FFH
MOVP1,A
MOVA,P1
JNBACC.0,RP10
JNBACC.1,RP11
JNBACC.2,RP12
JNBACC.3,RP13
OFF:
MOVR7,#50
AJMPDISPLAY
RP10:
MOVR7,#100
AJMPDISPLAY
RP11:
MOVR7,#200
AJMPDISPLAY
RP12:
MOVR7,#300
AJMPDISPLAY
RP13:
MOVR7,#400
AJMPDISPLAY
DISPLAY:
MOVR0,#30H
MOVR2,#0FEH
LD:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4101H
MOVX@DPTR,A
MOVDPTR,#4102H
MOVA,R2
MOVX@DPTR,A
ACALLDELAY
INCR0
JNBACC.3,LD1
RLA
MOVR2,A
AJMPLD
LD1:
AJMPREADKEY
DELAY:
MOVR6,#500
DELAY1:
DJNZR6,DELAY1
DJNZR7,DELAY
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H
实验四利用中断控制LED灯
1.实验目的
(1)掌握单片机中断的基本原理。
(2)掌握单片机中断程序的编制方法。
2.预习要点
(1)单片机中断基本原理
(2)中断程序编制方法
3.实验设备
计算机、单片机实验箱、信号发生器。
4.实验内容
基本要求:
将信号发生器输出的脉冲信号连接到CPU的INT0上,将CPU的P1.0到P1.7和8个红色LED灯连接,脉冲信号为5V、100Hz,每输入一百个脉冲LED灯亮一次,并且LED灯顺序循环移位一次,形成跑马灯。
扩展要求:
在LED数码管上与跑马灯同步显示1~8,顺序为P1.0对应的灯亮时对应显示数字1,依次类推。
根据程序要求得到如下程序流程图:
主程序流程图
中断子程序流程图
基本要求编程如下:
ORG0000H
AJMPMAIN
ORG0003H
AJMPEXINT0
MAIN:
MOVSP,#70H
SETBIT0
;设定为负边沿触发
SETBEX0;
开INT0中断
SETBEA
;开总中断
MOVR3,#00H
MOVP1,#01H
HERE:
SJMPHERE
EXINT0:
INCR3
CJNER3,#64H,NEXT
;计数值不到100,则返回
MOVR3,#00H
MOVA,P1
;计数值到100则对P1口的内容进行移位
RLA
MOVP1,A
NEXT:
RETI
扩展实验程序:
ORG0000H
AJMPMAIN
ORG0003H
AJMPEXINT0
ORG0060H
MAIN:
MOVSP,#60H
SETBIT0
SETBEX0
SETBEA
MOV30H,#0
MOV31H,#1
MOV32H,#3
MOV33H,#2
MOV34H,#5
MOV35H,#6
MOV36H,#7
MOV37H,#8
;缓存器中送入1--8
MOVR3,#00H
;用于计脉冲
MOVP1,#00H
;关LED显示
MOVR4,#01H
;控制跑马灯
MOVR0,#30H
MOVR5,#0FEH
MOVR2,#8
MOVDPTR,#4100H
MOVA,#03H
MOVX@DPTR,A
;方式控制字送8155命令口
SJMP$
EXINT0:
INCR3
CJNER3,#64H,NEXT
;计算脉冲达到100
MOVR3,#00H
;清零,重新计数
MOVA,R4
MOVP1,A
;跑马灯显示
RLA
MOVR4,A
DISPLAY1:
MOVR0,#30H
MOVR5,#0FEH
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#4101H
MOVX@DPTR,A
MOVDPTR,#4102H
MOVA,R5
MOVX@DPTR,A
ACALLDELAY;
INCR0
DJNZR2,NEXT
MOVR2,#8
MOVR0,#30H
NEXT:
RETI
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DELAY:
MOVR7,#05H
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
END
实验五单相方波波形发生器
1.实验目的
(1)掌握单片机定时器基本原理和使用方法。
(2)掌握单片机中断程序的编制方法。
2.预习要点
(1)单片机定时器基本原理
(2)中断程序编制方法
3.实验设备
计算机、单片机实验箱,示波器。
4.实验内容
基本要求:
(1)利用定时器在p1.1输出方波,方波的周期为50ms,占空比为50%。
(2)改上例中方波的占空比为25%。
扩展要求:
利用LED数码管做一个包含时、分、秒的计时器
基本要求编程如下:
占空比为50%的方波(晶振为12M):
ORG0000H
AJMPMAIN
ORG000BH
AJMPBRT0
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#9EH
MOVTL0,#58H
MOVIE,#82H
SETBTR0
HERE:
SJMPHERE
BRT0:
CPLP1.1
MOVTH0,#9EH
MOVTL0,#58H
RETI
END
占空比为25%的方波(晶振为12M):
ORG0000H
AJMPMAIN
ORG000BH
AJMPBRT0
MAIN:
MOVSP,#60H
SETBP1.1
MOVTMOD,#01H
MOVTH0,,#0CFH
MOVTL0,#2CH
MOVIE,#82H
SETBTR0
HERE:
SJMPHERE
BRT0:
CPLP1.1
JNBP1.1,D3
MOVTH0,#0CFH
MOVTL0,#2CH
RETI
D3:
MOVTH0,#6DH
MOVTL0,#84H
RETI
END
扩展实验程序:
ORG0000H
AJMPMAIN
ORG000BH
AJMPBRT0
ORG0060H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
SETBTR0
MOVR5,#20
MOVR6,#60
MOVR7,#60
MOV40H,#00H;秒
MOV41H,#00H;分
MOV42H,#00H;时
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
HERE:
LCALLLD0
SJMPHERE
BRT0:
MOVTH0,#3CH
MOVTL0,#0B0H
DJNZR5,NEXT
MOVA,40H
ADDA,#01H
MOV40H,A
MOVB,#10
DIVAB
ACALLLD1
MOV31H,A
MOV30H,B
MOVR5,#20
DJNZR6,NEXT
MOV40H,#00H
MOVA,41H
ADDA,#01H
MOV41H,A
MOVB,#10
DIVAB
ACALLLD1
MOV33H,A
MOV32H,B
MOVR6,#60
DJNZR7,NEXT
MOV41H,#00H
MOVA,42H
ADDA,#01H
MOV42H,A
ACALLLD2
MOVB,#10
DIVAB
MOV35H,A
MOV34H,B
MOVR7,#60
NEXT:
RETI
LD1:
CJNEA,#06H,LOOP
MOVA,#00H
SJMPLOOP
LD2:
CJNEA,#0CH,LOOP
MOVA,#00H
MOV42H,#00H
LOOP:
RET
LD0:
MOVR0,#30H
MOVR2,#6
MOVR3,#7FH
DISPLAY:
MOVDPTR,#4100H
MOVA,#03H
MOVX@DPTR,A
MOVDPTR,#TAB
MOVA,@R0
MOVCA,@A+DPTR
MOVDPTR,#4101H
MOVX@DPTR,A
MOVDPTR,#4102H
MOVA,R3
MOVX@DPTR,A
ACALLDELAY
RRA
MOVR3,A
INCR0
DJNZR2,DISPLAY
RET
TAB:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H
DB71H
DELAY:
MOV57H,#250
DELAY1:
DJNZ57H,DELAY1
RET
END
实验六利用A/D完成电压测量及显示
1.实验目的
(1)掌握A/D转换器的基本原理和使用方法。
(2)掌握二进制数和BCD码之间的数值转换方法。
2.预习要点
(1)A/D转换器的基本原理和使用方法
(2)二进制数和BCD码之间的数值转换方法
3.实验设备
计算机、单片机实验箱,万用表。
4.实验内容
基本要求:
利用ACH1电位器,在0~5V范围调节A/D转换器0809的输入端ADIN0的电压,在显示电路上(U16)显示00~50数值。
扩展要求:
相同输入条件下,在显示电路上显示-25~+24的数值。
根据题目得如下结构框图:
主程序流程图
A/D转换子程序流程图
基本要求编程如下:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
ACALLREADAD
ACALLDISPLY
SJMPMAIN
READAD:
MOVA,#00H
MOVDPTR,#8000H;IN0,
MOVX@DPTR,A
;启动A/D转换
MOVR7,#80H
;等待A/D转换完成
AD0809:
DJNZR7,AD0809
MOVXA,@DPTR
MOVB,#50
MULAB
MOV40H,B
;将0~255范围内的数据转换成00~50范围内的数据
MOVA,40H
MOVB,#10
DIVAB
MOV50H,A
MOV51H,B
RET
DISPLY:
MOVA,#03H
MOVDPTR,#4100H
MOVX@DPTR,A
MOVR0,#51H
MOVR6,#0FEH
LD0:
MOVA,R6
MOVDPTR,#4102H
MOVX@DPTR,A
MOVDPTR,#4101H
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
ACALLDELAY12MS
DECR0
MOVA,R6
JNBACC.1,LD01
RLA
MOVR6,A
AJMPLD0
LD01:
RET
TAB:
DB:
3FH,06H,5BH,4FH,66H,
6DH,7DH,07H,7FH,6FH
DELAY12MS:
MOVR4,#02H
DL2:
MOVR5,#0FBH
DL1:
DJNZR5,DL1
DJNZR4,DL2
RET
END
扩展实验编程如下:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVDPTR,#4100H
MOVA,#0FH
MOVX@DPTR,A
MOVDPTR,#8000H
MOVA,#00H
MOVX@DPTR,A
ACALLDELAY
ACALLDELAY
ACALLGETV
ACALLDISPLAY
;调用显示程序
LJMPMAIN
;循环主程序
GETV:
MOVDPTR,#8000H
MOVXA,@DPTR
MOVB,#50
MULAB
;A*50/255,A先乘以50。
高8位放在B,低8位放在A
MOVA,B
;取出高8位,相当于除以了256,右移8位
CLRC
SUBBA,#25;减25
JBACC.7,FUSHU
;最高位不等于0跳转
MOV50H,#10H
SJMPNEXT
FUSHU:
MOV50H,#14H
CPLA
;有符号数取其正值
NEXT:
MOVB,#10
;分两位数显示
DIVAB
MOV51H,A
MOV52H,B
RET
DISPLAY:
MOVDPTR,#4102H
MOVA,#0FFH
MOVX@DPTR,A
实验七利用DAC0832完成波形发生器
4.实验内容
基本要求:
利用实验板上的0832D/A芯片,将示波器连接到滤波电路后,通过程序产生周期为20ms的三角波。
扩展要求:
利用实验板上的0832D/A芯片和电位器,将示波器连接到滤波电路后,通过程序产生周期或幅度可调的锯齿波。
根据题目要求构造如下程序流程图:
基本要求编程如下:
ORG0000H
AJMPMAIN
ORG0050H
MAIN:
MOVSP,#60H
CLRA
MOVDPTR,#4000H
DOWN:
MOVX@DPTR,A
ACALLDELAY
INCA
JNZDOWN
MOVA,#0FEH
UP:
MOVX@DPTR,A
ACALLDELAY
DECA
JNZUP
SJMPDOWN
DELA