?? 1602lib.c
字號(hào):
#include "1602lib.h"
static void WriteCmd(uchar tempdata);
static void WriteDdr(uchar tempdata);
static void CheckBusy(void);
static void LCD_Delay(uint N);
void LCD_Delay(uint N)
{
uint i;
for(i=0;i<N;i++)
i=i;
}
void WriteCmd(uchar tempdata) /*寫命令*/
{
DB0_DB7 = tempdata;
RS = 0;
RW = 0;
E = 0;
nop;
E = 1;
nop;
CheckBusy();
}
void WriteDdr(uchar tempdata) /*寫數(shù)據(jù)*/
{
DB0_DB7 = tempdata;
RS = 1;
nop;
RW = 0;
E = 0;
nop;
E = 1;
nop;
CheckBusy();
}
void CheckBusy(void) /*查詢忙狀態(tài)*/
{
uchar tmp;
DB0_DB7 = 0xff;
RW = 1;
RS = 0;
E = 0;
nop;
E = 1;
do
{
nop;
tmp = DB0_DB7;
}while((tmp&0X80) == 0X80);
RW = 0;
}
void LCD_init() /*LCD初始化*/
{
RS = 0;
RW = 0;
E = 1;
WriteCmd(0x38);
LCD_Delay(1000);
WriteCmd(0x38);
LCD_Delay(1000);
WriteCmd(0x38);
WriteCmd(0x0f);
WriteCmd(0x06);
WriteCmd(0x01);
}
void DisplayOneChar(uchar X,uchar Y,uchar dat) /*在指定位置顯示一個(gè)字符函數(shù)*/
{
Y&= 0X1;
X&= 0XF; /*限制X不能大于15,Y不能大于1*/
if(Y)X|= 0x40; /*當(dāng)要顯示第二行時(shí)地址碼+0x40*/
X|=0X80; /*算出指令碼*/
WriteCmd(X); /*這里部檢測(cè)忙信號(hào),發(fā)送地址碼*/
WriteDdr(dat);
}
void DisplayString(uchar X,uchar Y,uchar *str) /*在指定位置顯示字符串函數(shù)*/
{
uchar len = 0;
Y&= 0x1;
X&= 0xF; /*限制X不能大于15,Y不能大于1*/
while(len<= 15)
{
if(X<= 0XF) /*X坐標(biāo)應(yīng)小于0xF*/
{
DisplayOneChar(X,Y,str[len]); /*顯示單個(gè)字符*/
len++;
X++;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -