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

📄 湿度传感器._c

📁 avr基础程序大全
💻 _C
字号:
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int

#define clk 7
#define set_clk PORTC |= BIT(clk)	  
#define clr_clk PORTC &= ~BIT(clk)   

#define sid 6
#define clr_sid PORTC &= ~BIT(sid)  
#define set_sid PORTC |= BIT(sid)     


typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable 	  无符号8位整型变量  */
typedef signed   char  S8;       /* defined for signed 8-bits integer variable		  有符号8位整型变量  */
typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable 	  无符号16位整型变量 */
typedef signed   int   S16;      /* defined for signed 16-bits integer variable 	  有符号16位整型变量 */
typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable 	  无符号32位整型变量 */
typedef signed   long  S32;      /* defined for signed 32-bits integer variable 	  有符号32位整型变量 */
typedef float          F32;      /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         F64;      /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */


#define    C4_IN	  DDRB &= ~(1 << PC4)		/*设置输入*/
 #define    C4_OUT	  DDRB |= (1 << PC4)		/*设置输出*/
 #define    C4_CLR	  PORTB &= ~(1 << PC4)	    /*置低电平*/
 #define    C4_SET	  PORTB |= (1 << PC4)		/*置高电平*/
 #define    C4_R	    PINB & (1 <<PC4)		/*读了电平*/
 
 /**************************************************************************
                    通讯I/O空间定义
***************************************************************************/
 #define       COM_IN          C4_IN  
 #define       COM_OUT         C4_OUT
 #define       COM_CLR         C4_CLR
 #define       COM_SET         C4_SET
 #define       COM_R           C4_R
 
 /**************************************************************************
                    全局变量定义区
***************************************************************************/
      U8       i;
      U8    U8FLAG,k;
      U8    U8count,U8temp;
      U8    U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
      U8    U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
      U8    U8comdata;
      U16   ReceiveHighByte;
      U16   ReceiveLowByte;
/**************************************************************************
***************************************************************************/

 
 
void delay()
{
	NOP();
	NOP();
}
void delay_us(uint i)
{
	while(i--)
	 {;}
}
void delay_ms(uint i)
{
	uint a;
	for(;i;i--)
		{
		for(a=0;a<672;a++);
		}
}
void wr_bit(uchar n,uchar data)
{
	for(;n;n--)	  		  	   		//写入位数
		{
		if(data&0x80)				 
			{set_sid;}
		else
			{clr_sid;}
		data=data<<1;	  			 
		delay();
		set_clk;				 
		delay();
		clr_clk;
		}
}
void write_shuju(uchar a,uchar b)
{
	clr_clk;

	wr_bit(5,0xFF);			  		 

	wr_bit(1,0x00);	 				 
	
	if(a==0)	 					 
		wr_bit(1,0x00);				 
	else
		wr_bit(1,0x80);				 

	wr_bit(1,0x00);	 				//写入一个0
	
	wr_bit(4,b);					//写入数据的高4位
	
	wr_bit(4,0x00);					//写入4个0
	
	wr_bit(4,(b<<4));				//写入数据的低4位
	
	wr_bit(4,0x00);					//写入4个0

	set_sid;					  
}
void lcd12864_init()
{
	write_shuju(0,0x30);			//设置数据方式:8位
	delay_us(200);
	write_shuju(0,0x30);			//设置数据方式:8位
	delay_us(80);
	write_shuju(0,0x0C);			//开显示
	delay_us(80);
	write_shuju(0,0x40);			//开显示
	delay_us(200);
	write_shuju(0,0x01);			//清屏
	delay_ms(100);

}
void write_hz(char *s)
   {
	while(*s)
	    {
		write_shuju(1,*s);
		s++;
		}
}
void locate(uchar x,uchar y)
{
	switch(x)
		{
		case 1:write_shuju(0,(0x80+y-1)); break;
		case 2:write_shuju(0,(0x90+y-1));break;
		case 3:write_shuju(0,(0x88+y-1));break;	
		case 4:write_shuju(0,(0x98+y-1));break;
		default:break;		 
		}
}
void cls()
{
	delay_us(200);
	write_shuju(0,0x01);			//清屏
	delay_ms(20);
}
void port_init1()
    {
	 DDRD = 0xFF;				
	 PORTD = 0x00;
	 DDRC = 0xFF;	
	 PORTC = 0x00; 
	 DDRA = 0xFE;	
	 PORTA = 0x00;
	 PORTC|=BIT(2)+BIT(5);
	 PORTC&=~BIT(4);
	}
void main()
	{
	uint adc;
	port_init1();			    
	lcd12864_init();
	cls();					    
	delay_ms(2);
	locate(1,3);write_hz("滨州学院");
	locate(2,1);write_hz("创新实验室  OK");	  
	//locate(3,1);write_hz("ATmega16 ADC学习");	  
	//locate(4,1);write_hz("测量电压       V");
	while(1)
	   {
	     // adc=mega16_adc()*4.888;
		//  locate(4,5);
		 // write_hz(":");
		  write_shuju(1,(adc/1000)+0x30);
		  //write_hz(".");
		  write_shuju(1,((adc/100)%10)+0x30);
		  write_shuju(1,((adc/10)%10)+0x30);
		  write_shuju(1,(adc%10)+0x30);  
	   }

	}

⌨️ 快捷键说明

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