/*选择屏幕screen: 0-全屏,1-左屏,2-右屏*/
void SelectScreen(uchar screen)
{  switch(screen){ case 0: LCD12864CS1=0;//全屏_nop_(); _nop_(); _nop_(); LCD12864CS2=0; _nop_(); _nop_(); _nop_(); break; case 1: LCD12864CS1=0;//左屏_nop_(); _nop_(); _nop_(); LCD12864CS2=1;_nop_(); _nop_(); _nop_(); break;case 2: LCD12864CS1=1;//右屏_nop_(); _nop_(); _nop_(); LCD12864CS2=0;_nop_(); _nop_(); _nop_(); break;}
}/*清屏screen: 0-全屏,1-左屏,2-右*/
void ClearScreen(uchar screen)
{  uchar i,j;SelectScreen(screen);
for(i=0;i<8;i++)  //控制页数0-7,共8页{LCDSetPage(i);LCDSetColumn(0);for(j=0;j<64;j++)    //控制列数0-63,共64列{LCDWriteData(0x00); //写点内容,列地址自动加1}}
}

记录一些学习中遇到的问题。其实LCD12864不用字库用字符组也可显示字符。

#include<reg51.h>
#include"AMPIRE128X64.h"#define uchar unsigned char#ifndef table
#define table[]={"0123456789-°C"};
#endif
/*******************************************************************************
* 函 数 名         : main
* 函数功能         : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/uchar code HZ[]=
{
/*--  文字:  温  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,/*--  文字:  度  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*--  文字:  1  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x3F,0x20,0x20,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,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  温  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,/*--  文字:  度  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*--  文字:  2  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,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,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*--  文字:  温  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,/*--  文字:  度  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*--  文字:  3  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x20,0x21,0x21,0x22,0x1C,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,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*显示全角汉字*/
void Display(uchar ss,uchar page,uchar column,uchar number)
{int i; //选屏参数,pagr选页参数,column选列参数,number选第几汉字输出SelectScreen(ss);column=column&0x3f;LCDSetPage(page); //写上半页LCDSetColumn(column); //控制列for(i=0;i<16;i++)  //控制16列的数据输出{LCDWriteData(HZ[i+32*number]); //i+32*number汉字的前16个数据输出}LCDSetPage(page+1);  //写下半页LCDSetColumn(column);    //控制列for(i=0;i<16;i++)   //控制16列的数据输出{LCDWriteData(HZ[i+32*number+16]); //i+32*number+16汉字的后16个数据输出}
}void main()
{ uchar i,j;LCD12864RST=1;LCD12864Init();ClearScreen(0);//清屏 LCDSetColumn(0);LCDSetPage(0);while(1){for(i=0;i<4;i++)Display(1,0,i*16,i);//温度1for(i=0;i<4;i++)Display(1,0+2,i*16,i+4);//温度2for(i=0;i<4;i++)Display(1,0+2+2,i*16,i+8);//温度3        }}/*******************************************************************************
* 函 数 名         : Delay10ms
* 函数功能         : 延时函数,延时10ms
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/void Delay10ms(unsigned int c)   //误差 0us
{unsigned char a,b;for(;c>0;c--)for(b=38;b>0;b--)for(a=130;a>0;a--);
}

关于单片机控制用字库显示LCD12864汉字相关推荐

  1. c语言控制数码管显示时间,单片机 控制 数码管显示

    常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...

  2. 汉字点阵c语言程序,用c51单片机控制1616点阵显示汉字源代码

    #include #define uchar unsigned char #define uint unsigned int #define out0 P0 #define out2 P2 #defi ...

  3. 单片机控制发光二极管的显示(2)

    我们今天来说说单片机是如何控制发光二极管的. 如果P0口作为通用I/O使用,由于漏极开路,需要外接上拉电阻,而P1~P3口内部已有30k0左右的上拉电阻.下面来讨论PI~P3口如何与LED发光二极管的 ...

  4. 单片机控制发光二极管的显示(1)

    我们今天来说说单片机是如何控制发光二极管的. 如果P0口作为通用I/O使用,由于漏极开路,需要外接上拉电阻,而P1~P3口内部已有30k0左右的上拉电阻.下面来讨论PI~P3口如何与LED发光二极管的 ...

  5. 51单片机控制数码管显示

    前言 今天学习51单片机的数码管模块 我的学习板上面的数码管是4为一体由12个引脚控制的模块. 今天就编程控制它显示我们想要的输出. 数码管本质上是由8个LED拼接而成的,他们分别叫做a,b,c,d, ...

  6. 单片机控制LED点阵显示心形图形并滚动

    题目要求: 显示心形图形,并不断滚动 仿真电路图: 仿真效果: C语言程序代码: #include<reg51.h> #include<intrins.h> unsigned ...

  7. 单片机控制数码管显示一个两位数

    题目具体要求: 数码管可以显示任意一个两位数. 仿真实验电路图: 实验代码: #include <at89x51.h> unsigned char duanma[]={0x3F,0x06

  8. 用单片机在屏幕上显示字库中的汉字

    在屏幕上显示字库中汉字 显示原理 字体模型 1.取模 2.字库 显示函数的实现 1.首先实现点亮一个点 2.以汉字12 * 12,字符6 * 12为例写的驱动函数 3.显示函数(集成到一个函数中) 总 ...

  9. c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...

最新文章

  1. HDU - 3605 Escape(二分图多重匹配-网络流最大流+思维建边+状态压缩)
  2. leetcode 765. 情侣牵手(并查集)
  3. java源代码实例倒计时_Java倒计时三种实现方式代码实例
  4. 信息学奥赛C++语言:梯形面积
  5. 搭乘云原生与数据中台实践列车 通往数字化转型前沿之旅
  6. Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法
  7. 中国未来5年IP地址需求总量高达345亿
  8. 如何导入JDBC驱动
  9. STM32学习——GPIO应用之按键实验
  10. 关于Zipf定律的理解和python实现
  11. 学英语尽量不要从背词汇表开始
  12. 【Kaggle 教程】Data Visualization 数据可视化-画图-各种图
  13. Qt调试错误:The inferior stopped because it received a signal from the Operating System.SIGSEGV
  14. 获取Android设备的唯一识别码|设备号|序号|UUI
  15. 三分钟编程系列,教你用C++编写赛车游戏,有源代码 !
  16. strchr()函数用法及其详解
  17. 面向对象三大基本特性
  18. SPI的4种采样模式
  19. MySQL高级篇知识点——其它数据库日志
  20. matlab自定义函数拟合写法,[MATLAB基础] 求助:如何确定自定义函数拟合时的参数初值?感谢!...

热门文章

  1. 12V/24V转5V降压芯片
  2. java.sql.SQLException: Field 'id' doesn't have a default value解决方案
  3. 在编译内核的最后阶段出现sdhci_esdhc_imx_pdata未定义的错误
  4. Add和AddRange的区别
  5. 「数据结构」普林斯顿算法课第一周作业
  6. 第一周一本通贪心合集
  7. 为什么无线信号(RSSI)是负值
  8. postgresql copy from、copy to
  9. python+unity 做3d动画人物 python做骨骼识别 (一)
  10. 电脑上jpg图片怎么改大小kb?如何缩小jpg文件大小?