12864液晶显示屏串行驱动演示C语言程序设计

发布者:Blissful444最新更新时间:2016-10-27 来源: eefocus关键字:液晶显示屏  串行驱动 手机看文章 扫描二维码
随时随地手机看文章
/*

12864LCD (ST7920)驱动程序
马文垒     2004/12/27

*/

#include
  //引脚定义
#define CS    P2_0 //片选 高电平有效 单片LCD使用时可固定高电平
#define SID   P2_1 //数据
#define SCLK  P2_2 //时钟
#define PSB   P2_3 //低电平时表示用串口驱动,可固定低电平
#define RESET P2_4 //LCD复位,LCD模块自带复位电路。可不接

void write(bit start, unsigned char ddata);
void sendbyte(unsigned char bbyte);
void delaynms(unsigned int di);
void lcdinit(void);
void lcdtest(void);
void lcdcls(void);

unsigned char code ma[] ={"  汉字显示LCD   "};
unsigned char code ma2[]={"自带字库图文混排"};
unsigned char code ma3[]={"控制IC:ST7920  "};
unsigned char code ma4[]={"功能强大使用方便"};

void lcdinit(void) //初始化LCD 
{
  delaynms(10); //启动等待,等LCM讲入工作状态
  PSB=0; ;     //串口驱动模式
  RESET=0; delaynms(1); RESET=1; // 复位LCD
  CS=1;
  write(0,0x30);  //8 位介面,基本指令集
  write(0,0x0c);  //显示打开,光标关,反白关
  write(0,0x01);  //清屏,将DDRAM的地址计数器归零  
}

void write(bit start, unsigned char ddata) //写指令或数据
{
  unsigned char start_data,Hdata,Ldata;
  if(start==0) start_data=0xf8;  //写指令
    else       start_data=0xfa;  //写数据
  
  Hdata=ddata&0xf0;    //取高四位
  Ldata=(ddata<<4)&0xf0;  //取低四位
  sendbyte(start_data);   //发送起始信号
  delaynms(5); //延时是必须的
  sendbyte(Hdata);       //发送高四位
  delaynms(1);  //延时是必须的
  sendbyte(Ldata);    //发送低四位
  delaynms(1);  //延时是必须的
}

void sendbyte(unsigned char bbyte) //发送一个字节
{
 unsigned char i;
 for(i=0;i<8;i++)
   {
   SID=bbyte&0x80; //取出最高位
   SCLK=1;
   SCLK=0;
   bbyte<<=1; //左移
   }  
}

void delaynms(unsigned int di) //延时
{
 unsigned int da,db;
 for(da=0;da    for(db=0;db<10;db++);
}

void lcdtest(void) //图形方式下屏幕全黑

unsigned char i,j;
for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x80);
    for(j=0;j<16;j++) write(1,0xff);
  }

 for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x88);
    for(j=0;j<16;j++) write(1,0xff);
  }
}

void lcdcls(void)  //图形方式下清屏

unsigned char i,j;
for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x80);
    for(j=0;j<16;j++) write(1,0x00);
  }

 for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x88);
    for(j=0;j<16;j++) write(1,0x00);
  }
}

void main(void)
{
 unsigned char i;
 lcdinit();

 while(1)
 {
  write(0,0x80); for(i=0;i<16;i++)  write(1,ma[i]);
  write(0,0x90); for(i=0;i<16;i++)  write(1,ma2[i]);
  write(0,0x88); for(i=0;i<16;i++)  write(1,ma3[i]);
  write(0,0x98); for(i=0;i<16;i++)  write(1,ma4[i]);

  write(0,0x36); //图形方式
  lcdtest();
  lcdcls();
 }

}

关键字:液晶显示屏  串行驱动 引用地址:12864液晶显示屏串行驱动演示C语言程序设计

上一篇:1602液晶显示红外遥控解码C语言程序设计
下一篇:DS1302数码管显示 时间日期可调C语言程序设计

推荐阅读最新更新时间:2024-03-16 15:17

12864万年历+温度计+闹钟+温度检测
单片机源程序如下: /****************************文件包含*************************************/ #include reg52.h #include character.h #include lcd.h #include clock.h #include sensor.h #include calendar.h #include key.h /*****************************预定义**************************************/ #define uchar unsigne
[单片机]
<font color='red'>12864</font>万年历+温度计+闹钟+温度检测
LCD液晶显示屏显示字符左右移动的程序
lcd_1602 指令汇总 0x28 设置 162 显示, 57 点阵, 4 位数据接口 0x38 设置 162 显示, 57 点阵, 8 位数据接口 0x01 清屏 , 光标复位到地址 00H 位置 0x02 光标归原点, DDRAM 中内容不变,地址计数器 AC=0; (此时地址为 0x80 ) 0x0F 开显示,显示光标,光标闪烁 0x0e 开显示,显示光标,光标不闪烁 0x0c 开显示,不显示光标 0x08 只开显示 0x06 地址加一,当写入数据的时候光标右移设定显示屏或光标移动方向指令 0x18 字符全部左移一格,但光标不动 0x1c 字符全部右移一格,但光标不动 0x10 光标左移 1 格,且 AC 值减 1 0x1
[单片机]
C51单片机学习笔记(六)——液晶显示屏的使用
1.LCD1602的认识 液晶显示屏简称液晶、LCD。各种型号的液晶通常是按显示字符的行数或液晶点阵的行、列进行命名的。1602的意思就是每一行显示16个字符,共可以显示2行,常见的液晶还有0801、0802、1601等,这类液晶是字符型液晶,只能显示ASCII码字符。而LCD12864属于图形型液晶,由128*64个像素点构成,可以显示各种图形包括汉字。 LCD1602可显示2行ASCII码字符,每行包括16个5*10点阵(像素),有16个引脚,其实物图如下所示: 2.LCD1602的引脚及其功能 3.LCD模块的内部结构 LCD1602模块的内部结构分为三部分:LCD控制器、LCD驱动器、LCD显示器 LCD控制器
[单片机]
C51单片机学习笔记(六)——<font color='red'>液晶显示屏</font>的使用
51单片机学习:LCD12864液晶显示实验
实验名称:LCD12864液晶显示实验(带字库) 接线说明: 实验现象:下载程序后,LCD12864上显示汉字字符信息 注意事项: ***************************************************************************************/ #include public.h #include lcd12864.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出
[单片机]
STM32驱动ST7920的12864液晶(串行方式)
/****************************************************************************************** * 文件名称 :12864.c * 版权 : * 模块名称 :st7920驱动的12864液晶的串行工作方式驱动程序 * cpu : stm32f103rct6 主频:72M * 作者 : * 创建日期 :2009-10-15 * 功能概要 : *----------------------------------------修改历史------------------------------------------
[单片机]
单片机 12864lcd 滚动显示
#include reg52.h #define Disp_On 0x3f #define Disp_Off 0x3e #define Col_Add 0x40 #define Page_A
[单片机]
PIC16F877A驱动12864液晶
本程序配套液晶为金鹏的12864液晶使用串行模式 头文件 #ifndef LCD12864_H #define LCD12864_H #include main.h //define control port pin //serial mode //#define SCLK RD4 //#define STD RD5 //#define LCD_EN RD6 //parallel mode #define PSB RA0 #define CS RA1 #define STD RA2 #define SCLK RA3 #define RST RA4 //define command word #define CLR_LC
[单片机]
基于arm的LM3S811微控制器与TH12864显示模块的技术应用
8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。目前,基于arm内核的32位微处理器在市场上处于领导地位。 基于arm嵌入式处理器的片上系统解决方案可应用于企业应用、汽车系统,家庭网络和无线技术等市场领域。ARM CortexTM系列提供了一个标准的体系结构来满足以上各种技术的不同性能要求,基于ARM架构有3个分工明确的系列:A系列面向复杂的尖端应用程序,用于运行开放式的复杂操作系统;R系列针对实时系统;M系列专为低成本控制和微控制器应用开发。Cortex-M3是基于ARM架构的处理器,是专门为了在微控制器等对功耗和成本敏感的应用领域实现高系统性能而设计的,
[单片机]
基于arm的LM3S811微控制器与TH<font color='red'>12864</font>显示模块的技术应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved