标题: 12864在单片机上显示图片(无偿奉上) [打印本页]

作者: NB没B    时间: 2014-8-28 16:08
标题: 12864在单片机上显示图片(无偿奉上)
#include<stc12.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define LCD_data  P0            
sbit LCD_RS=P1^0;        // 数据/命令选择端   
sbit LCD_RW=P1^1;        // 读写选择端  
sbit LCD_EN=P1^2;        // 使能信号  
sbit LCD_PSB=P1^6;    // 并/串选择
uchar code table[64][16]={
   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xDF,0x00,0x1C,0x0E,0x1D,0xFE,0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,0xB7,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF4,0xEF,0x80,0x3C,0x0E,0xD7,0xFD,0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0xF7,0xFF,0xFE,0x10,0x3D,0x37,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,0xDF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,0x9B,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,0x6B,0x7B,0xEF,0xBD,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x8F,0x07,0x2F,0x03,0x1F,0x31,0xF3,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFF,0xFD,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3F,0xDC,0xFF,0xF8,0x00,0x00,0x00,
      0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xBD,0x8C,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,0xFF,0xB9,0x04,0xFF,0xF8,0x00,0x00,0x00,
      0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,0x3F,0xF0,0x20,0xFF,0xF8,0x00,0x00,0x00,
      0xDB,0x7F,0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,0xCF,0xEE,0x71,0xFF,0xF8,0x00,0x00,0x00,
      0xFB,0xF7,0xE3,0xF8,0x00,0x10,0xDF,0x8F,0xF3,0xFE,0x7D,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,0xF8,0xFE,0xFF,0xEF,0xF8,0x00,0x00,0x00,
      0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,0x3C,0x3F,0xFF,0xBF,0xF8,0x00,0x00,0x00,
      0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,0x06,0x1F,0x8F,0x97,0xF8,0x00,0x00,0x00,
      0xFF,0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,0x01,0x0F,0x07,0x8F,0xF8,0x00,0x00,0x00,
      0xFF,0xE0,0x8A,0x00,0x00,0x00,0x30,0x38,0x00,0x06,0x33,0x1B,0xF8,0x00,0x00,0x00,
      0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,0x40,0x00,0x06,0x4B,0x17,0xF8,0x00,0x00,0x00,
      0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,0x00,0x02,0xA2,0x05,0xF8,0x00,0x00,0x00,
      0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,0x00,0x00,0xA2,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,0xE0,0x00,0x44,0x01,0xF8,0x00,0x00,0x00,
      0xFE,0x81,0xE8,0x00,0x01,0xC2,0x04,0x4F,0xF8,0x00,0x0F,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x00,0x08,0x00,0x01,0x84,0x02,0x3E,0x00,0x00,0x1F,0x82,0xF8,0x00,0x00,0x00,
      0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,0x00,0x00,0x10,0x41,0xF8,0x00,0x00,0x00,
      0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,0x00,0x00,0x10,0x01,0xB8,0x00,0x00,0x00,
      0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,0x00,0x00,0x10,0x01,0x18,0x00,0x00,0x00,
      0xFD,0x0A,0x10,0x01,0x44,0x10,0x00,0x22,0x00,0x00,0x18,0x01,0xB8,0x00,0x00,0x00,
      0xF8,0x11,0x10,0x00,0x80,0x10,0x00,0x21,0x91,0x00,0x14,0x01,0xF8,0x00,0x00,0x00,
      0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,0x22,0x03,0xE0,0x00,0xB8,0x00,0x00,0x00,
      0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,0x45,0x05,0x31,0x00,0xF8,0x00,0x00,0x00,
      0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,0x02,0x08,0x88,0x80,0xB8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0xFF,0x00,0x00,0x10,0x00,0x18,0x40,0x40,0x78,0x00,0x00,0x00,
      0xF6,0x20,0x40,0x08,0x80,0x00,0x00,0x08,0x00,0x68,0x40,0x00,0xD8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0x80,0x00,0x00,0x06,0x03,0x90,0x20,0x20,0x68,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,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,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,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,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,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,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,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,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,0x00,0x00,0x00
};
void delay(uint z)  // 延时函数
{
uint x,y;
for(x=0;x<z;x++)
  for(y=0;y<110;y++);
}
//写指令数据到LCD
void write_cmd(uchar cmd)
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
//写显示数据到LCD
void write_dat(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
//12864初始化
void lcd_init()//12964初始化
{
LCD_PSB=1;    //并口模式
write_cmd(0x34);  //基本指令操作
delay(5);
write_cmd(0x0c);  //显示开,光标关
delay(5);
write_cmd(0x01);  //消除所有显示
delay(5);
}
//主函数
main()
{
uchar i,j;
delay(10);
lcd_init();    //初始化
for(i=0;i<32;i++)
{
  write_cmd(0x80+i);
  write_cmd(0x80);
  for(j=0;j<16;j++)
  {
  write_dat(table[i][j]);
  }
}
for(i=0;i<32;i++)
{
  write_cmd(0x80+i);
  write_cmd(0x88);
  for(j=0;j<16;j++)
  {
   write_dat(table[i+32][j]);
  }
}  
write_cmd(0x36);    //打开绘图模式
write_cmd(0x30);    //基本操作模式
while(1);     //没有的话 会一直闪烁 甚至不显示
}

作者: hujia    时间: 2014-8-28 16:49
好东西  楼主能共享一下 电路图吗
作者: NB没B    时间: 2014-8-28 17:07
hujia 发表于 2014-8-28 16:49
好东西  楼主能共享一下 电路图吗


12864的电路图

QQ截图20140828170626.png (21.81 KB, 下载次数: 193)

QQ截图20140828170626.png

作者: xiaoou    时间: 2014-8-28 17:10
NB没B 发表于 2014-8-28 17:07
12864的电路图

赞一个啊,楼主的这屏  是带字库的 还是不带字库的呢?
作者: NB没B    时间: 2014-8-28 17:12
xiaoou 发表于 2014-8-28 17:10
赞一个啊,楼主的这屏  是带字库的 还是不带字库的呢?

带字库 不过不能显示汉字“三”和“庚”这是我用的keil4的bug
作者: 浅墨画青梅    时间: 2014-8-29 09:53
楼主,你用的是12864 那个型号的?
作者: NB没B    时间: 2014-8-29 13:51
浅墨画青梅 发表于 2014-8-29 09:53
楼主,你用的是12864 那个型号的?

QC1602A

作者: 浅墨画青梅    时间: 2014-8-29 13:54
NB没B 发表于 2014-8-29 13:51
QC1602A

我读书少,表要骗我,12864和1602是同一码事?!
作者: NB没B    时间: 2014-8-29 17:45
浅墨画青梅 发表于 2014-8-29 13:54
我读书少,表要骗我,12864和1602是同一码事?!

看错了 我以为是我的另一个有关1602显示时钟的帖子呢  12864就是在网上买的普通的  后面只有QC PASS
作者: 13304563556    时间: 2014-9-5 12:57
去隔膜就好了呗!
作者: heam    时间: 2014-9-15 12:21
谢谢分享
作者: yongxiang6091    时间: 2014-9-15 21:49
谢谢楼主分享!!!
作者: 张文Joe    时间: 2014-9-28 21:51
没贴张图吗?
作者: zxj366    时间: 2014-9-30 15:58
没有图呀
作者: 12345-----    时间: 2014-11-24 14:19
什么意思不懂那个是什么字模
作者: zjf110    时间: 2014-11-25 00:54
感谢楼主了! 已下载,作个参考资料很不错的.
作者: wwwmagic    时间: 2014-12-30 13:25
谢谢楼主
作者: 新洛克    时间: 2015-4-6 20:37
这程序写的不错
作者: 电子1311班    时间: 2015-5-17 17:51
感谢楼主的分享
作者: whtwhtw    时间: 2015-5-17 18:37
额,主函数里初始化后面的几个for循环放while(1)后面吧,你的程序执行一次就死循环了
作者: 海阔天空2015    时间: 2015-7-3 17:18
使用楼主的程序确实可以显示图片,但是有几点建议
1、可以使用指针 ,不使用二维数组
2、将不必要的延时去掉,可以加快图片刷新的速度
3、我经过修改后,图形显示的速度还是很快的,而楼主的程序要经过2--3秒的时间才可以显示出来

作者: koenlee93    时间: 2016-3-23 07:17
最近正在弄12864显示图片
作者: liuzhaoxin1020    时间: 2017-1-1 12:31
感谢分享
作者: talentD    时间: 2017-7-21 22:53
注释写错了  write_com(0x34)是扩充指令
作者: 阔爱的钊钊    时间: 2018-5-22 15:22
测试过没毛病老铁




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1