二极管分别显示P1.7~P1.0各管脚的电平状态。编写程序,控制八只发光二极管按一定的规律循环点亮。晶振频率6MHz。
开始 循环初始化1 循环处理1 循环初始化2 循环处理2 开始 循环初始化 循环控制 N 循环处理 循环控制2 N 条件满足? Y 循环控制1 条件满足? Y 循环结束 结束 条件满足? 循环结束 结束 N
(a) (b)
图3-1 循环程序流程图 图3-2 两重循环程序流程图
四、实验参考电路
P1口接发光二极管的阴极,P1口的管脚输出低电平时对应的发光二极管点亮,实验电路图如图3-3所示。
30
C130pFX1C230pF19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617C310uFR9CRYSTAL10k18XTAL29RSTR1330R2330R3330R4330R5330R6330R7330R8330293031PSENALEEAD1D2D3D4D5D6D7D8LED-RED12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51 图3-3 流水灯实验电路
五、实验参考程序
参考程序1:八只发光二极管同时交替亮灭。
地址 0000H 0003H 0005H 0008H 000AH 000CH 000EH 0010H 0011H 0013H 0015H 地址 0000H 1000H 1002H 1004H 1007H 1008H 100AH 100CH 100EH 1010H
机器码 75 90 00 11 0C 75 90 FF 11 0C 80 F4 7B F0 7C F9 00 DC FD DB F9 22 机器码 02 10 00 74 7F F5 90 12 10 0A 03 80 F8 78 80 79 00 D9 FE D8 FA 源程序 ORG 0000H START: MOV P1,#00H ACALL DELAY MOV P1,#0FFH ACALL DELAY SJMP START DELAY: MOV R3,#240 DEL2: MOV R4,#249 DEL1: NOP DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 源程序 ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV A,#7FH L1: MOV P1,A LCALL DELAY RR A SJMP L1 DELAY: MOV R0,#80H DELAY1: MOV R1,#00H DELAY2: DJNZ R1,DELAY2 DJNZ R0,DELAY1 31
注释 ;表示程序从地址0000H存放 ;将P1口8个管脚置0 ;调用延时子程序 ;将P1口8个管脚置1 ;调用延时子程序 ;返回,从START开始重复 ;延时子程序 ;子程序返回 ;程序结束 注释 ;表示程序从地址0000H存放 ;表示程序从地址1000H存放 ;将A的内容通过P1口输出 ;调用延时子程序 ;A右移一位 ;延时子程序 参考程序2:八只发光二极管循环点亮。 1012H 22 RET END ;子程序返回 ;程序结束 六、实验步骤
步骤与2.1节相似,以后各章节只列出几大步骤和每个步骤与2.1节不同的要求,不再详细叙述具体操作过程。
1. 新建设计文件、设置图纸尺寸、设置网格、保存设计文件。文件名为“lamp”。 2. 选取元器件。从Proteus元器件库中选取元器件:AT89C51(单片机)、CRYSTAL(晶振)、CAP(电容)、CAP-ELEC(电解电容)、RES(电阻)、LED-RED(红色发光二极管)。
3. 放置元器件、编辑元器件、放置终端、连线。按图3-3所示放置元器件并连线。 4. 属性设置。先右击后单击元器件电容C1,在弹出的“Edit Component”对话框中将电容量改为30pF, 单击“OK”完成元器件电容C1属性编辑。同样方法编辑其他元器件属性。
5. 电气规则检测。单击“工具”→“电气规则检查”,弹出检查结果窗口,完成电气检测。若检测出错,根据提示修改电路图并保存,直至检测成功。电气规则检查窗口如图3-4所示。
图3-4 电气规则检查窗口 图3-5 添加项目对话框
6. 添加源程序、编辑源程序、编译源程序。源文件名为“lamp.asm”。 7. 加载目标代码文件。 “Clock Frequency”栏中的频率要设为6MHz。
8. 仿真。单击仿真工具栏“运行”按钮,单片机全速运行程序。单击“调试”→“Watch Windows”,单击“调试”→“8051 CPU Source Code”,分别打开观察窗口和源代码调试窗口。
在观察窗口右击弹出快捷菜单,单击“添加项目(By地址)”弹出“Add Memory Item”对话框,在“Name”栏输入R3,“Address”栏输入0x03,单击“Add”将工作寄存器R3添加到在观察窗口中;同样将R4也添加到在观察窗口中。添加项目对话框如图3-5所示。
通过编辑区电路图观察并记录八只信号灯的控制规律与设计是否相符。同时通过观察窗口观察延时子程序中所用的工作寄存器的值在调试过程中的变化规律。程序仿真窗口如图3-6所示。
32
图3-6 程序仿真窗口
七、实验分析与总结
1. 分析P1口8个管脚电平状态与对应的发光二极管亮灭状态之间的关系。 2. 找出控制P1口管脚电平状态的指令。 3. 找出控制时间长短的指令。
八、思考题
1. 如何改变发光二极管亮灭的间隔时间,使闪亮速度更快或更慢一些? 2. 你能再设计出几种不同的控制状态吗?
3.2 步进电机实验
一、实验目的
1.了解步进电机的基本原理。 2.掌握控制步进电机的编程方法。
3. 掌握用Proteus实现单片机系统仿真的方法。
二、实验预备知识
步进电动机是“一步一步”的转动的一种电动机,电源输入的电信号是脉冲信号(脉冲电压),每输入一个电脉冲,电动机就转过一个固定角度,故而,也称为脉冲电动机。
1. 基本概念
拍----从一种通电状态转换到另一种通电状态,叫一拍。
33
相关推荐: