×
单片机 > 单片机程序设计 > 详情

P10点阵屏C51单片机程序

发布时间:2020-08-26 发布时间:
|

P10点阵屏C51程序
1/4扫描,四扫下行,1路16行,数据低OE高(04-P16-08)

适用于HUB12接口单色P10

串口模式0,普通左移,亮度速度可调,6个IO口,用的STC8F1K08,最多231个字

制作出来的实物图如下:
 

单片机源程序如下:

#include

#include

#include

#define                DATA        P30                //

#define                CLOCK        P31                //↑        ↓

#define                ADDR_A        P32                //↑

#define                ADDR_B        P33                //

#define                LATCH        P54                //↓        ↓

#define                ENABLE        P55                //↓

unsigned char Offset_Bit,Offset_String;

unsigned char code String[]=

{

        #include <0.h>

};


/*----------------------------延时10us@STC-Y6@11.0592MHz----------------------------*/

void Delay_10us(void)

{

        unsigned char i;

        i=35;

        while(--i);

}


/*----------------------------延时x10us----------------------------*/

void Delay_x10us(unsigned char x)

{

        while(x--)

                Delay_10us();

}


void Line_Driver(unsigned char temp)

{

        switch(temp)

        {

                case 0:

                        ADDR_A=0;

                        ADDR_B=0;

                break;

                case 1:

                        ADDR_A=1;

                        ADDR_B=0;

                break;

                case 2:

                        ADDR_A=0;

                        ADDR_B=1;

                break;

                case 3:

                        ADDR_A=1;

                        ADDR_B=1;

                break;

                default:

                break;

        }

        ENABLE=1;

}


void Send_One_Byte(unsigned char temp)

{

        unsigned char i,temp1;

        for(i=0;i<8;i++)

        {

                temp1<<=1;

                if(temp&0x01)

                        temp1|=0x01;

                temp>>=1;

        }

        SBUF=~temp1;

        while(!TI);

        TI=0;

}


void Send_Display(unsigned char line)

{

        unsigned char i,j,a,b;

        unsigned int c,d;

        b=2*line;

        for(i=0;i<4;i++)

        {

                c=(Offset_String+i)*32;

                for(j=0;j<8;j++)

                {

                        if(j<4)

                        {

                                a=(3-j)*8;

                                d=a+b+c;

                                if(Offset_Bit<=8)

                                        Send_One_Byte((String[d]<>(8-Offset_Bit));

                                else

                                        Send_One_Byte((String[d+1]<>(8-(Offset_Bit-8)));

                        }

                        else

                        {

                                a=(7-j)*8;

                                d=a+b+c;

                                if(Offset_Bit<=8)

                                        Send_One_Byte((String[d+1]<>(8-Offset_Bit));

                                else

                                        Send_One_Byte((String[d+32]<>(8-(Offset_Bit-8)));

                        }

                }

        }

        LATCH=0;

        LATCH=1;

}


void Display(unsigned char brightness)

{

        unsigned char line;

        for(line=0;line<4;line++)

        {

                Send_Display(line);

                Line_Driver(line);

                Delay_x10us(brightness);

                ENABLE=0;

                Delay_x10us(10-brightness);

        }

}


void Init(void)

{

        AUXR|=0x20;

        P3M0=0x0f;

        P3M1=0x00;

        P5M0=0x30;

        P5M1=0x00;

        Offset_Bit=0;

        Offset_String=0;

}


void main(void)

{

        unsigned char i;

        Init();

        while(1)

        {

                for(i=0;i<10;i++)

                {

                        Display(1);

                }

                Offset_Bit++;

                if(Offset_Bit==16)

                {

                        Offset_Bit=0;

                        Offset_String++;

                }

                if(Offset_String==159)

                {

                        Offset_String=0;

                }

        }

}



关键字:P10  点阵屏  C51  单片机程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些