实验二发光二极管实验1.docx
《实验二发光二极管实验1.docx》由会员分享,可在线阅读,更多相关《实验二发光二极管实验1.docx(34页珍藏版)》请在冰豆网上搜索。
实验二发光二极管实验1
实验二发光二极管实验
一、实验目的
1、掌握AT89C51单片机IO口的输入输出。
2、掌握用查表方式实现AT89C51单片机IO口的控制。
3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus设计、仿真AT89C51系统。
二、实验原理
1、单片机最小系统由单片机芯片、时钟电路以及复位电路构成。
2、I/O口
P0口:
8位双向I/O口。
在访问外部存储器时,P0口可用于分时传送低8位地址总线和8位数据总线。
能驱动8个LSTTL门。
P1口:
8位准双向I/O口(“准双向”是指该口内部有固定的上拉电阻)。
能驱
动4个LSTTL门。
P2
口:
8
位准双向I/O
口。
在访问外部存储器时,
P2口可用于高8位地址总
线。
能驱动4个LSTTL门。
P3
口:
8
位准双向I/O
口。
能驱动4个LSTTL门。
P3口还有第二功能。
P1
口作为输出口时与一般的双向口使用方法相同。
当
P1口用为输入口时,必须
先对它置“1”。
若不先对它置“1”,读入的数据可能是不正确的。
三、设计步骤:
【PROTEUS电路设计】
在ISIS中进行电路图设计,发光二极管流水灯实验装置电路原理图如下图所示。
1、按照元件清单从PROTEUS库中选取元器件,进行第2、3、4、5、6步,完成原理图。
元件名称所属类所属子类
AT89C51(单片机)MicroprocessorICs8051Family
RES(电阻)ResistorsGeneric
RX8(8排阻)ResistorsResistorPacks
LED-YELLOW(黄色发光二极管)OptoelectronicsLEDs
CAP(电容)CapacitorsGeneric
CAP-ELEC(电解电容)CapacitorsGeneric
CRYSTAL(晶振)Miscellaneous--
SWITCH(按键)Switich&relaysSwitchs
2、放置元器件;
3、放置电源和地;
4、连线;
5、参照原理图进行元件属性设置;
6、电气检查。
【源程序设计】
1、流程图:
2、在KeilC中进行源程序设计:
3、编译、生成目标代码
【PROTUES仿真】
1、在AT89C51属性页中加载KeilC中生成的目标代码;
2、仿真、调试代码
3、注意使用观察窗口
三、背景知识(供实验内容题一所用)
KeilC调试软件延时方法:
1、首先打开“OptionsforTarget”页面,在“Xtal(MHz)”中输入选择的晶振频率。
2、然后,借助“states”和“sec”这两个KeilC提供的变量帮助我们调试出精确地延时时间。
如左图所示,特殊寄存器显示页面,即“Regs”页面中。
states含义:
其值(Value)指示了程序从开始到当前指令处所耗费的机器周期数。
sec含义:
其值(Value)指示了程序从开始到当前指令处所耗费的机器周期数。
其中:
sec=states×机器周期。
我们观察这两个变量,通过调整延时循环控制参数,可以得到需要的精确延时时间。
四、实验内容
1、编写延时程序,延时时间为0.1S。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
SETBP1^0
ACALLDELAY100MS
CLRP1^0
ACALLDELAY100MS
AJMPMAIN
DELAY100MS:
;0.1S延时子程序
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
2、通过AT89C51单片机控制8个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVA,#0FEH
LOOP:
MOVP1,A
ACALLDELAY100MS
RLA
AJMPLOOP
DELAY100MS:
;0.1S延时子程序
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
3、通过AT89C51单片机控制8个发光二极管发光,循环实现亮点由上到下移动1
次(间隔时间为0.2S,由下到上移动1次(间隔时间为0.2S,闪烁1次(即先全亮
0.1S,再全灭0.S)。
ORG0000H
LJMPLOOP
ORG0100H
LOOP:
MOVA,#7FH
MOVDOWN:
RLA
MOVP1,A
ACALLDELAY100MS
ACALLDELAY100MS
CJNEA,#7FH,MOVDOWN
MOVA,#0FEH
MOVUP:
RRAMOVP1,A
ACALLDELAY100MSACALLDELAY100MSCJNEA,#0FEH,MOVUP
BLINK:
MOVP1,#00HACALLDELAY100MSMOVP1,#0FFH
AJMPLOOP
DELAY100MS:
;0.1S延时子程序
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
4、通过AT89C51单片机控制8个发光二极管发光,循环实现亮点由上到下移动2次(间隔时间为0.2S,由下到上移动2次(间隔时间为0.2S,闪烁2次。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR4,#2
LOOP1:
MOVA,#7FH
MOVDOWN:
RLA
MOVP1,A
ACALLDELAY100MS
ACALLDELAY100MS
CJNEA,#7FH,MOVDOWN
DJNZR4,LOOP1
MOVR4,#2
LOOP2:
MOVA,#0FEH
MOVUP:
RRAMOVP1,A
ACALLDELAY100MSACALLDELAY100MSCJNEA,#0FEH,MOVUPDJNZR4,LOOP2MOVR4,#2
BLINK:
MOVP1,#00HACALLDELAY100MSMOVP1,#0FFHACALLDELAY100MS
DJNZR4,BLINKAJMPMAINDELAY100MS:
;0.1S延时子程序
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
5、编写程序,用查表方式实现题4功能。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#0FFH
LOOP:
INCR0
CJNER0,#36,SHOW
MOVR0,#0
SHOW:
MOVA,R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP1,A
ACALLDELAY100MS
ACALLDELAY100MS
AJMPLOOP
DELAY100MS:
;0.1S延时子程序
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
TAB:
DB11111110B
DB11111101B
DB11111011B
DB11110111B
DB11101111B
DB11011111B
DB10111111B
DB01111111B
DB11111110B
DB11111101B
DB11111011B
DB11110111B
DB11101111B
DB11011111B
DB10111111B
DB01111111B
DB01111111B
DB10111111B
DB11011111B
DB11101111B
DB11110111B
DB11111011B
DB11111101B
DB11111110B
DB01111111B
DB10111111B
DB11011111B
DB11101111B
DB11110111B
DB11111011B
DB11111101B
DB11111110B
DB11111111B
DB00000000B
DB11111111B
DB00000000B
END
6、P2口作为输入口,接8只开关。
P1口做为输出口,接8只发光二极管,通过设置8只拨动开关的状态控制8只发光二极管的亮灭。
(自己画硬件连线图,程序流程图如下)
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVP2,#0FFH
MOVA,P2
MOVP1,A
AJMPMAIN
END