89c51控制的16*16LED点阵显示

发布者:云淡雅致最新更新时间:2018-01-17 来源: eefocus关键字:89c51控制  16*16LED  点阵显示 手机看文章 扫描二维码
随时随地手机看文章

#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[]={/*自己的汉字编码请放在这里*/};


关键字:89c51控制  16*16LED  点阵显示 引用地址:89c51控制的16*16LED点阵显示

上一篇:74hc595驱动串行led显示
下一篇:DS1620温度芯片与8751芯片连接代码

推荐阅读最新更新时间:2024-03-16 15:53

四字16*16点阵显示程序
;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示, ;效果:向上滚动显示字,每次四个,重复循环。 ;R2:行扫描地址(从00-0FH)。 ;R3:滚动显示时控制移动速度,也可控制静止显示的时间。 ;************; ;中断入口程序; ;************; ; ORG 0000H LJMP START ORG 0003H RETI ORG 000BH LJMP INTT0 ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI ; ;************; ; 初始化程序 ; ;***********
[单片机]
51单片机16X16点阵显示屏学习板基本原理
  1.功能      16×16点阵显示屏学习板如下图所示,LED显示屏各点亮度均匀、充足,可显示图形和文字,通过文字图像取模软件获得数据码,可以显示各类图形或文字。稳定、清晰、无串扰,图形或文字显示有静止、移入移出等显示方式。      2.基本原理      16×16点阵是用4个8×8点阵屏拼合而成,8X8点阵LED工作原理说明:8×8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置O电平,则相应的二极管就亮;因此要实现一根柱形的亮法。对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:      一根竖柱:对应的列置1,而行则采用扫描
[单片机]
51单片机<font color='red'>16</font>X<font color='red'>16</font><font color='red'>点阵显示</font>屏学习板基本原理
24. 8X8 LED点阵显示技术
1. 实验任务 在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。 2. 电路原理图 图4.24.1 3. 硬件电路连线 (1). 把 单片机系统 区域中的P1端口用8芯排芯连接到 点阵模块 区域中的 DR1-DR8 端口上; (2). 把 单片机系统 区域中的P3端口用8芯排芯连接到 点阵模块 区域中的 DC1-DC8 端口上; 4. 程序设计内容 (1). 8X8 点阵LED工作原理说明 8X8点阵LED结构如下图所示 从图4.24.2中可以看出,8X8点阵共需要64个发光二极管
[单片机]
24. 8X8 LED<font color='red'>点阵显示</font>技术
51单片机入门 - 点阵显示程序设计实验
一、LED点阵发光原理 8*8单色单片机结构图如下: https://blog.csdn.net/weixin_42625444/article/details/90897605 从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。 二、点阵扫描实验 /*********************************************** 实验名称: 点阵扫描 实验说明: 扫描每个LED灯,检查点阵是否完好 实验时间: ***********************************************/ #inc
[单片机]
四字LED点阵显示屏的制作
  随着LED的快速发展,大街小巷到处都可见到行行色色LED广告屏。它以其高亮度,低功耗。显示内容易改等特点备受青睐,于是笔者动手制作了一个四字LED点阵显示屏,现介绍给大家,以供参考。    一、显示汉字原理   我们以UCDOS中文宋体"大"字库为例,如图1所示。每一个字由16行16列的点阵组成显示。   即国标汉字库中的每一个字均由256点阵来表示。   我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示256像素的图片。 图1显示宋体"大"字实例。   图2是8X8点阵的原理图。其实就是64个发光二极管。以8X8矩阵的形式连接
[电源管理]
四字LED<font color='red'>点阵显示</font>屏的制作
基于FPGA的c点阵显示系统设计
摘要:本文用FPGA 设计 LED显示屏接收控制系统,着重研究系统硬件设计方案,进一步解决了 LED大屏幕数据的灰度控制、外扩存储器的性能要求及实现方式。用 QuartusII 软件开发各个模块, QuartusII 软件提供的人性化的界面操作,很多模块都可以在系统内直接实现, 方便实用。 LED屏早在60年代就已出现,但直到 90年代中期,才出现了全彩屏,该技术近年的价格已有了很大的降幅,分辨率也有了很大的改善。对于视频来说,LED屏的低分辨率表现性能良好。平常看到 LED屏的分辨率与电脑显示器的分辨率是差不多的。LED 彩色显示大屏是室外显示大屏中用的最多的,是公认的室外大型显示屏中最值得发展的产业,LED 屏以其高亮度
[嵌入式]
基于FPGA的c<font color='red'>点阵显示</font>系统设计
[51单片机学习笔记FOUR]---16*16LED点阵
一、LED点阵发光原理 8*8单色单片机结构图如下: 从电路图中很简单的就可以看出来,想要点亮点阵中的某一个LED灯。只要使得那个灯所在的行输出高电平,所在列输出低电平就好。 二、点阵扫描实验 1 /*********************************************** 2 实验名称: 点阵扫描 3 实验说明: 扫描每个LED灯,检查点阵是否完好 4 实验时间: 2014/12/24 5 ***********************************************/ 6 #include reg51.h 7 #include intrins.h
[单片机]
[51单片机学习笔记FOUR]---<font color='red'>16</font>*<font color='red'>16LED</font>点阵
基于89C51单片机和CAN控制器实现老旧住宅供暖计量系统的改造设计
1、引言 CAN总线技术诞生于汽车控制领域,随着其技术的不断完善,应用领域也不断扩展。 CAN总线技术进入我国以来,在经历了引进、使用阶段后,自2000年以来,国内许多相关厂商对该总线技术进行了不懈的研究与开发,取得了一定的成果,目前,国内CAN总线技术已经在汽车控制、数控机床、医疗器械和楼宇自动化等众多领域得到了应用,是受到广泛关注的总线技术之一。 CAN总线具有现场总线的特点,适合于分布式系统的应用。目前,国内已具有一定的 CAN总线产品的开发能力,其应用成本也随之降低,所以,在传统控制系统的改造中 CAN总线技术得到了比较广泛的应用。随着热能商品化和供暖计费制度的改革,国内居民住宅供暖体制也将发生变化,其中最为重要的也是
[单片机]
基于<font color='red'>89C51</font>单片机和CAN<font color='red'>控制</font>器实现老旧住宅供暖计量系统的改造设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved