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

📄 receive.c

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd_bus P1
#define re_bus P0  //P3.0,1,2,3
uchar offset=0x80;
               //年月度    
uchar code hanzi[]={0x80,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,  
                    0xf,0x9,0xf,0x9,0xf,0x9,0x11,0,  
                    0x1C,0x14,0x1C,0x0,0x0,0x0,0x00,0x00};  

// lcd
sbit rs=P2^0;
sbit rw=P2^1;
sbit e =P2^2;


//////////////////////////////////////////
delay(uchar d)
{
        while(--d);
}





/**********判断忙标志,返回的是一个位BF**********/
bit lcd_busy(void)
{
        uchar bflag;     
        rs=0;
        rw=1;
        _nop_();
        e=1;
        _nop_();
        lcd_bus=0xff;
        bflag=lcd_bus;
        e=0;
        return(bit)(bflag&0x80);    //BF=1 busy   
}



/*********写命令,有两个参数,第一个是要写的命令控制字,
第二个是用来控制是否进行忙标志的判断。
busyflag=1:判断;为 0:不判断****************/
void lcd_wrcmd(uchar cmd)
{
        while(lcd_busy());
        lcd_bus=cmd;
        rs=0;
        rw=0;
        _nop_();
        e=1;
        _nop_();
        _nop_();
        e=0; 
}


/************向液晶片写数据***************/
void lcd_wrdata( uchar lcddata)
{
        while(lcd_busy());
        lcd_bus=lcddata;
        rs=1;
        rw=0;
        _nop_();
        e=1;
        _nop_();
        _nop_();
        e=0;
}

/****************初始化***************/
void lcd_ini(void)
{
        lcd_wrcmd(0x38); 
        delay(100);
        lcd_wrcmd(0x0c);
        delay(100);
        lcd_wrcmd(0x06);
        delay(100);
        lcd_wrcmd(0x01);
        delay(100);
}
//////////////////////////////////////////////
//
//    生成汉字子模函数
//    当lcd_wrdata(0);显示第一个汉字
//    当lcd_wrdata(1);显示第二个汉字
//
//////////////////////////////////////////////
lcd_h()
{
    uchar i;
    lcd_wrcmd(0x40);
    for(i=0;i<24;i++) lcd_wrdata(hanzi[i]);
}

void display(uchar temp)
{    unsigned char stra[3],r=0;
     unsigned char  i;
    
       lcd_wrcmd(0x0c);
       stra[0]=temp/100+'0';
        stra[1]=temp%100/10+'0';
       stra[2]=temp%10+'0';
      
         lcd_wrcmd(0x0c);
      if(stra[0]=='0')
          r=1;
       
      lcd_wrcmd(0xc2+r);
       for(i=r;i<3;i++)
       lcd_wrdata(stra[i]);
	   
	  lcd_wrdata(2);
       lcd_wrdata(0x43);
    
	  
}






main()
{  uchar rect=20,temp,temp11,temp10,temp01,temp00,tt;  
   lcd_bus=0xff;
   lcd_ini();
   re_bus=0xff;
   lcd_h();
  
 while(1)
 
 { 	
    
	  re_bus=0xff;
	  rect=re_bus&0x0f;

	 
	
	   	
	   
	     if(rect>7&&rect<12)

		 {   
		     temp10=rect&0x03;
			 temp10<<=4;
			 if(tt<temp10)
			 temp01=0;
			 tt=temp10;
		  //  temp=temp11|temp10|temp01|temp00;
		  // display(temp);
			 rect=re_bus&0x0f;
		
			
		  }	
		    
	 
		 
      else  if(rect>3&&rect<8)

		 {   
		     temp01=rect&0x03;
			 temp01<<=2;
			   
		 
			// temp=temp11|temp10|temp01|temp00;
		 // display(temp);
			  
			 rect=re_bus&0x0f;
		
			 
			
		  }	


		else  if(rect>11&&rect<16)
	    { 
		    
	     	temp00=rect&0x03;
		    
		    temp=temp11|temp10|temp01|temp00;
			display(temp);
			delay(100);
			rect=re_bus&0x0f;
			
		}
		  
	  
       
	  /* else  if(rect==0)

		 {   
		     
			 temp00=rect&0x03;
			 temp=temp11|temp10|temp01|temp00;
			 
			 display(temp);
		  } */ 

          
	    

	 
	   
} 

 	
 }
 

  

 

⌨️ 快捷键说明

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