STC89C52RC/LE52RC
STC89C52RC
- 芯片手册
- 原理图
- 扩展版原理图
- 功能示例
- 闪烁的LED灯
- 动态数码管
芯片手册
STC89C52
原理图
扩展版原理图
扩展版原理图
功能示例
闪烁的LED灯
LED灯的常亮效果
# include <STC89C5xRC.H>
void main(){//将LED连接的P00端口设置为0P00 =0;while(1);
}
LED灯的闪烁
# include <STC89C5xRC.H>typedef unsigned char u8;
typedef unsigned int u16;void Delayms(u16 count);void main() {//将LED连接的P00端口设置为0P00=1;while(1) {P00 =~P00;Delayms(1000);};
}void Delayms(u16 count)
{u8 data i, j;while (count){_nop_();i = 2;j = 199;do{while (--j);} while (--i);count--;}
}
LED灯的跑马灯效果
#include <STC89C5xRC.H>
#include <INTRINS.H>typedef unsigned char u8;
typedef unsigned int u16;void Delayms(u16 count);void main()
{u8 temp = 0x01;bit is_left = 1;while (1){P0 = ~temp;if (is_left){temp <<= 1;}else{temp >>= 1;}if (temp == 0x80){is_left = 0;}if (temp == 0x01){is_left = 1;}Delayms(100);}
}void Delayms(u16 count)
{u8 data i, j;while (count){_nop_();i = 2;j = 199;do{while (--j);} while (--i);count--;}
}
动态数码管
#include <STC89C5xRC.H>
#include <INTRINS.H>typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;void DigitalTube_setBuffer(u32 number);
void DigitalTube_Single(u8 pos, u8 number);
void DigitalTube_Refresh();
void Delayms(u16 count);// 定义数组,保存吗u8 number_codes[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
};u8 digital_buffer[8];void main()
{// 打开数码管P36 = 0;// 关掉流水灯P34 = 0;DigitalTube_setBuffer(250);while (1){DigitalTube_Refresh();};
}void DigitalTube_setBuffer(u32 number)
{u8 i;for (i = 0; i < 8; i++){digital_buffer[i] = 0;}for (i=7; ; i--){digital_buffer[i] = number_codes[number % 10];number = number / 10;if (number == 0||i==0){break;}}
}void DigitalTube_Single(u8 pos, u8 number)
{pos <<= 3;P1 &= 0xC7;P1 |= pos;P0 = number_codes[number];
}void DigitalTube_Refresh()
{u8 i = 0;while (i <= 7){DigitalTube_Single(i, digital_buffer[i]);Delayms(1);i++;}
}void Delayms(u16 count)
{u8 data i, j;while (count){_nop_();i = 2;j = 199;do{while (--j);} while (--i);count--;}
}