?? main.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
/****************************************************************************
* 文件名:OSRUN.C
* 功能:多任務切換工作期間.
* 說明:將跳線器JP3短接。
****************************************************************************/
#include "config.h"
#define _RST (1<<23) /* P0.23 */
#define _CS1 (1<<24) /* P0.24 */
#define RS (1<<25) /* P0.25 */
#define _WR (1<<26) /* P0.26 */
#define _RD (1<<27) /* P0.27 */
#define Data0_17 (1<<17)
#define Data0_16 (1<<16)
#define Data0_15 (1<<15)
#define Data0_14 (1<<14)
#define Data0_13 (1<<13)
#define Data0_12 (1<<12)
#define Data0_11 (1<<11)
#define Data0_10 (1<<10)
#define Data0_9 (1<<9)
#define Data0_8 (1<<8)
#define Data0_7 (1<<7)
#define Data0_6 (1<<6)
#define Data0_5 (1<<5)
#define Data0_4 (1<<4)
#define Data0_3 (1<<3)
#define Data0_2 (1<<2)
#define Data0_1 (1<<1)
#define Data0_0 (1<<0)
#define DataPort (Data0_17|Data0_16|Data0_15|Data0_14|Data0_13|Data0_12|Data0_11|Data0_10|Data0_9|Data0_8|Data0_7|Data0_6|Data0_5|Data0_4|Data0_3|Data0_1|Data0_3|Data0_0)
#define DisplayCol 240
#define DisplaySeg 320
// unsigned int xdata, *ptr;
unsigned int page,seg;
uint32 *TCBTaskCur;
uint32 TaskState;
uint32 TaskNum;
uint32 IOBuf;
uint8 count;
unsigned char step=0;
void delay(unsigned int param)
{
unsigned int x,y;
for(y=0;y<param;y++)
for(x=0;x<1000;x++);
}
void LCD_CmdWrite(unsigned char Command)
{
IOCLR = 0x3ffff; //DataPort
IOCLR = RS|_CS1;
delay(0);
IOSET = Command;
IOCLR = _WR;
delay(0);
IOSET = _WR;
delay(0);
IOSET = RS;
delay(0);
}
void LCD_DataWrite(unsigned int OutData)
{
IOCLR = 0x0ffff;
IOSET = OutData; //DataPort=OutData;
IOCLR = _WR;
delay(0);
IOSET = _WR;
delay(0);
IOSET = _CS1;
}
void WriteReg(unsigned int Command, unsigned int OutData)
{
LCD_CmdWrite(Command);
LCD_DataWrite(OutData);
}
void LCD_Reset(void)
{
IOSET = _CS1;
IOSET = _RST;
IOSET = _RD;
delay(10);
IOCLR = _RST;
delay(200);
IOSET = _RST;
delay(10);
}
void LCD_Initial(void) //initial code 1
{
WriteReg(0x0000,0x0001);
WriteReg(0x0001,0x0100);
WriteReg(0x0002,0x0700);
WriteReg(0x0003,0x1028);
WriteReg(0x0004,0x0000);
WriteReg(0x0008,0x0202);
WriteReg(0x0009,0x0000);
WriteReg(0x000a,0x0000);
WriteReg(0x000c,0x0000);
WriteReg(0x000d,0x0000);
WriteReg(0x000f,0x0000);
WriteReg(0x0010,0x0000);
WriteReg(0x0011,0x0007);
WriteReg(0x0012,0x0000);
WriteReg(0x0013,0x0000);
delay(200);
WriteReg(0x0010,0x17b0);
WriteReg(0x0011,0x0037);
delay(50);
WriteReg(0x0012,0x013e);
WriteReg(0x0013,0x1700);
WriteReg(0x0029,0x0009);
WriteReg(0x0020,0x0000);
WriteReg(0x0021,0x0000);
WriteReg(0x0030,0x0007);
WriteReg(0x0031,0x0403);
WriteReg(0x0032,0x0404);
WriteReg(0x0035,0x0002);
WriteReg(0x0036,0x0707);
WriteReg(0x0037,0x0606);
WriteReg(0x0038,0x0106);
WriteReg(0x0039,0x0007);
WriteReg(0x003c,0x0700);
WriteReg(0x003d,0x0707);
//------------------ Set GRAM area -------------//
WriteReg(0x0050, 0x0000); // Horizontal GRAM Start Address
WriteReg(0x0051, 0x00EF); // Horizontal GRAM End Address
WriteReg(0x0052, 0x0000); // Vertical GRAM Start Address
WriteReg(0x0053, 0x013F); // Vertical GRAM Start Address
WriteReg(0x0060, 0x2700); // Gate Scan Line
WriteReg(0x0061, 0x0001); // NDL,VLE, REV
WriteReg(0x006A, 0x0000); // set scrolling line
//-------------- Partial Display Control -------//
WriteReg(0x0080, 0x0000);
WriteReg(0x0081, 0x0000);
WriteReg(0x0082, 0x0000);
WriteReg(0x0083, 0x0000);
WriteReg(0x0084, 0x0000);
WriteReg(0x0085, 0x0000);
//-------------- Panel Control -----------------//
WriteReg(0x0090, 0x0010);
WriteReg(0x0092, 0x0000);
WriteReg(0x0093, 0x0003);
WriteReg(0x0095, 0x0110);
WriteReg(0x0097, 0x0000);
WriteReg(0x0098, 0x0000);
//Delay(200);
WriteReg(0x0007, 0x0173); // 65K color and display ON
}
//----------------------------------------------------------------------
void Checker(unsigned int param1,unsigned int param2) //Full on,off,checkerboard,bar
{
LCD_CmdWrite(0x0022);
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
if(seg%2)
{
LCD_DataWrite(param1);
}
else
{
LCD_DataWrite(param2);
}
}
}
}
void test(void) //test
{
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
if (page<3)
{
LCD_DataWrite(0xffff);
delay(10);
}
else
LCD_DataWrite(0x0000);
}
}
}
void WriteGrid1(void)
{
for(page=0;page<DisplayCol;page++)
{
for(seg=0;seg<DisplaySeg;seg++)
{
switch((page/16+seg/16)%3)
{
case 0: LCD_DataWrite(0x001f);break; //red
case 1: LCD_DataWrite(0x07e0);break; //green
case 2: LCD_DataWrite(0xf800);break; //blue
}
}
}
}
void WriteBar1(void)
{
unsigned char i;
unsigned int m;
LCD_CmdWrite(0x0022);
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0xf800);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0x07e0);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0x001f);
}
for(i=0;i<80;i++)
{
for(m=0;m<240;m++)
LCD_DataWrite(0xffff);
}
}
//============================================
void Field(void)
{
unsigned char x;
unsigned int y;
LCD_CmdWrite(0x0022);
for(y=0;y<320;y++)
for(x=0;x<240;x++)
{
if((y==0)||(y==1)||(y==158)||(y==159)||(y==318)||(y==319)){LCD_DataWrite(0xffff);}
else if((x==0)||(x==1)||(x==118)||(x==119)||(x==238)||(x==239)){LCD_DataWrite(0xffff);}
else{LCD_DataWrite(0x0000); }
}
}
void WR_DATA(unsigned char temp1, unsigned char temp2)
{
IOSET = RS;
IOSET = _CS1;
IOCLR = 0x03ff; //DataPort=temp1;
IOSET = temp1;
IOCLR = _CS1;
IOCLR = 0x03ff; //DataPort=temp2;
IOSET = temp2;
IOCLR = _WR;
IOSET = _WR;
IOSET = _CS1;
}
//========================================================
void showpicture1()
{
unsigned char *p;
unsigned int i,j,temp1,temp2;
WriteReg(0x0020,0x0000);
WriteReg(0x0021,0x0000);
LCD_CmdWrite(0x0022);
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
temp1=*p++;
temp2=*p++;
WR_DATA(temp1,temp2);
}
}
}
/****************************************************************************
* 名稱:HC595_SendDat()
* 功能:向74HC595發送一字節數據
* 入口參數:dat 要發送的數據
* 出口參數:無
* 說明:發送數據時,高位先發送。
****************************************************************************/
void __irq IRQ_Time0(void)
{
T0IR = 0X01;
VICVectAddr = 0x00;
}
/****************************************************************************
* 名稱:main()
* 功能:掉電測試。
* 說明:在STARTUP.S文件中使能IRQ中斷(清零CPSR中的I位)。
****************************************************************************/
int main(void)
{
PINSEL0 = 0x00000000;
PINSEL1 = 0x00000000; // 設置MAT0.0連接到P0.22
IODIR = _RST|_CS1|RS|_WR|_RD|DataPort;
delay(10);
LCD_Reset();
LCD_Initial();
while(1)
{
step = 0;
for(step=0;step<8;step++)
{
switch(step)
{
case 2: Checker(0xffff,0xffff);break; // all on
case 0: Checker(0x0000,0x0000);break; // all off
case 4: Checker(0x07e0,0x07e0);break; // green
case 5: Checker(0x001f,0x001f);break; // red
case 6: Checker(0xf800,0xf800);break; // blue
case 1: Field(); break; // Gird
case 7: WriteBar1(); break; // bar
case 3: showpicture1(); break; // bitbmp
default: break; // Power_Off();
}
delay(2000);
}
}
return(0);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -