单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 721|回复: 4
收起左侧

16*16汉字点陈,多个汉字怎么一个接一个显示出来?

[复制链接]
努力-奋斗 发表于 2017-7-15 16:39 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;

void delay(u16 i)
{
   while(i--);
}

u8  code ledwei[]=
{
  0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,

};


sbit  SER = P3^4; //串行数据输入
sbit  RCLK = P3^5; //存储寄存器时钟输入
sbit  SRCLK = P3^6; //移位寄存器时钟输入

u8 code Digital1[]=
{
/*--  文字:  普  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,


};

u8 code Digital2[]=
{
/*--  文字:  我  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,
0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00,

};

void HC595(u8 dat1,u8 dat2, u8 dat3, u8 dat4)
{
   u8 a;

   for(a=0; a<8; a++)
   {
          SER = dat1 >>7;
          dat1 <<= 1;

      SRCLK = 0;
          _nop_();
          _nop_();
          SRCLK = 1;
          _nop_();
          _nop_();

   }

   for(a=0; a<8; a++)
   {
          SER = dat2 >>7;
          dat2 <<= 1;

      SRCLK = 0;
          _nop_();
          _nop_();
          SRCLK = 1;
          _nop_();
          _nop_();

   }

   for(a=0; a<8; a++)
   {
          SER = dat3 >>7;
          dat3 <<= 1;

      SRCLK = 0;
          _nop_();
          _nop_();
          SRCLK = 1;
          _nop_();
          _nop_();

   }

   for(a=0; a<8; a++)
   {
          SER = dat4 >>7;
          dat4 <<= 1;

      SRCLK = 0;
          _nop_();
          _nop_();
          SRCLK = 1;
          _nop_();
          _nop_();

   }

      RCLK = 0;
          _nop_();
          _nop_();
          RCLK = 1;
          _nop_();
          _nop_();


}

void main()
{
    u8 i ;
       
       
    while(1)
        {  
           for(i=0;i<16;i++)
           {
             HC595(~ledwei[i+16],~ledwei[i],Digital2[16+i],Digital2[i]);
                 delay(10);
               
               
           }            
                                 
   }
}

回复

使用道具 举报

sldx 发表于 2017-7-15 19:21 来自手机 | 显示全部楼层
用二维数组,譬如woshi[][]={{我};{是}}我和是是点阵数组
回复

使用道具 举报

jinsheng7533967 发表于 2019-2-3 01:45 | 显示全部楼层
不难,建议在论坛找一个现实的案例调试,先开懂代码,再改改修修,后自己写整个代码就掌握了

评分

参与人数 3黑币 +105 收起 理由
shuisheng + 35
刀刀见红 + 35 赞一个!
areyouok + 35 很给力!

查看全部评分

回复

使用道具 举报

日本人孙笑川 发表于 2019-2-3 22:52 | 显示全部楼层
二维数组 你看看main里面的循环吧
#include "reg51.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define WEI P0
sbit shcp=P3^6;
sbit stcp=P3^5;
sbit ds=P3^4;
u8 Weixuan[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u8 Word[4][8]={{0x8a,0x7e,0x2a,0x9f,0xd5,0xff,0xd5,0x9f},
               {0x40,0x44,0x44,0x7c,0x44,0x44,0x40,0x00},
               {0x88,0x48,0x28,0x1e,0x28,0x48,0x88,0x00},
{0x06,0x22,0x2b,0xaa,0xfb,0x2a,0x23,0x06}};
void delay(u16 i)
{
        while(i--);
}
void SendData(u8 dat)
{
        u8 i;
        shcp=0;stcp=0;
        for(i=0;i++;i<8)
  {
                ds=dat>>7;
                dat<<=1;
                shcp=1;//上升沿时数据移位
                _nop_();
                _nop_();
                shcp=0;
        }
        stcp=1;//移动结束后产生正脉冲所以是在循环外上升沿
        _nop_();
        _nop_();
        stcp=0;
}
void main()
{
        u8 i,j=0;
       
        u16 a=0;
        while(1)
        {
               
                        for(i=0;i<8;i++)
                {
                                WEI=Weixuan[i];
                        SendData(Word[j][i]);
                        delay(2);SendData(0x00);
                }
                a++;
                        j++;
                        if(j==4)
                        j=0;
                }
        }
回复

使用道具 举报

sheng7533967 发表于 2019-2-12 01:30 | 显示全部楼层
用二维数组

评分

参与人数 1黑币 +35 收起 理由
就你?呸! + 35

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

快速回复 返回顶部 返回列表