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

📄 collection.c

📁 此为基于PT2272的无线接受程序
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd_bus P1
uchar offset=0x80;
uchar d[2]={0x30,0x30};
uchar tem1[3];
uchar tem2[4];
uchar lsb,msb;
uchar temp1,temp2;

sbit p_3=P3;
sbit rs=P0^5;
sbit rw=P0^6;
sbit e =P0^7;
sbit BEEP=0x97;




                        //年月摄氏度	
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,
					0x06,0x08,0x10,0x10,0x10,0x08,0x06,0x00};  
uchar code table[15]={0,0x30,0,0x2e,0x37,0x38,0x39,0,0x34,0x35,0x36,0,0x31,0x32,0x33};   
uchar code num[11]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};  
uchar code warn[]="WARNING!!tempreture is too high";



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


 /* 延时t毫秒 */
void delay2(uint t)
{
	uint i;
	while(t--)
	{
		/* 对于11.0592M时钟,约延时1ms */
		for (i=0;i<125;i++)
		{}
	}
} 



/**********判断忙标志,返回的是一个位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<32;i++) lcd_wrdata(hanzi[i]);
}



tempreture()
{
      uchar i,j;
	  lcd_wrcmd(0x80);
	   
	while(1)
	{
    
	  if(p_3&0x0f!=0)
	    lsb=p_3;
      if(p_3&0xf0!=0)
	    msb=p_3;
	  temp1=(msb<<4)|(lsb>>4);
	  temp2=lsb&0x0f;

	   tem1[0]=temp1/100;
	   temp1=temp1%100;
	   tem1[1]=temp1/10;
	   temp1=temp1%10;
	   tem1[2]=temp1;



	   temp2=temp2*625;
	   tem2[0]=temp2/1000;
	   temp2=temp2%1000;
	   tem2[1]=temp2/100;
	   temp2=temp2%100;
	   tem2[2]=temp2/10;
	   temp2=temp2%10;
	   tem2[3]=temp2; 
 
	   lcd_wrcmd(0xc0);	   //显示当前温度

	  for(i=0;i<3;i++)
	    lcd_wrdata(num[tem1[i]]);

	    lcd_wrdata('.');
	   lcd_wrcmd(0xc4);

	  for(i=0;i<4;i++)
		lcd_wrdata(num[tem2[i]]);
		lcd_wrdata(2);
		lcd_wrdata('C'); 
	
	  }

}

warning(uchar a)
{
  if(a>31)
    {lcd_wrcmd(warning[]);
	while(1)
	 {beep=0;
	  delay2(1000);
	  beep=1;
	  delay2(1000); 
	  if(sw1==0)break;
	  	  
}

main()
{
       lcd_bus=0xff;
       lcd_ini();
	 while(1)
      {
        tempreture();
        warning();
       }
}
   

⌨️ 快捷键说明

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