• 工作计划范文
  • 学校工作计划
  • 教学工作计划
  • 德育工作计划
  • 班级工作计划
  • 教师工作计划
  • 幼儿园工作计划
  • 安全工作计划
  • 卫生工作计划
  • 个人工作计划
  • 计划书
  • 工会工作计划
  • 班主任工作计划
  • 团委团支部工作计划
  • 党委党支部工作计划
  • 销售工作计划
  • 后勤工作计划
  • 年度工作计划
  • 财务工作计划
  • 行政工作计划
  • 培训工作计划
  • 下半年工作计划
  • 学生会工作计划
  • 计划表
  • 医务工作计划
  • 少先队工作计划
  • 社区工作计划
  • 办公室工作计划
  • 医院工作计划
  • 农村农业工作计划
  • 部门工作计划
  • 单位工作计划
  • 暑假计划
  • 寒假计划
  • 12864需要写程序复位吗(共6篇)

    【工会工作计划】 池锝网 2016-10-20本文已影响

    篇一:12864液晶屏幕使用说明及程序

    12864使用说明

    一、串/并接口

    1.1 串口接口管脚信号

    *注释 1:如在实际应用中仅使用并口通讯模式,可将 PSB 接固定高电平。

    *注释 2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

    *注释 3:如背光和模块共用一个电源,可以将模块上的 JA、JK 用焊锡短接。

    1.2 并行接口管脚信号

    *注释 1:如在实际应用中仅使用并口通讯模式,可将 PSB 接固定高电平。

    *注释 2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

    *注释 3:如背光和模块共用一个电源,可以将模块上的 JA、JK 用焊锡短接。

    二、模块主要硬件构成说明

    控制器接口信号说明:

    2.1、 RS,R/W的配合选择决定控制界面的4种模式:

    2.2、E信号

    ●忙标志 BF

    BF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块不接受

    外部指令和数据.BF=0 时, 模块为准备状态,随时可接受外部指令和数据.利用 STATUS RD 指令,可以将 BF 读到 DB7 总线,从而检验模块之工作状态.

    ●字型产生 ROM(CGROM)

    字型产生 ROM(CGROM)提供 8192 个此触发器是用于模块屏幕显示开

    和关的控制。DFF=1 为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。 DFF 的状态是指令 DISPLAY ON/OFF 和 RST 信号控制的。

    ●显示数据 RAM(DDRAM)

    模块内部显示数据 RAM 提供 64×2 个位元组的空间,最多可控制 4 行 16 字

    (64 个字)的中文字型显示,当写入显示数据 RAM 时,可分别显示 CGROM 与 CGRAM 的字型;此模块可显示三种字型,分别是半角英 、数字型(16*8)、CGRAM 字型及 CGROM 的中文字型。三种字型的选择,由在 DDRAM 中写入的编码选择,在 0000H—0006H 的编码中(其代码分别是 0000、0002、0004、0006 共 4 个)

    将选择 CGRAM 的自定义字型,02H—7FH 的编码中将选择半角英数字的字型,至于 A1 以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码 BIG5(A140—D75F),GB(A1A0-F7FFH)。

    ●字型产生 RAM(CGRAM)

    字型产生 RAM 提供图象定义(造字)功能, 可以提供四组 16×16 点的自定义图

    象空间,使用者可以将内部字型没有提供的图象字型自行定义到 CGRAM 中,便可和 CGROM 中的定义一样地通过 DDRAM 显示在屏幕中

    ●地址计数器 AC

    地址计数器是用来贮存 DDRAM/CGRAM 之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入 DDRAM/CGRAM 的值时,地址计数器的值就会自动加一,当 RS 为“0”时而 R/W 为“1”时,地址计数器的值会被读取到 DB6——DB0 中。

    ●光标/闪烁控制电路

    此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定 DDRAM 中的光标或闪烁位置。

    三、用户指令集

    模块控制芯片提供两套控制命令,基本指令和扩充指令如下:

    指令表 1:(RE=0:基本指令)

    指令表2:(RE=1:扩充指令集)

    备注:

    1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

    2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。

    3、(1)执行下面两条语句

    LCD12864_w_com(0x36);//开扩充功能指令、开绘图

    LCD12864_w_com(0x30);//开基本功能指令、但是绘图显示未关、图片仍在屏幕上

    (2)执行下面三条语句

    LCD12864_w_com(0x36);//开扩充功能指令、开绘图

    LCD12864_w_com(0x34);//开扩充功能指令、关绘图、图片从屏幕上消失

    LCD12864_w_com(0x30);//开基本功能指令

    篇二:12864程序

    #include"lcd12864.h"

    /*******************************************************************************

    * 函 数 名: LCD12864_Delay1ms

    * 函数功能 : 延时1MS

    * 输 入: c

    * 输 出: 无

    *******************************************************************************/

    void LCD12864_Delay1ms(uint c)

    {

    uchar a,b;

    for(; c>0; c--) { for(b=199; b>0; b--) {for(a=1; a>0; a--); } }

    }

    /*******************************************************************************

    * 函 数 名: LCD12864_Busy

    * 函数功能 : 检测LCD是否忙

    * 输 入: 无

    * 输 出: 1或0(1表示不忙,0表示忙)

    *******************************************************************************/

    uchar LCD12864_Busy(void)

    {

    uchar i = 0; LCD12864_RS = 0; //选择命令 LCD12864_RW = 1; //选择读取 LCD12864_EN = 1; LCD12864_Delay1ms(1); while((LCD12864_DATAPORT & 0x80) == 0x80) //检测读取到的值 {

    } } i++; if(i > 100) { LCD12864_EN = 0; return 0; //超过等待时间返回0表示失败 } LCD12864_EN = 0; return 1;

    /*******************************************************************************

    * 函 数 名: LCD12864_WriteCmd

    * 函数功能 : 写命令

    * 输 入: cmd

    * 输 出: 无

    *******************************************************************************/

    void LCD12864_WriteCmd(uchar cmd)

    {

    uchar i;

    i = 0; while( LCD12864_Busy() == 0) { } LCD12864_RS = 0; //选择命令 LCD12864_RW = 0; //选择写入 LCD12864_EN = 0; //初始化使能端 LCD12864_DATAPORT = cmd;//放置数据 LCD12864_EN = 1; //写时序 LCD12864_Delay1ms(1); LCD12864_Delay1ms(1); i++; if( i>100) { } return; //超过等待退出

    LCD12864_EN = 0;

    }

    /*******************************************************************************

    * 函 数 名: LCD12864_WriteData

    * 函数功能 : 写数据

    * 输 入: dat

    * 输 出: 无

    *******************************************************************************/

    void LCD12864_WriteData(uchar dat)

    {

    }

    /*******************************************************************************

    * 函 数 名: LCD12864_ReadData

    * 函数功能 : 读取数据

    * 输 入: 无

    * 输 出: 读取到的8位数据

    *******************************************************************************uchar i; i = 0; while( LCD12864_Busy() == 0) { LCD12864_Delay1ms(1);} i++; if( i>100) { } return; //超过等待退出 LCD12864_RS = 1; //选择数据 LCD12864_RW = 0; //选择写入 LCD12864_EN = 0; //初始化使能端 LCD12864_DATAPORT = dat;//放置数据 LCD12864_EN = 1; //写时序 LCD12864_Delay1ms(1); LCD12864_EN = 0;

    #ifdef LCD12864_PICTURE

    uchar LCD12864_ReadData(void)

    {

    } uchar i, readValue; i = 0; while( LCD12864_Busy() == 0) { } LCD12864_RS = 1; //选择命令 LCD12864_RW = 1; LCD12864_EN = 0; LCD12864_Delay1ms(1); //等待 LCD12864_EN = 1; LCD12864_Delay1ms(1); readValue = LCD12864_DATAPORT; LCD12864_EN = 0; return readValue; LCD12864_Delay1ms(1); i++; if( i>100) { } return 0; //超过等待退出

    #endif

    /*******************************************************************************

    * 函 数 名: LCD12864_Init

    * 函数功能 : 初始化LCD12864

    * 输 入: 无

    * 输 出: 无

    *******************************************************************************/

    void LCD12864_Init()

    {

    } LCD12864_RST = 1;//复位 LCD12864_WriteCmd(0x30); //选择基本指令操作 LCD12864_WriteCmd(0x0c); //显示开,关光标 LCD12864_WriteCmd(0x01); //清除LCD12864的显示内容

    /*******************************************************************************

    * 函 数 名: LCD12864_ClearScreen

    * 函数功能 : 在画图模式下,LCD12864的01H命令不能清屏,所以要自己写一个清

    ** 屏函数

    * 输 入: 无

    * 输 出: 无

    *******************************************************************************/

    #ifdef LCD12864_PICTURE

    void LCD12864_ClearScreen(void)

    {

    } uchar i,j; LCD12864_WriteCmd(0x34);//开启拓展指令集 for(i=0;i<32;i++) { } LCD12864_WriteCmd(0x36); //0x36扩展指令里面打开绘图显示 LCD12864_WriteCmd(0x30); //恢复基本指令集 //因为LCD有纵坐标32格所以写三十二次 //先写入纵坐标Y的值//再写入横坐标X的值 LCD12864_WriteCmd(0x80+i); LCD12864_WriteCmd(0x80); for(j=0;j<32;j++) { } //横坐标有16位,每位写入两个字节的的数据,也 //就写入32次以为当写入两个字节之后横坐标会自 LCD12864_WriteData(0x00);//动加1,所以就不用再次写入地址了。

    #endif

    /*******************************************************************************

    * 函 数 名: LCD12864_SetWindow

    篇三:12864驱动如何写程序 教你写12864 c51显示程序

    //OCM12864驱动程序

    #include <reg52.h>

    #define uint unsigned int

    #define ucharunsigned char

    #define disp_off0x3e

    #define disp_on 0x3f

    #define disp_x 0xb8

    #define disp_z 0xc0

    #define disp_y 0x40

    #define comm 0

    #define dat 1

    #define data_oraP2 //MCU P2<------> LCM

    sbit di =P3^7;//H:写数据(数据送入显示),L:写指令(数据送入命令)对应RS引脚sbit rw =P3^6;// 读/写选择 H 读数据L写数据

    sbit e =P3^5;//读写使能 读/写使能 高电平有效 下降沿锁定数据

    sbit cs1=P3^4;//cs1=H,选择左半屏

    sbit cs2=P3^3;//cs2=H,选择右半屏

    sbit rst=P3^2;//Lcm reset,低有效 复位信号

    sbit bf =P2^7;//检测LCD忙引脚

    sbit res=P2^4; //检测是否处于复位状态 为H处于复位 为L正常

    void chk_busy (void);

    uchar code hz11[]={

    /*-- 文字: 超 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x40,0x50,0x50,0xFF,0x28,0x28,0x84,0x64,0x1C,0x22,0x42,0x3E,0x00,0x00,0x00, 0x20,0x18,0x07,0x04,0x07,0x09,0x09,0x10,0x1E,0x2A,0x25,0x27,0x40,0x40,0x40,0x00,

    /*-- 文字: 超 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x40,0x50,0x50,0xFF,0x28,0x28,0x84,0x64,0x1C,0x22,0x42,0x3E,0x00,0x00,0x00, 0x20,0x18,0x07,0x04,0x07,0x09,0x09,0x10,0x1E,0x2A,0x25,0x27,0x40,0x40,0x40,0x00,

    /*-- 文字: 电 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0xF0,0x10,0x90,0x90,0xFF,0x48,0x48,0x08,0xF8,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x22,0x22,0x22,0x23,0x20,0x20,0x38,0x00,0x00,

    /*-- 文字: 子 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x80,0x80,0x84,0x84,0x84,0x94,0xE2,0x52,0x4A,0x46,0x42,0x40,0x40,0x40,0x00, 0x00,0x00,0x00,0x00,0x10,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: 诚 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x60,0xE6,0xEC,0x00,0xF8,0xF8,0xD8,0xD8,0xD8,0xFF,0xFF,0x18,0xDB,0xDE,0x00,0x00, 0x00,0x3F,0x1F,0x6C,0x7F,0x3F,0x18,0x1F,0x6F,0x31,0x1F,0x1E,0x33,0x61,0x78,0x00,

    /*-- 文字: 信 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x40,0x70,0xFC,0xFF,0x03,0x0C,0xAC,0xAC,0xAC,0xAF,0xAF,0xAC,0xAC,0xAC,0x0C,0x00, 0x00,0x00,0x7F,0x7F,0x00,0x00,0x7E,0x7E,0x36,0x36,0x36,0x36,0x7E,0x7E,0x00,0x00,

    /*-- 文字: 为 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x30,0x30,0x32,0x3E,0x3C,0xF0,0xFF,0x3F,0x30,0x30,0x30,0xF0,0xF0,0x00,0x00, 0x00,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x06,0x6C,0x68,0x60,0x3F,0x1F,0x00,0x00,

    /*-- 文字: 本 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x18,0x18,0x18,0x98,0xD8,0xF8,0xFF,0xFF,0xD8,0x98,0x18,0x18,0x18,0x18,0x00, 0x08,0x18,0x0C,0x06,0x0F,0x0D,0x0C,0x7F,0x7F,0x0C,0x0D,0x0F,0x06,0x0C,0x08,0x00};

    uchar code hz12[]={

    /*-- 文字: 开 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x80,0x80,0x84,0x84,0xFC,0x42,0x42,0x42,0xFE,0x42,0x42,0x40,0x40,0x00,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: 发 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0x20,0x3E,0x20,0xE0,0x9F,0x90,0x90,0x52,0xD4,0x10,0x10,0x00,0x00,0x00, 0x20,0x10,0x48,0x44,0x23,0x22,0x14,0x08,0x0C,0x12,0x21,0x40,0x40,0x40,0x00,0x00,

    /*-- 文字: 网 --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0xFC,0x04,0x24,0xC4,0x34,0x02,0x92,0x62,0x9A,0x02,0xFE,0x00,0x00,0x00, 0x00,0x00,0x7F,0x04,0x03,0x00,0x05,0x02,0x01,0x00,0x13,0x20,0x7F,0x00,0x00,0x00,

    /*-- 文字: --*/

    /*-- 仿宋_GB231212; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: 品 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0x00,0x7E,0x7E,0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E,0x00,0x00,0x00, 0x00,0x7F,0x7F,0x33,0x33,0x7F,0x7F,0x00,0x7F,0x7F,0x33,0x33,0x33,0x7F,0x7F,0x00,

    /*-- 文字: 质 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0xFE,0xFE,0x36,0xB6,0xB6,0xB6,0xFE,0xFF,0xB3,0xB3,0xB3,0xB3,0x30,0x00,

    0x60,0x38,0x1F,0x07,0x60,0x6F,0x6F,0x30,0x1E,0x0E,0x10,0x30,0x2F,0x6F,0x40,0x00,

    /*-- 文字: 至 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x06,0xC6,0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xD6,0xF6,0xE6,0xC6,0x86,0x00,0x00, 0x60,0x60,0x64,0x64,0x64,0x64,0x64,0x7F,0x7F,0x64,0x64,0x64,0x64,0x60,0x60,0x00,

    /*-- 文字: 上 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00, 0x30,0x30,0x30,0x30,0x30,0x30,0x3F,0x3F,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,

    /*-- 文字: --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

    uchar code hz31[]={

    /*-- 文字: --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: W --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00,

    /*-- 文字: W --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00,

    /*-- 文字: W --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00,

    /*-- 文字: . --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: 1 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x20,0x30,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

    /*-- 文字: 2 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x60,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x00,

    /*-- 文字: 3 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x30,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x18,0x20,0x20,0x21,0x21,0x1E,0x00,

    /*-- 文字: T --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

    /*-- 文字: E --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x3F,0x21,0x21,0x21,0x21,0x20,0x00,

    /*-- 文字: L --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

    /*-- 文字: : --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,

    /*-- 文字: 1 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x20,0x30,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

    /*-- 文字: 3 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x30,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x18,0x20,0x20,0x21,0x21,0x1E,0x00,

    /*-- 文字: 4 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x3F,0x04,

    /*-- 文字: 5 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xF8,0x48,0x48,0x48,0x48,0x88,0x00,0x00,0x18,0x20,0x20,0x20,0x20,0x1F,0x00};

    uchar code hz32[]={

    /*-- 文字: M --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0xE0,0x00,0x00,0x00,0xE0,0xF8,0x00,0x3F,0x00,0x0F,0x30,0x0F,0x00,0x3F,0x00,

    /*-- 文字: C --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0C,0x00,

    /*-- 文字: U --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,

    /*-- 文字: . --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: C --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xE0,0x10,0x08,0x08,0x08,0x10,0x60,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0C,0x00,

    /*-- 文字: O --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

    /*-- 文字: M --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0xF8,0xE0,0x00,0x00,0x00,0xE0,0xF8,0x00,0x3F,0x00,0x0F,0x30,0x0F,0x00,0x3F,0x00,

    /*-- 文字: --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

    /*-- 文字: 6 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

    /*-- 文字: 6 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

    /*-- 文字: 6 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

    /*-- 文字: 6 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

    /*-- 文字: 2 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0x60,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x00,

    /*-- 文字: 0 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,

    /*-- 文字: 6 --*/

    /*-- 黑体12; 此字体下对应的点阵为:宽x高=8x16--*/

    0x00,0xE0,0x10,0x88,0x88,0x88,0x30,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

    篇四:12864显示程序

    PG12864F 本12864液晶 控制器为T6963C proteus。显示汉字

    2009年11月03日 星期二 11:20

    又是打点,先生成字模,打点,外国的东西没汉字字库、

    发现一个问题,字符显示方式与图形显示方式不能同时显示,不知哪出毛病了

    #include <avr/io.h>

    #define uchar unsigned char

    #define uint unsigned int

    #define WR_L() PORTD&=~(1)

    #define WR_H() PORTD|=(1)

    #define RD_L() PORTD&=~(1<<1)

    #define RD_H() PORTD|=(1<<1)

    #define CE_L() PORTD&=~(1<<2)

    #define CE_H() PORTD|=(1<<2)

    #define CD_L() PORTD&=~(1<<3)

    #define CD_H() PORTD|=(1<<3)

    #define RST_L() PORTD&=~(1<<4)

    #define RST_H() PORTD|=(1<<4)

    void delay(uint t);

    void init_txt_12864();

    void write_data(uchar data);

    void write_cmd1(uchar cmd);

    void write_cmd2(uchar data,uchar cmd);

    void write_cmd3(uchar data1,uchar data2,uchar cmd);

    uchar read_status();

    void check_status();

    void clear_screen();

    void display_char(uchar x,uchar y,uchar ch);

    void init_graphic_12864();

    void display_HZ(uchar x,uchar y,uchar *hz);////x 0-3 y 0-7

    void display_string(uchar x,uchar y,uchar *s);

    uchar HZ[4][32]={

    {0x00,0xF8,0x3F,0x90,0x12,0x10,0x09,0x20,0x3F,0xFE,0x22,0x02,0x42,0x00,0x3F,0xFC,0x04,0x00,0x07,0xF0,0x0C,0x20,0x0B,0x40,0x10,0xC0,0x63,0x30,0x8C,0x0E,0x30,0x04},/*"爱",0*/

    {0x06,0x40,0x38,0x50,0x08,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x48,0x0E,0x28,0x38,0x30,0xC8,0x20,0x08,0x50,0x09,0x92,0x08,0x0A,0x28,0x06,0x10,0x02},/*"我",1*/

    {0x01,0x00,0x01,0x00,0x21,0x08,0x3F,0xFC,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},/*"中",2*/

    {0x08,0x80,0x0C,0x88,0x10,0x9C,0x30,0xE0,0x53,0x80,0x90,0x84,0x10,0x84,0x10,0x7C,0x11,0x00,0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00}/*"华",3*/

    };

    uchar HZ2[][32]=

    {

    {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x7F,0xFC,0x20,0x04,0x00,0x00},/*"山",0*/

    {0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x08,0x80,0x08,0x80,0x10,0x80,0x1F,0xF8,0x00,0x80,0x08,0xA0,0x0C,0x90,0x18,0x88,0x10,0x8C,0x22,0x84,0x01,0x80,0x00,0x80},/*"东",1*/

    {0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x4B,0xFE,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x4A,0x22,0x52,0x22,0x52,0x2A,0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,0x00,0x20},/*"师",2*/

    {0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x60,0x40,0x00,0x31,0xF8,0x91,0x08,0x61,0x08,0x49,0x08,0x09,0x38,0x11,0x10,0xE1,0x00,0x21,0x04,0x21,0x04,0x20,0xFC,0x20,0x00},/*"范",3*/

    {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04},/*"大",4*/

    {0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*"学",5*/

    {0x10,0x80,0x10,0x80,0x50,0x80,0x51,0xFC,0x7D,0x54,0x52,0x54,0x94,0x94,0x14,0x94,0x19,0x24,0x32,0x24,0xD4,0x44,0x10,0x84,0x11,0x04,0x12,0x04,0x14,0x28,0x00,0x10},/*"物",6*/

    {0x00,0x00,0x03,0xFC,0xFA,0x44,0x22,0x44,0x23,0xFC,0x22,0x44,0xFA,0x44,0x23,0xFC,0x22,0x44,0x20,0x40,0x23,0xFC,0x38,0x40,0xC0,0x40,0x00,0x40,0x0F,0xFE,0x00,0x00},/*"理",7*/

    {0x00,0x00,0x08,0x00,0x08,0x04,0x0F,0xFE,0x08,0x00,0x08,0x00,0x0F,0xFC,0x00,0x04,0x00,0x04,0x00,0x24,0x7F,0xF4,0x00,0x04,0x00,0x04,0x00,0x48,0x00,0x30,0x00,0x00},/*"与",8*/

    {0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00},/*"电",9*/

    {0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},/*"子",10*/

    {0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,0x28,0x0E,0x48,0x78,0x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"科",11*/

    {0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*"学",12*/

    {0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00},/*"学",13*/

    {0x00,0x80,0xF8,0x40,0x8F,0xFE,0x94,0x04,0xA0,0x00,0xA3,0xF8,0x90,0x00,0x88,0x00,0x8F,0xFE,0xA9,0x20,0x91,0x20,0x81,0x20,0x82,0x22,0x82,0x22,0x84,0x22,0x88,0x1E}/*"院",14*/

    };

    uchar ch[]="";

    int main()

    {

    uchar i,j=0;

    init_txt_12864();

    display_string(0,0,ch);

    delay(100);

    clear_screen();

    init_graphic_12864();

    for(i=0;i<4;i++)

    display_HZ(3,i,HZ[i]);

    for(i=0;i<15;i++)

    if(i>=8)

    display_HZ(1,i-8,HZ2[i]);

    else

    display_HZ(0,i,HZ2[i]);

    while(1);

    /*

    {//调整文本区首地址,可以实现移屏;

    //i++;

    write_cmd3(i++,0,0x40);//文本区首地址;

    delay(10000);

    }

    */

    }

    //处在x y处显示汉字hz

    void display_HZ(uchar x,uchar y,uchar *hz)////x 0-3 y 0-7

    {

    uchar i,j=0;

    for(i=0;i<16;i++)

    {

    write_cmd3(((j/2)<<4)|(y*2),x,0x24);//地址指针设置..低地址,高地址,命令

    write_cmd2(hz[j++],0xc0);

    write_cmd2(hz[j++],0xc0);

    }

    }

    //处在x y处显示ch

    void display_char(uchar x,uchar y,uchar ch)//x 0-7 y 0-15

    {

    write_cmd3((((x*2)<<4)+y),0x00,0x24);//地址指针位置

    write_cmd2(ch-32,0xc0);//t6963c字符表与ASCII差32@@@@@@@@@@@@@@@@ }

    void display_string(uchar x,uchar y,uchar *s)

    {

    uchar i=0;

    while(*s)

    {

    display_char( x, y+(i++),*s); s++;

    if(i>=16)

    {

    x++;

    i=0;

    }

    }

    }

    void delay(uint t) {

    uint i,j;

    for(i=0;i<t;i++)

    for(j=0;j<1141;j++); }

    void init_txt_12864() {

    //初始化端口

    DDRD=0XFF;

    DDRB=0XFF;

    PORTB=0XFF;

    //液晶复位

    RST_L();

    delay(1);

    RST_L();

    //所有控制引脚置高 WR_H();

    RD_H();

    篇五:12864C程序及注释

    #include <avr/io.h>

    #include <util/delay.h>

    #define uchar unsigned char

    #define uint unsigned int

    #define LCD_data PORTA

    sbit LCD_RS =P2^5;//数据命令选择端:H为数据;L为命令

    sbit LCD_RW =P2^6;//读写选择端:H为读;L为写

    sbit LCD_EN =P2^7;//使能信号端:高脉冲完成操作

    sbit LCD_PSB =P2^4;//串并选择端:H为并行;L为串行

    sbit LCD_RST =P2^2; //复位,低电平有效

    sbit qq=P3^2;

    unsigned char code pic2[];

    uchar code dis1[]={"0123456789 "};

    uchar code IC_DAT2[]={

    " 白日依山尽, "//0x80

    " 黄河入海流。 "//0x90欲穷千里目,

    " 欲穷千里目, "

    " 更上一层楼。 "

    };

    /********************************

    延时误差:每秒0.005秒

    *********************************/

    void delayms(uint z)

    {

    uint i,j;

    for(i=z;i>0;i--)for(j=113;j>0;j--);//0x88 //0x98

    }

    void delay(unsigned int m)//延时程序

    {

    unsigned int i,j;

    for(i=0;i<m;i++)

    for(j=0;j<10;j++);

    }

    /*******************************

    12864写命令函数

    RS=L、RW=L,EN高脉冲

    D0-D7指令码

    ******************************/

    void L12864_writecmd(uchar cmd)

    {

    LCD_RS=0;

    LCD_RW=0;

    } LCD_EN=0; LCD_data=cmd; delayms(5); LCD_EN=1; delayms(5); LCD_EN=0;

    /********************************

    12864初始化函数

    ********************************/

    void L12864_init_1()

    {

    LCD_PSB=1;

    }

    /********************************************************************

    * 名称 : 12864初始化函数

    ***********************************************************************/ void L12864_initi_2(void) //LCD显示图片(扩展)初始化程序

    {

    //delay(40); //大于40MS的延时程序

    LCD_PSB=1; //设置为8BIT并口工作模式

    delay(1); //延时

    LCD_RST=0; //复位

    delay(1); //延时

    LCD_RST=1; //复位置高

    delay(10);

    L12864_writecmd(0x36); //Extended Function Set RE=1: extended instruction//delay(100);//大于100uS的延时程序

    //L12864_writecmd(0x36,0); //Extended Function Set:RE=1: extended instruction set

    //L12864_writecmd(37); ////大于37uS的延时程序

    L12864_writecmd(0x3E); //EXFUNCTION(DL=8BITS,RE=1,G=1) LCD_RST=0; delay(1); LCD_RST=1; L12864_writecmd(0x30);// 功能设定:基本功能,关图片显示 L12864_writecmd(0x0c);//开显示,开游标 L12864_writecmd(0x01);//清屏显示

    //delay(100);//大于100uS的延时程序

    L12864_writecmd(0x01); //CLEAR SCREEN

    //delay(100);//大于100uS的延时程序

    }

    /***************************

    12864写数据函数

    RS=H、RW=L、EN高脉冲

    D0-D7数据信息

    **************************/

    void L12864_writedat(uchar dat)

    {

    LCD_RS=1; LCD_RW=0;

    LCD_EN=0;

    LCD_data=dat;

    }

    /***********************

    12864设定初始显示位置

    ***********************/

    void L12864_focuspos(uchar X,uchar Y)

    {

    uchar pos;

    if(X==0){ X=0x80;} else if(X==1){ X=0x90; delayms(5); LCD_EN=1; delayms(5); LCD_EN=0;

    }

    else if(X==2)

    { X=0x88;} else if(X==3){ X=0x98;} pos=X+Y-1;

    L12864_writecmd(pos);

    }

    void L12864_displayline(uchar hang1, uchar hang2, uchar code *adder1) {uchar X,Y,i;

    X=hang1;

    Y=hang2; if(X==1)X=0x80;else if(X==2) X=0x90;

    else if(X==3) X=0x88;

    else if(X==4) X=0x98; L12864_writecmd(X); if(Y==1) { for(i=0;i<16;i++) { L12864_writedat(*adder1); } adder1++; } if(Y==2) { for(i=0;i<16;i++)adder1++; for(i=16;i<32;i++) L12864_writedat(*adder1); adder1++; {} } if(Y==3) { for(i=0;i<32;i++) adder1++; for(i=32;i<48;i++) { } L12864_writedat(*adder1); adder1++;} if(Y==4) {

    } for(i=0;i<48;i++) adder1++; for(i=48;i<64;i++) { L12864_writedat(*adder1); } } adder1++;

    void L12864_displaypage( uchar code *adder1)

    {

    unsigned char i;

    L12864_writecmd(0x80);

    delay(100);

    for(i=0;i<32;i++) { L12864_writedat(*adder1); } adder1++;

    L12864_writecmd(0x90);

    delay(100);

    for(i=32;i<64;i++)

    } { } L12864_writedat(*adder1); adder1++;

    void L12864_displaypicture( uchar code *adder)

    {

    int a,b;

    //*******显示上半屏内容设置

    for(a=0;a<32;a++) //

    {

    L12864_writecmd((0x80 + a)); //SET 垂直地址 VERTICAL ADD

    L12864_writecmd(0x80); //SET 水平地址 HORIZONTAL ADD for(b=0;b<16;b++)

    {

    L12864_writedat(*adder);

    adder++;

    }

    }

    篇六:LCD12864写字符串程序及其头文件

    /******************************

    2012年5月19日

    调试成功

    编辑环境:ICCAVR

    功能:用LCD12864显示汉字

    ********************************/

    #include<iom16v.h>

    #include<macros.h>

    #include"LCD_12864.c"

    /**************************************

    端口初始化

    **************************************/

    void port_init()

    {

    DDRA=0XFF;

    PORTA=0XFF;

    DDRC=0XFF;

    PORTC=0XFF;

    }

    /******************************************

    主函数

    *******************************************/

    void main()

    {

    uchar i;

    port_init();

    delay(100);//

    port_init();//

    LCD_init();

    write_string(0,0,"zheng Zunggui");

    delay(200);

    write_string(0,1,"I Love微电子 !"); delay(200); write_string(0,2,"Working Hard !"); delay(200); //write_string(0,3,"I Love English!"); //write_string(0,3,"做电子设计大赛!");//包含了汉字字符串中有汉字输入方式 /**************************************此(来自:www.CDFDS.cOm 池 锝 网:[标签:biaoti])为单独操作汉字字符的方法 ****************************************/ LocateXY(1,3);//单独写汉字时,要一个字节一个字节写入,分开地址不重合 //先高字节后低字节与ASCCII不冲突write_data(0xD5);// D5C5 D4F6 B9F0

    }

    delay(2);write_data(0xC5);//八根线并行传输的原因,为此需要每八个字节进行传输delay(2);write_data(0xD4);delay(2);write_data(0xF6);delay(2);write_data(0xB9);delay(2);write_data(0xF0);delay(2);/********* { uint k; for(k=0;k<2;i++) { write_com(0x98); delay(2); write_data(0xB1B0);//这种输入不正确 delay(200); } } ****************/

    LCD12864驱动文件

    /**************************************

    2012.5.18

    2012.5.19调试成功

    功能:驱动12864液晶显示

    并口数据传输

    *****************************************/

    #include<iom16v.h>

    #include<macros.h>

    #define uchar unsigned char

    #define uint unsigned int

    #define RS_0PORTC&=~(1<<PC0)//数据指令选择端高电平数据低电平指令

    #define RS_1PORTC|=(1<<PC0)

    #define RW_0PORTC&=~(1<<PC1)//并口时,读写选择端,低电平写; 串口时数据输入端

    #define RW_1PORTC|=(1<<PC1)

    #define EN_0PORTC&=~(1<<PC2)//并口时,读写使能;串口时,串行时钟

    #define EN_1PORTC|=(1<<PC2)

    #define PSB_0 PORTC&=~(1<<PC3)//并口串口选择端,高电平为并口 #define PSB_1 PORTC|=(1<<PC3)

    #define RST_0 PORTC&=~(1<<PC4)//复位信号,电平有效

    #define RST_1 PORTC|=(1<<PC4)

    #define Dataport PORTA //数据端口为A口

    void delay(uint ms) //系统延时函数

    {

    uint i,j;

    for(i=0;i<ms;i++)

    {

    for(j=0;j<1140;j++);

    }

    }

    /****************************************

    写指令函数规定写指令操作

    *****************************************/

    void write_com(uchar com) //command

    {

    RS_0;

    RW_0;

    EN_0;

    Dataport=com;

    delay(2);

    EN_1;

    delay(2);

    EN_0;

    }

    /******************************************

    写数据函数 规定写数据的流程

    *******************************************/

    void write_data(uchar data) //data

    {

    RS_1;

    RW_0;

    EN_0;

    Dataport=data;

    delay(2);

    EN_1;

    delay(2);

    EN_0;

    }

    /**********************************************LCD初始化函数

    ************************************************/ void LCD_init()

    {

    write_com(0x01);

    delay(5) ;//清屏指令

    PSB_1; //并口数据传输模式RST_0; //低电平复位

    delay(3);

    RST_1; //

    delay(3);

    write_com(0x34); //扩充指令操作

    delay(5);

    write_com(0x30); //基本指令操作

    delay(3);

    write_com(0x0C); //显示开/关光标

    delay(5);

    write_com(0x01); //清除LCD的显示,即清屏指令delay(5);

    }

    /******************************************** 光标定位函数,X显示列,Y显示行

    ***********************************************/ void LocateXY(uchar x,uchar y)

    {

    if(y==0)

    {write_com(0x80+x);}//0

    else if(y==1)

    {write_com(0x90+x);}//1

    else if(y==2)

    {write_com(0x88+x);}//2

    else if(y==3)

    {write_com(0x98+x);}//3

    }

    /************************************************* 显示屏字符串写入函数,X表示列,Y表示行

    ************************************************/

    void write_string(uchar x,uchar y,uchar *s) {

    LocateXY(x,y);

    while(*s)

    {

    write_data(*s);

    s++;

    }

    }

    相关热词搜索:复位 程序 12864液晶显示程序 lcd12864程序stm32 stm32 12864串行程序

    【工会工作计划】图文推荐
    网友评论

    Copyright © 2006 - 2016 cdfds.com All Rights Reserved

    池锝网 版权所有