首页 > 编程知识 正文

51单片机流水灯,51单片机32心形流水灯原理图

时间:2023-05-06 19:23:13 阅读:45316 作者:1532

单片机 流水灯一、简单

用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这一兄弟=================

搜索相关组件:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。