历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | 基于51单片机16X32LED点阵显示屏程序设计

2020-01-28 来源:51hei

51单片机16X32LED点阵显示屏由单片机最小系统、行驱动电路74HC154、列驱运电路74HC595组成,实现汉字、数字的显示。电路简单。程序中以20个汉字作为显示示例。资料含51单片机C语言源程序、PROTEUS7.8仿真源文件。附送取模软件及取模说明文档,方便你自己更换显示内容。显示移动速度可在程序中进行设置。


#include
#define FOSC        12                                //定义晶振频率
#define        INIT_TH0 0x3C                        //定时器T0初始值
#define        INIT_TL0 0xB0
#define        TMOD_T00 0x00                        //定义T0为方式0,GATE=0,C/T=0,13位计数器
#define        TMOD_T01 0x01                        //定义T0为方式1,GATE=0,C/T=0,16位计数器
#define        TMOD_T02 0x02                        //定义T0为方式2,GATE=0,C/T=0,自动装入8位计数器
#define        TMOD_T03 0x03                        //定义T0为方式3,GATE=0,C/T=0,定时器0分成两个8位计数器,定时器1停止计数

/*缩定定义*/

#define uchar unsigned char
#define        uint unsigned int

/************位定义***************/
sbit STTP = P2^7;
/************函数声明*************/
void        delay(uint c);                                //延时函数
void        out_rxd(uchar *d);                                //汉字输出
/************汉字点阵*************/
char code hanzi[32][32]={
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //显示空屏,如果只有一个字或将字全部移出必须设置一个空屏幕
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //显示空屏,如果只有一个字或将字全部移出必须设置一个空屏幕
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  基  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x88,0x20,0x88,0x20,0x91,0x20,0xA1,0xFF,0xC9,0x2A,0x89,0x2A,0x89,0x2A,0xBF,
0x2A,0x89,0x2A,0x89,0xFF,0xC9,0x20,0xA1,0x20,0x91,0x20,0x88,0x00,0x88,0x00,0x00,
                        
/*--  文字:  于  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x02,0x42,0x01,0x7F,0xFE,
0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x02,0x00,0x02,0x00,0x00,0x00,

/*--  文字:  5  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00,                

/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,

/*--  文字:  单  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x08,0x00,0x08,0x1F,0xC8,0x92,0x48,0x52,0x48,0x32,0x48,0x12,0x48,0x1F,0xFF,
0x12,0x48,0x32,0x48,0x52,0x48,0x92,0x48,0x1F,0xC8,0x00,0x08,0x00,0x08,0x00,0x00,

/*--  文字:  片  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x01,0x00,0x06,0x7F,0xF8,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,
0x04,0x40,0xFC,0x40,0x04,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
                        
/*--  文字:  机  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x20,0x08,0xC0,0x0B,0x00,0xFF,0xFF,0x09,0x00,0x08,0xC1,0x00,0x06,0x7F,0xF8,
0x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xFC,0x00,0x02,0x00,0x02,0x00,0x1E,0x00,0x00,

/*--  文字:  的  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x1F,0xFE,0x30,0x84,0xD0,0x84,0x10,0x84,0x10,0x84,0x1F,0xFE,0x02,0x00,
0x0C,0x00,0xF1,0x00,0x10,0xC2,0x10,0x01,0x10,0x02,0x1F,0xFC,0x00,0x00,0x00,0x00,
/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,
                        
/*--  文字:  6  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00,

/*--  文字:  ×  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,
0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00,

                        
/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00,

                                
/*--  文字:  点  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x01,0x00,0x02,0x03,0xEC,0x02,0x20,0x02,0x20,0x02,0x28,0xFE,0x26,0x12,0x20,
0x12,0x28,0x12,0x26,0x12,0x20,0x13,0xE0,0x10,0x08,0x10,0x07,0x00,0x00,0x00,0x00,
                        
/*--  文字:  阵  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x7F,0xFF,0x40,0x10,0x44,0x08,0x5B,0x10,0x60,0xE0,0x10,0x10,0x13,0x10,
0x1D,0x10,0xF1,0x10,0x17,0xFF,0x11,0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x00,0x00,
                        
/*--  文字:  显  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x02,0x00,0x42,0x00,0x22,0x7F,0x1A,0x49,0x02,0x49,0xFE,0x49,0x02,0x49,0x02,
0x49,0x02,0x49,0xFE,0x49,0x02,0x7F,0x0A,0x00,0x12,0x00,0x62,0x00,0x02,0x00,0x00,

/*--  文字:  示  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x04,0x02,0x08,0x42,0x10,0x42,0x60,0x42,0x00,0x42,0x02,0x42,0x01,0x43,0xFE,
0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x40,0x42,0x20,0x02,0x10,0x02,0x0C,0x00,0x00,

/*--  文字:  屏  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x02,0x00,0x0C,0x7F,0xF0,0x48,0x20,0x49,0x21,0x4D,0x26,0x4B,0xF8,0x49,0x20,
0x49,0x20,0x49,0x20,0x4B,0xFF,0x4D,0x20,0x79,0x20,0x00,0x20,0x00,0x00,0x00,0x00,                

/*--  文字:  程  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x24,0x10,0x24,0x60,0x25,0x80,0x7F,0xFF,0xC4,0x80,0x44,0x60,0x00,0x02,0x7C,0x92,
0x44,0x92,0x44,0x92,0x44,0xFE,0x44,0x92,0x44,0x92,0x7C,0x92,0x00,0x82,0x00,0x00,
/*--  文字:  序  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x02,0x00,0x0C,0x3F,0xF0,0x20,0x00,0x20,0x80,0x20,0x80,0x28,0x80,0xA8,0x82,
0x6A,0x81,0x29,0xFE,0x2A,0x80,0x2C,0x80,0x28,0x80,0x20,0xA0,0x20,0xC0,0x00,0x00,

/*--  文字:  设  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x09,0x02,0x11,0x05,0x02,0x79,0xC2,
0x41,0x34,0x41,0x08,0x41,0x14,0x79,0x62,0x05,0x82,0x04,0x01,0x04,0x01,0x00,0x00,

/*--  文字:  计  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x02,0x00,0x42,0x00,0x33,0xFE,0x00,0x04,0x02,0x08,0x02,0x00,0x02,0x00,
0x02,0x00,0xFF,0xFF,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,

/*--  文字:  与  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x10,0x00,0x10,0x07,0x10,0xF9,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,
0x11,0x10,0x11,0x12,0x11,0x01,0x11,0x02,0x11,0xFC,0x10,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  仿  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x01,0x10,0x02,0x10,0x0C,0x1F,0xF0,
0x91,0x00,0x71,0x02,0x11,0x01,0x11,0x02,0x11,0xFC,0x10,0x00,0x10,0x00,0x00,0x00,

/*--  文字:  真  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x08,0x20,0x08,0x20,0x09,0x2F,0xFA,0x2A,0xAC,0x2A,0xA8,0x2A,0xA8,0xFA,0xA8,
0x2A,0xA8,0x2A,0xA8,0x2A,0xAC,0x2F,0xFA,0x20,0x09,0x20,0x08,0x00,0x08,0x00,0x00,
                

                                                        
                                
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //显示空屏,如果只有一个字或将字全部移出必须设置一个空屏幕
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

                };

/************主函数***************/
void main()
{
        uchar i,j,k;        //i:每个字的显示循环;j每个字的显示码除以2;k每列刷新次数
        uint b=0;                //显示偏移控制,char类型最多只能显示14个汉字+一个空白位字符
        uchar a;                //控制移动间隔时间
        SCON = 0x00;
        while(1)
        {        
          j=0;
          if(a>6)        //移动间隔时间;取值0-20
                {
                  a=0;
                  b+=2;
                  if(b>=700)        //显示到最后一个字,回头显示,判断值=字数*32
                   {
                     b=0;
                   }        
                }
            for(i=0;i<16;i++)
           {
                   P1=i;

                 for(k=0;k<1;k++)
                     {        
                        STTP = 0;
                        out_rxd(&hanzi[3][j+b+1]);
                        out_rxd(&hanzi[3][j+b]);
                        out_rxd(&hanzi[2][j+b+1]);
                        out_rxd(&hanzi[2][j+b]);
                        out_rxd(&hanzi[1][j+b+1]);
                        out_rxd(&hanzi[1][j+b]);
                        out_rxd(&hanzi[0][j+b+1]);
                        out_rxd(&hanzi[0][j+b]);
                        STTP = 1;
                        delay(15);
                        
                  }
                 j=j+2;
           }
           a++;
            }

}

/************子函数**************/

void delay(uint c)
        {
          int i,j;
          for(i=0;i                for(j=0;j<10;j++)
                        ;


.......................................................................

推荐阅读

史海拾趣

Concurrent Logic公司的发展小趣事

随着技术的不断进步,Concurrent Logic成功开发出了一款具有革命性的并行计算芯片。这款芯片在市场上引起了巨大的反响,因其出色的并行处理能力和高效的逻辑运算,很快得到了众多电子设备和数据中心的青睐。这一技术的突破不仅为公司带来了可观的收入,更让Concurrent Logic在电子行业中崭露头角。

Gigavac LLC公司的发展小趣事

随着技术的不断进步,Concurrent Logic成功开发出了一款具有革命性的并行计算芯片。这款芯片在市场上引起了巨大的反响,因其出色的并行处理能力和高效的逻辑运算,很快得到了众多电子设备和数据中心的青睐。这一技术的突破不仅为公司带来了可观的收入,更让Concurrent Logic在电子行业中崭露头角。

Enable Semiconductor Corp公司的发展小趣事

品质是Enable Semiconductor Corp公司的生命线。公司从原材料采购到产品生产、从质量检测到售后服务,都严格执行质量管理体系的要求。这种对品质的执着追求使得公司的产品在市场上享有良好的口碑。同时,公司还积极参与国际标准的制定和认证工作,不断提升产品的国际竞争力。

Devar Inc公司的发展小趣事

智能家居是电子行业的一个重要发展方向,Devar Inc公司也积极拓展这一领域。公司推出了一系列智能家居产品,如智能音箱、智能照明、智能安防等。这些产品不仅具备远程控制、语音控制等便捷功能,还通过Devar的AI技术实现了智能学习和智能联动。例如,智能音箱可以根据用户的习惯和喜好,为用户推荐音乐、新闻等内容;智能照明则可以根据环境光线和用户需求自动调节亮度和色温。

Altitude Technology公司的发展小趣事

在电子行业中,创新是企业永恒的主题。Altitude Technology始终坚持以创新驱动发展,不断推出新产品、新技术。公司建立了一支高效的研发团队,不断跟踪行业最新动态和技术趋势,确保公司在技术创新方面始终走在前列。正是这种持续创新的精神,使得Altitude Technology在电子行业中保持了长久的竞争力。


以上五个故事均基于虚构的Altitude Technology公司进行创作,旨在展示一个电子行业企业在不同发展阶段可能遇到的挑战和机遇,以及如何通过技术创新、市场拓展和合作共赢等方式实现持续发展。请注意,这些故事并非基于真实事件,因此可能与实际情况存在出入。

DURAKOOL公司的发展小趣事

在1935年,DURAKOOL公司在Durakool成立,由几位电子工程师和发明家共同创立。他们的初衷是为电气和电子市场提供高质量的组件和系统。起初,公司面临着资金短缺和市场竞争激烈的挑战,但他们凭借对技术的热情和不懈的努力,逐渐开发出了一系列具有竞争力的产品,如Durakool水银继电器和功率继电器,赢得了客户的认可。

问答坊 | AI 解惑

太阳电池热斑现象的研究

0 引言 随着社会对能源的需求量越来越大,“能源安全危机”的问题也愈发突显。对此,经济和社会学家舍尔赫尔曼曾提出“阳光型世界经济”的概念,指出利用阳光型能源和阳光型原材料即可再生能源来满足人类对能源和原材料的总体需求,可为世界经济发 ...…

查看全部问答>

TMS320C6205数据手册

TMS320C6205的数据手册,不要钱,哈哈!…

查看全部问答>

求助 运放

各位大侠,能否帮在下分析下这个电路? 小弟能力有限,实在是搞不清楚他的功能。 谢谢啦。[qq]20436023[/qq] 文件在附件中。…

查看全部问答>

==请教USB DEVICE 驱动中,接收CBW错误后的处理方法==

刚接触USb对其中的流程还不熟悉,在调试一驱动程序时,发现如下现象:   24    CDB    2a 00 00 00  28 0c 00 00  80 00               &n ...…

查看全部问答>

求救各位大虾:http服务器关于页面失效的处理方法

请问各位大虾,我知道在asp中关于处理页面失效可以通过设置session的值来实现, 但我目前在做路由器的网页失效的功能,以前没做过网页,请问怎么处理呢?或者 发点http服务器的资料到我邮箱:mftrans@tom.com感激万分…

查看全部问答>

关于事件管理器B

指向事件管理器B时,是不是用ldp #0EA就行呢? 为什么我向EVB中的T3CNT和T3PR都写不进数呢? 用了splk #1000 T3CNT,然后查看一下,寄存器的值没有变化阿。 .TEXT _c_int0     SETC    INTM        &nb ...…

查看全部问答>

提取微弱小信号的锁相放大器提交文档

如题,锁相放大器基本功能已经实现,深入的测试需要有时间进一步完善。附件为本设计的说明文档、原理图、PCB、元器件清单等。另外还有MSP430f149  硬SPI模式与AD7190接口程序,通过SPI采集,然后串口发送送至上位机。具体请见附件。 关于本设 ...…

查看全部问答>

使用Altium Designer进行多通道设计

上传了两份技术文档,讲述了如何使用AD经行多通道设计,以及分层设计的结构和方法。…

查看全部问答>

串口实验波特率

sopc builder中设置波特率是9600,串口工具设置9600,发送36时,接收是FB,串口调试工具设置19200,则收到的是36,这是什么问题啊 QQ截图20120323203513.png (28.18 K) 2012-3-23 20:36:10#include \"system.h\"#include \"unistd.h\"#includ ...…

查看全部问答>

我们老师让我们用LM324N芯片做测温

我们老师让我们用LM324N芯片做测温,但是我不知道测温的程序的流程是怎么样的,哪位大虾能告诉我下啊…

查看全部问答>