欢迎来到天天文库
浏览记录
ID:35216018
大小:91.00 KB
页数:4页
时间:2019-03-21
《单片机led灯实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、桂林电子科技大学实验报告2016-2017学年第一学期开课单位海洋信息工程学院适用年级、专业14级机械设计制造及其自动化课程名称《单片微型计算机与接口技术-课内实验》主讲教师周旋课程序号BS1615000_03课程代码BS1615000实验名称《流水灯》学号1416010516-17姓名林亦鹏卢炳荣流水灯实验报告一、实验目的1、了解单片机顺序执行的工作特点。2、掌握单片机并行控制I/O口的基本方法。3、掌握C语言的编写,及对I/O口的基本操作方法。二、实验内容实验设备:计算机一台、单片机实验箱一台、Proteus软件、Keil软
2、件。硬件原理图:单片机实验箱LED使用P0口进行控制,高电平有效。1、I/O口并行操作方法的优点。2、单片机延时程序的实现方式。3、单片机C语言左右移动语句、逻辑运算语句的使用。4、打开Keil,新建工程:学号-1.uv4。5、参考实验程序,编写程序:让灯向左(即从P1_0到P1_7)做流水动作,生成:学号-1.hex文件。6、把”学号-1.hex”文件烧写到单片机,观察流水灯的现象。7、修改程序让流水灯反向流动。8、编写自己想要的流水方式。三、实验结果分析本实验主要是采用延时程序来控制“流水”的功能,同时采用中断进行亮与暗闪烁
3、的效果,使用C51的P0口进行对LED的控制。过程的主要分析如下:/*******************************************************************************实验名:流水灯*实验说明:LED灯做右移流水灯******************************************************************************/1、程序流程图:2、程序清单及注释:#include#include4、h>//--声明全局函数--//voidDelay10ms(unsignedintc);//延时10ms//主函数voidmain(void){unsignedcharLED;LED=0x01;//0x01=00000001此时,led灯的最低一位亮while(1){P0=LED;//按照LED的初值,置P0.0口为高电平,其余为低电平Delay10ms(50);LED=_crol_(LED,1);//循环右移1位,点亮下一个LED此函数已在库函数中定义}}//延时函数Delay10msvoidDelay10ms(unsigne5、dintc)//误差0us{unsignedchara,b;for(;c>0;c--){for(b=38;b>0;b--){for(a=130;a>0;a--);}}}以上程序用开发板来进行实验,程序可以实现要求。对于在进行实验的设计时,可能存在的错误,主要是C语言的一些使用规则的错误和对中断控制等代码的错误。等发生错误时,就应从代码的开始部分进行检查和分析,对于错误的地方进行修改,直到程序无错误为止。对于验证其功能时,应确认开发板没有损坏,正确连接电路等。四、思考与讨论1、左右移动语句的使用。答:51单片机的左移右移,首先在开6、始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;for(m=20;m>0;m--)for(n=20;n>0;n--)for(k=250;k>0;k--);理解这三句,第一句是指:m=20;m>0然后m--是真就执行:for(n=20;n>0;n--)for(k=250;k>0;k--);这两句,m--一直减,减一次,里面就执行一次,这里是20次。流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。2、如果想让流7、水灯左移(即从P0_7到P0_0)移动,程序应该怎么改?答:把crol_(LED,1);//循环右移1位,改成:cror_(LED,1);//循环左移1位3、有没有其它方法可以实现本实验的功能?答:有、比如一位控法和查表法。五、小组表现评价(必填)在本次实验中16号负责程序编写,17号负责电路连接,配合得十分好,听完老师的讲解,剩下的就是我们自己调试了,有不懂的问老师,老师也讲得十分仔细,在调程序的过程中,主要是了解c语言的命令语句的使用方法,这是第一次实验,流水灯的程序相对来说是很简单的,能控制LED流水灯左右移的方法有很多,8、看怎么去运用咯,虽然是第一次做C语言单片机的实验,我觉得老师的实验方法是非常正确的,因为编写程序对于新手来说是非常困难和损耗时间的,现在直接引用现成的程序,通过老师的讲解,一样可以实现教学目的,了解程序的架构,更大的好处就是能让大家对编程更感兴趣,没有了编写程序
4、h>//--声明全局函数--//voidDelay10ms(unsignedintc);//延时10ms//主函数voidmain(void){unsignedcharLED;LED=0x01;//0x01=00000001此时,led灯的最低一位亮while(1){P0=LED;//按照LED的初值,置P0.0口为高电平,其余为低电平Delay10ms(50);LED=_crol_(LED,1);//循环右移1位,点亮下一个LED此函数已在库函数中定义}}//延时函数Delay10msvoidDelay10ms(unsigne
5、dintc)//误差0us{unsignedchara,b;for(;c>0;c--){for(b=38;b>0;b--){for(a=130;a>0;a--);}}}以上程序用开发板来进行实验,程序可以实现要求。对于在进行实验的设计时,可能存在的错误,主要是C语言的一些使用规则的错误和对中断控制等代码的错误。等发生错误时,就应从代码的开始部分进行检查和分析,对于错误的地方进行修改,直到程序无错误为止。对于验证其功能时,应确认开发板没有损坏,正确连接电路等。四、思考与讨论1、左右移动语句的使用。答:51单片机的左移右移,首先在开
6、始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;for(m=20;m>0;m--)for(n=20;n>0;n--)for(k=250;k>0;k--);理解这三句,第一句是指:m=20;m>0然后m--是真就执行:for(n=20;n>0;n--)for(k=250;k>0;k--);这两句,m--一直减,减一次,里面就执行一次,这里是20次。流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。2、如果想让流
7、水灯左移(即从P0_7到P0_0)移动,程序应该怎么改?答:把crol_(LED,1);//循环右移1位,改成:cror_(LED,1);//循环左移1位3、有没有其它方法可以实现本实验的功能?答:有、比如一位控法和查表法。五、小组表现评价(必填)在本次实验中16号负责程序编写,17号负责电路连接,配合得十分好,听完老师的讲解,剩下的就是我们自己调试了,有不懂的问老师,老师也讲得十分仔细,在调程序的过程中,主要是了解c语言的命令语句的使用方法,这是第一次实验,流水灯的程序相对来说是很简单的,能控制LED流水灯左右移的方法有很多,
8、看怎么去运用咯,虽然是第一次做C语言单片机的实验,我觉得老师的实验方法是非常正确的,因为编写程序对于新手来说是非常困难和损耗时间的,现在直接引用现成的程序,通过老师的讲解,一样可以实现教学目的,了解程序的架构,更大的好处就是能让大家对编程更感兴趣,没有了编写程序
此文档下载收益归作者所有