第一章 LED小灯的闪烁程序
STC89C52RC,晶振用的是11.0592MHz。
实验内容如下:
1.电路图,电路板实操。
2.程序源码,附加程序代码解释,重点解释:for延时代码计算时间。
3.实物图,led灯闪烁。
链接:工程源码,内置文档每句带有详细解释写的电路与程序详解文档
一、电路图
单片机STC89C52RC引脚使用的是P0.0,连接LED灯L0.0的负极。
LED的灯正极连接排阻2.2K,JPP0连接5V。
P0.0=0,LED灯亮;P0.0=1,LED灯灭。
二、程序代码解释
名称:闪烁的LED说明:LED按设定的时间间隔闪烁,源代码展示
#include<reg51.h>//头文件,每个程序都必须有。
#define uchar unsigned char//定义8位无符号数据的宏定义,可以缩短程序,可读性好。
#define uint unsigned int//定义16位无符号数据的宏定义,可以缩短程序,可读性好。
sbit LED=P0^0;//单片机的引脚定义,LED可以代替P0.0引脚。
//延时程序。
void DelayMS(uint x)//X=1,就是延时1ms。
{
uchar i;//定义一个局部参数i。
while(x–)//循环X–,直到0为止跳出while循环。
{
for(i=0;i<120;i++);//for循环,循环120次,当i>120时跳出for循环。
}
}
//主程序。
void main()//主程序。
{
while(1)//while循环。
{
LED=LED;//P0.0取反,是取反符号。
DelayMS(500);//延时500ms。
}
}
重点解释:for延时代码计算时间
51单片机的机器周期是12个时钟周期,12M晶振就是一个时钟周期是1/12US,1/12M12=1US,即51的机器周期是1US。
而程序中的正文是一个for语句是8个机器周期,大概算一下就是1208*1us=960us,约等于1毫秒。
三、实物图,led灯闪烁
照片拍不出闪烁,见谅,下面是烧写,用的串口烧写。