標題: LCD12864中文液晶屏的使用(顯示一首小詩) [打印本頁]

作者: das    時間: 2015-4-5 00:43
標題: LCD12864中文液晶屏的使用(顯示一首小詩)
//=============熟練運用以下方案可以擴展到工業(yè)控制中的人機介友好介面顯示,實現(xiàn)中文化可視控制=======//
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define Lcd_Bus P0 //數(shù)據(jù)總線
sbit RS=P1^0;    // 并行的指令/數(shù)據(jù)選擇信號;串行的片選信號
sbit RW=P1^1;    // 并行的讀寫選擇信號;串行的數(shù)據(jù)口
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進行寫數(shù)據(jù)或?qū)懼噶?br />
}
//------------------------------------------------------------//寫數(shù)據(jù)到LCD(底層)
void write_data(unsigned char Dispdata){  
chk_busy();     //忙檢查
RS=1;
RW=0;      //RS=1;RW=0;表示MCU寫數(shù)據(jù)到暫存器DR
E=1;
Lcd_Bus=Dispdata;  //Lcd_Bus=P0;
E=0;      //E由高到低變化將配合W進行寫數(shù)據(jù)或?qū)懼噶?br /> }
//============================================================//初始化LCD屏(被調(diào)用層)
void lcm_init(){         
   write_com(0x30);    //選擇8bit數(shù)據(jù)流 0X30=0011,0000
   write_com(0x0C);    //開顯示(無游標、不反白)
   write_com(0x01);    //清除顯示,并且設(shè)定地址指針為00H
}
//============================================================//寫指令或數(shù)據(jù)(被調(diào)用層)
void lcm_w_test(bit i,unsigned char word){
if(i == 0){   //根據(jù)i的狀態(tài)區(qū)分指令或數(shù)據(jù)
  write_com(word);//寫指令或數(shù)據(jù)(0,指令)
}
else{
  write_data(word);//寫指令或數(shù)據(jù)(1,數(shù)據(jù))
}
}
//-----------------------------------------------------------//清屏函數(shù)
void lcm_clr(void){
  lcm_w_test(0,0x01);
}
//===========================================================//向LCM發(fā)送一個字符串,長度64字符之內(nèi)。(被調(diào)用層)
void lcm_w_word(unsigned char *s){
while(*s>0){     //應(yīng)用:lcm_w_word("您好!");
     write_data(*s);//這里指針用得很好,用指針后顯示數(shù)據(jù)的地址不用數(shù)組了,減小了內(nèi)存開支
     s++;     //自加顯示下一個數(shù)據(jù)地址
   }
}
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 ("離離原上草,"); //寫顯示數(shù)據(jù)
   lcm_w_test(0,0x91);
   lcm_w_word ("一歲一枯榮;");
   lcm_w_test(0,0x89);
   lcm_w_word ("野火燒不盡,");
   lcm_w_test(0,0x99);
   lcm_w_word ("春風(fēng)吹又生.");
}
//=========================================================================================//
void DelayM(int num){//延時函數(shù)
while(num--) ;
}
/*******************************************************************************************/
void main()
{
   lcm_init();//初始化液晶顯示器
lcm_clr();//清屏
  welcome(); //初始開機顯示畫面,顯示歡迎信息
DelayM(3000); //顯示等留3秒
while(1);
}








歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1