这篇文章我们来入门51单片机编程的第一小节,我们来学习一下如何使用51单片机点亮LED和如何使用按键控制LED产生流水灯等
1.电阻的数码表示方法
对于电阻而言,数码表示法是用三位数字来表示其阻值。具体规则如下:
前两位数字:代表有效数字,即阻值的基本组成部分。
第三位数字:表示10的幂次,也就是要将前两位数字乘以 10 的该幂次方,从而得到实际的电阻阻值,单位为欧姆(Ω) 。
实际举例如下:
2.寄存器和驱动器
我们来看一下在芯片当中,寄存器是怎么操作I/O端口的
寄存器在单片机当中用于存储数据,往往在下一次触发信号到临之前保存上一个时刻的数据
寄存器通过驱动器的作用,会有强大的驱动能力,进而可以控制I/O口的输出高电平或者输出低电平
在51单片机当中我们采用的是TTL电平,也就是1表示5V,0表示0V
3.点亮一个LED
我们先来看一下在51开发板当中LED模块的原理图:
我们如果想要点亮D1这个编号的LED,我们只需要在D1这个LED一端输出低电平,这个时候就跟LED另一端的VCC形成一个闭合回路,点亮LED。
代码:
1 2 3 4 5 6 7 8
| #include <REGX52.H>
void main(){ P2=0xFE; while(1){ } }
|
4.LED闪烁
在实现LED闪烁的时候,我们可以使用简单的延时函数进行一个延时,可以在STC-ISP当中使用延时函数生成工具生成一个固定时长的延时函数
实现LED闪烁的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <REGX52.H> #include <INTRINS.H>
void Delay500ms() { unsigned char i, j, k;
_nop_(); _nop_(); i = 23; j = 205; k = 120; do { do { while (--k); } while (--j); } while (--i); }
void main(){ while(1){ P2=0xFE; Delay500ms(); P2=0xFF; Delay500ms(); } }
|
注意点:在引入空语句函数_nop_()之前需要先引入头文件#include<INTRINS.H>
5.LED流水灯设计
我们使用最简单的方式来实现一个流水灯,使用不断循环来实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <REGX52.H>
void Delayxms(unsigned x) { unsigned char i, j; while(x){ i = 12; j = 169; do { while (--j); } while (--i); x--; } }
void main(){ while(1){ P2=0xFE; Delayxms(500); P2=0xFD; Delayxms(500); P2=0xFB; Delayxms(500); P2=0xF7; Delayxms(500); P2=0xEF; Delayxms(500); P2=0xDF; Delayxms(500); P2=0xBF; Delayxms(500); P2=0x7F; Delayxms(500); } }
|
6.无符号数和有符号数的表示范围
我们在这里主要是要记住不同符号数的表示范围
无符号数的取值范围为0~2^n-1
有符号数的取值范围为-2^(n-1)到2^(n-1)-1
我们需要把这几个重点的知识点记住即可