找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD12864中文液晶屏的使用(显示一首小诗)

[复制链接]
跳转到指定楼层
楼主
ID:76127 发表于 2015-4-5 00:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//=============熟练运用以下方案可以扩展到工业控制中的人机介友好介面显示,实现中文化可视控制=======//
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define Lcd_Bus P0 //数据总线
sbit RS=P1^0;    // 并行的指令/数据选择信号;串行的片选信号
sbit RW=P1^1;    // 并行的读写选择信号;串行的数据口
sbit E=P1^2;    // 并行的使能信号;串和的同步时钟
/*************************************************************/
/******************************************************************************/
void chk_busy(){  //检查忙位(底层)
   RS=0;
   RW=1;
   E=1;
   Lcd_Bus=0xff;
   while((Lcd_Bus&0x80)==0x80);
   E=0;
}
//============================================================//写命令到LCD(底层)
void write_com(unsigned char cmdcode){
chk_busy();     //忙检查
RS=0;
RW=0;      //RS=0,RW=0;表示MCU写指令到指令暂存器IR
E=1;
Lcd_Bus=cmdcode;   //Lcd_Bus=P0;
E=0;      //E由高到低变化将配合W进行写数据或写指令

}
//------------------------------------------------------------//写数据到LCD(底层)
void write_data(unsigned char Dispdata){  
chk_busy();     //忙检查
RS=1;
RW=0;      //RS=1;RW=0;表示MCU写数据到暂存器DR
E=1;
Lcd_Bus=Dispdata;  //Lcd_Bus=P0;
E=0;      //E由高到低变化将配合W进行写数据或写指令
}
//============================================================//初始化LCD屏(被调用层)
void lcm_init(){         
   write_com(0x30);    //选择8bit数据流 0X30=0011,0000
   write_com(0x0C);    //开显示(无游标、不反白)
   write_com(0x01);    //清除显示,并且设定地址指针为00H
}
//============================================================//写指令或数据(被调用层)
void lcm_w_test(bit i,unsigned char word){
if(i == 0){   //根据i的状态区分指令或数据
  write_com(word);//写指令或数据(0,指令)
}
else{
  write_data(word);//写指令或数据(1,数据)
}
}
//-----------------------------------------------------------//清屏函数
void lcm_clr(void){
  lcm_w_test(0,0x01);
}
//===========================================================//向LCM发送一个字符串,长度64字符之内。(被调用层)
void lcm_w_word(unsigned char *s){
while(*s>0){     //应用:lcm_w_word("您好!");
     write_data(*s);//这里指针用得很好,用指针后显示数据的地址不用数组了,减小了内存开支
     s++;     //自加显示下一个数据地址
   }
}
void welcome(void)//==========================================//初始开机显示画面
{
//----------|-------1-------|-------3-------|-------2-------|-------4-------|-----//标尺
//lcm_w_word("  WiCN12864LCD  V1.0 2013-05-09  LCD:WC12864CBL   WWW#WiCN#COM");
   lcm_w_test(0,0x81);   //写指令和地址
   lcm_w_word ("离离原上草,"); //写显示数据
   lcm_w_test(0,0x91);
   lcm_w_word ("一岁一枯荣;");
   lcm_w_test(0,0x89);
   lcm_w_word ("野火烧不尽,");
   lcm_w_test(0,0x99);
   lcm_w_word ("春风吹又生.");
}
//=========================================================================================//
void DelayM(int num){//延时函数
while(num--) ;
}
/*******************************************************************************************/
void main()
{
   lcm_init();//初始化液晶显示器
lcm_clr();//清屏
  welcome(); //初始开机显示画面,显示欢迎信息
DelayM(3000); //显示等留3秒
while(1);
}



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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