|
- /**********************************************************
- LCD1602 DRIVER
- File Name: LCD1602.H
- **********************************************************/
- #ifndef LCD_CHAR_1602_2009_6_28
- #define LCD_CHAR_1602_2009_6_28
- #include <AT89X52.H> //因使用了P2端口定義,所以添加此文件
- #include <intrins.h>
- sbit LcdRs = P2^0; //定義端口
- sbit LcdRw = P2^1;
- sbit LcdEn = P2^2;
- sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.????
- /********************************************************
- 內(nèi)部等待函數(shù)
- ********************************************************/
- unsigned char LCD_Wait(void);
- /*******************************************************
- ?LCD???????
- *******************************************************/
- #define LCD_COMMAND 0 // Command
- #define LCD_DATA 1 // Data
- #define LCD_CLEAR_SCREEN 0x01 // 清屏
- #define LCD_HOMING 0x02 // 光標(biāo)返回原點(diǎn)
- void LCD_Write(bit style, unsigned char input);
- /*****************************************************
- ??????
- *****************************************************/
- #define LCD_SHOW 0x04 //顯示開
- #define LCD_HIDE 0x00 //顯示關(guān)
- #define LCD_CURSOR 0x02 //顯示光標(biāo)
- #define LCD_NO_CURSOR 0x00 //無光標(biāo)
- #define LCD_FLASH 0x01 //光標(biāo)閃動(dòng)
- #define LCD_NO_FLASH 0x00 //光標(biāo)不閃動(dòng)
- void LCD_SetDisplay(unsigned char DisplayMode);
- /***************************************************
- ??????
- ***************************************************/
- #define LCD_AC_UP 0x02
- #define LCD_AC_DOWN 0x00 // default
- #define LCD_MOVE 0x01 // 畫面可平移
- #define LCD_NO_MOVE 0x00 //default
- void LCD_SetInput(unsigned char InputMode);
- /***************************************************
- 初始化LCD
- ***************************************************/
- void LCD_Initial();
- /***********************************************
- 液晶字符輸入位
- ************************************************/
- void GotoXY(unsigned char x, unsigned char y);
- /************************************************
- 將字符輸出到液晶顯示
- ************************************************/
- void Print(unsigned char *str);
- #endif
-
- #include "LCD1602.H"
- /********************************************************
- 內(nèi)部等待函數(shù)
- ********************************************************/
- unsigned char LCD_Wait(void)
- {
- LcdRs=0;
- LcdRw=1; _nop_();
- LcdEn=1; _nop_();
- LcdEn=0;
- return DBPort;
- }
- /*******************************************************
- 向LCD寫入命令或數(shù)據(jù)
- *******************************************************/
- void LCD_Write(bit style, unsigned char input)
- {
- LcdEn=0;
- LcdRs=style;
- LcdRw=0; _nop_();
- DBPort=input; _nop_();//注意順序
- LcdEn=1; _nop_();//注意順序
- LcdEn=0; _nop_();
- LCD_Wait();
- }
- /*****************************************************
- 設(shè)置顯示模式
- *****************************************************/
- void LCD_SetDisplay(unsigned char DisplayMode)
- {
- LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
- }
- /***************************************************
- 設(shè)置輸入模式
- ***************************************************/
- void LCD_SetInput(unsigned char InputMode)
- {
- LCD_Write(LCD_COMMAND, 0x04|InputMode);
- }
- /***************************************************
- 初始化LCD
- ***************************************************/
- void LCD_Initial()
- {
- LcdEn=0;
- LCD_Write(LCD_COMMAND,0x38); //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣
- LCD_Write(LCD_COMMAND,0x38);
- LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開啟顯示,無光標(biāo)。
- LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
- LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC第曾,畫面不動(dòng)。
- }
- /***********************************************
- 液晶字符輸入位置
- ************************************************/
- void GotoXY(unsigned char x, unsigned char y)
- {
- if(y==0)
- LCD_Write(LCD_COMMAND,0x80|x);
- if(y==1)
- LCD_Write(LCD_COMMAND,0x80|(x-0x40));
- }
- /************************************************
- 將字符輸出到液晶
- ************************************************/
- void Print(unsigned char *str)
- {
- while(*str!='\0')
- {
- LCD_Write(LCD_DATA,*str);
- str++;
- }
- }
復(fù)制代碼 |
|