标题: 12864程序中上半屏 下半屏的问题 [打印本页]
作者: 龚红 时间: 2016-12-3 20:56
标题: 12864程序中上半屏 下半屏的问题
for(j=0;j<16;j++)
{
write_dat(table[ i][j]);
}
16在这指16列, 可是上半屏才8列。如果这样写就一起把下半屏一起写了。为什么还写
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]);
}
}
请教大神指教!!!
请教大神指教!!!
请教大神指教!!!
感谢!!!
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define LCD_data P0
- sbit LCD_RS=P2^6; // 数据/命令选择端
- sbit LCD_RW=P2^5; // 读写选择端
- sbit LCD_EN=P2^7; // 使能信号
- sbit LCD_PSB=P3^2; // 并/串选择
- 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);//垂直方向y轴
- write_cmd(0x80);//水平方向x轴 水平方向地址自增
- 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); //没有的话 会一直闪烁 甚至不显示
- }
复制代码
作者: ahshmj 时间: 2016-12-3 21:52
常见的12864,一个汉字,上半部16列8行,下半部16列8行,组合起来就是16*16点阵的汉字。
不知道你用的是12864是什么控制芯片的?
作者: 龚红 时间: 2016-12-4 11:33
ST7920
上屏只有8列。不是吗?另外8列属于下屏?
作者: 龚红 时间: 2016-12-4 11:33
ST7920
上屏只有8列。不是吗?另外8列属于下屏?
作者: ahshmj 时间: 2016-12-4 16:59
你说的是半角字符?16*8的?
汉字(全角字符)是16*16的。
作者: 龚红 时间: 2016-12-5 17:46
汉字的大小可以改吗?
比如说是20*20;30*30的。是不是只能通过取模以图片的形式显示出来
显示图片的地址是怎么一回事???
谢谢!!!!
作者: 龚红 时间: 2016-12-5 17:48
汉字。
作者: zl2168 时间: 2016-12-5 17:58
本帖最后由 zl2168 于 2016-12-5 18:02 编辑
LCD12864显示屏显示汉字
⒈ AMPIRE 12864型LCD显示屏简介
⑴ 引脚功能 …
⑵ 显示屏数据结构 …
⒉ 汉字编码
⑴ 汉字编码概述 …
⑵ 汉字点阵显示代码 …
⑶ 汉字点阵取模软件 …
⒊ 电路和应用程序 …
⒋ Keil调试 …
⒌ Proteus仿真 …
先Proteus仿真一下,确认有效。
以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
《单片机原理与控制技术——双解汇编和C51》第3版ISBN 978-7-111-42393-5机械工业出版社
《80C51单片机实用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9
书中电路和程序设计有详细说明,程序语句条条有注解。
作者: 龚红 时间: 2016-12-5 19:14
谢谢!!!
作者: ahshmj 时间: 2016-12-6 08:18
凡是LCD自带的汉子库,基本上都是16*16点阵的汉字。如果用绘图模式可以改其他的。但是每列8个点(一个字节)是不容易改的。当然,多余的闲置是可以的。
作者: ahshmj 时间: 2016-12-6 08:22
你的这个是不带汉字库的。KS0108主控芯片的。从有S1、S2引脚可以看出来。
作者: zl2168 时间: 2016-12-6 08:31
我推荐的所有案例都是带proteus仿真的,而proteus元件库中没有带汉字的12864芯片,没法提供不带汉字库的proteus仿真案例。但电路、程序和编程思路是可参考的。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |