简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
描述
首先,介绍下原理。下图为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
听起来是不是很简单啊!那么下面我们来看下实现流水灯功能的三种常用方法!
第一种,总线方法实现流水灯。
这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。C程序如下:
#include
#define uchar unsigned char
#define uint unsigned int
code unsigned char tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义八只LED灯,依次点亮八只LED灯
//N毫秒的延时函数
delay_ms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; }void main(void){unchar i;while (1){for(i=0;i<8;i++) //循环点亮8只LED灯{P1=tmpled[i];delay_ms(500); //延时500毫秒}}}
第二种,移位方法实现流水灯
上一种方法是逐个将P1口的LED灯点亮来实现闲的,因此程序看起来有一点复杂。下面将一种用移位的方法。采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。下面来看具体程序:
#include
#define uchar unsigned char
#define uint unsigned int
//N毫秒的延时函数
delay_ms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; }
void main(){uchar a,i;while(1){a=0xfe; //点亮第一位LED灯for(i=0;i<8;i++){P1=a;a=a<<1; //左移一位a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); }}}
第三种,库函数实现流水灯
C52 提供了 _crol_(字符循环左移);_cror_ (字符循环右移)等库函数,包含在头文件intrins.h中。接下来还是先讲一下移位的小知识点吧。
左移。C52中操作符为“<
#include
#include
#define uchar unsigned char
#define uint unsigned int
//N毫秒的延时函数
delay_ms(uint ms) { uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; }
void main(){uint a;a=0xfe;while(1){P1=a;a=_crol_(a,1); delay_ms(500);}}
知识点:PSW寄存器。
PSW(Program StatusWord)全称为程序状态字标志寄存器,是一个8位寄存器,位于单片机片内的特殊功能寄存器区,字节地址D0H,用来存放运算结果的一些特征,如有无进位、借位等。使用汇编编程时PSW寄存器很有用,但在利用C语言编程时,编译器会自动控制该寄存器,很少人为操作它,大家只需做简单了解即可。其每位的具体含义
如图1 所示:
图 1 PWD(Program Status Word)寄存器
①CY:进位标志位,它表示运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。
②AC:辅助进位标志,又称半进位标志,它指两个8位数运算低四位是否有半进位,即低四位相加(或相减)是否进位(或借位),如有,则AC为1,否则为0。
③F0:由用户使用的一个状态标志位,可用软件来使它置1或清0;也可由软件来测试它,以控制程序的流向。
④RS1、RS0:4组工作寄存器区选择控制位。在汇编语言中这两位用来选择4组工作寄存器区中的哪一组为当前工作寄存区。
⑤OV:溢出标志位,反映带符号数的运算结果是否有溢出。有溢出时,此位为1,否则为0。
⑥P:奇偶标志位,反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个l(如11001100B,其中有4个1),则P为0,否则P为1。
打开APP精彩内容
点击阅读全文
简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...相关推荐
- 2015 年蓝桥杯 C 语言 B 组省赛第 3 题: 三羊献瑞 (三种方法 + 详细分析)
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=1366 题目 三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉+ 三 羊 献 瑞 ------------------ ...
- 单片机c语言开发实验心得,在单片机C语言编程中的心得体会
在单片机C语言编程中的心得体会在单片机C语言编程中的心得体会 在单片机C语言编程中的心得体会 作者:彭树林 在单片机C语言编程中使用恰当的`优化手段,可以写出简洁高效的代码.以下是笔者在C51编程过程 ...
- 51单片机c语言编程100,51单片机C语言编程100例.doc
51单片机C语言编程100例.doc 目 录实例3用单片机控制第一个灯亮3实例4用单片机控制一个灯闪烁认识单片机的工作频率3实例5将 P1口状态分别送入P0.P2.P3口认识I/O口的引脚功能4实例6 ...
- 51单片机c语言工作手册,51单片机C语言编程手册
51单片机C语言编程手册 1 第一章 介绍 这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些 新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不 ...
- 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解
我们在用c语言编程时往往第一行就是头文件,51单片机为reg51.h或reg52.h,51单片机相对来说比较简单,头文件里面内容不多,像飞思卡尔.ARM系列的单片机头文件往往内容就非常多,尽管如此,对 ...
- 51单片机c语言内存使用,51单片机C语言编程之内存优化
原标题:51单片机C语言编程之内存优化 最常见的是以下两种 ① 超过变量128后必须使用compact模式编译 实际的情况是只要内存占用量不超过 256.0 就可以用 small 模式编译 ② 128 ...
- c语言从入门到精通 当当,51单片机C语言编程从入门到精通
本书立足于单片机的各类型应用技术,采用大量实例和程序逐行解说的方式,详细介绍51单片机和C语言编程开发与应用技术. 内容特点: 1 立足于单片机工程应用:由浅入深,结合丰富的开发实例,介绍51单片机C ...
- 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt
单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...
- PIC单片机与PIC单片机C语言编程简介
对于计算机学院与电子学院相关的同学来说,单片机一定不是一个陌生的概念.在大学的学习生涯中,经常用于教学的是MCS-51系列单片机.其实,除了MCS-51单片机外,还有一类单片机--PIC单片机. PI ...
最新文章
- 刷新三项世界纪录的跨镜追踪(ReID)技术是怎样实现的?进来了解一下
- 为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory
- networkx 有向图强连通_leetcode刷题(四):搜索(深度优先搜索,广度优先搜索)拓扑排序,强连通分量...
- 铁路运货的运费与路程远近java_JAVA铁路运货的运费与路程远近及货物的重 – 手机爱问...
- 不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
- spark环境搭建(idea版本)
- Spring Web Flow 2.0 入门详解
- Linux下 /dev/null 21 相关知识说明
- 第三次学JAVA再学不好就吃翔(part84)--增强for循环
- executor线程池框架_如何使用Java 5 Executor框架创建线程池
- [html] 实现九宫格布局
- 【CodeForces - 340D】Bubble Sort Graph (思维,nlogn最长上升子序列类问题)
- sql2000 mysql 兼容_SQL Server2000如何恢复数据库
- multisim怎么设置晶体管rbe_怎么在multisim14里仿真电路
- 什么是云计算时代?学云计算能做什么呢
- 数据结构—B树(思维导图)
- 简单提高MIDI音量的方法
- 11.什么是Heuristic
- Ouino法国学习系统评价它是如何比其他学习软件
- RPL协议的原理与安全机制
热门文章
- hdu 5584 gcd/lcm/数学公式
- Oracle SQL的优化 【转】
- Java继承知识之基本控制语句(if、switch与穿透现象)
- 检测电脑硬件的软件_慎用优化软件 不然I7也会卡
- Python使用reduce()函数计算多个集合的并集与交集
- mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...
- simulink仿真实例_又见Simulink库模型之(9):自定义函数
- OpenCV中cvLoadImage()函数和cvCreateImage()函数的异同之处!
- 从入门到精通:卷积神经网络初学者指南
- 一般柱子与柱子的距离_97讲珠宝展柜制作厂家谈谈珠宝展柜一般的尺寸是多少...