- 字符顯示程序,撥打電話程序:
- (程序有待完善)
- void Displaytxt(int x0, int y0, int who, U16 color )// 顯示數字(16*32)
- {
- U16 txt = 0;
- U16 l = 0, h = 0, x = 0, y = 0, z = 0;
-
-
-
- for ( h = 0; h < 32; h++ )
- {
- x = (U16)gImage_number[who][h][z];
-
- y = (U16)gImage_number[who][h][z+1];
-
- txt = y<<8 | x;
-
- for ( l = 0; l < 16; l++ )//L=16的時候跳出
- {
- if( (txt>>l)%2 == 1 )
-
- LCD_BUFFER[y0+h][x0+l] = color;
-
- }
- }
-
- }
- void Displaytxtbig(int x0, int y0, int who, U16 color )// 顯示數字(32*64)
- {
- U32 txt = 0;
- U16 l = 0, h = 0, a = 0, b = 0, c = 0, d = 0, z = 0;
-
- extern int X0;
-
- if ( who == 0 )
- who = 10;
-
- who -= 1;
-
- for ( h = 0; h < 64; h++ )
- {
- a = (U16)gImage_numberbig[who][h][z];
-
- b = (U16)gImage_numberbig[who][h][z+1];
-
- c = (U16)gImage_numberbig[who][h][z+2];
-
- d = (U16)gImage_numberbig[who][h][z+3];
-
-
- txt = d<<24 | c << 16 | b<<8 | a;
-
- for ( l = 0; l < 32; l++ )//L=16的時候跳出
- {
- if( (txt>>l)%2 == 1 )
-
- LCD_BUFFER[y0+h][x0+l] = color;
-
- }
- }
-
-
-
- X0 += 32;
-
- if ( X0 >= 384 )
-
- X0 = 384 - 32;
-
-
- }
- void Displaytxthz(int x0, int y0, int who, U16 color, unsigned char bmp[3][32][4])//顯示漢字32*32
- {
- U32 txt = 0;
- U16 l = 0, h = 0, a = 0, b = 0, c = 0, d = 0, z = 0;
-
-
-
-
- for ( h = 0; h < 32; h++ )
- {
- a = bmp[who][h][z];
-
- b = bmp[who][h][z+1];
-
- c = bmp[who][h][z+2];
-
- d = bmp[who][h][z+3];
-
-
- txt = d<<24 | c << 16 | b<<8 | a;
-
- for ( l = 0; l < 32; l++ )//L=16的時候跳出
- {
- if( (txt>>l)%2 == 1 )
-
- LCD_BUFFER[y0+h][x0+l] = color;
-
- }
- }
-
- }
- void Displayhz( int x0, int y0, int gs, unsigned char bmp[3][32][4] )//連續顯示"gs"個漢字
- {
-
- int k;
-
- for ( k = 0; k < gs; k++ )
- {
-
- Displaytxthz( x0, y0, k, 0x1f, bmp );
-
- x0 = x0 + 32; //光標后移
- }
- }
-
- void Bank( int x0, int y0 ) //擦除顯示
- {
-
- int x, y, m, n;
-
- for ( y = 0, m = y + 54; y < m; y++ )
-
- for ( x = 0, (n = x + 32) && X0 >= 0; x < n; x++ )
-
- LCD_BUFFER[y0+y][x0+x] = 0xffff;
- }
-
- void Del(void)//刪除字符
- {
- extern int X0;
-
- Bank( X0, 12 );
-
- X0 -= 32;
-
- if( X0 < 0 )
-
- X0 = 0;
-
- Bank( X0, 12 );
- }
- void Delhz(void)//刪除漢字//由于漢字和數字的完度不同,所以可以用兩個函數分別實現
- {
- extern int X0;
-
- X0 -= 32;//光標后移
-
- if( X0 < 0 )
-
- X0 = 0;
-
- Bank( X0, 12 );
- }
- void phone(void)//撥打電話功能函數
- {
- extern volatile int xdata;
- extern volatile int ydata;
- //extern unsigned char Buffer[20];
- extern U16 fz;
- extern int i;
-
- int e = 2400000;
- int x = -1;
-
-
-
- Displayhz( 0, 34, 7, gImage_opengsm );//顯示提示信息
-
- puts("AT\r"); //發送連機命令
-
- while ( e-- ){rGPBDAT &= 0xffff;} //等待
-
-
- Paint_Bank( 0, 6, 480, 54 );
- Displayhz( 0, 34, 13, gImage_inputnumber ); //顯示連機成功信息
-
- e = 9600000;
- while ( e-- ){rGPBDAT &= 0xffff;}
- Paint_Bank( 0, 6, 480, 54 );
- Displayhz( 382, 34, 3, gImage_input );//輸入提示信息
- X0 = 0;
-
- xdata = -1; ydata = -1;
- if( fz ==1 )
- while( Flag == 2 )
-
- {
-
-
-
- if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 545+12 && ydata <= 670-12 ) //判斷按鍵位置,設置相應按鍵的功能
- {w = '1'; x = 1; delay();/*去抖*/ Displaytxtbig(X0, 12, 1, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 545+12 && ydata <= 670-12 )
- {w = '2'; x = 1;delay(); Displaytxtbig(X0, 12, 2, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 545+12 && ydata <= 670-12 )
- {w = '3'; x = 1;delay(); Displaytxtbig(X0, 12, 3, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 545+12 && ydata <= 670-12 )
- {x = 1; delay(); Del(); i=i-2; if(i<=0) i=0; xdata = -1; ydata = -1; }
-
-
- if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 227+12 && ydata <= 401-12 )
- {w = '7'; x = 1; delay(); Displaytxtbig(X0, 12, 7, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 227+12 && ydata <= 401-12 )
- {w = '8'; x = 1; delay(); Displaytxtbig(X0, 12, 8, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 227+12 && ydata <= 401-12 )
- {w = '9'; x = 1; delay(); Displaytxtbig(X0, 12, 9, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 227+12 && ydata <= 401-12 )
- {w = '\0'; x = 0;number[i] = '\0'; delay(); Flag = 1000; X0 = 0; fz = 0; xdata = -1; ydata = -1;
- puts("ATH\r");/*發送掛機命令*/delay();delay();delay();delay();delay();delay(); puts("AT^SMSO\r");/*發送斷開連接命令*/i = 0; }
-
-
-
- if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 401+12 && ydata <= 545-12 )
- {w = '4';x = 1;delay();Displaytxtbig(X0, 12, 4, 0x6545 );xdata = -1; ydata = -1; }
-
- if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 401+12 && ydata <= 545-12 )
- {w = '5';x = 1;delay();Displaytxtbig(X0, 12, 5, 0x6545 );xdata = -1; ydata = -1; }
-
- if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 401+12 && ydata <= 545-12 )
- {w = '6';x = 1;delay();Displaytxtbig(X0, 12, 6, 0x6545 );xdata = -1; ydata = -1; }
-
- if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 401+12 && ydata <= 545-12 )
-
- { w = '\0';x = 0;number[i] = '\0';Paint_Bank( 0, 6, 480, 54 ); delay(); X0 = 480;puts("ATH\r");i = 0;
-
- Delhz(); Delhz(); Delhz(); Displayhz( 382, 34, 3, gImage_over); X0 = 0;xdata = -1; ydata = -1; }
-
-
-
-
- if( xdata >= 68+12 && xdata <= 267-12 && ydata >= 158+12 && ydata <= 272-12 )
- {w = '*';x = 1;delay();Displaytxtbig(X0, 12, 11, 0x6545 ); xdata = -1; ydata = -1; }
-
- if( xdata >= 267+12 && xdata <= 456-12 && ydata >= 158+12 && ydata <= 272-12 )
- {w = '0';x = 1;delay();Displaytxtbig(X0, 12, 0, 0x6545 );xdata = -1; ydata = -1; }
-
- if( xdata >= 456+12 && xdata <= 637-12 && ydata >= 158+12 && ydata <= 272-12 )
- {w = '#';x = 1;delay();Displaytxtbig(X0, 12, 12, 0x6545 );xdata = -1; ydata = -1; }
-
- if( xdata >= 683+12 && xdata <= 935-12 && ydata >= 158+12 && ydata <= 272-12 )
- {w = '\0';x = 1;number[i] = '\0';printf("ATD%s;\r",number );/*發送撥打電話的命令*/delay();Y0 = X0; X0 = 480; Delhz();Delhz();
- Delhz();Displayhz( 382, 34, 3,gImage_wait);X0 = Y0;xdata = -1; ydata = -1;i = 0; }
-
-
-
- if ( x == 1 ) //輸入信息的處理
- {
-
- extern int i;
-
- number[i] = w;
-
- i++;
-
- if (i >= 15 )
-
- i = 15;
-
- x = 0;
- }
-
- }
- }
復制代碼
|