找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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]);
         }
        }


请教大神指教!!!
请教大神指教!!!
请教大神指教!!!

感谢!!!

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define LCD_data  P0            
  6. sbit LCD_RS=P2^6;        // 数据/命令选择端   
  7. sbit LCD_RW=P2^5;        // 读写选择端  
  8. sbit LCD_EN=P2^7;        // 使能信号  
  9. sbit LCD_PSB=P3^2;           // 并/串选择
  10. uchar code table[64][16]={
  11.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  12.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  13.       0xFF,0xFE,0xDF,0x00,0x1C,0x0E,0x1D,0xFE,0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  14.       0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,0xB7,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  15.       0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  16.       0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  17.       0xFF,0xF4,0xEF,0x80,0x3C,0x0E,0xD7,0xFD,0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  18.       0xFF,0xFD,0xAB,0xF7,0xFF,0xFE,0x10,0x3D,0x37,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  19.       0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  20.       0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,0xDF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  21.       0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,0x9B,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  22.       0xFF,0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,0x6B,0x7B,0xEF,0xBD,0xF8,0x00,0x00,0x00,
  23.       0xFF,0xFD,0x8F,0x07,0x2F,0x03,0x1F,0x31,0xF3,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  24.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  25.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  26.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  27.       0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  28.       0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFF,0xFD,0xFF,0xF8,0x00,0x00,0x00,
  29.       0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3F,0xDC,0xFF,0xF8,0x00,0x00,0x00,
  30.       0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xBD,0x8C,0xFF,0xF8,0x00,0x00,0x00,
  31.       0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,0xFF,0xB9,0x04,0xFF,0xF8,0x00,0x00,0x00,
  32.       0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,0x3F,0xF0,0x20,0xFF,0xF8,0x00,0x00,0x00,
  33.       0xDB,0x7F,0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,0xCF,0xEE,0x71,0xFF,0xF8,0x00,0x00,0x00,
  34.       0xFB,0xF7,0xE3,0xF8,0x00,0x10,0xDF,0x8F,0xF3,0xFE,0x7D,0xFF,0xF8,0x00,0x00,0x00,
  35.       0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,0xF8,0xFE,0xFF,0xEF,0xF8,0x00,0x00,0x00,
  36.       0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,0x3C,0x3F,0xFF,0xBF,0xF8,0x00,0x00,0x00,
  37.       0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,0x06,0x1F,0x8F,0x97,0xF8,0x00,0x00,0x00,
  38.       0xFF,0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,0x01,0x0F,0x07,0x8F,0xF8,0x00,0x00,0x00,
  39.       0xFF,0xE0,0x8A,0x00,0x00,0x00,0x30,0x38,0x00,0x06,0x33,0x1B,0xF8,0x00,0x00,0x00,
  40.       0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,0x40,0x00,0x06,0x4B,0x17,0xF8,0x00,0x00,0x00,
  41.       0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,0x00,0x02,0xA2,0x05,0xF8,0x00,0x00,0x00,
  42.       0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,0x00,0x00,0xA2,0x03,0xF8,0x00,0x00,0x00,
  43.       0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,0xE0,0x00,0x44,0x01,0xF8,0x00,0x00,0x00,
  44.       0xFE,0x81,0xE8,0x00,0x01,0xC2,0x04,0x4F,0xF8,0x00,0x0F,0x03,0xF8,0x00,0x00,0x00,
  45.       0xFF,0x00,0x08,0x00,0x01,0x84,0x02,0x3E,0x00,0x00,0x1F,0x82,0xF8,0x00,0x00,0x00,
  46.       0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,0x00,0x00,0x10,0x41,0xF8,0x00,0x00,0x00,
  47.       0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,0x00,0x00,0x10,0x01,0xB8,0x00,0x00,0x00,
  48.       0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,0x00,0x00,0x10,0x01,0x18,0x00,0x00,0x00,
  49.       0xFD,0x0A,0x10,0x01,0x44,0x10,0x00,0x22,0x00,0x00,0x18,0x01,0xB8,0x00,0x00,0x00,
  50.       0xF8,0x11,0x10,0x00,0x80,0x10,0x00,0x21,0x91,0x00,0x14,0x01,0xF8,0x00,0x00,0x00,
  51.       0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,0x22,0x03,0xE0,0x00,0xB8,0x00,0x00,0x00,
  52.       0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,0x45,0x05,0x31,0x00,0xF8,0x00,0x00,0x00,
  53.       0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,0x02,0x08,0x88,0x80,0xB8,0x00,0x00,0x00,
  54.       0xFC,0x20,0x40,0x08,0xFF,0x00,0x00,0x10,0x00,0x18,0x40,0x40,0x78,0x00,0x00,0x00,
  55.       0xF6,0x20,0x40,0x08,0x80,0x00,0x00,0x08,0x00,0x68,0x40,0x00,0xD8,0x00,0x00,0x00,
  56.       0xFC,0x20,0x40,0x08,0x80,0x00,0x00,0x06,0x03,0x90,0x20,0x20,0x68,0x00,0x00,0x00,
  57.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  58.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  59.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  61.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  63.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  68.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  71.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  72.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  73.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  74.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  75. };
  76. void delay(uint z)                //        延时函数
  77. {
  78.         uint x,y;
  79.         for(x=0;x<z;x++)
  80.          for(y=0;y<110;y++);
  81. }
  82. //写指令数据到LCD
  83. void write_cmd(uchar cmd)
  84. {
  85.         LCD_RS=0;
  86.         LCD_RW=0;
  87.         LCD_EN=0;
  88.         P0=cmd;
  89.         delay(5);
  90.         LCD_EN=1;
  91.         delay(5);
  92.         LCD_EN=0;
  93. }
  94. //写显示数据到LCD
  95. void write_dat(uchar dat)
  96. {
  97.         LCD_RS=1;
  98.         LCD_RW=0;
  99.         LCD_EN=0;
  100.         P0=dat;
  101.         delay(5);
  102.         LCD_EN=1;
  103.         delay(5);
  104.         LCD_EN=0;        
  105. }
  106. //12864初始化
  107. void lcd_init()//12964初始化
  108. {
  109.         LCD_PSB=1;                                //并口模式
  110.         write_cmd(0x34);                //基本指令操作
  111.         delay(5);
  112.         write_cmd(0x0c);                //显示开,光标关
  113.         delay(5);
  114.         write_cmd(0x01);                //消除所有显示
  115.         delay(5);
  116. }
  117. //主函数
  118. main()
  119. {
  120.         uchar i,j;
  121.         delay(10);
  122.         lcd_init();                  //初始化
  123.         for(i=0;i<32;i++)
  124.         {

  125.          write_cmd(0x80+i);//垂直方向y轴
  126.          write_cmd(0x80);//水平方向x轴    水平方向地址自增
  127.          for(j=0;j<16;j++)
  128.          {
  129.          write_dat(table[i][j]);
  130.          }
  131.         }        
  132.         for(i=0;i<32;i++)
  133.         {
  134.          write_cmd(0x80+i);
  135.          write_cmd(0x88);
  136.          for(j=0;j<16;j++)
  137.          {
  138.           write_dat(table[i+32][j]);
  139.          }
  140.         }               
  141.         write_cmd(0x36);                         //打开绘图模式
  142.         write_cmd(0x30);                         //基本操作模式
  143.         while(1);                                        //没有的话 会一直闪烁 甚至不显示
  144. }




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

