0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >计算机及配件 > 12864液晶(AVR_Mega128)的头文件

12864液晶(AVR_Mega128)的头文件

来源: 电路城
2021-01-15
类别:计算机及配件
eye 7
文章创建人 拍明

原标题:12864液晶(AVR_Mega128)的头文件

  大家使用时把这段代码保存成.h的头文件,在主程序中包含这个头文件就行

  根据你们液晶电路更改下面的端口宏定义即可

  //CPU:ATmega128;  时钟频率为16MHz

  //编译环境为ICCAVR

  //头文件

  #include

  #include

  #include

  //数据端口定义

  #define Dat_Port_Write PORTA

  #define Dat_Port_Read PINA

  //控制端口及相应的位

  #define RS_RW_EN_Control PORTG

  #define LCM_RS 0

  #define LCM_RW 1

  #define LCM_EN 2

  #define uchar unsigned char

  #define uint unsigned int

  //延时函数

  void Delay_Ms(unsigned int ms)

  {

  for(;ms>1;ms--);

  }

  //写数据

  void Write_Data_LCM(unsigned char WDLCM)

  {

  Read_Status_LCM(); //检测忙

  Delay_Ms(100);

  RS_RW_EN_Control|=BIT(LCM_RS);       //RS=1

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_RW);      //RW=0

  Delay_Ms(100);

  RS_RW_EN_Control|=BIT(LCM_EN);       //EN=1

  Delay_Ms(100);

  Dat_Port_Write=WDLCM;     //输出数据

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_EN);      //EN=0

  Delay_Ms(100);

  }

  //写指令

  void Write_Command_LCM(unsigned char WCLCM)

  {

  Read_Status_LCM(); //根据需要检测忙

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_RS);      //RS=0

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_RW);      //RW=0

  Delay_Ms(100);

  RS_RW_EN_Control|=BIT(LCM_EN);       //EN=1

  Delay_Ms(100);

  Dat_Port_Write=WCLCM;     //输出指令

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_EN);      //EN=0

  Delay_Ms(100);

  }

  //读状态:检测忙

  void Read_Status_LCM(void)

  {

  uchar temp;

  uchar flag = 1;

  while(flag==1)

  {

  DDRA=0x00;      //端口A改为输入

  Dat_Port_Write = 0xff;

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_RS);     //RS=0

  Delay_Ms(100);

  RS_RW_EN_Control|=BIT(LCM_RW);      //RW=1

  Delay_Ms(100);

  RS_RW_EN_Control|=BIT(LCM_EN);      //EN=1

  Delay_Ms(100);

  temp = Dat_Port_Read;    //读端口A

  Delay_Ms(100);

  DDRA=0xff;      //端口A改为

  Delay_Ms(100);

  RS_RW_EN_Control&=~BIT(LCM_EN);     //EN=0

  Delay_Ms(100);

  if(temp>>7==0)

  flag = 0;

  }

  }

  //LCM初始化

  void LCM_Init(void)

  {

  Write_Command_LCM(0x38);    //三次显示模式设置,不检测忙信号

  Delay_Ms(1000);

  Write_Command_LCM(0x38);

  Delay_Ms(1000);

  Write_Command_LCM(0x38);

  Delay_Ms(1000);

  Write_Command_LCM(0x38);    //显示模式设置,开始要求每次检测忙信号

  Write_Command_LCM(0x08);    //关闭显示

  Write_Command_LCM(0x01);    //显示清屏

  Write_Command_LCM(0x06);    //显示光标移动设置

  Write_Command_LCM(0x0C);    //显示开及光标设置

  }

  /



责任编辑:

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 液晶

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案