单片机 c语言 p1控制流水灯,单片机控制的流水灯程序
我们前边学了点亮LED小灯,然后又学了LED小灯闪烁,下边我们要进一步了解一下如何让8个小灯依次一个一个点亮,流动起来。
图1 LED小灯电路图
通过前面的课程,我们可以了解到控制引脚P0.0通过了74HC245控制DB0,P0.1控制DB1......P0.7控制DB7。我们还学到一个字节是8位,我们如果写一个P0,就代表了P0.0到P0.7的共8个位。比如我们写P0 = 0xFE;转换成二进制就是0b11111110,所以点亮LED小灯的程序,实际上我们可以改成另外一种写法,如下所示。
#include
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
ENLED = 0;
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 1;
ADDR3 = 1; //74HC138开启三极管
P0 = 0xFE;
while(1); //程序停止在这里
}
通过上边这个程序我们可以看出来,可以通过P0来控制所有的8个LED小灯的亮和灭。我们下边要进行依次亮和灭,怎么办呢?从这里就可以得到方法了,如果想让单片机流水灯流动起来,依次要实现的结果是:0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F。
在我们的C语言当中,有一个移位操作,其中<>代表的是右移。比如a = 0x01 <
还要学习另外一个运算符~,这个符号是按位取反的意思,同样,按位取反也是针对二进制而言。比如a = ~(0x01),0x01的二进制是0b00000001,按位取反是0b11111110,那么a的值就是0xFE了。
学会了这两个符号后,那么我们就可以把流水灯的程序写出来,先把程序贴上。
#include
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
unsigned char j = 0;
unsigned int i = 0;
ENLED = 0;
ADDR0 = 0;
ADDR1 = 1;
ADDR2 = 1;
ADDR3 = 1; //74HC138开启三极管Q16
while(1) //程序死循环
{
P0 = ~(0x01 <
for(i=0; i<20000; i++); //延时
if(j == 8) //如果j等于8,重新给j赋值0
{
j = 0;
}
}
}
这里我只讲两种情况,当j等于0的时候,1左移0位还是1,那么写成二进制后就是0b00000001,对这个数字按位取反就是0b11111110,亮的是最右边的小灯。当j等于7的时候,1左移7位就是0b10000000,按位取反0b01111111,亮的是最左边的小灯。中间 过程大家自己分析一下。
流水灯结束后,关于小灯的讲解,我们暂时告一段落,后边还有小灯的高级用法,我们到时候再详细讲解。
单片机 c语言 p1控制流水灯,单片机控制的流水灯程序相关推荐
- 单片机c语言电梯程序设计,基于51单片机的模拟电梯控制系统设计.doc
摘要:本文介绍了一种电梯模拟控制系统,包括怎样利用对STC89C52进行编程从而对电梯实现自由控制的方式.该系统采用了STC89C52芯片进行控制,用单片机进行编程,能实现的功能非常多而且方便设计,并 ...
- 单片机c语言程序设计叶俊明,单片机C语言程序设计
本书的主要内容有51单片机的芯片引脚和*小系统.Keil C51编写软件与Proteus仿真软件的使用.C51语言.51单片机的基础实践.51单片机的中断系统.51单片机常见的接口电路以及十个实验例子 ...
- 单片机C语言数据存储原理,介绍单片机中C语言的数据存储与程序编写
一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区 ...
- 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...
一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...
- 例说51单片机C语言答案,例说51单片机(C语言版)(第3版)
章 轻松看MCS-51 1 1-1 微型计算机与单片机 2 1-2 8051基础知识 2 1-2-1 8x51的结构 2 1-2-2 89C51/89S51的封装与引脚 3 1-2 ...
- 单片机c语言篮球比分_基于单片机的篮球比赛计时计分器的设计
摘 要:本系统是采用单片机AT89C51作为本设计的核心原件.利用7段共阴LED作为显示器件.在此设计中共接入了2个7段共阴LED显示器,用于记录得分和比赛时间,显示范围可以达到0到99分,基本满足赛 ...
- 单片机c语言数码显示实验报告,单片机c语言版数码动态显示实验报告.doc
单片机c语言版数码动态显示实验报告 数码管动态显示实验一.实验要求在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输 ...
- 单片机C语言中的位运算符,单片机c语言教程第八课 运算符和表达式(位运算符)...
学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行按位操作,从而使单片机C语言也能具有一定的对硬件直接进行操作的能力.位运算符的作用是按位对变量进行运算,但是并不改变参 ...
- 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具
在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个 ...
最新文章
- 整合框架过程记录日志
- 基于java语言轻量级实时风控引擎
- php mysql 到表最后_如何在PHP中获取MySQL表的最后插入ID?
- bzoj4569 [Scoi2016]萌萌哒 并查集+st表
- 在32位windows 7下安装PyLucene
- OC-内存管理的一些要点
- mongoDB - 插入数据
- react 遍历渲染
- 在Android中实现一个简易的Http服务器
- 蓝湖+Vue.js+SosoApi+Spring Cloud+Rancher——项目架构总结介绍
- 开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?
- 前端实现数据base64解码
- Beamer简易教学 | 4 文本盒子
- CJOJ 1659 【中学高级本】倒酒
- Shodan Hacking
- 用虚拟机写java程序_JAVA是什么?java是狗屁!写java程序说穿了就是在对java虚拟机这个软件进行应用。...
- 深度学习框架之争:TensorFlow退守工业界,PyTorch主导学术界?
- MySQL 8.0 新特性之检查约束(CHECK)
- 调用pyspark.ml库对信用卡逾期进行预测
- 什么是wind量化平台接口?
热门文章
- RTL-8201以太网芯片外围电路
- IEEE 802.15.4协议完整中文版 - 4.2 IEEE 802.15.4 WPAN 的组件
- “燕云十六将”之Lion李哲
- acer台式电脑怎么重装系统_手把手教你宏碁台式机如何重装系统
- 子、辰、卯、酉、午、辰时是几点到几点钟「知识普及」
- WOT讲师杨钊:人工智能将在不同应用场景逐步落地
- 【入门】小明的幸运数
- 武汉新华电脑学校计算机协会,第11届全国大学生计算机应用能力与信息素养大赛颁奖典礼!...
- 【放码过来】谈双重支付
- 曾经我创办了个公司,然后被投资人踢出去了......