?? main.c~
字號:
#include "SPCE061A.h"
#define E (0x1000)
#define RS (0x2000)
#define RW (0x4000)
#define DIO (*P_IOA_Data)
#define Delay_data 40
#define DIO_Dir (*P_IOA_Dir)
#define DIO_Attrib (*P_IOA_Attrib)
#define DIO_Buffer (*P_IOA_Buffer)
#define CIO (*P_IOB_Data)
#define CIO_Dir (*P_IOB_Dir)
#define CIO_Attrib (*P_IOB_Attrib)
#define CIO_Buffer (*P_IOB_Buffer)
#define mask (0xff00)
unsigned int IO_Dir,IO_Data,IO_Attrib;
void Write_Command(unsigned int Get_Data); //寫命令
void Check_Busy(void); //是否忙
void LCD_Init(void); //初始化
void Write_Data(unsigned int Get_Data); //顯示
void CLS(void); //清屏
void Delay(unsigned long int m);
void IO_Init(void)
{
DIO_Dir&=~mask;
DIO_Attrib&=~mask;
DIO=(DIO_Buffer&(~mask));
CIO_Dir|=RS+RW+E;
CIO_Attrib|=RS+RW+E;
CIO=(CIO_Buffer|(RS+RW+E));
}
//........................................................
void OutPut(void) //作為輸出子程序
{
DIO_Dir|=mask;
DIO_Attrib|=mask;
DIO=(DIO_Buffer|mask);
}
//..........................................................//
//.........................................................//
void InPut(void) //輸入子程序
{
DIO_Dir&=~mask;
DIO_Attrib&=~mask;
DIO=(DIO_Buffer&~mask);
}
void IO_Resum(void)
{
DIO_Dir=IO_Dir;
DIO_Attrib=IO_Attrib;
DIO=IO_Data;
}
//////////.......................................
int main()
{ int j;
*P_IOB_Dir=0xffff;
*P_IOB_Attrib=0xffff;
*P_IOB_Data=0x0000;
LCD_Init();
Write_Command(0x0080); //設置當前DDRAM地址為0x00
Write_Data(41);
Write_Data(21);
CLS();
//Write_Data(23);
//Write_Data('O');
for(j=0;j<5;j++)
{
Delay(65535); //延時
*P_Watchdog_Clear = 0x0001; //清看門狗
}
}
void LCD_Init(void)
{ int i;
IO_Init();
OutPut();
DIO = DIO_Buffer&~mask;
DIO |= 0x3000;
CIO=CIO_Buffer&(~(RS+RW));
for(i=0;i<2;i++)
{
CIO|=E;
asm("nop");
CIO&=~E;
Delay(100);
}
DIO_Buffer &= ~mask;
DIO = DIO_Buffer|0x3800;
CIO_Buffer|=E;
asm("nop");
CIO_Buffer &= ~E;
Delay(100);
Write_Command(0x0001);
Write_Command(0x0006);
Write_Command(0x000c);
}
void Delay(unsigned long int m) //延時
{
while(m--)
*P_Watchdog_Clear=0x0001;
}
////////////////////////////////////......
//.......................................
void Write_Command(unsigned int Get_Data)//寫指令并執行
{ //RS=0,RW=1,E=0
unsigned int Deal_IO=0;
InPut();
CIO=CIO_Buffer|RW;
CIO&=~(E+RS);
asm("nop");
do{
CIO|=E;
Deal_IO=DIO;
CIO&=~E;
}while(Deal_IO&0x8000!=0);
OutPut();
CIO&=~RW;
Get_Data<<=8;
DIO=DIO_Buffer&~mask;
DIO|=Get_Data;
CIO=CIO_Buffer|E;
asm("nop");
asm("nop");
CIO&=~E;
IO_Resum();
}
//////////////////////////////////////////////
//......................................//////
void Write_Data(unsigned int Get_Data) //寫數據并執行
{ //RS=1,RW=0,E=1
unsigned int Deal_IO=0;
//busy?
InPut();
CIO=CIO_Buffer|RW;
CIO&=~(E+RS);
asm("nop");
do{
CIO|=E;
Deal_IO=DIO;
CIO&=~E;
}while(Deal_IO&0x8000!=0);
OutPut();
CIO&=~RW;
CIO|=RS;
DIO = DIO_Buffer&~mask;
Get_Data<<=8;
DIO|=Get_Data;
CIO=CIO_Buffer|E;
asm("nop");
asm("nop");
CIO&=~E;
IO_Resum();
*P_Watchdog_Clear=0x0001;
}
//........................................................
void CLS(void) // 清屏
{
Write_Command(1);
}
///////////........................................................
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -