LED
- Turn an LED on
- Turn a digit LED on
- count down
hardware
- STC89C52RC
Cathode Share LED digt codes
digit | code |
---|---|
0 | 0x3f |
1 | 0x06 |
2 | 0x5b |
3 | 0x4f |
4 | 0x66 |
5 | 0x6d |
6 | 0x7d |
7 | 0x07 |
8 | 0x7f |
9 | 0x6f |
A | 0x77 |
B | 0x7c |
C | 0x39 |
D | 0x5e |
E | 0x79 |
F | 0x71 |
0x00 |
code
#include <reg52.h>
void delay (unsigned int xms);
void main()
{
int i = 0;
while(1)
{
P1 = 0xfe; // 1111 1110
for (i = 0; i < 8; i++)
{
delay(1000);
P1 <<= 1; // P1 = P1 << 1;
P1 = P1 | 0x01;
}
}
}
void delay (unsigned int xms)
{
unsigned int i,j;
for (i = xms; i > 0; i--)
for(j = 112; j < 0; j--);
}
digit display
#include <reg52.h>
#define duan P0
sbit wei1 = P2^4;
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;
void main()
{
wei1 = 1;
wei2 = 0;
wei3 = 0;
wei4 = 0;
duan = 0x7c; // 0111 1100 "b"
while(1);
}
LED digit dynamic display
#include <reg52.h>
#define duan P0
#define uchar unsigned char
sbit wei1 = P2^4;
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;
uchar code sz[17] = {
0x3f,
0x06,
0x5b,
0x4f,
0x66,
0x6d,
0x7d,
0x07,
0x7f,
0x6f,
0x77,
0x7c,
0x39,
0x5e,
0x79,
0x71,
0x00
};
void delay (unsigned int xms)
{
unsigned int i,j;
for (i = xms; i > 0; i--)
for(j = 112; j < 0; j--);
}
void main()
{
while(1)
{
duan = sz[4];
wei1 = 0;
wei2 = 0;
wei3 = 0;
wei4 = 1;
delay(1000);
duan = sz[3];
wei1 = 0;
wei2 = 0;
wei3 = 1;
wei4 = 0;
delay(1000);
duan = sz[2];
wei1 = 0;
wei2 = 1;
wei3 = 0;
wei4 = 0;
delay(1000);
duan = sz[1];
wei1 = 1;
wei2 = 0;
wei3 = 0;
wei4 = 0;
delay(1000);
}
}