在此博客上记录2023至2024年,我在寒假假期所学有关蓝桥杯—单片机的相关知识。方便日后整理温习。
(0基础入门一)
Keil5 编写程序 STC-ISP 下载程序
1.每一个不同的工程项目对应一个不同的文件夹。每个项目下应该有一个固定的文件夹user。
2.芯片选择AT89C52。(芯片的选择不一定,根据要求进行选择)
3.打开“品”字工具栏,修改相关信息。(注意要对应)
4.点开魔术棒勾选生成HEX文件。
找到LED灯连接的IO口,了解LED是零量还是一量。找到是P几口控制这些LED灯。从图中可知,P1口控制这8盏LED灯
1.右键点击User栏添加用户主程序(main.c)
2.引用51头文件(右键添加即可)
3.编写主体框架
//引用头文件
#include
//程序主体框架
void main()
{
while(1)
{
//程序代码地方
}
}
点亮任意LED灯
//假设点亮最第一盏灯
#include
void main(){
while(1){
P1_0 = 0;
/*P1 = 0xfe,oxfe = 0111 1111*/
}
}
1.延时函数生成,并删除nop语句
2.函数生成
//假设第一盏LED灯闪烁
#include
//延时函数生成
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//主函数区域
void main(){
while(1){
P1_0 = 0;
Delay500ms();//引用延时函数
P1_0 = 1;
Delay500ms();
}
}
程序思路:
方法一:通过给P1口赋不同的值从而达到流水灯的效果
方法二:通过内置函数库实现流水灯效果
_crol_ :循环左移 _cror_:循环右移 所属库:intrtins.h
#include
#include
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
unsigned char Led = 0xfe;//0111 1111
void main(){
while(1){
P1 = Led;
Delay500ms();
Led = _crol_(Led,1);
}
}
首先在STP-ISP中将定时长度改为1毫秒,并复制代码
将代码改为
void Delay(unsigned int x) //@12.000MHz
{
unsigned char i, j;
while(x--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
上述操作完成后,在主函数中对延迟函数进行引用时将代码改为
Dalay(x);//x = float
此方法能实现让流水灯流动速度加快或减慢
#include
#include
void Delay(unsigned int x) //@12.000MHz
{
unsigned char i, j;
while(x--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char Led = 0xfe;
unsigned int Time = 1000;
void main(){
while(1){
P1 = Led;//0111 1111
Delay(Time);
Led = _crol_(Led,1);
Time = Time - 100;
}
}