单片机51的流水灯

实验一 单片机流水灯
【实验目的】
1、熟练掌握AT89C51开发板的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握应用KEIL软件编辑、编译源程序的操作方法。
4、掌握应用PROTEUS软件的绘图,仿真,烧录操作方法。
【实验器材】
电脑,keil软件,proteus软件,51单片机书籍
【预习要求】
带好实验器材,知晓流水灯实验实验原理,安装好keil,proteus软件,并学会简单使用这两个软件功能。
【实验原理】
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
【实验注意事项】
当P2口有低电平输出时,相应的发光二极管就会点亮。应用这一原理我们可以容易的点亮一个数码管,例如令P2口输出O11l1111时LDI就会点亮。若再把O1111111向右循环一位,利用P2口输出,就会点亮LD2。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。
【实验内容和步骤】
一.打开keil编写流水灯程序
二.打开proteus绘制流水灯原理图
三.将代码拷入单片机,运行看流水灯效果

1.流水灯代码
#include<reg52.h>

void main()
{
unsigned int i=0;
unsigned char dir =0;
unsigned char shift = 0x01;
while (1)
{
P2 = ~shift;
for (i=0; i<30000; i++);
if (dir == 0)
{
shift = shift << 1;
if (shift == 0x80)
{
dir = 1;
}
}
else
{
shift = shift >> 1;
if (shift == 0x01)
{
dir = 0;
}
}
}
}

【实验心得体会】
由于没有课前预习,所以当时做起来还是花了一点时间去问同学问题。当然上课时流水灯的程序还是挺明白的,所以一开始写代码也很快,画图的时候,一点没打开过proteus这个软件,所以屡次问同学怎么用。
当然还有,由于电脑本身有问题,一打开proteus根本打不开,只得重装,这个问题尝试了无数个解决方法,都没能有好的结果,也只得在出问题时一次次重装。在重装好proteus之后,开始新建工程,在里面添加元器件后,再在图里绘制原理图。刚开始不知道怎么移动元器件,试了几次之后,才熟练掌握,知道了在器件变成紫色时是可以移动的。也学会了怎么改器件阻值。学会了在哪里找GND和power,当然也学会了怎么旋转器件方向。并且在画布上一点就可以复制器件了,笔点的位置一路按下来就可以给两个器件连线,并且三个器件的交叉处会出现一个大圆点告诉自己,那里是连上了的。
绘制好了原理图,保存好就可以给单片机烧录程序了,双击单片机就可以进行烧录程序的操作,烧录之后发现自己的灯不亮,再三检查原理图,二极管正极与电阻相连并接上电源,其他各处也没有错误。
再看自己的程序编译也没有错误,在逐句逐词的查看之后发现自己在某处的for循环漏了分号,修改错误之后就可以正常运行了。在成功运行了流水灯向右移之后,再进行运行向左运行的流水灯,之后再组合一下两个方向的程序写完了左右移动的流水灯。很快就完成了流水灯实验。
上课时,老师再三强调不要漏了for循环的分号,可我依然是粗心忘记了,虽然上课老师也略说过怎么使用proteus,但是实操的时候都还是有些茫然。不过自己实际动手了一遍比老师空讲记忆会深一些。自己也在实际操作中搞懂了自己一些自以为会了其实没有会的东西。

猜你喜欢

转载自blog.csdn.net/tenju/article/details/108963522