📄 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 + -