STC8H8显示FJ3462BH数码管例程
时间: 2024-05-07 21:21:24 浏览: 109
各种数码管例程
以下是基于STC8H8单片机驱动FJ3462BH数码管的示例代码:
```
#include "STC8.H"
sbit DIG1 = P2^0; // 数码管位选
sbit DIG2 = P2^1;
sbit DIG3 = P2^2;
sbit DIG4 = P2^3;
sbit A = P1^0; // 数码管段选
sbit B = P1^1;
sbit C = P1^2;
sbit D = P1^3;
sbit E = P1^4;
sbit F = P1^5;
sbit G = P1^6;
sbit DP = P1^7;
// 数码管显示0~9
const unsigned char LED_TBL[] = {
0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7D, 0x07, 0x7F, 0x6F
};
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = ms; i > 0; i--)
{
for(j = 114; j > 0; j--);
}
}
// 数码管显示函数
void Display(unsigned char num)
{
A = ((LED_TBL[num] & 0x01) == 0x01) ? 1 : 0;
B = ((LED_TBL[num] & 0x02) == 0x02) ? 1 : 0;
C = ((LED_TBL[num] & 0x04) == 0x04) ? 1 : 0;
D = ((LED_TBL[num] & 0x08) == 0x08) ? 1 : 0;
E = ((LED_TBL[num] & 0x10) == 0x10) ? 1 : 0;
F = ((LED_TBL[num] & 0x20) == 0x20) ? 1 : 0;
G = ((LED_TBL[num] & 0x40) == 0x40) ? 1 : 0;
DP = ((LED_TBL[num] & 0x80) == 0x80) ? 1 : 0;
}
void main()
{
unsigned char cnt = 0;
while(1)
{
DIG1 = 1; DIG2 = 0; DIG3 = 0; DIG4 = 0; // 第1位数码管
Display(cnt % 10);
delay_ms(5);
Display(10); // 关闭数码管
DIG1 = 0; DIG2 = 1; DIG3 = 0; DIG4 = 0; // 第2位数码管
Display(cnt / 10 % 10);
delay_ms(5);
Display(10);
DIG1 = 0; DIG2 = 0; DIG3 = 1; DIG4 = 0; // 第3位数码管
Display(cnt / 100 % 10);
delay_ms(5);
Display(10);
DIG1 = 0; DIG2 = 0; DIG3 = 0; DIG4 = 1; // 第4位数码管
Display(cnt / 1000 % 10);
delay_ms(5);
Display(10);
cnt++; // 计数器加1
}
}
```
注意:以上代码仅供参考,具体实现方式可能因硬件环境和需求而异。
阅读全文