使用道具 举报

沙发
ID:7485 发表于 2016-12-3 21:52 | 只看该作者
常见的12864,一个汉字,上半部16列8行,下半部16列8行,组合起来就是16*16点阵的汉字。

不知道你用的是12864是什么控制芯片的?
回复

使用道具 举报

板凳
ID:138194 发表于 2016-12-4 11:33 | 只看该作者
ahshmj 发表于 2016-12-3 21:52
常见的12864,一个汉字,上半部16列8行,下半部16列8行,组合起来就是16*16点阵的汉字。

不知道你用的是 ...

ST7920

上屏只有8列。不是吗?另外8列属于下屏?
回复

使用道具 举报

地板
ID:138194 发表于 2016-12-4 11:33 | 只看该作者
ahshmj 发表于 2016-12-3 21:52
常见的12864,一个汉字,上半部16列8行,下半部16列8行,组合起来就是16*16点阵的汉字。

不知道你用的是 ...

ST7920

上屏只有8列。不是吗?另外8列属于下屏?
回复

使用道具 举报

5#
ID:7485 发表于 2016-12-4 16:59 | 只看该作者
龚红 发表于 2016-12-4 11:33
ST7920

上屏只有8列。不是吗?另外8列属于下屏?

你说的是半角字符?16*8的?

