⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcmdisp.c

📁 这是周立功的GUI编程示范
💻 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 + -