当前位置:首页 > 实验3 指示灯循环控制
实验3 指示灯循环控制/开关控制器
【实验内容】
1) 熟悉keil软件,了解软件结构与功能 2) 完成实验3的c51语言编程
3) 掌握在keil中进行c51程序开发的方法
【实验原理】
实验原理图如图1所示
图中8只LED指示灯接于P0口,且都接有上拉电阻。并有时钟电路、复位电路和片选电路。 在编程软件配合下,实现如下功能:8只发光二极管循环点亮,亮灯顺序为
D1—D2—D3—D4—D5—D6—D7—D8—D7—D6—D5—D4—D3—D2—D1,两次亮灯的时间间隔为0.5s.
软件编程原理为:首先使P0^0 = 0,其余端口为1,D1亮,其余灯灭,软件延时0.5s,然后P0整体左移,再整体右移。
RP1RESPACK-81C11930pFU1X1CRYSTAL18XTAL1P0.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/RD393837363534333221222324252627281011121314151617P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P0.0P0.02P0.13P0.24P0.35P0.46P0.57P0.68P0.79D1LED-YELLOWR2200C322uFC230pFXTAL2D2P0.1LED-YELLOWR32009RSTD3P0.2LED-YELLOWR11kR4200293031PSENALEEAD4P0.3LED-YELLOWR520012345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51D5P0.4LED-YELLOWR6200D6P0.5LED-YELLOWR7200D7P0.6LED-YELLOWR8200D8P0.7LED-YELLOWR9200 图1
【实验步骤】 1) keil中
如图2,点击“Project—New uVision Project”建立工程,并选择单片机型号(如Atmel 89C51)
图2
如图3,上方由工具栏的“New””Save”创建源程序“shiyan3.c”,右键“Sauce Group 1”点击“Add Files To Sauce Group 1”。
图3
如图4,键入代码,编译成功后,点击“Taget Opinions”,在出现的窗口中选择“Output”并勾选“Creat Hex Files”,生成hex文件。 代码如下:
#include
#define uint unsigned int //宏定义 #define uchar unsigned char
void delayms(xms) //延时xms的子函数 { uint j,i; for(i=xms;i>0;i--) for(j=125;j>0;j--); }
void main() { uchar a = 0xfe; //点亮第一个灯 while(1) //无条件循环 { uint k; for(k=7;k>0;k--) //单个亮的灯依次下移 { P0 = a; delayms(500); //延时0.5秒 a = _crol_(a,1); //\是intrins.h函数中的循环左移字符 } for(k=7;k>0;k--) //单个亮的灯依次上移 { P0 = a; delayms(500); //延时0.5秒 a = _cror_(a,1); //\是intrins.h函数中的循环右移字符 } } }
图4
2) proteus中
选取元件,设置参数,连线如图5所示
图5
【实验结果】
与预期结果一致,如图6在闪烁过程中。
图6
【调试与分析】
程序调试过程中,只遇到了参数未定义的问题,程序运行成功后添加注释,为防止keil中添加中文字符造成乱码,在Notepad++里添加注释。单步调试待补。
共分享92篇相关文档