汉字(全角字符)是16*16的。
回复

使用道具 举报

6#
ID:138194 发表于 2016-12-5 17:46 | 只看该作者
汉字的大小可以改吗?
比如说是20*20;30*30的。是不是只能通过取模以图片的形式显示出来
显示图片的地址是怎么一回事???
谢谢!!!!
回复

使用道具 举报

7#
ID:138194 发表于 2016-12-5 17:48 | 只看该作者
ahshmj 发表于 2016-12-4 16:59
你说的是半角字符?16*8的?

汉字(全角字符)是16*16的。

汉字。
回复

使用道具 举报

8#
ID:111634 发表于 2016-12-5 17:58 | 只看该作者
本帖最后由 zl2168 于 2016-12-5 18:02 编辑

LCD12864显示屏显示汉字
AMPIRE 12864LCD显示屏简介
引脚功能   
显示屏数据结构   
汉字编码
汉字编码概述   
汉字点阵显示代码   
汉字点阵取模软件   
电路和应用程序   
Keil调试   
Proteus仿真   
Proteus仿真一下,确认有效。
实验25 LCD12864显示屏显示.rar (60.48 KB, 下载次数: 18)
以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
《单片机原理与控制技术——双解汇编和C51》第3ISBN 978-7-111-42393-5机械工业出版社
80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9
书中电路和程序设计有详细说明,程序语句条条有注解。





















回复

使用道具 举报

9#
ID:138194 发表于 2016-12-5 19:14 | 只看该作者
谢谢!!!
回复

使用道具 举报

10#
ID:7485 发表于 2016-12-6 08:18 | 只看该作者
龚红 发表于 2016-12-5 17:46
汉字的大小可以改吗?
比如说是20*20;30*30的。是不是只能通过取模以图片的形式显示出来
显示图片的地址 ...

凡是LCD自带的汉子库,基本上都是16*16点阵的汉字。如果用绘图模式可以改其他的。但是每列8个点(一个字节)是不容易改的。当然,多余的闲置是可以的。
回复

使用道具 举报

11#
ID:7485 发表于 2016-12-6 08:22 | 只看该作者
zl2168 发表于 2016-12-5 17:58
LCD12864显示屏显示汉字
⒈ AMPIRE 12864型LCD显示屏简介
⑴ 引脚功能    …

你的这个是不带汉字库的。KS0108主控芯片的。从有S1、S2引脚可以看出来。
回复

使用道具 举报

12#
ID:111634 发表于 2016-12-6 08:31 | 只看该作者
ahshmj 发表于 2016-12-6 08:22
你的这个是不带汉字库的。KS0108主控芯片的。从有S1、S2引脚可以看出来。

我推荐的所有案例都是带proteus仿真的,而proteus元件库中没有带汉字的12864芯片,没法提供不带汉字库的proteus仿真案例。但电路、程序和编程思路是可参考的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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