单片机 流水灯一、简单
用Proteus模拟单片机最小系统流水灯的显示电路。 用Keil创建相应的可执行文件。
源代码,仿真电路图封装:链接: https://pan.Baidu.com/s/1 zetohzgz-Jeb nad _ bqgaug密码: h8jc
二.效果
三.工程结构
1、Keil编程
2、仿真电路图
四.源文件
LiuShui.c文件
# includere g51.h//void delay 1毫秒(未指定插入计数) /软延迟计数毫秒//(/未指定插入计数,j; //for(I=0; icount; I//for(j=0; j120; j; //void delay1ms (未指定的int count )//延迟的count*50ms (未指定的inti ); TMOD=0x01; 选择//计时器0,以方式1TH0=0x3c操作; //设定初始值0x3cb0TL0=0xb0; TR0=1; //打开计时器for (I=0; icount; I//count次循环,每次50ms的定时,合计count*50ms{while(TF0!=1; //每定时50ms (溢出时首次跳出环路) TH0=0x3c; //初始值重置为0x3cb0TL0=0xb0; TF0=0; //软溢出位置(} TR0=0; //关闭计时器}void main () {unsigned char LEDIndex=0; //表示是第几个灯的bit LEDDirection=1; //流水灯依次点亮熄灭的方向while(1) if (led direction )//控制正方向,灯自上而下点亮熄灭的p1=~~(0x01ledindex ); //P1寄存器控制P1,端口电压为0时点亮。 首先点亮的位置1,将剩下的设为0,然后反转,则只有指定的位为0。 然后,移位至其他位置0elsep1=~(0x80ledindex ); if(ledindex==7) LEDDirection=! led方向; //到最后一盏灯后,改变灯的闪烁方向LEDIndex=(LEDIndex 1) %8; //每次加1后,%8保证LEDIndex在0~7之间取延迟1 ms (2)。 //延迟100ms}}
五.代码说明
使用单片机的8个P1端口针脚作为输出针脚,一个针脚控制一个LED灯。 通过将P1_0脚设定为低电平,使第1根LED灯点亮,稍微延迟时间,然后将P1_0脚设定为高电平,熄灭第1根LED,同样控制剩下的7根引线。 例如:
11111110 P1_0脚变为低电平,第1根LED灯点亮
11111101 P1_1脚变为低电平,第2根LED灯点亮
11111011 P1_2脚变为低电平,第三个LED灯点亮
11110111 P1_3脚变为低电平,第4根LED灯点亮
11101111 P1_4脚变为低电平,第5根LED灯点亮
11011111 P1_5脚变为低电平,第6根LED灯点亮
10111111 P1_6脚变为低电平,第7根LED灯点亮
01111111 P1_7脚变为低电平,第8根LED灯点亮
P1寄存器为8位,分别控制对应的8针。
正方向(从第1只LED等开始)”第8只LED灯
将初始值设定为11111110,然后向左移动一位,即可获得下一个流水灯的设定值
该初始值可以用00000001的相反表示,为111111110=~(0000001 ) ((0x01 ) )
相反方向:从第8个LED等开始---”第1个LED灯(~(0x80 ) ) (1000000 )=01111111
六.工程建设
1、编制执行程序
(1)新建项目(可以是默认操作) () ) ) ) ) )。
)2)选择cpu型号
(3)设置项目属性
)4)编写新的c文件,编写相应的代码
)5)在项目中添加c文件
)6)编译生成hex文件
2、仿真电路
选择hex文件
反向元件旋转:
添加快速标记(P1_0、P1_1、P1_2. ),单击LBL标记,然后按' a '
==========================weixin _ 44582500这一兄弟=================
搜索相关组件: