单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(37页珍藏版)》请在冰豆网上搜索。
单片机实验报告
实验1.学习KEIL软件使用方法及P1口控制LED发光管的实验1
1.1.NULL1
1.2.点亮第一个发光管.1
1.3.点亮1、3、5、7发光二极管2
1.4.点亮2、4、6、8发光二极管2
1.5.轮回点亮1,3,5,7灯和2,4,6,8灯(周期2秒)2
1.6.第一个发光管闪烁2
实验2.定时器中断与LED3
2.1.用调用软件延时子程序的方法设计循环点亮发光二极管(每个发光二极管亮1秒)3
2.2.用调用软件延时子程序的方法设计循环点亮两个发光二极管(每个两个发光二极管亮2秒)3
2.3.用定时器T0方法设计循环点亮发光二极管(每个发光二极管亮1秒)4
实验3.数码管显示实验5
3.1.用调用软件延时子程序的方法设计单个数码管循环1-9(每个数码亮1秒)5
3.2.用定时器T0中断的方法设计单个数码管循环F-0(每个数码亮1秒)5
3.3.六个数码管显示0、1、2、3、4、57
3.4.六个数码管循环显示1、2、3、4、5、6;2、3、4、5、6、7;......;A,B,C,D,E,F(不分大小写);B,C,D,E,F,1;........(每种状态停留1秒)8
3.5.用调用软件延时子程序的方法设计单个数码管循环0-F(每个数码亮1秒)9
3.6.用定时器T0中断的方法设计单个数码管循环F-0(每个数码亮1秒)10
实验4.外部中断实验11
4.1.主程序是单个数码管循环显示1-9(每个发光数码管亮1秒)。
只要一按INT1键,CPU响应中断请求——数码管停留在按键前的显示数字,8个发光二极管显示器循环点亮一个灯,每个点亮1秒,执行5次循环,再回到主程序执行。
(作业)11
4.2.主程序是8个发光二极管显示器循环点亮一个灯,每个点亮1秒。
只要一按INT1键,CPU响应中断请求——单个数码管循环显示1-9(每个发光数码管亮1秒),再回到主程序执行。
(作业)12
4.3.主程序是单个数码管循环显示0-F(每个发光数码管亮1秒)。
只要一按INT1键,CPU响应中断请求——数码管停留在按键前的显示数字,8个发光二极管显示器循环两两点亮灯,每个状态点亮1秒,执行3次循环,再回到主程序执行。
14
4.4.主程序是8个发光二极管显示器循环点亮一个灯,每个点亮1秒。
只要一按INT1键,CPU响应中断请求——单个数码管循环显示F-0(每个发光数码管亮1秒),再回到主程序执行。
15
实验5.A/D转换实验16
5.1.将电路中电位器Re2(TAE)旋动到适当位置,使AD0804的6引脚电平为(0V<6引脚电平<1V),之后,观察发光二极管显示(A/D转换值)。
16
5.2.将电路中电位器Re2(TAE)旋动到适当位置,使AD0804的6引脚电平为(0V<6引脚电平<1V),之后,观察数码显示(A/D转换值)。
17
5.3.将电路中电位器Re2(TAE)旋动到适当位置,使AD0804的6引脚电平为(2V<6引脚电平<3V),之后,观察观察发光二极管显示和数码显示(A/D转换值)。
19
5.4.将电路中电位器Re2(TAE)旋动到适当位置,使AD0804的6引脚电平为(2V<6引脚电平<3V),之后,观察数码显示(A/D转换值)。
21
5.5.将电路中电位器Re2(TAE)旋动到适当位置,使AD0804的6引脚电平为(4V<6引脚电平<5V),之后,观察数码显示(A/D转换值)。
21
实验1.学习KEIL软件使用方法及P1口控制LED发光管的实验
1.1.NULL
1.2.点亮第一个发光管.
DIOLABITP2.5
SETBDIOLA
MOVP1,#01111111B(字节操作);初始为P0.7灯点亮
SJMP$
;点亮第一个发光管(位操作).
DIOLABITP2.5
SETBDIOLA
CLRP1.7
SJMP$
;点亮最后一个发光管(位操作).
DIOLABITP2.5
SETBDIOLA
CLRP1.0
SJMP$
END
1.3.点亮1、3、5、7发光二极管
DIOLABITP2.5
SETBDIOLA
MOVP1,#10101010B(字节操作)
SJMP$
END
1.4.点亮2、4、6、8发光二极管
DIOLABITP2.5
SETBDIOLA
MOVP1,#01010101B;(字节操作)
SJMP$
END
1.5.轮回点亮1,3,5,7灯和2,4,6,8灯(周期2秒)
DIOLABITP2.5
SETBDIOLA
LOOP:
MOVP1,#01010101B;(字节操作)
ACALLDELAY1S
MOVP1,#01010101B;(字节操作)
ACALLDELAY1S
SJMPLOOP
DELAY1S:
MOVR5,#10;1ΜS(20时为2秒)
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
END
1.6.第一个发光管闪烁
DIOLABITP2.5
SETBDIOLA
LOOP:
MOVP1,#11111110B(字节操作);初始为P0.1灯点亮
ACALLDELAY1S
SETBP1.0;(字节操作)
ACALLDELAY1S
SJMPLOOP
DELAY1S:
MOVR5,#5;1ΜS(20时为2秒)
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
END
实验2.定时器中断与LED
2.1.用调用软件延时子程序的方法设计循环点亮发光二极管(每个发光二极管亮1秒)
DIOLABITP2.5
SETBDIOLA
MOVA,#11111110B(字节操作);初始为P0.1灯点亮
LOOP:
P1,A
ACALLDELAY1S
RLA
SJMPLOOP
DELAY1S:
MOVR5,#20;1ΜS(20时为2秒)
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
END
2.2.用调用软件延时子程序的方法设计循环点亮两个发光二极管(每个两个发光二极管亮2秒)
DIOLABITP2.5
SETBDIOLA
MOVA,#11111100B(字节操作);初始为P0.1灯点亮
LOOP:
MOVP1,A
ACALLDELAY2S
RLA
RLA
SJMPLOOP
DELAY2S:
MOVR5,#20;1ΜS(20时为2秒)
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
END
2.3.用定时器T0方法设计循环点亮发光二极管(每个发光二极管亮1秒)
DIOLABITP2.5
ORG0000H
AJMPBG
ORG000BH
AJMPTTT0
BG:
SETBDIOLA
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
MOVR7,#20;1秒
SETBTR0;TCON的T0中断开
MOVA,#0FEH;点亮第一灯
MOVP1,A
SJMP$
TTT0:
DJNZR7,NEXT
RLA
MOVP1,A
MOVR7,#20
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
END
用定时器T1方法设计循环点亮两个发光二极管(每个两个发光二极管亮2秒)
DIOLABITP2.5
ORG0000H
AJMPBG
ORG001BH
AJMPTTT1
BG:
SETBDIOLA
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0B0H
MOVIE,#88H
MOVR7,#40;2秒
SETBTR1;TCON的T1中断开
MOVA,#0FCH;点亮第一、二灯
MOVP1,A
SJMP$
TTT1:
DJNZR7,NEXT
RLA
RLA
MOVP1,A
MOVR7,#40
NEXT:
MOVTH1,#3CH
MOVTL1,#0B0H
RETI
END
实验3.数码管显示实验
3.1.用调用软件延时子程序的方法设计单个数码管循环1-9(每个数码亮1秒)
JSHQEQU40H
DULABITP2.6;
WELABITP2.7;
MAIN:
MOVJSHQ,#1
CLRDULA;
MOVP0,#0FEH;
SETBWELA;
CLRWELA;
MAIN1:
MOVA,JSHQ
CJNEA,#10,LOOP1
MOVJSHQ,#1;
LOOP1:
MOVA,JSHQ
LOOP:
ACALLDISPLAY
INCJSHQ
AJMPMAIN1
DISPLAY:
MOVDPTR,#TABLE;显示程序
MOVCA,@A+DPTR
MOVP0,A;;显示
SETBDULA;
CLRDULA;
ACALLDELAY1S
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DELAY1S:
MOVR5,#10;1ΜS
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
;((2X200+3)X250+3)X10+3
END
3.2.用定时器T0中断的方法设计单个数码管循环F-0(每个数码亮1秒)
JSHQEQU40H
DULABITP2.6;
WELABITP2.7;
ORG0000H
AJMPBG
ORG000BH
AJMPTTT0
BG:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
SETBTR0
CLRDULA;
MOVP0,#FEH;
SETBWELA;
CLRWELA;
MOVR7,#20
MOVJSHQ,#09H
MOVA,JSHQ
ACALLDISPLAY
SJMP$
TTT0:
DJNZR7,NEXT
DECJSHQ
MOVA,JSHQ
CJNEA,#0FFH,DISP
MOVJSHQ,#09H
MOVA,JSHQ
DISP:
ACALLDISPLAY
MOVR7,#20
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
DISPLAY:
;显示程序
MOVDPTR,#TABLE
CLRWELA;
MOVCA,@A+DPTR
MOVP0,A;;显示
SETBDULA;
CLRDULA;
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
3.3.六个数码管显示0、1、2、3、4、5
WEI0EQU40H
WEI1EQU41H
WEI2EQU42H
WEI3EQU43H
WEI4EQU44H
WEI5EQU45H
DULABITP2.6;
WELABITP2.7;
MOVWEI0,#0
MOVWEI1,#1
MOVWEI2,#2
MOVWEI3,#3
MOVWEI4,#4
MOVWEI5,#5
DISPLAY:
;显示程序
MOVR0,#WEI0
MOVR7,#6
MOVR6,#0FEH
DISP:
MOVDPTR,#TABLE
CLRWELA;
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A;;显示0位
SETBDULA;
CLRDULA;
MOVP0,R6;
SETBWELA;
CLRWELA;
ACALLDELAY1MS
INCR0
MOVA,R6
RLA
MOVR6,A
DJNZR7,DISP
SJMPDISPLAY
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DELAY1MS:
MOV52H,#2;
DELAYA:
MOV51H,#250
DJNZ51H,$
DJNZ52H,DELAYA
RET;延时返回
END
3.4.六个数码管循环显示1、2、3、4、5、6;2、3、4、5、6、7;......;A,B,C,D,E,F(不分大小写);B,C,D,E,F,1;........(每种状态停留1秒)
WEI0EQU40H
WEI1EQU41H
WEI2EQU42H
WEI3EQU43H
WEI4EQU44H
WEI5EQU45H
DULABITP2.6;
WELABITP2.7;
BG:
MOVWEI0,#0
MOVWEI1,#1
MOVWEI2,#2
MOVWEI3,#3
MOVWEI4,#4
MOVWEI5,#5
DISP:
ACALLDELAY1S;延时1S
INCWEI0
INCWEI1
INCWEI2
INCWEI3
INCWEI4
INCWEI5
MOVA,WEI5
CJNEA,#0FH,DISP
SJMPBG
DISPLAY:
;显示程序
MOVR0,#WEI0
MOVR7,#6
MOVR6,#0FEH
DISP1:
MOVDPTR,#TABLE
CLRDULA;
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A;;显示0位
SETBDULA;
CLRDULA;
MOVP0,R6;
SETBWELA;
CLRWELA;
CALLDELAY1MS
INCR0
MOVA,R6
RLA
MOVR6,A
DJNZR7,DISP1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,00H,00H,00H,00H,00H
DELAY1MS:
MOV52H,#2;
DELAYA:
MOV51H,#250
DJNZ51H,$
DJNZ52H,DELAYA
RET;延时返回
DELAY1S:
MOVR5,#100;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
ACALLDISPLAY;调用显示子程序
DJNZR5,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
RET;2ΜS
END
3.5.用调用软件延时子程序的方法设计单个数码管循环0-F(每个数码亮1秒)
JSHQEQU40H
DULABITP2.6;
WELABITP2.7;
MAIN:
MOVJSHQ,#0
CLRDULA;
MOVP0,#0FEH;
SETBWELA;
CLRWELA;
MAIN1:
MOVA,JSHQ
CJNEA,#16,LOOP1;0---F
MOVJSHQ,#0;
LOOP1:
MOVA,JSHQ
LOOP:
ACALLDISPLAY
INCJSHQ
AJMPMAIN1
DISPLAY:
MOVDPTR,#TABLE;显示程序
MOVCA,@A+DPTR
MOVP0,A;;显示
SETBDULA;
CLRDULA;
ACALLDELAY1S
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DELAY1S:
MOVR5,#10;1ΜS
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJNZR5,DELAY0;2X10ΜS=20ΜS
RET;2ΜS
;((2X200+3)X250+3)X10+3
END
3.6.用定时器T0中断的方法设计单个数码管循环F-0(每个数码亮1秒)
JSHQEQU40H
DULABITP2.6;
WELABITP2.7;
ORG0000H
AJMPBG
ORG000BH
AJMPTTT0
BG:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVIE,#82H
SETBTR0
CLRDULA;
MOVP0,#FEH;
SETBWELA;
CLRWELA;
MOVR7,#20
MOVJSHQ,#0FH
MOVA,JSHQ
ACALLDISPLAY
SJMP$
TTT0:
DJNZR7,NEXT
DECJSHQ
MOVA,JSHQ
CJNEA,#0FFH,DISP
MOVJSHQ,#0FH
MOVA,JSHQ
DISP:
ACALLDISPLAY
MOVR7,#20
NEXT:
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
DISPLAY:
;显示程序
MOVDPTR,#TABLE
CLRWELA;
MOVCA,@A+DPTR
MOVP0,A;;显示
SETBDULA;
CLRDULA;
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
实验4.外部中断实验
4.1.主程序是单个数码管循环显示1-9(每个发光数码管亮1秒)。
只要一按INT1键,CPU响应中断请求——数码管停留在按键前的显示数字,8个发光二极管显示器循环点亮一个灯,每个点亮1秒,执行5次循环,再回到主程序执行。
(作业)
JSHQEQU40H
DULABITP2.6;
WELABITP2.7;
LCDENBITP3.4;给INT1营造低电平
ORG0000H
AJMPBG
ORG0013H
AJMPINT111;按S18键进入INT1中断
BG:
CLRLCDEN;给INT1营造低电平
SETBIT1;INT1负边触发有效
MOVSP,#60H
MOVIE,#84H
MOVJSHQ,#1
MAIN1:
MOVA,JSHQ
CJNEA,#10,LOOP1
MOVJSHQ,#1;
LOOP1:
MOVA,JSHQ
ACALLDISPLAY
INCJSHQ
SJMPMAIN1
INT111:
PUSHACC
PUSHJSHQ
MOVA,#0FEH;一次循环
MOVR4,#40;循环五次
LOOP:
MOVP1,A;点亮第一灯
ACALLDELAY1S
RLA
DJNZR4,LOOP
POPJSHQ
POPACC
RETI
DELAY1S:
PUSH05H
PUSH06H
PUSH07H
MOVR5,#10;1ΜS
DELAY0:
MOVR6,#250;1X10ΜS=10ΜS
DELAY1:
MOVR7,#200;1X250X10ΜS=2500ΜS=2.5MS
DELAY2:
DJNZR7,DELAY2;2X200X250X10ΜS=1000000ΜS=1S
DJNZR6,DELAY1;2X250X10=5000ΜS=5MS
DJN