单片机

数组与移位

1.数组运用实现上一节的功能其实还有更简洁的方法去书写,那就是引用数组,用数组存取灯的八种状态值。定义含有8个元素的数组如下:unsignedcharLEDSET[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};每个元素轮流赋值给P0后延时即可。

定时时长的做法

1.“水量”的确定我们已经懂得怎么选用“试管”了,如何装多大的“水量”来决定定时的时长呢。首先我们先拿“大试管”来说,定时器0有两个寄存器分别是TH0和TL0,大家再次粗浅的把TH0和TL0认为是两个8位的变量先吧。因为我们用的是“大试管”,

最终按键程序

1.代码及解析我们先贴出代码,下面再进行解析原理u8KEY_Scan(u8mode,u16TIMES){staticu8key_up=1;//按键松开标志staticu16times;if(mode)key_up=1;//如果mode等于1,

外部中断测脉冲个数

1.外部中断的常用功能外部中断经常用来记录外部脉冲的个数,也就是当我们使用外部中断1时,如果想记录自身单片机的某个引脚的下降沿个数,只需用杜邦线把这个引脚和P3.3连接即可。比如P2.3引脚产生这样的电平无规律跳转,则下降沿的个数为5所以我们就用外部中断1来实现记录K4按键从按下到松手的抖动过程中经历

多个数码管显示

1.余晖效应流水灯如果在流速太快的基础上再加速,那么我们看到的则是一排灯都在亮着,这就叫人眼的余晖效应。同理,我们想让多个数码管同时亮,那么就要让三八译码器的IO0~IO5每个输出引脚轮流快速切换出低电平,需要显示什么数字再由P0的8个IO端口控制。

无源蜂鸣器鸣叫

1.输出方波图解我们现在要给单片机IO端口输出4khz的方波。现在我们算出方波的周期:1/(4*1000)s=0.00025s=0.25ms高电平时间:(0.25/2)ms=0.125ms低电平时间:(0.25/2)ms=0.125ms2.驱动代码因为我们只写过最低延时1ms的函数,

按键模式

1.前讲回顾在上一讲的代码里如果我们按下按键一直不松手,则灯会一直闪烁。这是因为“稳定接触状态”一直保持着长时间的低电平,所以程序的二次“if(KEY4==0)”判断一直满足条件就会在“LED2=0;”和“LED2=1;”之间来回切换,再加上50ms延时才会保持亮一段时间灭一段时间所体现的LED闪烁。

IIC入门代码讲解

因IIC时序细节的理解不是一两篇文章就能描写清楚的,这里笔者只针对《手把手教你学51单片机》文档第14章内容做补充辅助理解,如果大家想彻底弄明白IIC的所有通信细节过程,那么就需要“好事多磨”了。我们现在先贴出IIC的时序流程图1.起始信号函数我们同样是运用宋老师的代码,

数组&数码管

1.回顾大家还记得我们用数组来存取流水灯的状态值吗,那么数码管也是一样的,我们可以知道数码管能显示出在单片机编程中最常见的数字和字母为0~9,A,b,C,d,E,F这16种状态,那么这一讲我们实现单个数码管从0到F间隔一秒来循环显示。2.单片机内存首先要知道我们写的程序是占用内存的,

进一步理解中断函数

1.另一个外部中断前面两讲都是围绕外部中断0(P3.2的功能)来讲解,这里我们也还有一个外部中断1(P3.3的功能)。P3.3要想实现上一讲的功能只需杜邦线接下面的IO端口即可代码就是把“EX0”改为“EX1”,“IT0”改为“IT1”。interrupt后面的0要改为2,