找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1431|回复: 4
打印 上一主题 下一主题
收起左侧

求助各位大神,帮忙看一下为什么仿真时12864乱码

[复制链接]
跳转到指定楼层
楼主
求助各位大神,帮忙看一下为什么仿真时12864乱码
程序:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RST=P2^0;
sbit E=P2^1;
sbit wr=P2^2;
sbit rs=P2^3;
sbit CS2=P2^4;
sbit CS1=P2^5;
uchar code hanzi_ZM[][32]={

/*--  文字:  壮  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x04,0x10,0x04,0x10,0x04,0x12,0x04,0x14,0x04,0x14,0x04,0xD0,0x7F,0x18,0x04,
0x14,0x04,0x12,0x04,0x11,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x90,0x3F,0x10,0x00,

/*--  文字:  丽  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x7C,0x1F,0x44,0x11,0x44,0x11,0x44,0x11,
0x4C,0x13,0x54,0x15,0x54,0x15,0x44,0x11,0x44,0x11,0x44,0x11,0x54,0x15,0x24,0x09,

/*--  文字:  7  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x42,0x00,0x20,0x00,0x20,0x00,0x10,0x00,
0x10,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x42,0x00,0x42,0x00,0x42,0x00,
0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  年  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x00,0x08,0x00,0xF8,0x3F,0x04,0x01,0x04,0x01,0x02,0x01,0xF8,0x1F,0x08,0x01,
0x08,0x01,0x08,0x01,0xFF,0x7F,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,

/*--  文字:     --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
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,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   --*/
0x80,0x00,0x80,0x00,0xFE,0x3F,0x40,0x01,0x20,0x02,0x10,0x04,0x0C,0x18,0x03,0x60,
0xF8,0x0F,0x88,0x08,0x88,0x08,0xF8,0x0F,0x88,0x08,0x88,0x08,0xF8,0x0F,0x08,0x08,

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

/*--  文字:  新  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x00,0x10,0x20,0xFE,0x1E,0x00,0x02,0x44,0x02,0x28,0x02,0xFF,0x7E,0x10,0x12,
0x10,0x12,0xFE,0x12,0x10,0x12,0x54,0x12,0x92,0x12,0x11,0x11,0x14,0x11,0x88,0x10,

/*--  文字:  时  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x10,0x00,0x10,0x3E,0x10,0x22,0x10,0xA2,0x7F,0x22,0x10,0x22,0x10,0x3E,0x10,
0x22,0x11,0x22,0x12,0x22,0x12,0x22,0x10,0x3E,0x10,0x22,0x10,0x00,0x14,0x00,0x08,

/*--  文字:  代  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x09,0x10,0x11,0x10,0x11,0x08,0x01,0x08,0x7D,0xEC,0x03,0x0C,0x01,0x0A,0x02,
0x09,0x02,0x08,0x02,0x08,0x04,0x08,0x44,0x08,0x48,0x08,0x50,0x08,0x60,0x08,0x40,
};

uchar code shuzi_ZM[][16]={
/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x10,0x1C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x1C,0x22,0x42,0x42,0x42,0x62,0x5C,0x40,0x40,0x24,0x18,0x00,0x00,

/*--  文字:  4  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x20,0x30,0x30,0x28,0x24,0x24,0x22,0xFE,0x20,0x20,0xF8,0x00,0x00,

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x1C,0x22,0x42,0x42,0x42,0x62,0x5C,0x40,0x40,0x24,0x18,0x00,0x00,

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

/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x40,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00,

/*--  文字:  0  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,

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

/*--  文字:  9  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x1C,0x22,0x42,0x42,0x42,0x62,0x5C,0x40,0x40,0x24,0x18,0x00,0x00,

/*--  文字:  c  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00,

/*--  文字:  o  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,

/*--  文字:  m  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00,

/*--  文字:  e  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7E,0x02,0x42,0x3C,0x00,0x00,

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

/*--  文字:  o  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,

/*--  文字:  n  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,


   };

void delayms(uint x)
{
uchar i;
while(x--)
for(i=0;i<123;i++);
}

void writeData(uchar x)
{
  rs=1;
  wr=0;
  P0=x;
  _nop_();
  E=1;
   _nop_();
  E=0;
}

void writeCon(uchar x)
{
  rs=0;
  wr=0;
  P0=x;
  _nop_();
  E=1;
   _nop_();
  E=0;
}

void lcd_xy(uchar x,y)
{
if(y<64)
{
  CS1=1;
  CS2=0;
  writeCon(0X40|y);
}
else
{
  CS1=0;
  CS2=1;
  writeCon(0X40|y-64);
}
  writeCon(0Xb8|x);
  }

void clear()
{
   uint i,j;
   CS1=CS2=1;
   for(i=0;i<8;i++);
   {
             writeCon(0xb8+i);
          writeCon(0X40);
          for(j=0;j<64;j++)
          {
          writeCon(0X00);
          }
   }
}

void init12864()
{
  RST=0;
  delayms(15);
  RST=1;
  writeCon(0X3e);
  writeCon(0X40);
  writeCon(0Xb8);
  writeCon(0Xc0);
  writeCon(0X3f);
}

void writeHZ(uchar x,y,uchar code*p)
{
  uint t=0;
  uchar i,j;
  for(i=x;i<x+2;i++)
  {
          for(j=y;j<y+6;j++)
        {
         lcd_xy(i,j);
         writeData(p[t++]);
        }
  }
}


void writeAscii(uchar x,y,uchar code*p)
{
  uint t=0;
  uchar i,j;
  for(i=x;i<x+2;i++)
  {
          for(j=y;j<y+6;j++)
        {
         lcd_xy(i,j);
         writeData(p[t++]);
        }
  }
}


void main()
{
  init12864();
  clear();
  writeAscii(0,16,shuzi_ZM[0]);
  writeAscii(0,24,shuzi_ZM[1]);
  writeAscii(0,32,shuzi_ZM[2]);
  writeAscii(0,40,shuzi_ZM[3]);
  writeAscii(0,48,shuzi_ZM[4]);
  writeAscii(0,56,shuzi_ZM[5]);
  writeAscii(0,64,shuzi_ZM[6]);
  writeAscii(0,72,shuzi_ZM[7]);
  writeAscii(0,80,shuzi_ZM[8]);
  writeHZ(2,16,shuzi_ZM[0]);
  writeHZ(2,32,shuzi_ZM[1]);
  writeHZ(2,48,shuzi_ZM[2]);
  writeHZ(2,64,shuzi_ZM[3]);
  writeHZ(2,80,shuzi_ZM[4]);
  writeHZ(4,16,shuzi_ZM[5]);
  writeHZ(4,32,shuzi_ZM[6]);
  writeHZ(4,48,shuzi_ZM[7]);
  writeHZ(4,64,shuzi_ZM[8]);
  writeHZ(4,80,shuzi_ZM[9]);
  writeAscii(6,16,shuzi_ZM[9]);
  writeAscii(6,24,shuzi_ZM[10]);
  writeAscii(6,32,shuzi_ZM[11]);
  writeAscii(6,40,shuzi_ZM[12]);
  writeAscii(6,48,shuzi_ZM[13]);
  writeAscii(6,56,shuzi_ZM[14]);
  writeAscii(6,64,shuzi_ZM[15]);
  while(1);
}


仿真:


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2021-8-2 15:04 | 只看该作者
从画面上看像是是行列颠倒了
回复

使用道具 举报

板凳
ID:939710 发表于 2021-8-2 16:58 | 只看该作者
这个屏是分左右屏的  x坐标范围只能到0-63
回复

使用道具 举报

地板
ID:958228 发表于 2021-8-3 07:51 | 只看该作者
lishengaha 发表于 2021-8-2 16:58
这个屏是分左右屏的  x坐标范围只能到0-63

设置的左半屏小于64,,范围就是在0-63
回复

使用道具 举报

5#
ID:691028 发表于 2021-8-3 13:07 | 只看该作者
取模方向改一下就好了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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