单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
单片机实验报告
实验五外部中断实验
1.实验目的
掌握外部中断的使用方法
2.实验内容
INT0端接单次脉冲发生器。
接一次脉冲产生一次中断,使P1.0反转,P1.0接LED灯,一查看信号反转。
3.实验要求
根据实验内容编写一个程序,并在试验仪上调试和验证
4.实验说明
1)外部中断的初始化设置共有三项内容:
中断总允许EA=1,外部中断允许EXI=1,中断方式设置。
2)中断服务的关键:
A.保护进入中断的状态
B.必须在中断服务中设定是否允许中断重入,即设置EX0位。
C.用POP指令恢复中断时的现场
3)中断控制原理:
中断控制是提供给用户使用的中断控制手段。
4)中断响应的过程:
首先中断采样然后中断查询最后中断响应。
5.实验预习要求
学习教材的相关内容,根据实验要求画出程序流程图,写出试验程序。
程序:
LEDBITP1.0
org0
ljmpStart
org3
ljmpInterrupt0
org0100H
Start:
clrLED
movTCON,#01h;外部中断0下降沿触发
movIE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)
OK:
ljmpOK
Interrupt0:
pushPSW;保护现场
cplLED;取反LED
popPSW;恢复现场
reti
end
6.实验步骤
1)用导线连接80C51MCU的INT0端到单次脉冲模块的任一输出端;用导线连接80C51MCU模块的P10端到八位逻辑电平显示模块的L0。
2)用USB数据线连接计算机与试验箱的仿真接口(con2);将直流稳压电源的直流控制开关S1打到ON,将80C51MCU模块的电源钮子开关S2拨到上端。
3)启动PC机,打开keil仿真软件,建立本实验的项目文件,输入源程序,用仿真器调式程序。
4)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
5)把keil仿真软件生成的可执行文件(hex文件)用ISP下载器烧录到AT89s52芯片中运行,JP3跳线器置位上方(EA为高电平)。
实验七74LS164串转并实验
1.实验目的
掌握使用74LS164扩展输出的方法
2.实验内容
使用74LS164串行输出数据到LED上显示
3.实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证
4.实验说明
用单片机端口输出数据说时,用一个端口输出一个数据位,另一个端口输出移位脉冲。
5.实验预习要求
学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。
程序:
A_BBITP1.0
CLKBITP1.1
CLR1BITP1.2
ORG0
LJMPSTART
ORG0100H
START:
SETBCLR1
MOVR2,#8
mova,#01H
Output1:
callOutput;输出左移
rla
callDelay
djnzR2,Output1
movA,#0FH;输出0FH
callOutput
callDelay
callDelay
callDelay
MOVR2,#8
mova,#80H
Output2:
callOutput;输出右移
rra
callDelay
djnzR2,Output2
movA,#0F0H;输出F0H
callOutput
callDelay
callDelay
callDelay
SjmpSTART
Output:
PUSHACC
movR3,#8
Next:
RRCA
MOVA_B,C
clrCLK
setbCLK
djnzr3,Next
POPACC
RET
Delay:
MOVR7,#3
DD1:
MOVR6,#0FFH
DD2:
MOVR5,#0FFH
DJNZR5,$
DJNZR6,DD2
DJNZR7,DD1
RET
END
6.实验步骤
1)用导线分别连接80C52MCU模块的P10、P11、P12到74LS164模块的A/B、CLK、CLR端;用8位数据线连接八位逻辑电平显示模块的JD1D4到74LS164模块的JD1C5。
2)用USB数据线连接计算机与试验箱的仿真接口(con2);将直流稳压电源的直流控制开关S1打到ON,将80C51MCU模块的电源钮子开关S2拨到上端。
3)启动PC机,打开keil仿真软件,建立本实验的项目文件,输入源程序,用仿真器调式程序。
4)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
5)把keil仿真软件生成的可执行文件(hex文件)用ISP下载器烧录到AT89s52芯片中运行,JP3跳线器置位上方(EA为高电平)。
实验十串行静态数码管显示实验
1.实验目的
1.掌握静态数码管显示的电路原理和驱动程序的编写。
2.掌握数字、字符块转换成显示段码的软件译码方法。
2.实验内容
使用五只74LS164组成五位静态数码管显示电路,在数码管上显示“80C51”的字符。
3.实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
4.实验说明
静态数码管显示电路由五只74LS164、五只共阴极LED灯数码管组成。
输入只有两个信号,他们是串行数据线DIN和移位信号CLK。
五只74LS164首尾相连,每只74LS164的并行输出作为LED灯数码管的段码。
5.实验预习要求
学习教材相关内容,根据实验要求画出程序流程图,写出实验程序。
程序:
DBUFEQU30H
TEMPEQU40H
DINBITP1.0
CLKBITP1.1
ORG0000H
LJMPSTART
ORG0100H
START:
MOVDBUF,#8
MOVDBUF+1,#0
MOVDBUF+2,#0CH
MOVDBUF+3,#5
MOVDBUF+4,#1
;显示“80C51”
DISP:
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#5
DP10:
MOVDPTR,#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP
MOVR1,#5
DP12:
MOVR2,#8
MOVA,@R0
DP13:
RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DP13
INCR0
DJNZR1,DP12
OK:
SJMPOK
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB39H,5EH,7BH,71H,00H,40H
END
6.实验步骤
1)用导线分别连接80C51MCU模块的P10、P11到静态数码管显示模块的DIN、CLK端。
2)用USB数据线连接计算机与试验箱的仿真接口(con2);将直流稳压电源的直流控制开关S1打到ON,将80C51MCU模块的电源钮子开关S2拨到上端。
3)启动PC机,打开keil仿真软件,建立本实验的项目文件,输入源程序,用仿真器调式程序。
4)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
5)把keil仿真软件生成的可执行文件(hex文件)用ISP下载器烧录到AT89s52芯片中运行,JP3跳线器置位上方(EA为高电平)。
实验十一动态扫描数码显示实验
1.实验目的
1.掌握数字、字符转换成显示段码的软件译码方法。
2.动态显示的原理和相关程序的编写。
2.实验内容
使用六位动态数码管显示电路,在数码管上显示数字字符。
3.实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
4.实验说明
试验箱提供了六位动态数码管显示电路,由6个共阴极LED数码管及驱动芯片构成。
动态显示,也称扫描显示,各位数码管相同笔画的段码连在一起,用一片74LS245驱动,每位数码管的共阴极由74LS06驱动。
5.实验预习要求
学习教材的相关内容,根据实验要求画出程序流程图,写出实验内容。
程序:
DBUFEQU30H
TEMPEQU40H
ORG0000H
LJMPdisp
ORG0100H
disp:
MOV30h,#8;低位
MOV31h,#6
MOV32h,#1
MOV33h,#8
MOV34h,#6
MOV35h,#1;高位
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#6
MOVDPTR,#SEGTAB
DP00:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,DP00
DISP0:
MOVR0,#TEMP
MOVR1,#6
MOVR2,#1
DP01:
MOVA,@R0
MOVP0,A;输出段码
MOVA,R2
MOVP1,A;输出位码
ACALLDELAY
MOVA,R2
RLA
MOVR2,A
INCR0
DJNZR1,DP01
SJMPDISP
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB58H,5EH,7BH,71H,00H,40H;C,D,E,F,,-
DELAY:
MOVR4,#03H
AA1:
MOVR5,#0FFH
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
6.实验步骤
1)用8位数据线分别连接80C51MCU模块的JD0、JD1到动态数码管显示模块的JD1A3、JD2A3.
2)用USB数据线连接计算机与试验箱的仿真接口(con2);将直流稳压电源的直流控制开关S1打到ON,将80C51MCU模块的电源钮子开关S2拨到上端。
3)启动PC机,打开keil仿真软件,建立本实验的项目文件,输入源程序,用仿真器调式程序。
4)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
5)把keil仿真软件生成的可执行文件(hex文件)用ISP下载器烧录到AT89s52芯片中运行,JP3跳线器置位上方(EA为高电平)。
实验十六LED点阵汉字显示实验
1.实验目的
1.了解16*16矩阵LED显示的基本原理和功能。
2.掌握16*16矩阵LED和单片机软件设计方法。
2.实验内容
根据系统提供的电路,掌握16*16矩阵LED的工作原理,编程实现显示一个“箭头”从左向右滚动的效果。
3.实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
4.实验说明
以显示汉字“大”为例,来说明扫描原理:
在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分。
方向为P00到P07,显示汉字“大”时,P05点亮,由上往下排列,为P0.0灭,P0.1灭,P0.2灭,P0.3灭,P0.4灭,P0.4灭,P0.5亮,P0.6灭,P0,7灭。
即二进制00000100,转换成16进制为04H。
上半部第一列完成后,继续扫描下一半部分的第一列,为了接线方便,我们仍设计成由上往下扫描,从P27向P20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制00H。
然后单片机转向上半部第二列,仍为P05点亮,为00000100,16进制04H。
这一列完成后继续进行下半部分的扫描,P21点亮,为二进制00000010,即16进制02H。
依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”。
5.实验预习要求
学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。
程序:
LIN_ABITP1.0
LIN_BBITP1.1
LIN_CBITP1.2
LIN_DBITP1.3
DINBITP1.5
CLKBITP1.6
R_CLKBITP1.7
ORG0000H
LJMPmain
ORG0100H
main:
;主函数
USING0
C0026:
CLRA
MOVR2,A
C0028:
CLRA
MOVR5,A
C0031:
LCALLL0070
SETBR_CLK
NOP
CLRR_CLK
MOVA,R4
MOVDPTR,#tab1+01H
MOVCA,@A+DPTR
MOVDPTR,#tab1
LCALLL0067
SETBR_CLK
NOP
INCR5
CJNER5,#010H,C0031
C0030:
INCR2
CJNER2,#064H,C0028
C0029:
CLRA
MOVR2,A
C0034:
CLRA
MOVR5,A
C0037:
LCALLL0070
SETBR_CLK
NOP
CLRR_CLK
MOVA,R4
MOVDPTR,#tab2+01H
MOVCA,@A+DPTR
MOVDPTR,#tab2
LCALLL0067
SETBR_CLK
NOP
INCR5
CJNER5,#010H,C0037
C0036:
INCR2
CJNER2,#064H,C0034
C0035:
CLRA
MOVR2,A
C0040:
CLRA
MOVR5,A
C0043:
LCALLL0070
SETBR_CLK
NOP
CLRR_CLK
MOVA,R4
MOVDPTR,#tab3+01H
MOVCA,@A+DPTR
MOVR1,A
MOVA,R4
MOVDPTR,#tab3
LCALLL0068
SETBR_CLK
NOP
INCR5
CJNER5,#010H,C0043
C0042:
INCR2
CJNER2,#064H,C0040
C0041:
CLRA
MOVR2,A
C0046:
MOVA,R2
CLRC
SUBBA,#064H
JNCC0026
CLRA
MOVR5,A
C0049:
LCALLL0070
SETBR_CLK
NOP
CLRR_CLK
MOVA,R4
MOVDPTR,#tab4+01H
MOVCA,@A+DPTR
MOVR1,A
MOVA,R4
MOVDPTR,#tab4
LCALLL0068
SETBR_CLK
NOP
INCR5
CJNER5,#010H,C0049
C0048:
INCR2
SJMPC0046
tab1:
;自
DB0FEH,0FFH,0FEH,07FH,0FDH,0FFH,0E0H,007H,0EFH,0F7H,0EFH,0F7H,0E0H,007H,0EFH,0F7H
DB0EFH,0F7H,0EFH,0F7H,0E0H,007H,0EFH,0F7H,0EFH,0F7H,0EFH,0F7H,0E0H,007H,0EFH,0F7H
tab2:
;强
DB0FFH,0FFH,086H,007H,0F6H,0F7H,0F6H,0F7H,086H,007H,0BFH,0BFH,0BCH,003H,0BDH,0BBH
DB085H,0BBH,0F5H,0BBH,0F4H,003H,0F7H,0BFH,0F7H,0B7H,0F7H,0BBH,0D7H,081H,0ECH,03BH
tab3:
;不
DB0FFH,0FBH,080H,001H,0FEH,07FH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FCH,09FH,0FAH,0CFH
DB0F6H,0E7H,0EEH,0F3H,0DEH,0F7H,0BEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FFH
tab4:
;息
DB0FEH,0FFH,0FDH,0FFH,0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH
DB0E0H,00FH,0FFH,0FFH,0F6H,0FFH,0D7H,07BH,0D7H,06DH,097H,0EDH,0F8H,00FH,0FFH,0FFH
;
;//======================发送数据=============================//
L0070:
CLRR_CLK
MOVA,R5
ADDA,ACC
MOVR4,A
MOVR7,#0FFH
LCALL_DataOut
MOVR7,#0FFH
_DataOut:
CLRA
MOVR6,A
C0001:
CLRCLK
MOVA,R7
JNBACC.0,C0004
SETBDIN
SJMPC0005
C0004:
CLRDIN
C0005:
NOP
NOP
SETBCLK
NOP
NOP
MOVA,R7;dat>>=1;
CLRC
RRCA
MOVR7,A
INCR6
CJNER6,#08H,C0001
C0006:
RET
;
;//==================设置行线====================//
L0067:
USING0
MOVR1,A
MOVA,R4
L0068:
MOVCA,@A+DPTR
MOVR3,A
MOVR7,AR1
LCALL_DataOut
MOVR7,AR3
LCALL_DataOut
MOVR7,AR5
_SetLin:
MOVA,R7
CJNEA,#010H,C0053
C0053:
JC$+5H
LJMPC0025
MOVDPTR,#C0054
MOVR0,A
ADDA,R0
ADDA,R0
JMP@A+DPTR
C0054:
LJMPC0008
LJMPC0009
LJMPC0010
LJMPC0011
LJMPC0012
LJMPC0013
LJMPC0014
LJMPC0015
LJMPC0016
LJMPC0017
LJMPC0018
LJMPC0019
LJMPC0020
LJMPC0021
LJMPC0022
LJMPC0023
C0008:
CLRLIN_A
SJMPC0055
C0009:
SETBLIN_A
C0055:
CLRLIN_B
SJMPC0057
C0010:
CLRLIN_A
SETBLIN_B
C0056:
SJMPC0057
C0011:
SETBLIN_A
SETBLIN_B
C0057:
CLRLIN_C
CLRLIN_D
RET
C0012:
CLRLIN_A
SJMPC0058
C0013:
SETBLIN_A
C0058:
CLRLIN_B
SJMPC0060
C0014:
CLRLIN_A
SETBLIN_B
C0059:
SJMPC0060
C0015:
SETBLIN_A
SETBLIN_B
C0060:
SETBLIN_C
CLRLIN_D
RET
C0016:
CLRLIN_A
SJMPC0061
C0017:
SETBLIN_A
C0061:
CLRLIN_B
SJMPC0063
C0018:
CLRLIN_A
SETBLIN_B
C0062:
SJMPC0063
C0019:
SETBLIN_A
SETBLIN_B
C0063:
CLRLIN_C
SETBLIN_D
RET
C0020:
CLRLIN_A
SJMPC0064
C0021:
SETBLIN_A
C0064:
CLRLIN_B
SJMPC0066
C0022:
CLRLIN_A
SETBLIN_B
C0065:
SJMPC0066
C0023:
SETBLIN_A
SETBLIN_B
C0066:
SETBLIN_C
SETBLIN_D
C0025:
RET
END
6.实验步骤
1)用导线分别连接80C51MCU模块的P10、P11、P12、P13、P14、P15、P16、P17到LED点阵显示模块的A、B、C、D、DIN、CLK、OUT。
2)SB数据线连接计算机与试验箱的仿真接口(con2);将直流稳压电源的直流控制开关S1打到ON,将80C51MCU模块的电源钮子开关S2拨到上端。
3)PC机,打开keil仿真软件,建立本实验的项目文件,输入源程序,用仿真器调式程序。
4)发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
5)eil仿真软件生成的可执行文件(hex文件)用ISP下载器烧录到AT89s52芯片中运行,JP3跳线器置位上方(EA