#include<reg52.h> //包含頭檔案,一般情況不需要改動,頭檔案包含特殊功能寄存器的定義
#include<stdio.h> //标準輸入輸出
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs = p2^4; //pin4
sbit rw = p2^5; //pin5
sbit e = p2^6; //pin6
#define data p0//資料端口
char data table1[]=" www.tlxmcu.com ";
char data table2[]="lcm1602 test ok!";
/******************************************************************/
/* 函數聲明 */
/* 微秒延時函數 */
void delayus(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1; /*12mhz頻率*/
while(--uscnt);
}
/* 毫秒函數聲明 */
void delayms(unsigned char ms)
while(--ms)
{
delayus(250);
delayus(250);
}
/* 寫入指令函數 */
void writecommand(unsigned char c)
delayms(5);//操作前短暫延時,保證信号穩定
e=0;
rs=0;
rw=0;
_nop_();
e=1;
data=c;
/* 寫入資料函數 */
void writedata(unsigned char c)
delayms(5); //操作前短暫延時,保證信号穩定
rs=1;
/* 初始化函數 */
void initlcd()
delayms(15);
writecommand(0x38); //display mode
writecommand(0x06); //顯示光标移動位置
writecommand(0x0c); //顯示開及光标設定
writecommand(0x01); //顯示清屏
/* 主函數 */
void main(void)
uchar j;
initlcd(); //初始化lcd
delayms(15); //延時保證信号穩定
writecommand(0x80);
for(j=0;j<16;j++)//顯示第一行
writedata(table1[j]);
writecommand(0x80+0x40);
for(j=0;j<16;j++) //顯示第二行
writedata(table2[j]);
while(1);