LED流水灯实验报告

  • 格式:doc
  • 大小:97.00 KB
  • 文档页数:4

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

——LED流水灯

学院:计算机与信息工程学院

专业:电子信息工程1401班

一、设计要求及目的

1.熟悉了解ST89C52的功能及各管脚

2.熟悉并掌握Keil uVision和Proteus软件

二、实验器材

ST89C52、LED-RED、电阻、瓷片电容、电解电容、四脚开关、+5V电源

三、实验原理

P0口接低电平及可点亮LED灯,R2-R9是为了保证流经LED灯的电流在3-10mA 以保证LED灯正常工作。XTAL1和XTAL2接外部晶振保证单片机正常工作,51系列单片机最大可接24MHz晶振,通常接12MHz的晶振。

四、程序代码

#include<>

#include<>

unsigned char temp;

unsigned int j=0;

void main()

{

TMOD=0x01;//让定时器0工作在方式1

TH0=(65536-50000)/256;//给定时器0高八位赋初值

TL0=(65536-50000)%256;//给定时器0低八位赋初值

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

temp=0xfe;

P1=temp;

while(1)

{

if(j==20)

{

j=0;

P1=_crol_(temp,1);

temp=P1;

}

}

}

void INT() interrupt 1//定时器0的中断

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

j++;

}

在这个程序中我给单片机加了一个中断,让定时器0以方式1工作,这样做是为了让每个LED灯间隔1s闪烁,让时间更精确。在循环的部分我使用_crol_位左移代码,故加入了#include<>头文件。

五、实验结果

LED灯以1s的间隔正常循环闪烁。

六、心得

1.最主要的收获就是为了让LED灯正常循环,学会了很多不同的代码,最开始

时是用调用了子函数delay()的方法控制间隔,后来发现循环时间长了以后就不准确了,所以又学习了加入中断的方法,加入了中断可以让时间间隔更准确

2.现在已经非常熟悉keil和proteus软件的操作方法,为第二个设计做了良

好的铺垫

3.更加深刻的理解了这门学科,从最初根本不知道单片机是什么、能干什么、

该怎么做到现在已经可以用单片机做几个小的设计,感觉进步非常大。