51单片机程序设计:[7]88点阵显示汉字

2025-10-22 20:22:18

1、 详细电路图连接关系如下图。 通过取模软件,分别去的下面需要的字模数组:

unsigned char code tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsigned char code digittab[41][8]={{0xFE,0x10,0x10,0xFE,0x10,0x10,0x10,0xFE},     //0                                    {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10},     //1                                    {0xFE,0x10,0x10,0xFE,0x10,0x10,0x10,0xFE},    //2   {0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00}, //红心字符                                 {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},    //3                                     {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},     //4                                    {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},    //5                                    {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},    //6 {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},     //7                                    {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},    //8                                    {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00},     //9                                             {0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44},//A{0x00,0x3C,0x44,0x44,0x3C,0x44,0x44,0x3C},//B{0x00,0x78,0x04,0x04,0x04,0x04,0x04,0x78},//C{0x00,0x3C,0x44,0x44,0x44,0x44,0x44,0x3C},//D{0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x7C},//E{0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x04},//F{0x00,0x38,0x44,0x04,0x04,0x74,0x44,0x38},//G{0x00,0x44,0x44,0x44,0x7C,0x44,0x44,0x44},//H{0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38},//I{0x00,0x38,0x10,0x10,0x10,0x10,0x14,0x18},//J{0x00,0x04,0x24,0x14,0x0C,0x14,0x24,0x04},//K{0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x7C},//L{0x00,0xC6,0xAA,0xAA,0x92,0x82,0x82,0x82},//M{0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44},//n{0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C},//O{0x00,0x3C,0x44,0x44,0x3C,0x04,0x04,0x04},//P{0x00,0x3C,0x42,0x42,0x42,0x52,0x62,0x7C},//Q{0x00,0x3C,0x44,0x44,0x3C,0x0C,0x14,0x64},//L{0x00,0x38,0x44,0x04,0x38,0x40,0x44,0x38},//S{0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x00},//T{0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//U{0x00,0xC6,0x44,0x44,0x44,0x28,0x28,0x10},//V{0x00,0xDB,0x5A,0x5A,0x5A,0x5A,0x7E,0x24},//W{0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00},//X{0x00,0x44,0x44,0x48,0x30,0x10,0x08,0x04},//Y{0x00,0x7C,0x40,0x20,0x10,0x08,0x04,0x7C}, //Z{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00} //红心字符                                    }; 

51单片机程序设计:[7]88点阵显示汉字

2、代码的规整版本图片:

51单片机程序设计:[7]88点阵显示汉字

51单片机程序设计:[7]88点阵显示汉字

51单片机程序设计:[7]88点阵显示汉字

3、效果截图,详细代码:

#include <AT89X52.H> sbit dula=P2^6; //段码选通位-控制74HC573段输出sbit wela=P2^7; //位码选通位-控制74HC573位输出//sbit OE1=P2^6;  //OE u8-573#define uchar unsigned char sbit simuseri_CLK=P2^4;           //用P2^4模拟串口时钟sbit simuseri_DATA=P2^5;          //用P2^5模拟串口数据sbit a7=ACC^7;#define uint unsigned int //unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                          unsigned char code tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsigned char code digittab[41][8]={{0xFE,0x10,0x10,0xFE,0x10,0x10,0x10,0xFE},     //0                                    {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10},     //1                                    {0xFE,0x10,0x10,0xFE,0x10,0x10,0x10,0xFE},    //2   {0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00}, //红心字符                                 {0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00},    //3                                     {0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00},     //4                                    {0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00},    //5                                    {0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00},    //6 {0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00},     //7                                    {0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},    //8                                    {0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00},     //9                                             {0x00,0x38,0x44,0x44,0x44,0x7C,0x44,0x44},//A{0x00,0x3C,0x44,0x44,0x3C,0x44,0x44,0x3C},//B{0x00,0x78,0x04,0x04,0x04,0x04,0x04,0x78},//C{0x00,0x3C,0x44,0x44,0x44,0x44,0x44,0x3C},//D{0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x7C},//E{0x00,0x7C,0x04,0x04,0x7C,0x04,0x04,0x04},//F{0x00,0x38,0x44,0x04,0x04,0x74,0x44,0x38},//G{0x00,0x44,0x44,0x44,0x7C,0x44,0x44,0x44},//H{0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38},//I{0x00,0x38,0x10,0x10,0x10,0x10,0x14,0x18},//J{0x00,0x04,0x24,0x14,0x0C,0x14,0x24,0x04},//K{0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x7C},//L{0x00,0xC6,0xAA,0xAA,0x92,0x82,0x82,0x82},//M{0x00,0x34,0x4C,0x44,0x44,0x44,0x44,0x44},//n{0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C},//O{0x00,0x3C,0x44,0x44,0x3C,0x04,0x04,0x04},//P{0x00,0x3C,0x42,0x42,0x42,0x52,0x62,0x7C},//Q{0x00,0x3C,0x44,0x44,0x3C,0x0C,0x14,0x64},//L{0x00,0x38,0x44,0x04,0x38,0x40,0x44,0x38},//S{0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x00},//T{0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//U{0x00,0xC6,0x44,0x44,0x44,0x28,0x28,0x10},//V{0x00,0xDB,0x5A,0x5A,0x5A,0x5A,0x7E,0x24},//W{0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00},//X{0x00,0x44,0x44,0x48,0x30,0x10,0x08,0x04},//Y{0x00,0x7C,0x40,0x20,0x10,0x08,0x04,0x7C}, //Z{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00},//红心字符{0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00} //红心字符                                    }; unsigned int timecount; unsigned char cnta; unsigned char cntb; //-------------------------------------------------------------------------------------------------------//  函数名称:out_simuseri //  输入参数:data_buf//  输出参数:无//  功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA //--------------------------------------------------------------------------------------------------------void out_simuseri(uchar data_buf)  {  uchar i; i=8; ACC=data_buf; do    {      simuseri_CLK=0;     simuseri_DATA=a7;    simuseri_CLK=1;    ACC=ACC<<1;     }while(--i!=0);}void delay(){    uint i;    i = 0x1ff;    while (i--);}void main(void){    P1_4=1;    P0=0xff;    dula=1;    wela=1;    P0=0xff;    wela=0;    TMOD=0x01;    TH0=(65536-3000)/256;    TL0=(65536-3000)%256;    TR0=1;    ET0=1;    EA=1;    while (1)    {        ;    }}void t0(void) interrupt 1 using 0{    TH0=(65536-3000)/256;    TL0=(65536-3000)%256;    P0=0xff; // 消隐,很重要,不加要红一片    out_simuseri(tab[cnta]);    P0= ~digittab[cntb][cnta];    cnta++;    if (cnta==8)    {        cnta=0;    }    timecount++;    if (timecount==333)    {        timecount=0;        cntb++;        if (cntb==41)        {            cntb=0;        }    }}

51单片机程序设计:[7]88点阵显示汉字

51单片机程序设计:[7]88点阵显示汉字

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