c51单片机8*9实现数字一点阵的代码
时间: 2023-11-22 11:55:38 浏览: 74
以下是使用C语言实现在c51单片机上控制8*9数字点阵的代码:
```
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LATCH = P2^2; //锁存器
sbit SRCLK = P2^1; //移位时钟
sbit SER = P2^0; //串行数据输入
//共阴极数码管的段码表
uchar code ledChar[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
//显示数字0到9
void showDigit(uchar num) {
LATCH = 0;
P0 = ledChar[num];
SRCLK = 0;
_nop_(); //空操作
SRCLK = 1;
LATCH = 1;
}
//显示第i个数字
void showIndex(uchar i) {
uchar num;
num = i % 10;
showDigit(num);
}
//循环显示数字0到9
void loopShow() {
uchar i;
for(i=0; i<10; i++) {
showIndex(i);
delay(500); //延时500ms
}
}
void main() {
while(1) {
loopShow();
}
}
```
在该代码中,使用了三个引脚(P2.0、P2.1、P2.2)来控制8*9数字点阵。其中,P2.0用于串行数据输入,P2.1用于移位时钟,P2.2用于锁存器。
在代码中,定义了一个共阴极数码管的段码表 `ledChar`,用于将数字转换为对应的段码。通过 `showDigit` 函数将数字显示在点阵上,通过 `showIndex` 函数将第 i 个数字显示在点阵上,通过 `loopShow` 函数循环显示数字0到9。
在主函数中,循环调用 `loopShow` 函数,实现数字的连续显示。
阅读全文