AT89C51是40针微控制器,属于8051系列微控制器。它有四个端口,每个端口有8位P0,P1,P2和P3。AT89C51具有4K字节的可编程闪存。端口P0覆盖引脚32至引脚39,端口P1覆盖引脚1至引脚8,端口P2覆盖引脚21至引脚28,端口P3覆盖引脚10至引脚17。引脚9是复位引脚。 复位为高电平有效。只要给控制器供电,就必须给复位引脚一个高电平信号,以复位控制器并将程序计数器带到起始地址0x0000。可以通过手动连接开关或通过组合电阻器和电容器的组合来重置控制器,如电路图所示。在引脚18的引脚19之间连接了11.059 MHz的晶体。引脚40为Vcc,引脚20为接地。销31,当我们使用控制器的内部存储器时,它已连接到Vcc(有关详细信息,请参见数据表)。LED连接到端口P0。LED需要大约10mA的电流流过,才能以最大强度发光。但是,控制器的输出不足以驱动LED,因此LED以相反的顺序连接,并且它们以负逻辑运行,即只要在端口的任何引脚上给出1,LED就会关闭,并且当逻辑如果提供0,则LED将以全强度发光。一旦我们为控制器提供电源,LED就会开始闪烁,即它们在一定时间段内点亮,然后在相同时间段内熄灭。通过调用延迟功能可以提供此延迟。
在Proteus上构建电路,并在Keil上编写代码。还可以使用keil生成一个十六进制文件。
验证您的电路和代码的软件,然后使用G540刻录机已经说明HEX文件刻录AT89C51这里。
在电路板上实现电路。
核心代码:
#include reg51.h //include directives for 8051 microcontroller
void delay(int time){ //Produces delay in msec
int a,b;
for (a=0;a<time;a++){
for (b=0;b<1275;b++){} //1275 is due to 11.059 MHz crystal
}
}
void main(){
while(1){ //infinite loop
P0=0x00; //P0 will have a 0 logic means 0 volt. LED will glow
delay(100); //100msec delay
P0=0xFF; //P0 will have a 1 logic means 5 volt. LED will be off
delay(100); //100msec delay
}
}