目录
一,STC单片机模块

我们程序中要点亮的LED灯的位置如下图。
我们程序要用到的针脚如下图

二,LED模块
电路图如下

8个LED,全部点亮 每一bit位 都需要设置为0
二进制是0000 0000 。如果只点亮D1一个,只需要将D1位置的bit位设置为0
所以二进制就是1111 1110 ,对应十六进制就是FE
要实现闪烁,就需要LED 的电频 给一会为0在隔一会为1,就需要添加一个延时函数。
在STCAI——ISP中有个 软件延时计算器


这里需要选择合适的系统时钟频率和8051指令集。
我这里用的STC8952RC芯片的频率是12MHz,指令集是STC-Y1
将生成的函数 复制到自己代码中,适当修改即可。我的代码如下
/**
* 函 数:延时函数 毫秒
* 参 数:ms 延时多少毫秒
* 返 回 值:无
*/
void Delay_ms(int ms) //@12.000MHz
{
unsigned char data i, j;
while(ms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
三,创建Keil项目
详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客
四,代码
#include <REGX52.H>
/**
* 函 数:延时函数 毫秒
* 参 数:ms 延时多少毫秒
* 返 回 值:无
*/
void Delay_ms(int ms) //@12.000MHz
{
unsigned char data i, j;
while(ms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
/**
* 函 数:主函数
* 参 数:无
* 返 回 值:无
*/
void main()
{
while(1)
{
P2=0xFE; //1111 1110 D1亮
Delay_ms(500); //延时500毫秒
P2=0xFF; //1111 1111 D1熄灭
Delay_ms(500); //延时500毫秒
}
}
五,代码编译、下载到51单片机
代码编译请参考
《51单片机STC89C52RC——代码编译-CSDN博客》
代码下载请参考
《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》
六,效果

954

被折叠的 条评论
为什么被折叠?



