?? lcd1.c
字號:
#include <SPCE061A.h>
#define x 0x80
#define y 0x80
#define comm 0
#define dat 1
//#define cs IOB0
//#define data IOB1
//#define clk IOB2
volatile unsigned int *P_WatchDog_Clear = (unsigned int*)(0x7012);
void chn_disp(unsigned char ch_long,unsigned char *chn);
void wr_lcd (unsigned char dat_comm,unsigned char content);
void delay (unsigned long int us);
unsigned char tab1[]={
"青島大學電工中心"
"QD University" //開機畫面
};
/*------------------初始化-----------------*/
void init_lcd (void)
{
wr_lcd (comm,0x30); //30---基本指令動作
wr_lcd (comm,0x01); //清屏,地址指針指向00H
delay (80);
wr_lcd (comm,0x06); //光標的移動方向
wr_lcd (comm,0x0c); //開顯示,關游標
}
/*-------顯示一段長為CH--LONG的字符串---------*/
void chn_disp(unsigned char ch_long,unsigned char *chn)
{
unsigned char i;
wr_lcd (comm,0x30);
for (i=0;i<ch_long;i++)
wr_lcd (dat,chn[i]);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (120);
}
/*---------------------------------------*/
void wr_lcd (unsigned char dat_comm,unsigned char content)
{
unsigned char a,i,j;
delay (40);
a=content;
*P_IOB_Dir = 0xffff;
*P_IOB_Attrib = 0xffff;
*P_IOB_Data = 0x0000;
*P_IOB_Data |= 0x0001;//cs=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
*P_IOB_Data |= 0x0002;//std=1;
for(i=0;i<5;i++)
{
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
}
*P_IOB_Data &= 0xfffd;//std=0;
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
if(dat_comm)
*P_IOB_Data |= 0x0002;//std=1; //data
else
*P_IOB_Data &= 0xfffd;//std=0; //command
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
*P_IOB_Data &= 0xfffd;//std=0;
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
if (a & 0x80 )
*P_IOB_Data |= 0x0002;//std=1;
else
*P_IOB_Data &= 0xfffd;//std=0;
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
a = a * 2;
}
*P_IOB_Data &= 0xfffd;//std=0;
for(i=0;i<4;i++)
{
*P_IOB_Data |= 0x0004;//sclk=1;
*P_IOB_Data &= 0xfffb;//sclk=0;
}
}
}
/*---------------------------------------*/
void delay (unsigned long int us) //delay time
{
while(us--);
}
void delay2() //延時程序
{unsigned char i;
for(i=300;i>0;i--);
}
/*------------------主程序--------------------*/
int main()
{
*P_SystemClock = 0x0020; //PLL:20.48MHz CPU:20.48MHz
*P_IOB_Dir = 0xffff;
*P_IOB_Attrib = 0xffff; //why it must be ffff and not 0000
*P_IOB_Data = 0x0000;
init_lcd ();
while(1)
{
wr_lcd(comm,0x80);
chn_disp(16,tab1);
wr_lcd(dat,'0');
wr_lcd(dat,'0');
//delay(100000);
//*P_WatchDog_Clear = 0x0001; how to clear it?
// delay(100000);
// clrram();
//delay(100000);
*P_WatchDog_Clear =0x0001;
//delay(100000);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -