流水灯设计

article/2025/8/6 23:36:07

流水灯设计

目的与要求

通过采用单片机控制8个LED发光二极管顺序点亮的流水灯系统设计与制作,让读者了解C语言的数据类型、常量与变量、运算符和表达式等基本概念及使用方法。
设计要求:首先点亮连接到P1.7引脚的发光二极管,延时一定时间后熄灭,再点亮连接到P1.6引脚的发光二极管,直到电量最后一个连接到P1.0引脚的发光二极管,再从头开始,循环不止,产生一种动态显示的流水灯效果。

电路设计

流水灯控制系统设计电路如 图1 所示。
图1:
在这里插入图片描述

源程序设计

流水灯控制系统的源程序如下。

//程序:流水灯设计.c
//功能:采用库函数实现的流水灯控制程序
#include <reag51.h>
#incllude <intrins.h>
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整形变量i,控制空循环的次数
//返回值:无
void delay(unsigned int i)//定义延时函数
{unsigned int k;for(k=0;k<i;k++);
}
void main()						//主函数
{								//主函数开始P1=0x7F;					//P1端口输出0x7f,即01111111B,点亮P1.7连接的LEDwhile1//无限循环{							//循环体语句组开始P1=_cror_(P1,1);		//调用内部函数_cror_(),将P1的二进制数值循环右移delay(5000);			//延时}							//循环体语句组开始
}								//结束控制程序

通过向P1口写入一个8位二进制数来改变每个引脚的输出电平状态,从而控制8个发光二极管的亮灭。在 流水灯设计.c源程序中,语句“P1=0x7F;”将P1口8位引脚设置为按8位01111111输出,电量P1.7引脚连接的发光二极管。将P1端口在01111111、10111111、11011111、11101111、11110111、11111011、11111101、11111110这8种状态之间顺序转换,就可以实现流水灯效果。
容易看出,P1端口顺序彼岸花的8个状态是最高位旁边的”0“依次右移,调用内部函数 cror() 可以实现循环右移功能。程序中使用了while循环语句不停地重复着”P1端口状态循环右移→延时“的循环程序段,程序流程图如 图2 所示。
图2:

Created with Raphaël 2.2.0 循环 P1<--0x7F P1端口状态右移1位 延时

Keil C51提供_cror_()是循环右移函数,就是把低位移出去的部分补到高位去。
循环右移函数_cror_()需要两个参数。第一个参数存放被移位的数据,例如此例中的P1端口状态;第二个参数是常数,用来说明移位次数,此例中常数为1,表示右移1位。
Keil C51还提供了一个循环左移函数_crol_(),使用原理与_cror_()相同。

任务小结

本任务通过用51单片机控制连接到P1口的8个发光二极管实现流水灯效果的软、硬件设计过程,使读者初步了解C语言程序的基本结构和特点,学习如何用C语言编程来控制单片机的并行I/O端口。

举一反三

C51提供左移运算“<<”和右移运算“>>”,运算的结果是把二进制操作数左移或右移若干位。对无符号数左移后,高位移出的数丢掉,对低位补0。对无符号数右移后,低位移出的数丢掉,对高位补0。

例如:如果 aa=01111111 ,执行命令“aa>>1”后,aa=00111111。使用移位运算符实现流水灯的源程序如下。

//程序:流水灯设计2.c
//功能:采用库函数实现的流水灯控制程序
#include <reag51.h>
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整形变量i,控制空循环的次数
//返回值:无
void delay(unsigned int i)//定义延时函数
{unsigned int k;for(k=0;k<i;k++);
}
void main()						//主函数
{								unsigned char aa,i;			//定义字符变量aa,iwhile1//无限循环{							//循环体语句组开始aa=0x80;				//给变量aa赋值0x80,即10000000for(i=0;i<8;i++)		//用for循环控制逐位移动8次{P1=~aa;			//将aa的值取反后经8位P1引脚输出,~为取反运算符delay(5000);	//延时aa>>=1;			//将aa的二进制数值右移一位}					//结束循环}							//循环体语句组开始
}								//结束控制程序

http://chatgpt.dhexx.cn/article/Vk2BCrJh.shtml

相关文章

IT管理人才必备的十大能力

公众号回复&#xff1a;干货&#xff0c;领取价值58元/套IT管理体系文档 公众号回复&#xff1a;ITIL教材&#xff0c;领取最新ITIL4中文教材 正文 作为IT技术人员&#xff0c;相信没有一个人愿意永远在底层编写程序或做简单的系统维护。经过一段时间的技术和经验的积累&#x…

他,连续 3 年担任新星计划导师,这次的内容有点特别

一、新星计划 新星计划是一个发掘潜力新人、培养优质博主为目标的创作活动&#xff0c;通过为期两周的时间&#xff0c;明白为什么要写博客&#xff0c;写作的意义是什么&#xff1f;制定学习计划&#xff0c;完善Java知识体系。 二、学习计划 创作打卡阶段第1周&#xff08…

Python 彻底甩掉 Java,位居 48 种编程语言之首!

Python 彻底甩掉 Java&#xff0c;位居 48 种编程语言之首&#xff01; 昨日&#xff0c;IEEE Spectrum 杂志发布了一年一度的编程语言排行榜&#xff0c;这个排行榜已经连续发布了五年。对于每位开发者而言&#xff0c;想要衡量编程语言流行度则需要依赖相对流行的网站统计数据…

java并发问题概述

转自 https://www.jb51.net/article/131411.htm java并发问题概述 转载 更新时间&#xff1a;2017年12月25日 09:28:54 作者&#xff1a;人圭先生 我要评论 这篇文章主要介绍了java并发问题概述&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。 1什么是…

【Java基础系列教程】第一章 编程入门

一、计算机概述 1.1 计算机简介 计算机&#xff08;computer&#xff09;俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑计算&#xff0c;还具有存储记忆功能。是能够按照程序运行&#xff0c;自动、高速处…

关于程序员这14条经典定律,我全中~

