单片机 流水灯

单片机 流水灯单片机流水灯一、简述  通过Proteus仿真单片机最小系统+流水灯的显示电路。用Keil编写相应执行文件。  源码、仿真电路图打包:链接:https://pan.baidu.com/s/1ZetoHZGz-jebnAd_BQGAUg密码:h8jc二、效果三、工程结构1、Keil编程2、仿真电路图四、源文件LiuShui.c文件#i…

大家好,又见面了,我是你们的朋友全栈君。

单片机 流水灯

一、简述

    通过Proteus仿真单片机最小系统+流水灯的显示电路。用Keil编写相应执行文件。

    源码、仿真电路图打包:链接:https://pan.baidu.com/s/1ZetoHZGz-jebnAd_BQGAUg 密码:h8jc

二、效果

单片机 流水灯

三、工程结构

1、Keil编程

单片机 流水灯

2、仿真电路图

单片机 流水灯

四、源文件

LiuShui.c文件

#include<reg51.h>

//void Delay1ms(unsigned int count) //软延时count毫秒
//{
//	unsigned int i,j;
//	for(i=0;i<count;i++)
//	for(j=0;j<120;j++);
//}

void Delay1ms(unsigned int count)//延时count*50ms
{
	unsigned int i;
	TMOD=0x01;			   //选用定时器0且工作在方式1
	TH0=0x3c;			  //设置初值0x3cb0
	TL0=0xb0;
	TR0=1;      //开启定时器
	for(i=0;i<count;i++) //循环count次,每次定时50ms,总共count*50ms
	{	
		while(TF0!=1);// 每次定时50ms (溢出时才会跳出循环)
		TH0=0x3c;	 //重置初值0x3cb0
		TL0=0xb0;
		TF0=0;		   //软置溢出位
	} 
	TR0=0;      //关闭定时器
}

void main()
{
	unsigned char LEDIndex = 0;	  //指示第几个灯
	bit LEDDirection = 1; //控制流水灯依次亮灭的方向

	while(1)			  
	{
		if(LEDDirection)			//正方向,灯由上往下亮灭
			P1 = ~(0x01<<LEDIndex);	  //P1寄存器控制P1并口	 电压为0时灯亮,先将要亮灯的某一位置1,其余置0,然后取反,就变为只有指定位为0,然后移位实现其他位置0
		else
			P1 = ~(0x80>>LEDIndex);	
		if(LEDIndex==7)
			LEDDirection = !LEDDirection;	//到了最后一盏灯,改变灯的亮灭方向
		LEDIndex = (LEDIndex+1)%8;	 //	  每次加一,%8保证 LEDIndex	取值在0~7之间
		Delay1ms(2); //延时100ms
	}
}

 

五、代码说明

 

    选用单片机的P1端口8只引脚作为输出脚,1只引脚控制1只LED灯。设置P1_0脚为低电平,使得第1只LED灯点亮,并延时一点时间,然后设置P1_0脚为高电平,熄灭第1只LED,以此同理控制其余7只引脚。比如:

11111110   P1_0脚为低电平,使得第1只LED灯点亮

11111101   P1_1脚为低电平,使得第2只LED灯点亮

11111011   P1_2脚为低电平,使得第3只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,然后每左移1位,得到下一个流水灯的设置值

而这个初值可以用 00000001的取反来表示即 11111110=~(00000001)=~(0x01)

反方向:从第8只LED等–》第1只LED灯    ~(0x80)=~(10000000)=01111111

六、工程建立

1、编写执行程序

(1)新建Project  (默认操作即可)

单片机 流水灯

(2)选择cpu型号

单片机 流水灯

(3)设置Project  属性

单片机 流水灯

单片机 流水灯

单片机 流水灯

(4)新建C文件,编写相应代码

单片机 流水灯

(5)将C文件添加到工程

单片机 流水灯

(6)编译生成hex文件

单片机 流水灯

2、仿真电路

单片机 流水灯

选择hex文件

单片机 流水灯

元件旋转翻转:

单片机 流水灯

快速添加标签(P1_0,P1_1,P1_2…),点击“LBL”标签,然后按”a”

单片机 流水灯

 

=================================回复 weixin_44582500 这位兄弟=============

搜索相关元件:

单片机 流水灯

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132648.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • arp欺骗攻击原理_arp攻击的原理及防范

    arp欺骗攻击原理_arp攻击的原理及防范ARPSpoofing什么是ARP协议一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网传输的网卡却不能直接识别IP地址,所以用APR解析协议将IP地址解析成MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,来查询设备的MAC地址。在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照表关系。ARP缓存表的生命周

  • typedef和define具体的具体差别

    typedef和define具体的具体差别

  • String类–深入理解

    String类–深入理解

  • hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware

    hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware下载一个ISO格式的XP系统镜像,把ISO文件设置为虚拟机的光驱,启动虚拟机,会自动从ISO镜像文件启动,创建虚拟机,创建虚拟磁盘VHD,然后加入启动项。打开本系统的磁盘管理,对虚拟磁盘进行格式化,并设置为活动分区(有一个就行)然后启动虚拟机,给虚拟机安装系统,就可以了。我是启动虚拟机后进入PE,然后选择Ghost32装的。如果启动虚拟机鼠标不能动,就点“

  • vscode新建html文件并快速生成标准的html代码_用visual studio code制作网页

    vscode新建html文件并快速生成标准的html代码_用visual studio code制作网页1、Ctrl+N快捷创建文件2、Ctrl+s快速保存文件,保存时用.html结尾保存3、Ctrl+可以让vscode的字体变大,Ctrl-可以让字体变小4、输入!,然后按下tab健可以快速生成页面骨架结构5、单击鼠标右键,点击openindefaultbrowser可以打开浏览器预览页面效果,前提是安装了浏览器插件…

  • 视频转gif mac_有没有录屏时生成gif的软件

    视频转gif mac_有没有录屏时生成gif的软件Mac自带QuicktimePlayer上次完成word添加好看的格式化代码后,又想着做一个gif图演示功能效果,展示出来会更好。就来摸索摸索了…简单的工具图示如下:1、Launched中搜索2、双击触摸板3、按照工具提示来随意录屏吧~AppStore下载工具PicGIFLite双击图标简单的界面,更深入我心,实测有效,就是gif图片分辨率不高。下图是我做的实测的效果(这个滑动的功能后…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号