|
#include <reg51.h>
#define lcd_data P0
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P1^6;
sbit PSB = P2^2;
void delay(unsigned int k)
{
unsigned int i;
unsigned char j;
for(i=0;i<k;i++)
{
for(j=0;j<10;j++);
}
}
//********************************************************
//延時1ms函數(shù)
//********************************************************
void delay_ms(unsigned int k)//延時0.994us,晶振12M
{
unsigned int x,y;
for(x=k;x>0;x--)
for(y=121;y>0;y--);
}
//********************************************************
//寫命令函數(shù)
//********************************************************
void LcdWcom(unsigned char WCom)
{
delay(1);
RS=0; //指明操作對象為指令寄存器
RW=0; //指明為寫操作
E=1;
lcd_data=WCom; //將命令寫入總線
E=0;
}
//********************************************************
//寫數(shù)據(jù)函數(shù)
//********************************************************
void LcdWdata(unsigned char WData)
{
delay(1);
RS=1; //指明操作對象為數(shù)據(jù)寄存器
RW=0; //指明為寫操作
E=1;
lcd_data=WData; //將數(shù)據(jù)寫入總線
E=0;
}
//********************************************************
//顯示初始化函數(shù)
//********************************************************
void Display_Init(void)
{
delay_ms(45); //延時45ms
PSB=1; //8位并行口
//功能設(shè)定
LcdWcom(0x30); //設(shè)置為8位并行口,基本指令集
delay(10);
LcdWcom(0x30); //再次設(shè)置為8位并行口,基本指令集
delay(5);
// //顯示開關(guān)控制
// LcdWcom(0x0c); //游標顯示關(guān),正常顯示,整體顯示開
// delay(10);
//清除顯示
LcdWcom(0x01);
delay_ms(12); //延時12ms
//進入點設(shè)置
LcdWcom(0x06); //設(shè)置為游標右移,DDRAM位地址加1,畫面不移動
delay(5);
LcdWcom(0x0C); //開顯示
}
//********************************************************
//設(shè)置光標函數(shù)
//參數(shù)說明:x為行號,y為列號
//********************************************************
void Set_Cursor(unsigned char x, unsigned char y)
{
unsigned char i;
switch(x)//確定行號
{
case 0x00: i=0x80; break;//第一行
case 0x01: i=0x90; break;//第二行
case 0x02: i=0x88; break;//第三行
case 0x03: i=0x98; break;//第四行
default : break;
}
i = y+i;//確定列號
LcdWcom(i);//寫地址
}
//********************************************************
//顯示字符函數(shù)
//********************************************************
void Display_Char(unsigned char Alphabet)
{
delay(1);
LcdWdata(Alphabet); //寫入需要顯示字符的顯示碼
}
/**********************顯示單個字符*************************/
void main()
{
while(1)
{
Set_Cursor(0,0); //光標地址設(shè)定
Display_Char(0x21); //顯示字符!
}
}
|
-
-
01.7z
2021-6-18 00:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15.72 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5
|