- #ifndef _LCD12864_H_
- #define _LCD12864_H_
- #define uchar unsigned char //宏定義
- #define uint unsigned int
- sbit LCD12864_CS=P2^5; //串口時為CS //12864控制I/O口
- sbit LCD12864_SID=P2^6; //串口為SID
- sbit LCD12864_CLK=P2^7; //串口為時鐘CLK
- /**********************************************************
- #:函數名:SendWrite(uchar dat)
- #:函數功能:發送8位數據給LCD12864
- #:函數參數:dat位發送的數據變量
- ***********************************************************/
- void SendWrite(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- LCD12864_CLK=0;
- dat=dat<<1;
- LCD12864_SID=CY;
- LCD12864_CLK=1;
- LCD12864_CLK=0;
- }
- }
- /**********************************************************
- #:函數名:uchar LCD12864_Read(void)
- #:函數功能:讀取LCD12864中的數據
- #:函數參數:函數返回讀取的數據內容
- ***********************************************************/
- uchar LCD12864_Read(void)
- {
- uchar i,dat1,dat2;
- dat1=dat2=0;
- for(i=0;i<8;i++)
- {
- dat1=dat1<<1;
- LCD12864_CLK = 0;
- LCD12864_CLK = 1;
- LCD12864_CLK = 0;
- if(LCD12864_SID) dat1++;
- }
- for(i=0;i<8;i++)
- {
- dat2=dat2<<1;
- LCD12864_CLK = 0;
- LCD12864_CLK = 1;
- LCD12864_CLK = 0;
- if(LCD12864_SID) dat2++;
- }
- return ((0xf0&dat1)+(0x0f&dat2));
- }
- /**********************************************************
- #:函數名:LCD12864_Busy( void )
- #:函數功能:判忙函數
- #:函數參數:無
- ***********************************************************/
- void LCD12864_Busy( void )
- {
- do SendWrite(0xfc); //11111,RW(1),RS(0),0
- while(0x80&LCD12864_Read());
- }
- /**********************************************************
- #:函數名:void LCD12864_write(bit cmd,uchar dat)
- #:函數功能:向屏發送命令/數據 帶發送數據
- #:函數參數:cmd標志發送數據、命令,0為命令,1位數據; dat 位數據內容
- ***********************************************************/
- void LCD12864_write(bit cmd,uchar dat)
- {
- LCD12864_CS = 1;
- LCD12864_Busy();
- if(cmd==0) SendWrite(0xf8);
- else SendWrite(0xfa); //11111,RW(0),RS(1),0
- SendWrite(0xf0&dat);
- SendWrite(0xf0&dat<<4);
- LCD12864_CS = 0;
- }
- /**********************************************************
- #:函數名:void LCD12864_writebyte(uchar *prointer)
- #:函數功能:指針發送顯示數據
- #:函數參數:prointer位指針內容
- ***********************************************************/
- void LCD12864_writebyte(uchar *prointer)
- {
- while(*prointer!='\0')
- {
- LCD12864_write(1,*prointer);
- prointer++;
- }
- }
- /******************************************************************
- lcd初始化函數
- *******************************************************************/
- void LCD12864_init(void)
- {
- LCD12864_write(0,0x30);
- LCD12864_write(0,0x03);
- LCD12864_write(0,0x0c);
- LCD12864_write(0,0x01);
- LCD12864_write(0,0x06);
- }
- /**********************************************************
- #:函數名:void LCD12864_pos(uchar x,y)
- #:函數功能:設置屏幕顯示的位置
- #:函數參數:X,Y,為顯示的坐標 X位行數據,Y位列數據
- ***********************************************************/
- void LCD12864_pos(uchar x,y)
- {
- switch(x)
- {
- case 0:
- x=0x80;break;
- case 1:
- x=0x90;break;
- case 2:
- x=0x88;break;
- case 3:
- x=0x98;break;
- default:
- x=0x80;
- }
- y=y&0x07;
- LCD12864_write(0,0x30);
- LCD12864_write(0,y+x);
- LCD12864_write(0,y+x);
- }
- /**********************************************************
- #:函數名:void LCD12864_Qing( void )
- #:函數功能:清除屏幕顯示的你內容
- #:函數參數:X,Y,為顯示的坐標 X位行數據,Y位列數據
- ***********************************************************/
- void LCD12864_Qing( void )
- {
- unsigned char i;
- LCD12864_write(0,0x30);
- LCD12864_write(0,0x80);
- for(i=0;i<64;i++)
- LCD12864_write(1,0x20);
- LCD12864_pos(0,0);
- }
- #endif
復制代碼 怎么個意思,啊
|