📄 湿度传感器._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 + -