数码管驱动.doc
文本预览下载声明
数码管驱动
//P201 电压 P202 电流
//LG5641AH管脚 共阴极 1至12脚分别为:e d h c g 4 b 3 2 f a 1 管脚的数法:有字面向自己,左下脚为第一脚,逆时针数。
#define SMYS 1 //扫描延时
#define KJYS 1000 //开机延时
#define AA 10 //A
#define bb 11 //b
#define CC 12 //C
#define dd 13 //d
#define EE 14 //E
#define FF 15 //F
#define HH 16 //H
#define LL 17 //L
#define PP 18 //P
#define rr 19 //r
#define UU 20 //U
#define ZHX 21 //中横线
#define XHX 22 //下横线
#define OFF 23 //全灭
#define POINT 24 //带点的0
unsigned char code font[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71, 0x76,0x38,0x73,0x31,0x3e, 0x40,0x08, 0x00, 0x3f+0x80,0x06+0x80,0x5b+0x80,0x4f+0x80,0x66+0x80,0x6d+0x80,0x7d+0x80,0x07+0x80,0x7f+0x80,0x6f+0x80,}; //不带小数点 +0x80则带小数点
//0-9 A b C d E F H L P r U - _ 全灭 带点的0-9
//0-9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24-33
//unsigned char code led[]={0x31,0x32,0x34, 0x51,0x52,0x54, 0x18, }; //分别为待机,准备,工作
unsigned char data xsbuf[8]; //对应8个数码管
unsigned char data xspos; //
void xsinit()
{
P0M0 =0xff; //提高驱动能力
P0M1 =0x00;
// P2M0=0xff;
// P2M1=0x00;
// P0=0; //全灭 //单片机开机复位后,所有引脚为高电平,全亮??
// P2=0;
}
void xscl() small //显示任务
{
while(1)
{
xspos=0; // 从第0个xsbuf开始,以下顺序不能巅倒,可以把显示缓冲放在任意数据码中显示
P0=font[xsbuf[xspos]];//加载内容
P24=0; //(低)显示
wait(SMYS);
P24=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P25=0; //(低)显示
wait(SMYS);
P25=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P26=0; //(低)显示
wait(SMYS);
P26=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P27=0; //(低)显示
wait(SMYS);
P27=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P20=0; //(低)显示
wait(SMYS);
P20=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P21=0; //(低)显示
wait(SMYS);
P21=1; //(高)不显示
xspos++;
P0=font[xsbuf[xspos]];//加载内容
P22=0; //(低)显示
wait(SMYS);
P22=1; //(高
显示全部