?? lcm.c
字號:
#include "Includes.h"
/**************函數(shù)聲明***********************/
static void ReadStatusLCM(void);
static void Delay_Xms(void);
/*****************寫數(shù)據(jù)***********************/
extern void WriteDataLCM(unsigned char date)
{
ReadStatusLCM(); //檢測忙
LCM_Data = date;
Delay_Xms();
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //小的延時
LCM_E = 1;
}
/*********寫指令 BuysC為0時忽略忙檢測**************/
extern void WriteCommandLCM(unsigned char address,BuysC)
{
//if (BuysC)
ReadStatusLCM(); //根據(jù)需要檢測忙
LCM_Data = address;
Delay_Xms();
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 1;
}
/******************讀忙狀態(tài)(1忙,0不忙)*************/
void ReadStatusLCM(void)
{
LCM_Data = 0x00;
Delay_Xms();
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 1;
while(Busy); //檢測忙信號,忙則延時
}
/******************延時5ms *************/
void Delay_Xms(void) //約5ms延時
{
unsigned char i;
for(i=0;i<27;i++){
TMOD=0X02;
TH0=0X38;
TL0=0X38;
EA=0X00;
ET0=0X00;
TF0=0X00;
TR0=0X01;
while(TF0!=1);
}
}
/*********************LCM初始化**************************/
extern void LCMInit(void)
{
WriteCommandLCM(0x01,0); //清除屏幕
WriteCommandLCM(0x38,0); //兩次功能設置8位 單行 5*7不檢測忙信號
Delay_Xms();
WriteCommandLCM(0x38,0);
Delay_Xms();
WriteCommandLCM(0x01,1); //顯示清屏
WriteCommandLCM(0x0C,1); // 控制光標,顯示 開,閃爍
WriteCommandLCM(0x06,1); // 控制光標和文字的移動
}
/********************顯示程序(對應地址寫入數(shù)據(jù))********/
extern void display_lcm(unsigned char date,unsigned char address)
{
WriteCommandLCM(address,1);
WriteDataLCM(date);
}
/****************顯示字符串******************************/
extern void diaplay_string( unsigned char a,unsigned char *adr)
{
unsigned char i=0;
while(adr[i]!='\0')
{
WriteCommandLCM(a,1);
WriteDataLCM(adr[i]);
i++;
a++;
}
}
/***********************END*******************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -