3.单片机最小系统组成
单片机+电源+晶振+复位电路
4.机器周期(运行速度)
时钟周期,一般也称振荡周期(如果晶振的输出没有经过分频就直接作为cpu的工作时钟,则时钟周期就等于振荡周期),即CPU的晶振的工作频率的倒数,是计算机中最基本的、最小的时间单位。对于单片机来说,时钟周期是单片机的基本时间单位。
机器周期是指CPU完成一个独立操作所需要的时间,12个时钟周期是一个机器周期。
对于11.0592M的晶振来说,一个机器周期为:1/11.0592*12≈1.085um。
5.点亮led流水灯
点亮led流水灯是学习使用51单片机的第一步,也是大多数人学习51单片机收获的第一份成就感吧。
LED灯实际上就是发光二极管的简称,普通发光二极管的工作电压一般是1.6v~2.1v,阻值为150Ω~3000Ω。
这是我的学习板上led灯模块的原理图:
这8个LED灯对应主控芯片上P10~P17这8个引脚,是共阳极接法,低电平点亮,点亮方法常用有两种:
①用特殊功能位声明,例如声明led1:sbit led1 = P0^1,则led1 = 0便是亮,led1 = 1便是灭;
②用寄存器P0直接控制8个led流水灯,P0由两个十六进制数表示对应8个二进制数这八个二进制数由高到低对应led8~led1,所以可以通过给P0赋值来控制led灯
如 P0 = 0xff就是全灭,P0 = 0x00就是全亮
可以通过for函数一类控制依次亮灭设计成成跑马灯,例如:
#include <reg52.h>
#include <intrins.h>
unsigned int a;
unsigned int b;
unsigned int c;
void main()
{
c = 0xfe;
P1 = c;
a=10000;
while(a--);
while(1)
{
for(b=0;b<8;b++)
{
c = _crol_(c,1);
if(c!=0xfe)
{
P1 = c;
a=10000;
while(a--);
}
}
for(b=0;b<8;b++)
{
c = _cror_(c,1);
P1 = c;
a=10000;
while(a--);
}
}
}
6.使用led数码管显示
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
LED显示器工作方式有两种:
①静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
②动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
我的学习板上的led数码管模块原理图为:
这是四位共阳极数码管四个位选端对应P20~P23,每位数码管由a、b、c、d、e、f、g、h8个led灯组成通过P0^0~P0^7等8个引脚控制
控制方法为先选位选端,然后通过P0控制显示的数字,例如让第一位显示6:
#include<reg52.h>
sbit we1 = P2^0;
void main()
{
while(1)
{
we1 = 0;
P0 = 0x82;
while(100--);
we1 = 1;
}
}