?? lcmdisp.c
字號:
/****************************************************************************************
* 文件名:LCMDISP.C
* 功能:GUI測試及演示程序。
* 作者:黃紹斌
* 日期:2003.09.09
****************************************************************************************/
#include "config.h"
#define LCM_LEDCON 0x00400000
// 樣條曲線的4個端點
PointXY log_pin[] = { {80, 30},
{120, 60},
{160, 30},
{200, 60}
};
// 封閉多邊形的各個頂點
uint32 const poly6[] = {150,110, 170,80, 180,95, 200,85, 230,110, 150,110};
#define ZLG7290 0x70 /* 定義器件地址 */
#define SPI_CS 0x00000100 /* P0.8 */
#define SPI_DATA 0x00000040 /* P0.6 */
#define SPI_CLK 0x00000010 /* P0.4 */
#define SPI_IOCON 0x00000150 /* 定義SPI接口的I/O設置字 */
#define BEEPCON 0x00000080 /* P0.7引腳控制B1,低電平蜂鳴 */
uint8 disp_buf[8]; // 8位數碼管顯示緩沖區,由ZLG7290控制數碼管顯示
void GUI_ExchangeColor(void);
//***********************************************************************/
void delay(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<5000; i++);
}
void BeepRun(uint16 dly)
{
IO0CLR = BEEPCON; // BEEPCON = 0
delay(dly);
IO0SET = BEEPCON; // BEEPCON = 1
delay(dly);
}
////////////////////////////////////////////////////////////////////////////
void HC595_SendDat(uint8 dat)
{ uint8 i;
IO0CLR = SPI_CS; // SPI_CS = 0
for(i=0; i<8; i++) // 發送8位數據
{ IO0CLR = SPI_CLK; // SPI_CLK = 0
/* 設置SPI_DATA輸出值 */
if( (dat&0x80)!=0 ) IO0SET = SPI_DATA;
else IO0CLR = SPI_DATA;
dat <<= 1;
IO0SET = SPI_CLK; // SPI_CLK = 1
}
IO0SET = SPI_CS; // SPI_CS = 1,輸出顯示數據
}
/////////////////////////////////////////////////////////////////////////////
/****************************************************************************
* 名稱:I2C_Init()
* 功能:主模式I2C初始化,包括初始化其中斷為向量IRQ中斷。
* 入口參數:fi2c 初始化I2C總線速率,最大值為400K
* 出口參數:無
****************************************************************************/
void I2C_Init(uint32 fi2c)
{ if(fi2c>400000) fi2c = 400000;
PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; // 設置I2C控制口有效
I2SCLH = (Fpclk/fi2c + 1) / 2; // 設置I2C時鐘為fi2c
I2SCLL = (Fpclk/fi2c) / 2;
I2CONCLR = 0x2C;
I2CONSET = 0x40; // 使能主I2C
/* 設置I2C中斷允許 */
VICIntSelect = 0x00000000; // 設置所有通道為IRQ中斷
VICVectCntl0 = 0x29; // I2C通道分配到IRQ slot 0,即優先級最高
VICVectAddr0 = (int)IRQ_I2C; // 設置I2C中斷向量地址
VICIntEnable = 0x0200; // 使能I2C中斷
}
int main(void)
{
// uint8 i,h,j;
// uint8 a;
uint8 key;
//uint8 disp_buf[8];
PINSEL0 = 0x00000000; // 設置管腳連接,使用I2C口
PINSEL1 = 0x00000000;
IO0DIR = SPI_IOCON|BEEPCON; // 設置SPI控制口和蜂鳴器控制口為輸出
IO0SET = BEEPCON;
IO1DIR = LCM_LEDCON;
IO1SET = LCM_LEDCON;
I2C_Init(30000);
GUI_Initialize(); // 初始化LCM
delay(10);
LCD_Fill(m);
while(1)
{ delay(1);
key = 0;
key = ZLG7290_GetKey();
switch(key)
{ case 1:
break;
case 9:
break;
case 2:
break;
case 10:
break;
case 3:
break;
case 11:
LCD_Fill(l);
break;
case 4:
break;
case 12:
LCD_Fill(datas);
break;
case 5:
break;
case 13:
LCD_Fill(m);
break;
case 6:
GUI_ExchangeColor();
GUI_Button_OK1(30, 30);
GUI_Button_Cancle(120, 30);
if(key == ZLG7290_GetKey())
{
continue;
}
break;
case 14:
GUI_SetColor(1, 0); // 設置前景色及背景色
GUI_LoadPic(30,50, (uint8 *)ICO1, 40, 40); // 顯示40×40的圖標
GUI_Spline(log_pin, 4, 1); // 畫樣條曲線
GUI_LineS(poly6, 6, 1); // 畫封閉的多邊形
GUI_FloodFill(160,100, 1); // 填充多邊形
GUI_PutString(30,100,"WWW.ZLGMCU.COM"); // 顯示字符串
break;
case 7:
GUI_ClearSCR();
break;
case 15:
GUI_FillSCR(0xAA);
break;
case 8:
break;
case 16:
MoveBall();
break;
default:
break;
}delay(20);
}
return(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -