| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- #include "QC12864B.h"
- char QC12864B_String[4][2 * 8 + 1]; //4行,每行汉字8个
- /********************************************************************
- * 名称 : delay()
- * 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。
- * 输入 : t
- * 输出 : 无
- ***********************************************************************/
- /*
- void delay(unsigned int t)
- {
- unsigned int i,j;
- for(i=0; i<t; i++)
- for(j=0; j<10; j++);
- }
- */
- //24: 4.5us-5us-4.5us-5us的波形
- void delay ( unsigned int Number )
- {
- u32 i = 0;
- while ( Number-- )
- {
- i = 24;
- while ( i-- ); //12
- }
- }
- /********************************************************************
- * 名称 : sendbyte()
- * 功能 : 按照液晶的串口通信协议,发送数据
- * 输入 : zdata
- * 输出 : 无
- ***********************************************************************/
- void sendbyte ( unsigned char zdata )
- {
- unsigned int i;
- for ( i = 0; i < 8; i++ )
- {
- if ( ( zdata << i ) & 0x80 )
- {
- SID = 1;
- }
- else
- {
- SID = 0;
- }
- SCLK = 0;
- delay ( 1 );
- SCLK = 1;
- delay ( 1 );
- }
- }
- /********************************************************************
- * 名称 : write_com()
- * 功能 : 写串口指令
- * 输入 : cmdcode
- * 输出 : 无
- ***********************************************************************/
- void write_com ( unsigned char cmdcode )
- {
- CS = 1;
- sendbyte ( 0xf8 );
- sendbyte ( cmdcode & 0xf0 );
- sendbyte ( ( cmdcode << 4 ) & 0xf0 );
- delay ( 2 );
- CS = 0;
- }
- /********************************************************************
- * 名称 : write_data()
- * 功能 : 写串口指令
- * 输入 : cmdcode
- * 输出 : 无
- ***********************************************************************/
- void write_data ( unsigned char Dispdata )
- {
- CS = 1;
- sendbyte ( 0xfa );
- sendbyte ( Dispdata & 0xf0 );
- sendbyte ( ( Dispdata << 4 ) & 0xf0 );
- delay ( 2 );
- CS = 0;
- }
- /********************************************************************
- * 名称 : lcdinit()
- * 功能 : 初始化函数
- * 输入 : cmdcode
- * 输出 : 无
- ***********************************************************************/
- void LcdInit()
- {
- RST = 0;
- delay ( 100 );
- RST = 1;
- delay ( 20000 );
- write_com ( 0x30 ); //8 位介面,基本指令集
- delay ( 50 );
- write_com ( 0x0c );//显示打开,光标关,反白关
- delay ( 50 );
- }
- /********************************************************************
- * 名称 : hzkdis()
- * 功能 : 显示字符串
- * 输入 : *s
- * 输出 : 无
- ***********************************************************************/
- void hzkdis ( unsigned char const *s )
- {
- while ( *s > 0 )
- {
- write_data ( *s );
- s++;
- delay ( 50 );
- }
- }
- void LCD_Write_String ( u8 X, uc8 *s )
- {
- u8 address;
- switch ( X )
- {
- case 1:
- address = 0x80;
- break;
- case 2:
- address = 0x90;
- break;
- case 3:
- address = 0x88;
- break;
- case 4:
- address = 0x98;
- break;
- default:
- address = 0x80;
- break;
- }
- write_com ( address );
- hzkdis ( s );
- }
- void LcdPrint ( u8 X, uc8 *s )
- {
- if ( X < 1 )
- {
- X = 1;
- }
- else if ( X > 4 )
- {
- X = 4;
- }
- sprintf ( QC12864B_String[X - 1], "%s" , s );
- }
- void LcdRefresh ( void )
- {
- #if LCD_def
- u8 i;
- for ( i = 0; i < 4; i++ )
- {
- LCD_Write_String ( i + 1, ( uc8 * ) QC12864B_String[i] );
- }
- #endif
- }
- /********************************************************************
- * 名称 : Test()
- * 功能 : 显示子函数
- * 输入 : 无
- * 输出 : 无
- ***********************************************************************/
- void Test()
- {
- PAout->b5 = 0;
- delay ( 1 );
- PAout->b5 = 1;
- delay ( 10 );
- PAout->b5 = 0;
- delay ( 100 );
- PAout->b5 = 1;
- write_com ( 0x03 );
- delay ( 50 );
- write_com ( 0x81 );
- hzkdis ( " HOT-51" );
- write_com ( 0x91 );
- hzkdis ( "单片机开发板" );
- write_com ( 0x89 );
- hzkdis ( " " );
- write_com ( 0x98 );
- hzkdis ( " 东流电子" );
- }
|