4、多个数码管
这里要提一下静态扫描 和动态扫描。
静态扫描:它是位选端扫描,但是段选端要被I/O口直接控制,也就是8个引脚控制一个数码管。如果你有两个数码管,你就需要16个引脚去控制它们的段选端。 它的好处是显示稳定,缺点是控制引脚多。
动态扫描:位选端扫描,8个引脚控制每个数码管的段选端,通过刷新位选端和8个引脚的状态,来实现显示不同的数字。
现在绝大多少都是使用的动态扫描法。
以下就是使用的动态扫描法。
仿真图。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit DB0 = P1^0;
sbit DB1 = P1^1;
sbit DB2 = P1^2;
sbit DB3 = P1^3;
void display(uint num);
uchar ledbuff[4];
uchar code ledchar[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90}; //阳极管代码
void init()
{
EA = 1;
TMOD = 0X01; //使用定时器0
TH0 = 0XFC; //配置中断时间
TL0 = 0X67;
ET0 = 1; //开启定时器0中断
TR0 = 1; //开启定时器