实验3 指示灯循环控制.pdf
上传人:13****51 上传时间:2024-09-12 格式:PDF 页数:5 大小:1.4MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验3 指示灯循环控制.pdf

实验3指示灯循环控制.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

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-8102132435465768790.0.0.0.0.0.0.0.C1PPPPPPPPU1D11939P0.0XTAL1P0.0/AD0R230pFX138P0.1P0.0P0.1/AD1C337P0.2CRYSTALP0.2/AD22001836P0.322uFXTAL2P0.3/AD3LED-YELLOWC235P0.4P0.4/AD4D234P0.5P0.5/AD5R333P0.6P0.1P0.6/AD630pF932P0.7RSTP0.7/AD7200LED-YELLOW21P2.0/A8D322P2.1/A9R4R123P0.2P2.2/A1029241kPSENP2.3/A112003025ALEP2.4/A12LED-YELLOW3126EAP2.5/A1327P2.6/A14D428P2.7/A15R5P0.3110P1.0P3.0/RXD200211P1.1P3.1/TXDLED-YELLOW312P1.2P3.2/INT0413P1.3P3.3/INT1D5514P1.4P3.4/T0R6615P0.4P1.5P3.5/T1716P1.6P3.6/WR200817P1.7P3.7/RDLED-YELLOW80C51D6R7P0.5200LED-YELLOWD7R8P0.6200LED-YELLOWD8R9P0.7200LED-YELLOW图1【实验步骤】1)keil中如图2,点击“Project—NewuVisionProject”建立工程,并选择单片机型号(如Atmel89C51)图2如图3,上方由工具栏的“New””Save”创建源程序“shiyan3.c”,右键“SauceGroup1”点击“AddFilesToSauceGroup1”。图3如图4,键入代码,编译成功后,点击“TagetOpinions”,在出现的窗口中选择“Output”并勾选“CreatHexFiles”,生成hex文件。代码如下:#include<reg51.h>#include<intrins.h>#defineuintunsignedint//宏定义#defineucharunsignedcharvoiddelayms(xms)//延时xms的子函数{uintj,i;for(i=xms;i>0;i--)for(j=125;j>0;j--);}voidmain(){uchara=0xfe;//点亮第一个灯while(1)//无条件循环{uintk;for(k=7;k>0;k--)//单个亮的灯依次下移{P0=a;delayms(500);//延时0.5秒是intrins.h函数中的循环左移字符}for(k=7;k>0;k--)//单个亮的灯依次上移{P0=a;delayms(500);//延时0.5秒a=_cror_(a,1);是intrins.h函数中的循环右移字符}}}图42)proteus中选取元件,设置参数,连线如图5所示图5【实验结果】与预期结果一致,如图6在闪烁过程中。图6【调试与分析】程序调试过程中,只遇到了参数未定义的问题,程序运行成功后添加注释,为防止keil中添加中文字符造成乱码,在Notepad++里添加注释。单步调试待补。