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

📄 hgo12864_pic16.c

📁 基于PIC16F946的HGO12864的驱动代码,绝对原创,驱动芯片NT7532
💻 C
📖 第 1 页 / 共 2 页
字号:
       nop();
       temp=s & 0x80;
       if(temp)
            {di=1;}
       else {di=0;}

       sclk=1;   
       s=s<<1;  
      }
 } 
/************************************************************************
function-->write data
input-->dat
************************************************************************/

void wdata1(const uchar *dat)
 {
   const uchar *p;
   uchar dat1;
   p=dat;
   dat1=*p;
   cs1=0;
   nop();
   a0=1;
   nop();
   write(dat1);  
   nop();
   nop(); 
   cs1=1;
}
/************************************************************************
function-->write data
input-->dat
************************************************************************/

void wdata(unsigned char dat)
 {
   cs1=0;
   nop();
   a0=1;
   nop();
   write(dat);  
   nop();
   nop(); 
   cs1=1;
}
/************************************************************************

************************************************************************/
void ccwpr(unsigned char cod,unsigned char page,unsigned char seg)
{      
        unsigned char zmseg;
        uchar column_high,column_low;
        column_high=seg;
        column_low=seg;    
		wcom(0xB0|(page+0x01));                              
        wcom(0x10|(0x0f&(column_high>>4)));   
        wcom(0x00|(0x0f&column_low));   
        for(zmseg=16;zmseg<=31;zmseg++)
        {  
            
            wdata1(&CCTAB[cod*32+zmseg]);
        }
;
        column_high=seg;
        column_low=seg;    
		wcom(0xB0|page);                                    
        wcom(0x10|(0x0f&(column_high>>4)));   		
        wcom(0x00|(0x0f&column_low));   
		for(zmseg=0;zmseg<=15;zmseg++)
        {   
			wdata1(&CCTAB[cod*32+zmseg]);
        }
       
  }
/************************************************************************

************************************************************************/
void interrupt isr(void)
{

	if(TMR1IE&&TMR1IF)
	{
		TMR1IF=0;
		TMR1H=0xf8;
		TMR1L=0x4e;
        //PORTC^=0x01;
        time_1ms_if=1;
     }
//
    if(RBIE&&RBIF)
    {
       RBIF=0;
       
    }
}
/************************************************************************

************************************************************************/
void cwpr(unsigned char cod,unsigned char page,unsigned char seg)
{ 
        unsigned char zmseg;
        uchar column_high,column_low;

     	column_high=seg;
        column_low=seg;    
		wcom(0xB0|(page+0x01));                              
        wcom(0x10|(0x0f&(column_high>>4)));   
        wcom(0x00|(0x0f&column_low));  
		
		for(zmseg=0;zmseg<=7;zmseg++)
        {   
			wdata1(&success[cod*8+zmseg]);
			//delay();
        }
}

/************************************************************************

************************************************************************/
void disdate_a(unsigned char dat_a,unsigned char dat_b)
{
   int seg;
   unsigned char page;
   for(page=0xb0;page<0xb9;page++)                     //写页地址共9页  0xb8----0xb9
      { wcom(page);                                    //如下汉字可改
        wcom(0x10); 
        wcom(0x00); 
                   
        for(seg=0;seg<64;seg++)
           { wdata(dat_a);
             wdata(dat_b);
           }
      } 
   wcom(0xaf);     
   nop();      
}
/************************************************************************

************************************************************************/
void disdate_b(unsigned char *p)
{
   int seg;
   unsigned char page;
   wcom(0xaf);
   for(page=0xb0;page<0xb9;page++)                    //写页地址共8页  0xb0----0xb8
	 {
          wcom(page);                      
          wcom(0x10); 
          wcom(0x00); 
                     
          for(seg=0;seg<128;seg++)
             { 
              wdata(*p++);
             }              
         }           
 }

/************************************************************************

************************************************************************/
void disdate_c(unsigned char *q)
{  int seg;
   unsigned char page;
   wcom(0xaf);
   for(page=0xb0;page<0xb9;page++) //写页地址共8页  0xb0----0xb8
         {
          wcom(page);
          wcom(0x10);
          wcom(0x00);
          q=q+128;
          for(seg=128;seg>0;seg--)
             {
              wdata(*q--);
             }  
          q=q+128;        
         }
}    
/************************************************************************

************************************************************************/
void lcd_init(void)
{
  rst=0;
  delay();
  rst=1;
  delay();
  wcom(0xa3);       //LCD BIAS SET ( A2 1/8;A3 1/65DUTY)
  wcom(0xa0);       //ADC  select,NORMAL   0-->127
  wcom(0xaf);       // DISPLAY ON/OFF
  wcom(0x2f);        //power control(VB,VR,VF=1,1,1)
  wcom(0x23);        // VOLT REGULATOR RADIO SET 
  wcom(0x81);       //ELECTRONIC VOLUME mode setting 100B 对比度命令
  wcom(0x28);       //REFERENCE VOLT REG  set
  wcom(0xc0);        //SHL SELECT
  wcom(0xaf);        //DISPLAY ON/OFF
  wcom(0x40);        // DISPLAY START LINE SET
  


  nop();
  nop();
}       
/************************************************************************

************************************************************************/
void RunCalendar(char* p)
{
    char* ptr[6];
    char i;
    ptr[0] = p;
    for(i = 1;i < 6;i++)
    {
        ptr[i] = ptr[i - 1] + 1;
    }
   
    (*ptr[5])++;
    if(*ptr[5] >= 60)
    {
        *ptr[5] = 0;
        if(*ptr[4] >= 59)
        {
            *ptr[4] = 0;
            if(*ptr[3] >= 23)
            {
                *ptr[3] = 0;
                if(*ptr[1] == 2) 
                {   /*february*/              
                    if((*ptr[0])%4 == 0)                   
                    {   /*leapyear*/
                        if(*ptr[2] >= 29)
                        {
                            *ptr[2] = 1;
                            (*ptr[1])++;
                        }
                        else
                        {
                            (*ptr[2])++;
                        }  
                    }
                    else
                    {
                        if(*ptr[2] >= 28)
                        {
                            *ptr[2] = 1;
                            (*ptr[1])++;
                        }
                        else
                        {
                            (*ptr[2])++;
                        }                  
                    }
                }
                else if((*ptr[1] == 4) || (*ptr[1] == 6) 
                || (*ptr[1] == 9) || (*ptr[1] == 11))
                {    
                    if(*ptr[2] >= 30)
                    {
                        *ptr[2] = 1;
                        (*ptr[1])++;
                    }
                    else
                    {
                        (*ptr[2])++;
                    }                 
                }
                else
                {    
                    if(*ptr[2] >= 31)
                    {
                        *ptr[2] = 1;
                        if(*ptr[1] == 12)
                        {
                            *ptr[1] = 1;
                            (*ptr[0])++;
                        }
                        else
                        {
                            (*ptr[1])++;
                        }
                    }
                    else
                    {
                        (*ptr[2])++;
                    }
                }         
            }
            else
            {
                (*ptr[3])++;     
            }    
        }
        else
        {
            (*ptr[4])++;    
        }
    }
    else
    {     
    }
}
/***************************************************************

***************************************************************/










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -