找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5362|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

LCD12864中文液晶屏的使用(顯示一首小詩(shī))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76127 發(fā)表于 2015-4-5 00:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//=============熟練運(yùn)用以下方案可以擴(kuò)展到工業(yè)控制中的人機(jī)介友好介面顯示,實(shí)現(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ù)選擇信號(hào);串行的片選信號(hào)
sbit RW=P1^1;    // 并行的讀寫選擇信號(hào);串行的數(shù)據(jù)口
sbit E=P1^2;    // 并行的使能信號(hào);串和的同步時(shí)鐘
/*************************************************************/
/******************************************************************************/
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進(jìn)行寫數(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進(jìn)行寫數(shù)據(jù)或?qū)懼噶?br /> }
//============================================================//初始化LCD屏(被調(diào)用層)
void lcm_init(){         
   write_com(0x30);    //選擇8bit數(shù)據(jù)流 0X30=0011,0000
   write_com(0x0C);    //開顯示(無(wú)游標(biāo)、不反白)
   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ā)送一個(gè)字符串,長(zhǎng)度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++;     //自加顯示下一個(gè)數(shù)據(jù)地址
   }
}
void welcome(void)//==========================================//初始開機(jī)顯示畫面
{
//----------|-------1-------|-------3-------|-------2-------|-------4-------|-----//標(biāo)尺
//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í)函數(shù)
while(num--) ;
}
/*******************************************************************************************/
void main()
{
   lcm_init();//初始化液晶顯示器
lcm_clr();//清屏
  welcome(); //初始開機(jī)顯示畫面,顯示歡迎信息
DelayM(3000); //顯示等留3秒
while(1);
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表