lcd_ocmj.c

来自「AD9851-dds的设计资料」· C语言 代码 · 共 119 行

C
119
字号
#include<iom128v.h>
#include<macros.h>
#define ASK           (PINE&0X40)
#define SBT_ANSWER    PORTE|=BIT(PORTE7)
#define CLR_ANSWER    PORTE&=~BIT(PORTE7)
#define SBT_RESET     PORTC|=BIT(PORTC3)
#define CLR1_RESET    PORTC&=~BIT(PORTC3)
#define DPORT_A       PORTA


/*************************************/
void delay(unsigned char n)
  {
   unsigned char i;
  
    for(;n>0;n--)
   for(i=0;i<100;i++);
  }

/**************************************/
  void initail_ocmj(void)
  { 
   MCUCR=0X00;
   DDRA=0XFF;         
   DPORT_A=0XFF;
   DDRE=0X80;      ///PORTE.7作为输出脚
   PORTE=0XFF;
   DDRC=0X08;
   CLR1_RESET;
   delay(100);
   SBT_RESET;
   CLR_ANSWER;
   delay(100);
 }



/***************************************/ 
  void ocmj_write(unsigned char adata)
   {
      while(ASK);
     DPORT_A=adata;
     _NOP();
    SBT_ANSWER;
    _NOP();
    while(ASK==0);
    CLR_ANSWER;
  }
 /********************************************/ 
 
   void write_lcd_word(unsigned char cmd ,unsigned char x,unsigned char y,unsigned char *pp)
             /// x:0x00~0x07 y:0x00~0x03  
      { x+=2;
	  while(*pp!=0)
       { ocmj_write(cmd);
        ocmj_write(x);
        ocmj_write(y);
		 ocmj_write(*pp-0xa0);
		 pp++;
		 ocmj_write(*pp-0xa0);
		 pp++;
		if(x<0x09)
 		    x++;
		 else
		    {
			 x=0x02;
			 y++;
			}	
       }
	 }
/**********************************************************************/	 
void write_asiic(unsigned char x,unsigned char y,unsigned char *asc_p)
  
    {
	 x+=4;
	while((*asc_p)!=0)
	   {
		 ocmj_write(0xf1);
		 ocmj_write(x);
		 ocmj_write(y);
		 ocmj_write(*asc_p);
		 asc_p++;
		 if (x<0x13) 
		    x++;
		 else
		   {
		    x=0x04;
			y+=8;		    
		   }	
		}	
	 }

 /********************************************************/
   void write_a(unsigned char x,unsigned char y,unsigned char asc_p)
    {
	         
	     x+=4;
		 ocmj_write(0xf1);
		 ocmj_write(x);
		 ocmj_write(y);
		 ocmj_write(asc_p);
      }
	////CLR LCD  
  /********************************/
	   void  DisplayListChar(unsigned char x,unsigned char y)
     {
        unsigned char i,asc_p;
        asc_p=' ';
        x+=4;
       for(i=0;i<16;i++)
          {   ocmj_write(0xf1);
		      ocmj_write(x+i);
		      ocmj_write(y);
		      ocmj_write(asc_p);
	      }
		  
        }	
     

⌨️ 快捷键说明

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