LED流水灯实验报告
- 格式:doc
- 大小:97.00 KB
- 文档页数:4
——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.更加深刻的理解了这门学科,从最初根本不知道单片机是什么、能干什么、
该怎么做到现在已经可以用单片机做几个小的设计,感觉进步非常大。