?? 1602lcd_new.c
字號:
/*1602LCD最新驅程序
創建日期: 2008-10-08 20:42
創建人:周勇
版本:V2.0
備注:1602LCD數據口是P0口
***因檢測液晶忙狀態不穩定,所以用延時來替代***
字符顯示范圍是0~15;
*/
#include <stc89c51.h>
#include <intrins.h>
#define uchar unsigned char
#define H 1
#define L 0
sbit RS=P3^0; // 數據/命令選擇端
sbit RW=P3^1; // 讀/寫選擇端
sbit E=P3^2; // 使能信號
void longtime (void);
void delay (uchar t);
void w_1602_command (unsigned char temp); //寫命令
void w_1602_data (uchar temp); //寫數據
//****************1602液晶操作************************************* 函數聲明
void display_char (uchar x,uchar y,uchar temp); //指定位置顯示字符 X取值范圍(1--16),Y取值范圍(1--2)
void display_long_char(uchar x,uchar y,uchar *pa); //指定位置開始顯示字符串 X取值范圍(1--16),Y取值范圍(1--2)
void init_lcd (void);
//*************************************************************** 函數聲明
//長時間延時,用于換屏時的顯示延時
void longtime (void)
{
unsigned int k,i;
for (i=0;i!=650;i++)
{
for (k=0;k!=400;k++)
{_nop_ ();}
}
}
//延時
void delay (uchar t)
{
char t1;
for (;t!=0;t--)
{
for (t1=120;t1!=0;t1--)
{_nop_ ();}
}
}
//寫指令
void w_1602_command (unsigned char temp)
{
RS=L;
RW=L;
P0=temp;
E=0;
E=1;
delay (10);
}
//寫數據
void w_1602_data (uchar temp)
{
RS=H;
RW=L;
P0=temp;
E=0;
E=1;
delay (10);
}
//任意位置顯示字符
//X設置水平位置(1---16),Y設置第一行,或第二行.TEMP是顯示的數據
void display_char (uchar x,uchar y,uchar temp)
{
uchar addr;
if (y==1) addr=0x80+x-1;
if (y==2) addr=0x80+0x40+x-1;
w_1602_command (addr);
w_1602_data (temp);
}
//顯示任意長度字符串
/*程序描述
可以對任意長度的字符串進行顯示,如顯示內容超過32字符,則延時顯示一下,并換屏顯示,直到所有字符顯示完畢
其中," ~ "為顯示的回車符(換行符)*/
void display_long_char(uchar x,uchar y,uchar *pa)
{
uchar addr;
for (;*pa!='\0';pa++,x++)
{
if (*pa=='#') {y=y+1;x=0;continue;} // #為換行符,continue為結束本次循環,使換行后不顯示任何字符
if (x>16) {y=y+1;x=1;}
if (y==1) addr=0x80+x;
if (y==2) addr=0x80+0x40+x;
if (y>2) {x=1;y=1;longtime();w_1602_command (0x01);} //假如一屏沒有顯示完的情況下,延時一會兒,并清屏一次,復位坐標顯示
display_char (x,y,*pa);
}
}
//液晶初始操作
void init_lcd (void)
{
delay (15);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38);
delay (5);
w_1602_command (0x38); //顯示模式設置
w_1602_command (0x08); //顯示關閉
w_1602_command (0x01); //顯示清屏
w_1602_command (0x06); //顯示光標移動設置
w_1602_command (0x0c);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -