⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c8279.c

📁 LED显示驱动芯片的驱动程序
💻 C
字号:
#include <reg51.h>
#include <absacc.h>
#define COM XBYTE [0xcfff]  /*定义8279命令和状态口*/
#define DAT XBYTE [0xcffe]  /*定义8279数据口*/
#define uchar unsigned char
uchar code table[] = {0xed,0x81,0xf4,0xb5,0x99, //01234/*字型表*/
                      0x3d,0x7d,0x85,0xfd,0xbd, //56789
                      0xdd,0xfd,0x6c,0xf1,0x7c, //abcde
                      0x5c,0x10,0x30,0x68,0xd9,0x00 //清空
                      };    //f - = l h
uchar idata diss[6] = {0x08,0x02,0x0c,0x07,0x09,0x14};
uchar code key[16] = {0x00,0x01,0x02,0x03,//键盘00 000 000
                      0x08,0x09,0x0a,0x0b, //键盘00 001 000
                      0x10,0x11,0x12,0x13,//00 010 000
                      0x18,0x19,0x1a,0x1b //键盘00 011 000
                      };
char code shape[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
sbit P8279RST=P1^6;
sbit clflag = ACC^7;
void delay10ms();
void display(number);
uchar deky();

void main (void)
{  uchar i;
   unsigned int n;
   //先初始化复位
   P1=0x00;
   delay10ms();
   P1=0xff;
   delay10ms();
   P1=0x00;
   //再总清空
   COM = 0xd1;        /*总清除命令*/
   do { ACC=COM; }
   while(clflag == 1);/* 等待总清结束*/
   //清空完毕,设置基本显示器和键盘的初始状态
   COM = 0x00; COM = 0x22; /*设定方式和分频系数*/
   //开始显示
   display(45652);   //显示数字
   /*while(1){
   deky();
   delay10ms();
   delay10ms();
   delay10ms();
   delay10ms();
   delay10ms();

   } */
   while(1);
}
void display(unsigned int n)
     {  int a,b,c,d,e,f;
        unsigned int aa,bb,cc,dd,ee,ff;

        ee=n/10;
        e=n%10;
        dd=ee/10;
        d=ee%10;
        cc=dd/10;
        c=dd%10;
        bb=cc/10;
        b=cc%10;
        aa=bb/10;
        a=bb%10;
        ff=aa/10;
        f=ff%10;

        COM=0x00;
        COM=0x22;
        COM=0x80;
        DAT=table[e];
        COM=0x81;
        DAT=table[d];
        COM=0x82;
        DAT=table[c];
        COM=0x83;
        DAT=table[b];

        COM=0x84;
        DAT=table[f];

        COM=0x85;
        DAT=table[a];

        COM=0x86;
        DAT=table[8];
        COM=0x87;
        DAT=table[8];
        if(n<10000){COM=0x85;
                     DAT=0x00;
                    }
        if(n<100000){COM=0x84;
                     DAT=0x00;
                    }
        if(n<1000){COM=0x83;
                     DAT=0x00;
                    }
        if(n<100){COM=0x82;
                     DAT=0x00;
                    }
        if(n<10){COM=0x81;
                     DAT=0x00;
                    }
        while(1);


}
uchar deky()
{
 char ROWCOL,ROW,COL,MIDDUL;
 COM = 0xd1;        /*总清除命令*/
 do { ACC=COM; }
 while(clflag == 1);/* 等待总清结束*/
   //清空完毕,设置基本显示器和键盘的初始状态

 COM=0x00;
 COM=0x22;

 for(;COM&0x0f;){;}
 COM=0x00;
 COM=0x22;

 COM=0x40;
 ROWCOL=DAT;     //读数据
 COM=0x80;         //显示行号和列号   第一个数显示行号
 MIDDUL=ROWCOL;
 ROW=(ROWCOL>>3)&0x07;
 //DAT=table[(ROW]|0x80;
 DAT=table[ROW];

 COM=0x81;  //10000001             第二个数显示列号
 ROWCOL=MIDDUL;
 COL=ROWCOL&0x07;
 DAT=table[COL];
 //DAT=shape[7-(ROWCOL&0x07];
 COM=0x82;
 DAT=0xb5;
 COM=0x83;
 DAT=0xb5;
 COM=0x84;
 DAT=0xb5;
 COM=0x85;
 DAT=0xb5;
 COM=0x86;
 DAT=0xb5;
 COM=0x87;
 DAT=0xb5;

}
void delay10ms()
{
 unsigned int i=12000;
 while(i--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -