历史上的今天
返回首页

历史上的今天

今天是:2025年01月17日(星期五)

正在发生

2018年01月17日 | 89c51控制的16*16LED点阵显示

2018-01-17 来源:eefocus

#include tZqy \_G  
unsigned int zimo,xx=0;    //zimo是字模计数器,xx为分屏显示的时候的字数。 /.<2I  
unsigned char yid,h;        //yid为移动计数器,h为行段计数器 t182&gpd`  

unsigned char code hanzi[];            //汉字字模 Jrm 9,7/  
unsigned char BUFF[18],BUFF2[18];    //左移显示的缓存 jk-e/C  
void qing(void);        void xianshi(void); p`}'-A|@  
void fen(void);        void zuo(void); 6im!v<1Qx  
void in_data(void);                //调整数据 568qdD`PS  
void rxd_data(void);                //左移发送数据 [mJmT->  
void out_rxd(unsigned char *d);        //分屏、上移发送数据 ^;=L|{Xl  
char code sw[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00}; /*8行段码*/ E3==gYCe*  
/***********主程序******************/ .,$void main(void) g&oAa;~o  
{    unsigned char ee; 1YxG    SCON=0;P1=0;yid=0;zimo=0; BJ,9C.|  
    while(1) eG05}  
    {    fen();                //分屏显示 +dgHl_,i  
        for(ee=30;ee>0;ee--)//清屏幕3秒 swGp{wJ  
        {qing();} IqW4Q1>f  
        zuo();                //左移显示 ! O~:  
        for(ee=30;ee>0;ee--) {#o0vWS>  
        {qing();} pSC\[%K  
    } qM/\,  
} Q 2mTu[tx  
/**********清屏幕*******************/ }8e_  
void qing (void) F).7%YfY  
{  unsigned char zz,xx=0x0ff; rY,zZR+@  
    for (zz=33;zz>0;zz--)  gmW-#.  
    {out_rxd(&xx);} hC D6  
    P1=0xff; P1=0;    //锁存为高,74HC595锁存信号    ZR8%h<  
    P2=0;                //清74LS138的使能端 Q*54!^l+_r  
} Xf%vfAf  
/**********分屏显示***********/ s/\<;g:u^  
void fen(void) UpSa7F:Uw  
{    do{    xianshi();    }while(xx++<=5);    //调用单屏显示 me YSW  
    xx=0; }Dx5W9Ri"  
} $[U:Dk}  
/************单屏显示*************/ Aj{G=AT  
void xianshi(void) sp7#e%R\  
{    unsigned char ii,jj;    unsigned int kk,aa; /}Ct2w&    for (kk=500;kk>0;kk--)        //每屏显示500次 Z5`U+ (  
    {for(ii=1;ii<16;ii+=2)        //每个汉字分8行扫描 ZK`x(h{p)  
        {for (jj=0;jj<8;jj++)    //每次要发送8个汉字的2个字节,发送8次 iUq{c+h  
            {    aa=(xx*8+jj)*32+ii; rU_FRk  
                out_rxd(&hanzi[aa]);    //从串口输出第1个字的第1字节。 M5`wfF,j  
                out_rxd(&hanzi[aa-1]);    //从串口输出第1个字的第1字节。 fO}Y$y\q  
            } 2$O6%0  
            for (jj=0;jj<8;jj++)    //每次要发送8个汉字的2个字节,发送8次 xz){RkVzP  
            {    aa=(xx*8+jj)*32+ii; gx=2]~O1(  
                out_rxd(&hanzi[aa+16]);    //从串口输出第1个字的第17字节。 "FXT8Qxg  
                out_rxd(&hanzi[aa+15]);    //从串口输出第1个字的第18字节 p2j=73$  
            } B'KZ >jO  
            P2=0x0ff; NplkhgSj  
            P1=0xff; P1=0;            //锁存为高,74HC595锁存信号    |^t8ct?x~  
            P2=sw[h];                  //输出行信号 T^.W'  
            h++;                          //行加一 WHv xBd  
            if(h==8)h=0; I~NQt^sg  
        } \7A6+[ `fa  
    } ~U_,z)<`)c  
} ee{8C~  
/***************左移显示************/ x@480r  
void zuo(void) m\?H < o0  
{    unsigned char i,d=5;    //d为移动的时候一个汉字的扫描显示次数 >s+*D=k  
    xianshi();                //调用单屏显示 -% Z?rn2  
    while(zimo<=1450) C"!k`i=Lj  
        {while(yid<16)                    //数据移位。 enJgk(  
            {for(i=0;i                {for(h=0;h<8;h++)              //8行扫描 ~i y]X:U  
                    {    in_data();            //调整数据 Z&E!m   
                        rxd_data();        //串口发送数据 6@[7  
                        P2=sw[h];            //送段码 -*T<^G;rK  
                        P1=0xff;            //锁存为高,595锁存信号 mjtmN0^SR  
                        P1=0; yhpeP  
                    } !ENDQ?1  
                } QwSYjR:K  
                yid++;                        //移动一步 :|tWKA  
            } RU_wr<  
          yid=0;zimo=zimo+32;              //后移一个字, v?=y9lEH@%  
        } y9xvGr[l  
    zimo=0; cFP9b8JG  
} 'C2X9/!,  
/*************分屏显示的数据发送************/ QK`5KB(k'  
void out_rxd(unsigned char *d)      /*从串口发送数据*/ \QvoL  
{    SBUF=*d; while(!TI);          //等待发送完毕 ^kO+NH40  
    TI=0; w5+H9R6  
} NZoNsNu*C.  
/*******左移显示读取数据 并调整**************/ 0;Oe&Y  
void in_data(void) Oo0SDWI`(  
{    char s,w; unsigned int qqq; YT`,f*t  
    for(s=8;s>=0;s--) QIPV'T,S  
    {    w=s+s; n "bii7h  
        qqq=zimo+h+h+s*32; 2Onp{,'}  
        BUFF[w+1]=hanzi[qqq]; .0Kc|b=w  
        BUFF[w]=hanzi[qqq+1]; @PT([1C  
        BUFF2[w+1]=hanzi[qqq+16]; $        BUFF2[w]=hanzi[qqq+17]; Obf RwZh?q  
    } ]9N&I/-  
} RH.qbPjx  
/**********左移显示的数据调整发送***************/ '451H3LC0  
void rxd_data(void)                    //串行发送数据 ]"&](e6*  
{unsigned char inc,s,tempyid,temp; YF)]B|I  
if(yid<8)    inc=0; v\[+  
else        inc=1; Mf2F LrAh  
for(s=0+inc;s<16+inc;s++)              //发送数据 n)~*BpL3  
    { if(yid<8)    tempyid=yid; ae2Q^yLA  
      else            tempyid=yid-8; ?=ffv]v|  
    temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));    j*5IRzK1%0  
    SBUF=temp;            //把BUFF中的字节从大到小移位相或后发送输出。 sO` oapy  
    while(!TI);TI=0;    //等待发送中断 hJ$9Hb  
    } i84!x%|P  
for(s=0+inc;s<16+inc;s++)              //发送8字节数据 R0}1:1}$Sn  
    {  if(yid<8)    tempyid=yid; VJ=>2'I  
      else        tempyid=yid-8;  ]'`E  
    temp=(BUFF2[s]>>tempyid)|(BUFF2[s+1]<<(8-tempyid));    c7jmzo  
    SBUF=temp;            //把BUFF中的字节从大到小移位相或后发送输出。 "~5cz0 H3v  
    while(!TI);TI=0;    //等待发送中断 ~x^y5[5{  
    } =nGFLH6)  
} >I|8yqbFM  
unsigned char code hanzi[]={/*自己的汉字编码请放在这里*/};


推荐阅读

史海拾趣

Dfx公司的发展小趣事

在智能手机行业快速发展的背景下,某知名手机制造商面临着如何将更多功能集成到更小空间的挑战。通过引入DFX的设计理念,该公司成功实现了硬件的小型化,同时保持了高性能和可靠性。通过优化内部布局、采用先进封装技术和选用高性能元器件,该手机制造商在保持产品竞争力的同时,满足了消费者对轻薄、高性能手机的需求。

Capar Components Corp公司的发展小趣事

随着电子行业的快速发展,Capar Components Corp意识到只有不断创新才能在市场中立足。于是,公司加大了对研发的投入,引进了一批高素质的技术人才。经过数年的努力,公司成功研发出了一种新型的高性能集成电路,这一创新不仅提升了产品的性能,还降低了生产成本,使公司在市场上获得了更大的竞争优势。

博通集成(BEKEN)公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,博通集成开始积极拓展市场。公司凭借优质的产品和服务,赢得了众多客户的信赖和支持。同时,公司注重品牌建设,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。如今,博通集成已成为无线连接芯片设计领域的知名品牌。

Deltrol Controls公司的发展小趣事

在电子设备的制造过程中,螺线管是不可或缺的元件之一。然而,传统的螺线管生产方式存在效率低下、质量不稳定等问题。Deltrol Controls通过引进先进的生产设备和技术,实现了螺线管的精细化生产。这一举措不仅提高了生产效率,而且保证了螺线管的质量稳定性。凭借这一优势,Deltrol Controls在电子行业中的竞争力得到了显著提升。

Gennum ( Semtech )公司的发展小趣事
在连接元件时,避免导线裸露部分相互接触或接触到金属物体,以防止短路。
CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

自1964年起,CDIL便踏上了半导体制造的先驱之路。当时,电子产业正处于蓬勃发展的初期,CDIL凭借对技术的敏锐洞察和不懈追求,迅速成为印度乃至全球半导体制造领域的佼佼者。其硅芯片和器件的制造质量和技术水平均达到了世界级标准,为印度电子产业的发展奠定了坚实基础。

问答坊 | AI 解惑

请教大家几道题

大家来帮帮忙吧…

查看全部问答>

数码外接电池智能控制电路讨论

本人目前正在开发生产一款外置数码电池,主要用于笔记本、相机、手机、MP3、MP4供电或充电,在此论坛发表一下,希望能得到各位高手的指点与帮助,以完善其设计构想,基本功能及需求如下: 1. 锂电池组采用4并N串(N根据所需功率实际搭配); 2. ...…

查看全部问答>

FPGA和单片机的spi通信该如何实现?

本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 大家好,本人最近在做FPGA和单片机的spi的通信,做的很头疼,上网查了一些资料,也大致了解一些spi的概念,可是在实际操作过程中,就是实现不了通信的问题,本人在这方面的知识的确是不够的。希望高 ...…

查看全部问答>

CCS上模拟DSP跑程序是不是巨慢的??

如题,我用的是CCSv3.3,C6713 simulator,跑一个运算量大一点的程序都得好几分钟,直接在windows下运行则一两秒可以搞定 土问有没有什么方法使它可以跑得快一点 排除机器原因…

查看全部问答>

求ARM与FPGA高速数据传输方案

ARM与FPGA要传输160000*7个数据,目前采用的SPI通信方式,要传4秒左右,请问有没有提高数据传输速率的方案?…

查看全部问答>

最近在研究TCPMP源码,希望能够解决界面的修改,但是阅读代码十分困难,请DX提供一些帮助

最近在研究wince上的TCPMP源码,希望能够解决界面的修改,但是如今阅读代码十分困难(或许是从MFC转到C的缘故吧),看了一 个下午,不知道如何入手比较简单,请DX提供一些帮助,希望修改过的DX可以给一些提示,一些帮助。(比如有一些什么函数手册 ...…

查看全部问答>

AT89S52能运行AT89C2051就运行不了,高手进来帮忙看看,小弟不胜感激!

#include     #define data00 P1    #define uchar unsigned char uchar recddata=0x00,datastore[6]={0x20,0x20,0x20,0x20,0x20,0x20},i=1,j=0;  //i为datastore数据包变量,j为待发送到8952的当前位置,recddata ...…

查看全部问答>

请教一个STM32F103的USART的问题!

                                 请教一个USART的问题,请问在STM32F103中怎样发送指定的第9位数据啊,就是在51中实现的第9位数据(RS485中多机通讯 ...…

查看全部问答>

应用AT89C51单片机测量数控车床切削力的新方法

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出 ...…

查看全部问答>

关于51单片机的简单问题

#include #define uchar unsigned char #define uint unsigned int void delay(uint x) {         uint y;         uchar z;         for(y=x;y>0;y--)       ...…

查看全部问答>