📄 lcd.c
字号:
#include "spce061v004.h"
// LCD-CS===IOB14;
// LCD_WE===IOB8;
// LCD_DATA==IOB10;
#define LCD_CS 0X0040 //IOB6
#define LCD_DA 0X0002 //IOB1
#define LCD_WE 0X0001 //IOB0
//#define out_data_bit(x) *P_IOB_Data=(x==1)?*P_IOB_Data|LCD_DA:*P_IOB_Data&(~LCD_DA)
//#define out_we_bit(x) *P_IOB_Data=(x==1)?*P_IOB_Data|LCD_WE:*P_IOB_Data&(~LCD_WE)
//#define out_cs_bit(x) *P_IOB_Data=(x==1)?*P_IOB_Data|LCD_CS:*P_IOB_Data&(~LCD_CS)
const unsigned int lcd[]=
{
0x007d,0x0005,0x005b,0x001f,0x0027,
0x003e,0x007e,0x0035,0x007f,0x003f,0x0000
};
LCD_Delay( unsigned int time)
{
while(time--);
}
out_data_bit(unsigned int bit)
{
unsigned int data;
data=*P_IOB_Data;
if((bit==0x8000)||(bit==0x0001))
data=data|0x0002;
else data=data&0xfffd;
*P_IOB_Data=data;
LCD_Delay(300);
}
out_we_bit(unsigned char bit)
{
unsigned int data;
data=*P_IOB_Data;
if(bit) data=data|0x0001;
else data=data&0xfffe;
*P_IOB_Data=data;
LCD_Delay(300);
}
out_cs_bit(unsigned int bit)
{
unsigned int data;
data=*P_IOB_Data;
if(bit) data=data|0x0040;
else data=data&0xbfbf;
*P_IOB_Data=data;
LCD_Delay(300);
}
lcd_init()
{
unsigned int temp; //设置为高电平输出端口
temp=*P_IOB_Dir;
temp|=LCD_CS|LCD_DA|LCD_WE;
*P_IOB_Dir=temp;
temp=*P_IOB_Attrib; //
temp|=LCD_CS|LCD_DA|LCD_WE;
*P_IOB_Attrib=temp;
temp=*P_IOB_Data;
temp|=LCD_CS|LCD_DA|LCD_WE;
*P_IOB_Data=temp;
}
out_cmd(unsigned int cmd)
{
unsigned int i,temp;
out_cs_bit(1);
out_cs_bit(0);
out_we_bit(0);
out_data_bit(1);
out_we_bit(1); //send 1
out_we_bit(0);
out_data_bit(0); //send 0
out_we_bit(1);
out_we_bit(0);
out_data_bit(0); //send 0
out_we_bit(1);
out_we_bit(0);
for(i=0;i<8;i++)
{ temp=cmd&0x8000;
out_data_bit(temp);
out_we_bit(1);
out_we_bit(0);
cmd=cmd<<1;
}
out_data_bit(0);
out_we_bit(1);
}
out_addr(unsigned int addr)
{
unsigned int i,temp;
out_cs_bit(1);
out_cs_bit(0);
out_we_bit(0);
out_data_bit(1);
out_we_bit(1); //send 1
out_we_bit(0);
out_data_bit(0); //send 0
out_we_bit(1);
out_we_bit(0);
out_data_bit(1); //send 1
out_we_bit(1);
out_we_bit(0);
for(i=0;i<6;i++)
{ temp=addr&0x8000;
out_data_bit(temp);
out_we_bit(1);
out_we_bit(0);
addr=addr<<1;
}
}
out_data(unsigned int data)
{
unsigned int i,temp;
for(i=0;i<4;i++)
{ temp=data&0x0001;
out_data_bit(temp);
out_we_bit(1);
out_we_bit(0);
data=data>>1;
}
}
display(unsigned int code)
{
unsigned int temp;
temp=lcd[code];
out_data(temp>>4);
out_data(temp&0x000f);
}
show_lcd(unsigned int index)
{
unsigned int qian,bai,shi,ge;
qian=index/1000;
bai=(index%1000)/100;
shi=((index%1000)%100)/10;
ge = ((index%1000)%100)%10;
lcd_init();
out_cs_bit(0); //model reset
out_cs_bit(1);
out_cs_bit(0);
out_cs_bit(1);
out_cs_bit(0);
out_cs_bit(1);
out_cs_bit(0);
out_cmd(0x2900); //model init
out_cmd(0x1800); //model define osc
out_cmd(0x0100); //open osc
out_cmd(0x0300); //open display
out_addr(0x0000);
if(qian==0) display(10);
else display(qian);
if((qian==0)&&(bai==0)) display(10);
else display(bai);
if((qian==0)&&(bai==0)&&(shi==0)) display(10);
else display(shi);
display(ge);
out_cs_bit(1);
out_we_bit(1);
out_data_bit(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -