单片机实验报告.docx
- 文档编号:29460048
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:30
- 大小:220.75KB
单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
单片机实验报告
实验一P1口输出实验
一、实验要求
P1作输出口,接8只发光二极管,编写程序,使发光二极管循环点亮
二、实验目的
1.进一步掌握源程序编辑和汇编源程序的方法;
2.学习P1口的使用方法;
3.初步练习MCS51指令系统中的一些指令;
4.掌握利用仿真器调试程序的方法。
三、实验器材
Lab2000单片机仿真实验系统一套
PC机一台
四、实验电路及连线
五、实验说明
1.P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
2.延时子程序的延时计算问题
对于程序Delay:
MOVR6,#0H
MOVR7,#0H
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
RET
查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为:
【(256×256+256)×2+2+2】×12÷6≈263ms
六、实验框图
七、实验步骤
1.连接PC机和实验系统并根据电路图连线;
2.程序输入、汇编、运行、调试同时观察各窗口(CPU窗口、数据窗口等)变化;
3.观察实验现象,作好记录;
4.总结实验,书写实验报告。
八、实验程序
1、灯亮灭:
movp1,#0h
delay1:
movr6,#0h
movr7,#0h
delayloop1:
djnzr6,delayloop1
djnzr7,delayloop1
movp1,#80h
delay2:
movr6,#0h
movr7,#0h
delayloop2:
djnzr6,delayloop2
djnzr7,delayloop2
ret
2、流水灯程序:
main:
movp1,#18h
lcalldelay
movp1,#24h
lcalldelay
movp1,#42h
lcalldelay
movp1,#81h
lcalldelay
jmpmain
delay:
movr6,#0h
movr7,#0h
l1:
djnzr6,l1
djnzr7,l1
ret
3、74HC245
总线收发器(bustransceiver),典型的CMOS型三态缓冲门电路。
由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
图一74HC245引脚分布图图二74HC245实物图
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。
第2~9脚“A”信号输入输出端,A1=B1、、、、、、A8=B8,A1与B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。
如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。
第11~18脚“B”信号输入输出端,功能与“A”端一样,不再描述。
第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。
第10脚GND,电源地。
第20脚VCC,电源正极。
74HC245的作用:
信号功率放大
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。
第2~9脚“A”信号输入输出端,A1=B1﹑﹑﹑﹑﹑﹑A8=B8,A1与B1是一组,如果DIR=“1”G=“0”则A1输入B1输出,其它类同。
如果DIR=“0”G=“0”则B1输入A1输出,其它类同。
第11~18脚“B”信号输入输出端,功能与“A”端一样,不在描述。
第19脚G,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用第10脚GND,电源地。
第20脚VCC,电源正极。
九、实验总结
通过本次实验掌握源程序编辑和汇编源程序的方法,学习P1口的使用方法;初步练习MCS51指令系统中的一些指令,掌握利用仿真器调试程序的方法,同时,通过查找芯片74HC245的资料,了解并掌握了74HC245的引脚分布及其作用。
实验二定时器实验
一、实验要求
用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转.
二、实验目的
1.学习8031内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编程方法。
三、实验器材
Lab2000单片机仿真实验系统一套
PC机一台
四、实验电路及连线
五、实验说明
1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器。
2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
3、内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器,定时器100us中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷6MHZ=2uS
(256-定时常数)×2uS=100us
定时常数=206.然后对100us中断次数计数10000次,就是1秒钟.
4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
六、实验框图(见下页)
七、实验步骤
1.连接PC机和实验系统,并根据电路图连线;
2.程序输入、汇编、运行、调试同时观察各窗口(CPU窗口、数据窗口等)变化;
3.观察现象并记录实验结果;
4.总结实验,书写实验报告。
八实验程序
如下所示:
Tickequ10000;10000x100us=1s
T100usequ256-50;100us时间常数(6M)
C100usequ30h;100us记数单元
LEDBufequ0
LEDequP1.0
ljmpStart
org000bh
T0Int:
pushPSW
mova,C100us+1
jnzGoon
decC100us
Goon:
decC100us+1
mova,C100us
orla,C100us+1
jnzExit;100us记数器不为0,返回
movC100us,#high(Tick)
movC100us+1,#low(Tick)
cplLEDBuf;100us记数器为0,重置记数器
;取反LED
Exit:
popPSW
reti
Start:
movTMOD,#02h;方式2,定时器
movTH0,#t100us
movTL0,#t100us
movIE,#10000010b;EA=1,IT0=1
setbTR0;开始定时
clrLEDBuf
clrLED
movC100us,#high(Tick)
movC100us+1,#low(Tick)
Loop:
movc,LEDBuf
movLED,c
ljmpLoop
end
九、实验总结
学习了8051内部计数器的使用和编程方法,知道了如何去设置定时器的初始值,以及其时间的计算方法,深入理解并掌握了其工作原理、工作方式、单片机定时的设置等,同时也进一步掌握中断处理程序的编程方法。
实验三外部中断实验
一、实验要求
用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。
二、实验目的
1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
三、实验电路及连线
四、实验说明
中断服务程序的关键是:
1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断程序中设定是否允许中断重入,即设置EXO位。
本例中使用了INTO中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。
本例的INTO程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。
另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。
本例中没有涉及这种情况。
INTO端接单次脉冲发生器。
P1.0接LED灯,以查看信号反转.
五、实验框图
六、实验程序:
LEDequP1.0
LEDBufequ0
ljmpStart
org3
Interrupt0:
pushPSW;保护现场
cplLEDBuf;取反LED
movc,LEDBuf
movLED,c
popPSW;恢复现场
reti
Start:
clrLEDBuf
clrLED
movTCON,#01h;外部中断0下降沿触发
movIE,#81h;打开外部中断允许位(EX0)及总中断允许位
;(EA)
ljmp$
end
七、实验总结
通过本次实验了解并学习了外部中断技术的基本使用方法,同时,也学习中断处理程序的编程方法。
实验四单片机键盘显示实验
一、实验要求
利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块:
①键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
②显示模块:
将显示单元的内容在显示器上动态显示。
③主程序:
调用键输入模块和显示模块。
二、实验目的
1.掌握键盘和显示器的接口方法和编程方法。
2.掌握键盘扫描和LED八段码显示器的工作原理。
三、实验器材
Lab2000单片机仿真实验系统一套
PC机一台
四、实验电路及字型表(字型表见下页,这里只是草图,详细原理参见图1)
键盘草图数码管显示器草图
数据位(0FE06H)时钟位(0FE04H)
行码(0FE00H)列码(0FE02H)位选通信号(0FE02H)
五、实验说明
LED显示电路
8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码是由74LS164输出。
6位位码由可编程器件CPLD输出,经MC1413反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位和时钟位由可编程器件CPLD输出,写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164中,并且实现移位。
向显示位选通地址输出高电平就可以点亮相应的显示位。
数据位输出地址为0FE06H,时钟位输出地址为0FE04H,位选通输出地址为0FE02H。
七段数码管的字型代码表
显示字形
g
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
A
1
1
1
0
1
1
1
77h
B
1
1
1
1
1
0
0
7ch
C
0
1
1
1
0
0
1
39h
D
1
0
1
1
1
1
0
5eh
E
1
1
1
1
0
0
1
79h
F
1
1
1
0
0
0
1
71h
键盘电路
6×4的小键盘,向列扫描码地址(0FE02H)逐列输出低电平,然后从行码地址(0FE00H)读回.如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键.在判断有键按下后,要有一定的延时,防止键盘抖动.列扫描码还可以分时用作LED的位选通信号.
六、实验框图(见下页)
七、实验步骤
1.连接PC机和实验系统;
2.程序输入、汇编、运行、调试同时观察各窗口(CPU窗口、数据窗口等)变化;
3.观察实验现象并记录;
4.总结实验,书写实验报告。
八、实验程序
键盘扫描显示实验程序如下:
OUTBITequ0FE02h;位控制口
CLK164equ0FE04h;段控制口(接164时钟位)
DAT164equ0FE06h;段控制口(接164数据位)
INequ0FE00h;键盘读入口
LEDBufequ60h;显示缓冲
ljmpStart
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#6;共6个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
mova,@r0
movB,#8;送164
DLP:
rlca
movr3,a
movacc.0,c
movdptr,#DAT164
movx@dptr,a
movdptr,#CLK164
setbacc.0
movx@dptr,a
clracc.0
movx@dptr,a
mova,r3
djnzB,DLP
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
ret
TestKey:
movdptr,#OUTBIT
mova,#0
movx@dptr,a;输出线置为0
movdptr,#IN
movxa,@dptr;读入键状态
cpla
anla,#0fh;高四位不用
ret
KeyTable:
;键码定义
db16h,15h,14h,0ffh
db13h,12h,11h,10h
db0dh,0ch,0bh,0ah
db0eh,03h,06h,09h
db0fh,02h,05h,08h
db00h,01h,04h,07h
GetKey:
movdptr,#OUTBIT
movP2,dph
movr0,#Low(IN)
movr1,#00100000b
movr2,#6
KLoop:
mova,r1;找出键所在列
cpla
movx@dptr,a
cpla
rra
movr1,a;下一列
movxa,@r0
cpla
anla,#0fh
jnzGoon1;该列有键入
djnzr2,KLoop
movr2,#0ffh;没有键按下,返回0ffh
sjmpExit
Goon1:
movr1,a;键值=列X4+行
mova,r2
deca
rla
rla
movr2,a;r2=(r2-1)*4
mova,r1;r1中为读入的行值
movr1,#4
LoopC:
rrca;移位找出所在行
jcExit
incr2;r2=r2+行值
djnzr1,LoopC
Exit:
mova,r2;取出键码
movdptr,#KeyTable
movca,@a+dptr
movr2,a
WaitRelease:
movdptr,#OUTBIT;等键释放
clra
movx@dptr,a
movr6,#10
callDelay
callTestKey
jnzWaitRelease
mova,r2
ret
Start:
movsp,#40h
movLEDBuf,#0ffh;显示8.8.8.8.
movLEDBuf+1,#0ffh
movLEDBuf+2,#0ffh
movLEDBuf+3,#0ffh
movLEDBuf+4,#0
movLEDBuf+5,#0
MLoop:
callDisplayLED;显示
callTestKey;有键入?
jzMLoop;无键入,继续显示
callGetKey;读入键码
anla,#0fh;显示键码
movdptr,#LEDMap
movca,@a+dptr
movLEDBuf+5,a
ljmpMLoop
end
九、实验总结
通过本次实验,理解了“实验目的”所涉及的知识,熟练掌握了“键输入模块”、“显示模块”的编程和主程序,学习并熟悉了显示电路和键盘电路,掌握了键盘和显示器的接口方法和编程方法,掌握了键盘扫描和LED八段码显示器的工作原理。
实验五单片机串行口通讯实验
一、实验要求
利用8031单片机串行口,实现两个实验台之间的串行通讯。
其中一个实验台作为发送方,另一侧为接收方。
发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。
二、实验目的
1.掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2.了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3.学习串口通讯的中断方式的程序编写方法。
三、实验器材
Lab2000单片机实验系统一套
PC机一台
(两组合作)
四、实验电路和连线
显示电路和键盘电路见实验三。
甲方乙方
五、实验说明
通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。
也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。
六、实验框图(见下页)
七、实验步骤
1.连接实验系统和PC机并根据电路图连线;
2.程序输入、汇编、运行、调试同时观察各窗口变化;
3.观察记录实验现象;
4.根据要求完成实验报告。
七、实验程序
OUTBITequ0FE02h;位控制口
CLK164equ0FE04h;段控制口(接164时钟位)
DAT164equ0FE06h;段控制口(接164数据位)
INequ0FE00h;键盘读入口
HasRcvequ20h.0;接收标志位
LEDBufequ40h;显示缓冲
RCVBufequ50H;接收缓冲
ORG0000H
LJMPSTART
;串行口中断程序
ORG0023H
JNBTI,S0_R
CLRTI
NOP
SJMPS0_RET
S0_R:
;接收数据
CLRRI
MOVRCVBUF,SBUF;保存数据
SETBHasRcv;提示收到数据
NOP
S0_RET:
RETI
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#6;共6个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
mova,@r0
movB,#8;送164
DLP:
rlca
movr3,a
movacc.0,c
movdptr,#DAT164
movx@dptr,a
movdptr,#CLK164
setbacc.0
movx@dptr,a
clracc.0
movx@dptr,a
mova,r3
djnzB,DLP
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
ret
TestKey:
movdptr,#OUTBIT
mova,#0
movx@dptr,a;输出线置为0
movdptr,#IN
movxa,@dptr;读入键状态
cpla
anla,#0fh;高四位不用
ret
KeyTable:
;键码定义
db16h,15h,14h,0ffh
db13h,12h,11h,10h
db0dh,0ch,0bh,0ah
db0eh,03h,06h,09h
db0fh,02h,05h,08h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告