?? yejing.c
字號(hào):
#include "reg51.h"
#define uchar unsigned char
#define LCD_Data P0 //DO-D7數(shù)據(jù)總線(xiàn)
#define Busy 0x80 //用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)
sbit LCD_RS=P2^0; //定義引腳
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
//sbit LCD_PS=P2^3;
uchar show[]="12864液晶測(cè)試程序0123456789ABCDEFGHIJKLMNOPQ";
/////////延時(shí)程序/////////
void delay(second) //second=1時(shí),延時(shí)5ms子程序
unsigned char second;
{
unsigned char i,j,k;
for(i=second;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--) ;
}
////////讀狀態(tài)////////
void ReadStatusLCD(void)
{
LCD_E=0; //使能 取消選擇
LCD_Data=0xFF;
LCD_RS=0; //instruction
LCD_RW=1; //read
LCD_E=1; //使能 選擇
while (LCD_Data&0x80); //檢測(cè)忙信號(hào)
LCD_E=0;
}
////////寫(xiě)指令////////
void WriteCommandLCD(uchar Command,BuysC) //BuysC為0時(shí)忽略忙檢測(cè)
{
LCD_E=0;
if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測(cè)忙
LCD_RS=0;
LCD_RW=0;
LCD_Data=Command;
LCD_E=1;
LCD_E=0;
}
////////寫(xiě)數(shù)據(jù)////////
void WriteDataLCD(uchar Data,BuysC)
{
LCD_E=0;
if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測(cè)忙
LCD_RS=1;
LCD_RW=0;
LCD_Data=Data;
LCD_E=1;
LCD_E=0;
}
void LCDInit(void) //LCD初始化
{
WriteCommandLCD(0x01,1); //清除顯示
delay(1);
WriteCommandLCD(0x03,1); //地址歸位
delay(1);
WriteCommandLCD(0x0f,1); //開(kāi)顯示
//WriteCommandLCD(0x1c,1); //游標(biāo)右移
WriteCommandLCD(0x30,1); //基本指令集動(dòng)作
}
//顯示一個(gè)漢字
void Display(uchar show[])
{
uchar *p,i=0;
p=show;
WriteCommandLCD(0x80,1);
while(*p!='\0')
{
WriteDataLCD(*p++,1);
i++;
if(i==16) WriteCommandLCD(0x90,1);
else if(i==32) WriteCommandLCD(0x88,1);
else if(i==48) WriteCommandLCD(0x98,1);
}
}
void main(void)
{
//LCD_PS=1;
delay(8); //啟動(dòng)等待,等LCM講入工作狀態(tài)
delay(8); //啟動(dòng)等待,等LCM講入工作狀態(tài)
LCDInit(); //LCM初始化
Display(show);
delay(250);
WriteCommandLCD(0xa7,1);
delay(250);
while(1);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -