金沙滩51单片机LED 流水灯程序
我们学了点亮一个 LED 小灯,然后又学了 LED 小灯闪烁,现在我们要进一步学习如何让 8 个小灯依次一个接一个的点亮,流动起来,也就是常说的流水灯。先来看 8 个 LED的核心电路图,如图 4-12。
采用字节操作方式点亮LED灯
P0,代表了 P0.0到 P0.7 的全部 8 个位。比如我们写 P0 = 0xFE;转换成二进制就是 11111110B,所以点亮 LED字节操作为:
#include <reg52.h>sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;void main()
{ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;P0 = 0xFE; //向P0写入数据来控制LED小灯while (1); //程序停止在这里
}
流水灯程序
我们下边要进行依次亮和灭,怎么办呢?从这里就可以得到方法了,如果想让单片机流水灯流动起来,依次要赋给 P0 的数值就是:0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F。
在我们的 C 语言当中,有移位操作和取反操作,其中<<代表的是左移,>>代表的是右移,~ 表示按位取反。
- 左移运算:
x<<k:x左移k位,并在右端补零。
左移:无论是有符号数,还是无符号数,左移动都是向左移动,高位丢弃,低位补0.
例如:
unsigned char x = 0x34; ----->二进制数:0011 0100
内存中的形式为:0011 0100
X<<1 ==> 移位前:0011 0100
移位后:0110 1000 ----->0x68 ----->十进制数:104
- 右移运算:
逻辑右移:
x>>k:x右移k位,并在左端补零。
右移:右移分为以下两类
逻辑右移(针对无符号数): 向右移动,高位补0,低位舍弃。
例如:
unsigned char x = 0x34;==》二进制数:0011 0100
内存中的形式为:0011 0100
X >> 1 移位前:0011 0100
移位后:0001 1010 ------>0x1a ------>十进制数:26
- 取反(~)
它是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。比如 a = ~(0x01); 0x01 的二进制是 00000001B,按位取反后就是 11111110B,那么a 的值就是 0xFE 了。
#include <reg52.h>sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;void main()
{unsigned int i = 0; //定义循环变量i,用于软件延时unsigned char cnt = 0; //定义计数变量cnt,用于移位控制ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;while (1) //主循环,程序无限循环执行该循环体语句{for(cnt=0;cnt<8;cnt++){P0 = ~(0x01 << cnt); //P0等于1左移cnt位,控制8个LEDfor (i=0; i<20000; i++); //软件延时}}
}
金沙滩51单片机LED 流水灯程序相关推荐
- pic单片机流水灯循环右移c语言,PIC单片机LED流水灯程序
PIC 单片机 LED流水灯程序 ;************************************************************* include ;*********** ...
- 流水灯c语言程序tm,51单片机LED流水灯课程设计任务书+论文
郑州工程技术学院课程设计 设计题目:LED流水灯设计 学 院:机电与车辆工程学院 专 业:16电气自动化技术专业班 级普招二班 姓 名:王*&刘* 指导教师:李* 日 ...
- 51单片机LED流水灯、走马灯的实现
目录 1. 硬件设计 2. 软件设计 流水灯: 跑马灯: 1. 硬件设计 流水灯的原理: 图中主要包括51单片机芯片和流水灯模块,流水灯模块接在了单片机的P2口,500欧电阻是用来保护电路的.由原理图 ...
- 51单片机 花样流水灯程序
/**采用T0定时器进行延时,每次延时的时间为1ms LED小灯的闪烁变化为500ms LED的样式有三种: 1.从右往左.在从左往右 2.从边缘向中间靠拢 3.从右边依次点亮,在从左边依次写灭 ** ...
- 51单片机LED流水灯
目录 1.如何点亮LED 2.方案1 1.想法的提出 2.程序编写 3.方案二(改善后) 4.注意事项: 1.如何点亮LED LED正极接正电,负极接负极则点亮:cup通过程序直接访问寄存器(8位一组 ...
- led流水灯c语言数组程序,LED流水灯程序 一维数组写法
LED流水灯程序 一维数组写法 /*********** (C) COPYRIGHT 201 2************ * 程序作者: 蓝雨(QQ:983931459 ,Email:chenheng ...
- 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
描述 首先,介绍下原理.下图为主控芯片和流水灯模块的原理图.流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯.相反,如果要LED灯熄灭,就要把P1口的电平变为高电平 ...
- 【制作】基于金沙滩51单片机的电子密码锁程序
基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...
- 用寄存器HAL库完成LED流水灯程序
重庆交通大学信息科学与工程学院 <嵌入式系统开发>课程 作业报告(第4周) 班 级: 通信工程2001 姓名-学号 : 阎桂董-632007030622 实验项目名称: 作业题目 实验项目 ...
最新文章
- java判断回文字符串几种简单的实现
- python 日期_python日期操作
- ubuntu16.04输入密码后返回登录界面(反复登录问题+.Xauthority无法删除无法改权限问题)
- 深入理解kestrel的应用
- 16.IDA-列出函数中存在的全部call(函数调用窗口,查看函数内调用了哪些call)
- python输入正整数n、求n以内能被17整除的最大正整数_求100之内自然数中最大的能被17整除的数资料...
- 每日linux命令学习-历史指令查询(history、fc、alias)
- python ----元组方法以及修改细节
- 流水账一周小记[2009-9-20]
- jsp用下拉框代替文本框_PPT封面太丑?教你三个高手都在用的美化技巧
- win、linux下tomcat内存的修改
- # 二极管的种类(1)-稳压二极管的参数与应用
- 破天服务器的系统,《新破天一剑》束缚系统
- python 学生编程--3 多彩同心圆
- Jieba中文分词 (二) ——词性标注与关键词提取
- New Year Garland
- [原创]Java Web——外卖配送系统/在线点餐系统
- 共享店铺靠谱么?共享店铺哪家好?全方位测评企雀共享店铺,黑谷共享店铺!
- Cg学习之01_vertex_program
- StarCraft开发的荆棘之路
热门文章
- 集成无线收发器和8位RISC MCU的SOC芯片
- Anaconda 添加镜像源
- [-UI设计-] UI设计文档
- 7.纯 CSS 创作一个 3D 文字跑马灯特效
- WinAPI-函数OpenProcess/ReadProcessMemory/WriteProcessMemory
- 请求 转发(forword)和重定向(redirect)
- Placeholder 传入值
- python的unittest面试题_unittest 知识问答题-也许面试会有用-欢迎补充
- linux x11 错误,oracle安装报cannot connect X11错误
- 基于Python3+Scapy的数据包流量特征批量分析工具