抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

STC89C52

命名规则

STC89C52

  1. STC89

  2. C–>工作电压

    • C:5.5V~3.8V
    • LE:3.6V2.4V/3.4V\2.4V
  3. 52表示8K字节程序空间,512字节RAM

最小系统

LED灯

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
time: 2023-05-07
C Flowing LED
*/
# include "reg51.h"
// define an array of reg P0
//unsigned char leds[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay(unsigned int n)
{
unsigned int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<120; j++);
}
}

void led()
{
int i = 0;
for (i=0; i<8; i++)
{
P2 = ~(0x01<<i);
//P2 = ~leds[i];
delay(500);
}
}

void main()
{
while(1)
{
led();
}
}

数码管

数码管16进制显示

数码管对应16进制0~F

共阳极数码管

1
2
unsigned char LED7Code[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,
0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};

共阴极数码管

1
2
unsigned char  LED7Code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

普通数码管

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
time: 2023-05-07
C LED Display
*/
# include "reg51.h"

unsigned char s[] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F}; // common cathode 0-9
/* {0X77, 0X7C, 0X39, 0X5E, 0X79, 0X71, 0X73, 0X3E, 0X31, 0X6E,}
{0X38, 0X00}
static display 0-9 A-F P U T Y L */

void delay(unsigned char n)
{
unsigned char i, j;

for (i=0; i<n; i++)
{
for (j=0; j<120; j++);
}
}

void smg()
{
int i = 0;

for (i=0; i<10; i++)
{
P2 = s[i];
delay(1000);
}
}

void main()
{
while(1)
{
smg();
//P2=0X06;
}
}

组合74LS138

74LS138对数码管进行片选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* time:2023-05-07
74LS138 display HELLO
*/
# include "reg51.h"

unsigned char s[] = {0X76, 0X79, 0X38, 0X38, 0X3F}; // common cathode HELLO
unsigned char sbi[] = {0X00, 0X01, 0X02, 0X03, 0X04, 0X05, 0X06, 0X07}; //74LS138 chip select
/* {0X77, 0X7C, 0X39, 0X5E, 0X79, 0X71, 0X73, 0X3E, 0X31, 0X6E,}
{0X38, 0X00}
0-9 A-F P U T Y L */

void delay(unsigned char n)
{
unsigned char i, j;

for (i=0; i<n; i++)
{
for (j=0; j<120; j++);
}
}

void smg()
{
int i = 0;

for (i=0; i<5; i++)
{
P3 = sbi[i];
P2 = s[i];
delay(10);
}
}

void main()
{
while(1)
{
smg();
}
}

按钮控制数码管

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
time:2023-05-07
LED button control
*/

# include "reg51.h"

sbit key0 = P1^0;
unsigned char s[] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F}; // 0-9
unsigned char num = 0;
unsigned char flag = 0;
void key()
{
if (key0 == 0 && flag == 0)
{
flag = 1;
}
if (flag == 1 && key0 == 1)
{
num++;
flag = 0;
}
}

void seg()
{
P2 = s[num];
if (num == 10)
{
num = 0;
}
}

void main()
{
while(1)
{
key();
seg();
}
}