实验二P1口控制LED发光二极管.docx
《实验二P1口控制LED发光二极管.docx》由会员分享,可在线阅读,更多相关《实验二P1口控制LED发光二极管.docx(33页珍藏版)》请在冰点文库上搜索。
![实验二P1口控制LED发光二极管.docx](https://file1.bingdoc.com/fileroot1/2023-6/30/bfcc04bf-ec32-4fab-b3db-200c4f9fae78/bfcc04bf-ec32-4fab-b3db-200c4f9fae781.gif)
实验二P1口控制LED发光二极管
实验二P1口控制LED发光二极管
一、实验目的
1、进一步熟练Proteus及Ke订软件的基本操作
2、掌握8051单片机P1口的使用方法
3、掌握LED发光二极管的原理及使用方法
4、学习汇编程序的调试及仿真方法二、实验电路
+5V
L\
sgsC3
匚F322uF
C1
R9
1k
33pF
匸
C2
33pF
U1
X1L9_
CRYSTAL
R8
R7
R6
R5
R4
R3
R2
220
220
220
220
220
220
220
D:
R1
220
D1
►XTAL1
XTAL2
RST
PO.O.ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5.AD5P0.6/AD6P0.7/AD7
P2.0.A8
P2.1/A9
P2.2/A10
PSER
P2.a-A11
ALE
P2.4-A12
EX
P2.5/A13
P2.&A14
P2.7/A15
P1.0/72
P3.0/RXD
Hl.1/IZtA
P1.2
rJ.1/1AL/
P3.24RT0
P1.3
P3.3/INT1
DiA
•1
P1.5
厂IUP3.5/T1
P1.6
P3.6WR
P1.7
P3.7.RD
8
AT89C52
29
30~
3T
2
3
13
"14
15
16
17
6*
三、实验内容及步骤:
要求:
8个LED发光二极管循环左移显示(发光的移位),间隔时间为一秒。
1、使用Proteus画出电路原理图2、在Ke订uVision中完成程序编借、调试及编译,生成・HEX文件
3、进行Protues与KeiluVision联动的相关设置:
4、在Proteus中仿真运行。
四、思考
1、将本实验的实验现象改为“不发光二极管循环移位”。
2、将本实验的实验现象改为“每隔秒发光二极管循环移位S
参考程序:
ORG0
LJMPMAIN
ORG30H
MAIN:
MOVA,#0FEHLOOP:
MOVPl,A
LCALLDELAY
RLA
SJMPLOOPDELAY:
MOVR7,#20HDELAY1:
MOVR6,#200DELAY2:
M0VR5,#123
DJNZR5,S
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
END
实验三数码管静态显示实验
1.实验目的
1、进一步熟悉51系列单片机
2、了解8051单片机P0口的使用方法
3、掌握共阴极数码管的原理及使用方法
4、学习8051的编程、调试、编译、仿真。
二、实验电路
R1
10k
PO.O/ADO
PO.1/AD1
P0.2-AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5PO6AD6P0.7/AD7
39
P1.0P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
P2.6A8
P2.1/A9P2.2*A1OP2.a(Al1P2.4A12P2.&'A13P26A14P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2-'1NT0
P3.3-1NTT
P3.4/T0
P3.5/T1
P36WP
P3.7W
33
32
26
"27
~~28
R3
R4220
R5120—
R6220
R7220
R8220
R9220
220
AT89C51
图3数码管静态显示电路廉理图
注:
数码管要从元件库选择Optoelectronics类中的7SEG-COM-CAT"GRN0
三、要求及步骤:
要求:
在七段数码管上以递增方式循环显示数字0—9,间隔时间为一秒。
1、使用Proteus画出电路原理图
2、在Ke订uVision中完成程序编辑、调试及编译,生成.HEX文件
3、进行Protues与KeiluVision联动的相关设置:
4、在Proteus中仿真运行。
四、思考
1、为什么要将P0口各引脚通过电阻R3-R9接到电源?
2、如何在共阴数码管上循环显示十六进制数字0-F(不区分字母的大小写)?
3、怎样修改程序使数字以递减方式循环显示?
4、若用共阳极数码管应如何修改电路和程序,才能完成本实验的功能?
参考程序:
ORG00H
LJMPSTART
ORG30H
START:
S1:
MOVDPTR,#TABLE
MOVR4,#00H
S2:
MOVA,R4
MOVCA,@A+DPTR
MOVPO,A
LCALLDELAY
INCR4
CJNER4,#0AH,S2
SJMPSI
DELAY:
MOVR5,#20;延时子程序
D2:
MOVR6,#200
DI:
MOVR7,#123
DJNZR7,$
DJNZR6,D1
DJNZR5,D2RET
TABLE:
DB3FH,06H,5BH,4FH,66H;段码表
DB6DH,7DH,07H,7FH,6FH
END
实验四基本输入/输出实验
一、实验目的
1、进一步熟悉8051单片机并行I/O口的使用方法
3、掌握并行I/O口输入/输岀操作的方法
4、学习8051的编程、调试、编译、仿真。
二、实验电路
C3
hH10uF
C1
30PF
RST
PO.O/ADOPO.1/AD1PO2AD2P0.3<'AD3P0.4/AD4P0.WAD5P0.&AD6P0.7/AD7
39
29
30-
F5EWALEEA
6
7
P1.0P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5-A13P2.&A14P2.7/A15
P3.0/RXD
P3.1.-TXDP32fTT5P33TTTT
P3.4/T0
P3.5E
P36WR
P3.7丿RD
AT89C51
-■
322122232425262728-10一11-12-13-14一1516一仃-
37
35
24
33
图4并行I/O口基本输入/输岀
注:
按钮要从元件库选择Switches&Relays类中的BUTTON.
三、要求及步骤:
要求:
在按钮动作的控制下,将十六进制数字0-F循环显示在数码管上(每按一次按钮,显示的数字加1)。
1、使用Proteus画出电路原理图
2、在Ke订uVision中完成程序编辑、调试及编译,生成.HEX文件
3、进行Protues与Ke订uVision联动的相关设置:
4、在Proteus中仿真运行。
四、思考
1、如何检测按钮是否按下?
2、怎样修改程序,可以使数字0-F在按钮控制下,以递减方式循环显示?
3、若在P0口接8个LED,如何实现每按一次按钮,点亮的LED左移一位(8个LED中只有一个点亮)?
参考程序:
ORG00H
LJMPSTART
ORG30H
START:
MOVPl,#01H
MOVDPTR,STABLE
MOVR4,#00H
CLRA
MOVCA,@A+DPTR
MOVPO,A
LOOP:
MOVA,Pl
ANLA,#01H
JZLOOP
LOOP1:
MOVA,Pl
ANLA,#01H
JNZLOOP1
INCR4
MOVA,R4
ANLA,#OFH
MOVCA,@A+DPTR
MOVPO,A
SJMPLOOP
TABLE:
DB3FH,06H,5BH,4FH,66H;段码表
DB6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H,76HEND
实验五数据传送指令练习
一、实验目的
1、进一步掌握Keil软件的使用。
2、熟悉数据传送指令功能及使用。
二、实验内容
1、输入数据传送指令并单步执行输入的指令;
2、练习数据传送指令的基本应用。
三、实验步骤
1、数据传送指令的功能
1)输入如下程序:
ORG0030H
MOVA,#0BBH
MOVDPTR,#0070H
MOVX@DPTR・A
MOVRO,#70H
MOV@R0,A
MOVA,#0CCH
XCHDA,@R0
SJMP$
END
2)观察DPTR.A、RO、内部RAM70H和外部RAM70H单元中内容并填入表中第一空行。
3)单步执行完上述程序•重新观察上述寄存器和存储单元中内容并填入表中第二空行。
表1程序执行前后有关寄存器和RAM单元内容对照表
程序执行
DPTR
A
R0
70H内RAM
70H夕卜RAM
前
后
4)分析程序运行结果,并把分析结果和运行结果进行比较。
2、PUSH指令对堆栈的影响
1)输入如下程序:
ORG0040H
MOVA,#0AAH
MOVPSW,#0CCH
PUSHACC
PUSHPSW
SJMP$
END
2)观察A.PSW.SP、07H.08H和09H单元中内容,并填入表表。
表2PUSH指令对堆栈的影响
程序执行
A
PSW
SP
堆栈区
07H
08H
09H
前
后
3)单步执行上述程序,重新观察上述寄存器和堆栈区中内容填入表中。
4)分析程序运行结果,并把分析结果和实验结果进行比较,看两者是否相同。
3、编写把A、PSW、DPTR中内容入栈保护并恢复的程序,并验证。
4、编写将内RAM的30H、40H单元内容相互交换的程序,并验证。
5、编程实现交换外RAM1050H.1060H单元的数拯,并运行验证。
四、实验总结:
1、堆栈操作的原则是什么?
在程序设计中需要保护和恢复数据时应注意什么?
2、对内RAM.外RAM及ROM进行数据传送的指令,分别可使用何种寻址方式?
实验六算术及逻辑运算指令练习
一、实验目的
1、熟悉算术及逻辑运算类指令的功能。
2、掌握算术及逻辑运算类指令对标志位的影响。
3、掌握算术、逻辑运算指令的编程应用。
二、实验内容
1、求两个16位无符号二进制数的和
2、四位十进制数的加法
3、算术、逻借运算指令的基本应用
三、实验步骤
1、调试程序:
求两个16位数的和
设内RAM30H和32H开头的两个单元分别存放有两个16位无符号二进制数(低8位在30H或32H单元,髙8位在31H或33H单元),将和存放在30H单元开始的存储区。
ORG0000H
MOVA,31H
UMPMAIN
ADDCA,33H
ORG0030H
MOV31H,A
MAIN:
MOVA,30H
SJMP$
ADDA,32H
END
MOV30H,A
要求:
选择几组数据测试该程序,如有错.将其改正。
2、编程:
四位十进制数的加法:
设内RAM中30H和32H开头的两个单元分别存放有两个四位十进制数的压缩BCD码(低
8位在30H或32H单元,髙8位在31H或33H单元),试编写程序求这两个十进制数的和•并将
结果放在从34H单元开始的存储区(低8位在低地址单元)。
第一组
第二组
30H
31H
32H
33H
30H
31H
32H
33H
程序执行前
程序执行后
要求:
测试.调试程序,并记录测试数据及正确运行结果
3、分别编写实现如下功能的程序并运行、验证。
⑴外RAM1000H-1020H单元中8位无符号二进制数求和,结果存放在内RAM30H单元开
始的存储区。
(2)外RAM的1000H和2000H单元中分别放着一个8位无符号二进制数X和Y,计算3X+4Y,并将结果存入内RAM的30H单元和31H单元。
(低8位在30H单元)。
(3)将两位十进制数的压缩BCD码转换成ASCII码。
(源数据在内RAM20H单元,结果存放在内RAM30H开始的两个单元,低字节在31H单元)
(4)将内RAM从30H开始的20个单元全部淸零。
四、实验总结:
K算术加、减法指令如何影响PSW中的有关标志位?
2、如何实现两个BCD数的减法?
XX文库-好好学习.天天向上
实验七汇编语言程序设计
一、实验目的;
1、练习常见的简单的分支、循环程序结构的设计方法。
2、练习常见的程序调试方法。
二、实验内容:
1、编写程序,将内RAM的30H~40H单元存放的单字节数据传送到外RAM中以1000H为
起始地址的存储区。
在内RAM的30H-40H随意输入数据,调试并运行程序,观察结果。
2、编写程序,查找外部RAN1的1O2OH-1O3OH单元中是否有OAAH这个数,如果有,将内
RAM的30H单元崟为01H,否则将30H单元垃为00H.
在外RAM中输入数据,运行程序,观察结果。
3、在内部RAM3O-5FH单元存放着一组无符号数,编写程序查找岀这些无符号数的最大值,
将结果存放于60H单元。
在相关单元中输入一些数据,运行程序,观察实验结果。
4、内RAM从40H单元开始的10个单元中存放着单字节带符号数,编程分别统计出正、负
数的个数,并存入50H、51H单元中。
三、实验要求:
1、实验前充分预习,写出所需程序
2、上机将程序调试正确,并分析程序运行结果
四、实验报告要求:
写岀调试正确的程序。
五、思考题:
1、汇编语言程序如何测试和调试?
2、在子程序调用和返回指令执行时,PC值如何变化?
XTAL1
IHzXTAL2
RST
FSERALEEA
P1.0/T2P1.1/T2EX
U1
.23-45.6J
实验八外部中断实验
一、实验电路(如图3.3.45所示)
+5V
A
PO.O;ADOP0.1/AD1P02AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6.-AD6P0.7/AD7
P2.0.A8
P2J.A9
P2.2P2.4.-A12
P2.&A13
P2.&A14
P2.7/A15
P3.Q-RXD
P3.1/TXD
P321RTUP33WIT
P3.4/T0
P3.5.T1P36WRP3.7.W
图3.3.15外部中断实验电路原理图
二、实验目的
1、熟悉51系列单片机
2、了解AT89C51P1口、P3口的使用方法
3、了解键盘的原理及使用方法
4、了解发光二极管的原理及使用方法
5、掌握外部中断的原理及使用方法
6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。
对应文件
三、实验器材
1、单片机主板
2、单片机扩展板
3、连接导线若干
四、实验注意事项
1、单片机主板、单片机扩展板接+5V
2、因J14为有极性排阻,故单片机扩展板一泄要连GND和VCC,否则发光二极笛不亮
3、图中粗线部分为要求学生自己连线部分
五、实验现象
正常情况下8个LED发光二极管循环显示,延迟时间为1秒,当有按键按下即产生外部中断时,8个LED发光二极管全亮,延迟时间为2秒。
六、思考
请同学们自己试一下外部中断0。
实验定时器中断
-V实验电路(如图3.3.46所示)
GKI[
>:
.
)T.
1—DK
引I
—
I:
门
Ah*—
曲|Xr
1
r.
X?
-LE'
TC
T.
E'HE:
ETMJFC/FCGijpK
卩侥PC3FC?
PC]Pl:
l:
P2C
P2:
P?
P
P?
3
P"
吧
P?
6
F27
巨
F-LEJ
TFI
•-4[17
•TEJ.
I;!
:
Pl!
PF
P13
H4Hil:
16Fl/
••山
TFI
-IF]
TFI
图3.3.46定时器中断电路原理图
二、实验目的
1、熟悉51系列单片机
2、了解AT89C51P1口的使用方法
3、掌握左时器、计数器的原理及使用方法
4、学AIAT89C51的编程、仿真、调试、编译、芯片烧录。
对应文件
三、实验器材
1、单片机主板
2、单片机扩展板
3、连接导线若干
四、实验注意事项
1、单片机主板、单片机扩展板接+5V电压
2、因J14为有极性排阻,故单片机扩展板一泄要接GND和VCC,否则LED发光二极管不亮
3、图中粗线部分为要求学生自己连线部分
五、实验现象
LED发光二极管循环显示,延迟时间为1秒。
六、思考
将LED发光二极管的循环延迟时间设置的更长或更短。
实验数码管动态显示实验
一、实验电路(如图3.3.33)
IL—
J>
-/乙Hl'x^i:
"-bEpIJKnhl.'
图3.3.33数码管动态显示电路廉理图
二、实验目的
1、熟悉51系列单片机
2、了解AT89C51P1口、P2口的使用方法
3、学习驱动芯片ULN2003A的原理及使用方法
4、学习驱动芯片74HC245的原理及使用方法
5、掌握数码管(共阴、共阳两种)的原理及使用方法
6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。
对应文件
三、实验器材
1、多功能实验板
2、单片机扩展板
3、连接导线若干
四、实验注意事项
1、多功能实验板、单片机扩展板均采用+5V电压
2、因图中将74HC245的GND和VCC引脚隐藏,故学生自己连线时一左要将GND和VCC连上,否则芯片不工作
3、图中粗线部分为要求学生自己连线部分
五、实验现象
1、显示数字1一6。
六、思考
1、显示其它数字和字符。
实验
一、实验电路(如图3.3.34所示)
矩阵键盘实验
图3.3.34矩阵键盘实验电路原理图
二、实验目的
1、熟悉51系列单片机
2、了解AT89C51P1口、P2口的使用方法
3、了解共阳数码管的原理及使用方法
4、掌握矩阵键盘的原理及使用方法
5、学习AT89C51的编程、仿真、调试、编译、芯片烧录。
对应文件
三、实验器材
1、多功能实验板
2、单片机扩展板
3、连接导线若干
四、实验注意事项
1、多功能实验板、单片机扩展板接+5V电压
2、数码管为共阳数码管,公共端接+5V
3、图中粗线部分为要求学生自己连线部分
五、实验现象
1、ENTER键为全亮键,ESC键为全火键,其它数字键为按哪一位数字键,在数码管上显示其数字。
实验
-V实验电路(如图3.3.43)
液晶LCD实验
■:
知|:
-1
LI
nrr
[[
ii
图3.3.43液晶LCD电路原理图
二、实验目的
1、熟悉51系列单片机
2、了解AT89C51P1口、P2口的使用方法
3、了解电位器的使用方法
4、掌握液晶模块LCD的原理及使用方法
5、学习AT89C51的编程、仿真、调试、编译、芯片烧录。
对应文件
三、实验器材
1、单片机多功能实验板
2、单片机扩展板
3、连接导线若干
四、实验注意事项
1、单片机扩展板、单片机多功能实验板均采用+5V电压
2、单片机多功能实验板接GND和VCC时一泄不能接反,否则会饶毁LCD液晶模块
3、图中粗线部分为要求学生自己连线部分
五、实验现象
1、显示“CS&S”字样。
六、思考
1、请同学们在液晶模块上显示“HOWAREYOU”。
实验
交通灯控制(定时器延时法)
一、实验目的
1.进一步理解单片机内部立时器/计数器的工作原理和使用方法。
2.学习模拟交通灯控制的方法。
3.学习数据输出程序的设汁方法。
4.学习中断处理程序的编程方法。
二、实验内容
用CPU的P1口输出控制信号,控制六个LED灯侈I:
绿,黄),模拟交通灯管理。
四、实验说明
1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始为状态0。
状态0:
东西红灯,南北红灯;然后转入
状态1:
南北绿灯通车,东西红灯:
过一段时间转入
状态2:
南北绿灯闪几次转黄灯亮,延时几秒,东四仍然红;再转入
状态3:
东四绿灯通车,南北红灯;过一段时间转入
状态4:
东四绿灯闪几次转黄灯亮,延时几秒,南北仍然红灯;最后循环至状态1。
2.各用一组红、黄、绿色LED分别表示南北方向和东西方向。
3.由定时器来产生通车延时时间,时间长短1秒以上(由同学自己确泄)。
提示:
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MH乙本程序左时器工作于方式1(16位方式)时,最大建时时间为:
2,6*1us=65536us=
所以需要配合软件记数。
如要延时2秒,则需要T0中断32次,所
用时间为
65536*32=2097120us^2s
因此在TO中断处理程序中,要判断中断次数是否到32次,若不到32次,则只使中断次数加1,然后返回,若到了32次,定时2秒时间到。
4.用软件延时方法产生“闪”延时时间。
五、实验仪器和设备
PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULTIA用户板、实验板、开关电源等。
六、参考程序框图(见下页)
中断处理程序框图