51单片机7.18

汐语 2023-7-18 459 7/18
51单片机7.18

学的时候感觉还不错,但是由于摆烂太久了,一下子就去搞其他事情去了,所以学的比较少,明天要更专注一些,加油加油!

C51单片机基础

数据类型

51单片机7.18

注意:int以及unsigned int诸如此类的区别,二者都是16位,但是unsigned int全是正数,而int包括正数和负数部分

Keil

新建项目工程:

选择单片机型号(Atmel——AT89C52

在建好的项目下 Target1——右击Source Group 1——add new item to ...——新建C文件

写代码...

写好之后点击图示按钮——Output——✔创建HEX File——OK——再次编译

51单片机7.18

数字+倍率

102 = 10 00 =1K

473 = 47 000 =47K

1001 = 100 0=1K

基础

CPU通过控制寄存器控制硬件电路,以执行想要完成的功能

VCC即电源正极

单片机(MCU)采用TTL电平

即:高电平 +5

低电平 0

也就是说:VCC 接 5 LED不亮

VCC 接 0 LED亮

单片机控制硬件电路原理图:

51单片机7.18

语句中需要用十六进制,故需要将类似 11111110二进制数转为十六进制,并以 0x 开头

51单片机7.18

STC

单片机型号: STC89C52RC

软件延时计算器

进行如下设置:

51单片机7.18

实战小项目

流水灯

#include <REGX52.H>
#include <INTRINS.H>

//延时函数 STC生成
void Delay500ms() //@12.000MHz  
{
unsigned char i, j, k;

_nop_();  //来自头文件<INTRINS.H>
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}

void main()
{
while(1)
{
P2=0xFE; //1111 1110
Delay500ms();
P2=0xFD; //1111 1101
Delay500ms();
P2=0xFB; //1111 1011
Delay500ms();
P2=0xF7; //1111 0111
Delay500ms();
P2=0xEF; //1110 1111
Delay500ms();
P2=0xDF; //1101 1111
Delay500ms();
P2=0xBF; //1011 1111
Delay500ms();
P2=0x7F; //0111 1111
Delay500ms();
}
}

流水灯PLUS

#include <REGX52.H>

void Delay1ms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}

}

void main()
{
while(1)
{
P2=0xFE; //1111 1110
Delay1ms(500);
P2=0xFD; //1111 1101
Delay1ms(500);
P2=0xFB; //1111 1011
Delay1ms(500);
P2=0xF7; //1111 0111
Delay1ms(500);
P2=0xEF; //1110 1111
Delay1ms(500);
P2=0xDF; //1101 1111
Delay1ms(500);
P2=0xBF; //1011 1111
Delay1ms(500);
P2=0x7F; //0111 1111
Delay1ms(500);
}
}

注意:主要的修改就是将延时函数设置成可自己调控的变量,利用循环实现,也就是将1ms的间隔循环x次

- THE END -

汐语

7月20日22:26

最后修改:2023年7月20日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论