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

📄 lcd.c

📁 台湾凌阳单片机SPCE061A单芯片做的一个带按健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 + -