找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机编程使用LCD12864输出图形,正确的图形不能显示,请求高手帮忙看看

[复制链接]
跳转到指定楼层
楼主
#include <reg51.h>

sbit E = P2^0;
sbit RW = P2^1;
sbit RS = P2^2;
sbit CS1 = P2^3;
sbit CS2 = P2^4;
sbit RST = P2^5;

unsigned char code dis[] = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x83,0x83,0x83,0x83,
0x83,0x83,0x83,0x83,0x83,0xFF,0xFF,0x81,0x01,0x01,0x01,0x03,0xFF,0xC3,0x19,0x33,
0x93,0xC3,0xE7,0xFF,0xFF,0xFF,0x07,0x03,0x03,0x03,0x03,0xFF,0xFF,0xFF,0x83,0x83,
0x83,0x03,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,
0xFF,0xFF,0x0F,0x0F,0x03,0x01,0x01,0x01,0x01,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0x07,
0x07,0x07,0x07,0x07,0x87,0x07,0x07,0x07,0x07,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,
0x03,0x03,0x03,0x03,0xFF,0xFF,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x01,0x01,0x01,0x01,
0x19,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xC1,0xC1,0xC1,0xC1,0xC1,0xE1,
0x21,0x21,0x21,0x21,0xE1,0xE1,0xE1,0xE1,0x80,0x00,0x00,0x00,0x01,0xE1,0xE1,0xE1,
0xE1,0xC1,0xFF,0xFF,0xFF,0xFF,0x0F,0x07,0x07,0x07,0x07,0xFF,0xFF,0xFF,0xF9,0xE1,
0x80,0x00,0x00,0x03,0x0F,0x3F,0x1F,0x03,0x00,0x00,0x00,0xE0,0xF8,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFE,0x06,0x00,0x00,0x00,0x80,0xFE,0xFE,0x00,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,
0x07,0x07,0x07,0x07,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0xE0,0xE0,0x00,
0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,
0x00,0x00,0x00,0x00,0xC1,0xE1,0xC1,0xE1,0xFF,0x80,0x00,0x00,0x00,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0x3E,0x0E,0x02,0x03,0x07,0xCF,0xFF,0x3F,
0x0F,0x07,0x00,0x00,0x80,0xE0,0x80,0x00,0x00,0x00,0x0F,0x3F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0x3E,0x0E,0x02,0x06,0x0F,0x8F,0x00,0x00,0x00,0x00,0xF3,0xF3,0x03,0x3F,0x3F,0x03,
0xF3,0xF3,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x80,0xC0,0xC0,0xC0,0xC1,0xC1,
0xC0,0xC0,0xC0,0xC0,0xE1,0xE1,0xE0,0xE0,0xE7,0xFF,0xC0,0xC0,0xC0,0xC0,0xC1,0xC3,
0xC3,0xC3,0xFF,0xFF,0xFF,0xFF,0xE3,0xC0,0xC0,0xC0,0xF0,0xFC,0xE7,0xE3,0xC0,0x80,
0x80,0xE0,0xF8,0xFE,0xFF,0xFF,0xFF,0xFE,0xF8,0xE0,0x80,0x80,0xC0,0xE3,0xE7,0xFF,
0xFF,0xEF,0xC0,0xC0,0xC0,0xC0,0xFF,0xE1,0xC1,0xC1,0xC0,0xC0,0xC0,0xC0,0xFF,0xE0,
0xC0,0xC0,0xC0,0xC0,0xC1,0xC1,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xFF,0xE3,0xC0,
0xC0,0xC0,0xF0,0xFC,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC1,0xC1,0xC0,0xC0,0xC0,0xC0,
0xC1,0xC1,0xC0,0xC0,0xC0,0xC0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};

void WriteCMD(unsigned char x)
{
        int i;
  RS = 0;//进入LCD命令状态
  RW = 0;//写操作
  P0 = x;//指令准备
  E = 1;//数据读写操作允许位,允许指令写入
  for(i = 0; i < 2000; i++);//一定反应时间
  E = 0;//关闭允许

}

void WriteDATA(unsigned char x)
{
  int i;
  RS = 1;//进入LCD命令状态
  RW = 0;//写操作
  P0 = x;//数据内容准备
  E = 1;//数据读写操作允许位,允许指令写入
  for(i = 0; i < 2000; i++);//一定反应时间
  E = 0;//关闭允许

}

void LCDinit(void)
{
  WriteCMD(0x3F);//开显示
  WriteCMD(0xC0);//设置初始行
  WriteCMD(0xB8);//设置X坐标
  WriteCMD(0x40);//设置y坐标
}
main()
{
  int x,y,k;
  RST = 0;
        RST = 1;
        LCDinit();
        
        for(k = 0,x = 0;x < 8; x++)//8bit,一个x是八行
        {
                CS1 = 0;
                CS2 = 1;
                WriteCMD(0xB8 + x);//设置X坐标
                for(y = 0; y < 64; y++) WriteDATA(dis[k++]);
                CS1 = 1;
                CS2 = 0;
                WriteCMD(0xB8 + x);//设置X坐标
                for(y = 0; y < 64; y++) WriteDATA(dis[k++]);
        }        
  while(1);
}


捕获4.PNG (74.7 KB, 下载次数: 40)

仿真输出结果

仿真输出结果

捕获5.PNG (39.2 KB, 下载次数: 28)

生成的图形代码

生成的图形代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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