|
10黑幣
- #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
- /**********************************************************
- #:函數(shù)名:SendWrite(uchar dat)
- #:函數(shù)功能:發(fā)送8位數(shù)據(jù)給LCD12864
- #:函數(shù)參數(shù):dat位發(fā)送的數(shù)據(jù)變量
- ***********************************************************/
- 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;
- }
- }
- /**********************************************************
- #:函數(shù)名:uchar LCD12864_Read(void)
- #:函數(shù)功能:讀取LCD12864中的數(shù)據(jù)
- #:函數(shù)參數(shù):函數(shù)返回讀取的數(shù)據(jù)內(nèi)容
- ***********************************************************/
- 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));
- }
- /**********************************************************
- #:函數(shù)名:LCD12864_Busy( void )
- #:函數(shù)功能:判忙函數(shù)
- #:函數(shù)參數(shù):無
- ***********************************************************/
- void LCD12864_Busy( void )
- {
- do SendWrite(0xfc); //11111,RW(1),RS(0),0
- while(0x80&LCD12864_Read());
- }
- /**********************************************************
- #:函數(shù)名:void LCD12864_write(bit cmd,uchar dat)
- #:函數(shù)功能:向屏發(fā)送命令/數(shù)據(jù) 帶發(fā)送數(shù)據(jù)
- #:函數(shù)參數(shù):cmd標(biāo)志發(fā)送數(shù)據(jù)、命令,0為命令,1位數(shù)據(jù); dat 位數(shù)據(jù)內(nèi)容
- ***********************************************************/
- 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;
- }
- /**********************************************************
- #:函數(shù)名:void LCD12864_writebyte(uchar *prointer)
- #:函數(shù)功能:指針發(fā)送顯示數(shù)據(jù)
- #:函數(shù)參數(shù):prointer位指針內(nèi)容
- ***********************************************************/
- void LCD12864_writebyte(uchar *prointer)
- {
- while(*prointer!='\0')
- {
- LCD12864_write(1,*prointer);
- prointer++;
- }
- }
- /******************************************************************
- lcd初始化函數(shù)
- *******************************************************************/
- void LCD12864_init(void)
- {
- LCD12864_write(0,0x30);
- LCD12864_write(0,0x03);
- LCD12864_write(0,0x0c);
- LCD12864_write(0,0x01);
- LCD12864_write(0,0x06);
- }
- /**********************************************************
- #:函數(shù)名:void LCD12864_pos(uchar x,y)
- #:函數(shù)功能:設(shè)置屏幕顯示的位置
- #:函數(shù)參數(shù):X,Y,為顯示的坐標(biāo) X位行數(shù)據(jù),Y位列數(shù)據(jù)
- ***********************************************************/
- 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);
- }
- /**********************************************************
- #:函數(shù)名:void LCD12864_Qing( void )
- #:函數(shù)功能:清除屏幕顯示的你內(nèi)容
- #:函數(shù)參數(shù):X,Y,為顯示的坐標(biāo) X位行數(shù)據(jù),Y位列數(shù)據(jù)
- ***********************************************************/
- 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
復(fù)制代碼 怎么個意思,啊
|
|