定律1:最难定位的问题要么是最疑难的问题,要么是最低级的问题,这两种问题都有一个共同特征,就是让你意想不到。 举一个例子,一次代码编译不过,报函数没有定义,开始怀疑是类没有“;”结束符,然后怀疑有没有匹配的“{”,折腾了好久,最后才发现是开头的“#ifndef”定义…

系统性能优化的十大策略(强烈推荐,建议收藏)

点击关注公众号&#xff0c;实用技术文章及时了解 上篇 提升系统性能&#xff0c;榨干计算机资源是程序员的极致追求&#xff0c;今天跟大家聊聊性能优化。分为上中下三篇&#xff0c;由浅及深的写了关于性能优化的方方面面&#xff0c;并不仅仅局限于代码层面&#xff0c;希望…

JAVA工程师的十大借口,你知道哪些?

他们是近几十年来出现的新物种。他们的着装可能经常会遭到别人的吐槽&#xff0c;他们的玩笑可能别人也经常get不到笑点&#xff0c;他们心照不宣的执着让外人觉得莫名其妙。但同时&#xff0c;他们也拥有无与伦比的耐力&#xff0c;超越时代的智商&#xff0c;和横穿社会的自虐…

二八定律全面分析

二八定律 也叫 巴莱多定律 &#xff0c;是19世纪末20世纪初 意大利 经济学家巴莱多发明的。他认为&#xff0c;在任何一组东西中&#xff0c;最重要的只占其中一小部分&#xff0c;约20%&#xff0c;其余80%的尽管是多数&#xff0c;却是次要的&#xff0c;因此又称二八法则。 …

【网络技术】什么是CNI

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 Never look back unless you are planning to go that way. 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用…

java程序员找工作前需要准备的杀手锏有哪些?

高考前,我们要练兵考试和集训。”临阵磨枪不快也光 ”,找工作前,我们也必须要花很多精力去完成一些必要的准备。 “不打无准备之仗”, 精心准备和训练会对你有相当正面的作用。 有人认为“找工作要靠能力”。这话没错,我要说的是,“临阵磨枪准备的内容也是能力的一部分”…

《Java性能优化全攻略》分享

作为Java程序员&#xff0c;你希望写出高性能的代码吗&#xff1f; 什么样的互联网服务质量好?代码的高性能是必备的一环。怎样才能降低公司运营成本?提高系统容量的效率&#xff08;服务器和数据中心&#xff09;是重要的一部分。 代码看性能&#xff0c;公司重效率。怎么…

java技术点

后端架构师技术图谱 推荐: 《Java技术书籍大全》 - awesome-java-books 从初级开发者到资深架构师&#xff0c;看这些书就够了 数据结构 队列集合链表、数组字典、关联数组栈树 二叉树完全二叉树平衡二叉树二叉查找树&#xff08;BST&#xff09;红黑树B&#xff0c;B&#x…

有用但多疑的十大Java编程技术

在编码过一段时间后(哎呀&#xff0c;拿我来说&#xff0c;已经20多年了&#xff0c;当你乐享其中时&#xff0c;时间过得飞快&#xff09;&#xff0c;有人已经开始拥抱他们的习惯了。 因为&#xff0c;你知道… “会出错的事情总会出错”– 墨菲定律 这就是人们拥抱“自卫…

40000+字超强总结?阿里P8把Java全栈知识体系详解整理成这份PDF

40000 字长文总结&#xff0c;已将此文整理成PDF文档了&#xff0c;需要的朋友点赞支持一下吧。 全栈知识体系总览 Java入门与进阶面向对象与Java基础 Java 基础 - 面向对象Java 基础 - 知识点Java 基础 - 图谱 & Q/A 基础知识点复习完了以后&#xff0c;我们需要深入的理…

2020面试准备之Java 基础(理论篇)

文章目录 1、面向对象和面向过程的区别2、Java 语言有哪些特点?3、什么是 Java 虚拟机&#xff1f;为什么 Java 被称作是“平台无关的编程语言”&#xff1f;4、JDK 和 JRE 的区别是什么&#xff1f;5、Java 和 C的区别?6、面向对象的特征有哪些方面&#xff1f;7、访问修饰符…

资深程序员总结的成功十大黄金定律

《天下无贼》中由葛优饰演的黎叔曾说过一句话&#xff1a;“21世界什么最贵&#xff1f;——人才最贵。”人才对成功来说至关重要&#xff0c;而且人才和天才还是不一样的&#xff0c;天才大部分是要有天赋的&#xff0c;而人才即使你没有天赋&#xff0c;遵照规律发展&#xf…

什么是汉明窗?加Hanmming窗的作用?

1.什么是汉明窗&#xff1f; 从语音的角度说 理论&#xff1a; 语音信号是一种非平稳的时变信号&#xff0c;其产生过程与发声器官的运动紧密相关。而发声器官的状态变化速度较声音振动的速度要缓慢的多&#xff0c;因此语音信号可以认为是短时平稳的。研究发现&#xff0c;在…

hanmming窗和hamming窗的作用

什么是汉明窗&#xff1f;加Hanmming窗的作用&#xff1f; 1.什么是汉明窗&#xff1f; 答&#xff1a;我是做语音识别的&#xff0c;我就从语音的角度跟你说一下吧。 语音信号一般在10ms到30ms之间&#xff0c;我们可以把它看成是平稳的。为了处理语音信号&#xff0c;我们要对…

LFM回波信号仿真,加汉明窗,可用的matlab代码

LFM回波信号仿真&#xff0c;加汉明窗&#xff0c;可用的matlab代码 运行结果&#xff08;文尾有程序&#xff09; 在数字信号处理过程中&#xff0c;每次FFT变换只能对有限长度的时域数据进行变换&#xff0c;因此&#xff0c;需要对时域信号进行信号截断。 即使是周期信号&…