标题:
单片机测量气压与上位机通信
[打印本页]
作者:
gegregeg
时间:
2021-5-5 14:30
标题:
单片机测量气压与上位机通信
基于单片机的测量气压与上位机通信
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u8 AD_val;
u8 j=0;
sbit RS=P2^4;
sbit RW=P2^3;
sbit E=P2^2;
sbit LED1=P1^5;
sbit LED2=P1^6;
sbit LED3=P1^7;
sbit cs=P1^0;
sbit clk=P3^6;
sbit dio=P3^7;
u8 str[]="qi_ya_:";
u8 str1[]="KPa";
void delayms(u16 ms) //延时函数
{
u8 i;
while(ms--)
for(i=0;i<123;i++);
}
void w_com(u8 com) //写指令寄存器
{
RS=0;
RW=0;
E=1;
P0=com;
E=0;
delayms(1);
}
void w_dat(u8 dat) //写数据寄存器
{
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
delayms(1);
}
void lcd_ini(void) //液晶屏初始化
{
delayms(10);
w_com(0x38);
delayms(10);
w_com(0x0c);
delayms(10);
w_com(0x06);
delayms(10);
w_com(0x01);
delayms(10);
w_com(0x38);
delayms(10);
}
void UsartInit() //串口接收初始化
{
SCON=0X50;
TMOD=0X20;
PCON=0X00;
TH1=250;
TL1=250;
ES=1;
EA=1;
TR1=1;
}
u8 A_D() //AD0832 AD模数转换初始化函数
{
u8 i,dat;
cs=1;
clk=0;
cs=0;
clk=1;
clk=0;
dio=1;
clk=1;
clk=0;
dio=0;
clk=1;
clk=0;
dio=1;
clk=1;
for(i=0;i<8;i++)
{
clk=1;
clk=0;
dat<<=1;
dat|=(u8)dio;
}
cs=1;
return dat;
}
void main() //主函数
{
u8 i,r;
double s,l;
lcd_ini();
w_com(0x80);
for(i=0;str[i]!='\0';i++)
w_dat(str[i]);
w_com(0xcb);
for(i=0;str1[i]!='\0';i++)
w_dat(str1[i]);
UsartInit();
LED1=0;
LED2=0;
LED3=0;
while(1)
{ EA=0;
AD_val=A_D();
EA=1;
s=(1.0/256)*AD_val*5;
l=((s-0.27)/1.8);
r=100*l;
j=r;
EA=0;
w_com(0xc7);
w_dat(r/100+0x30);
w_dat(r/10%10+0x30);
w_dat(r%10+0x30);
EA=1;
if(r<20)
{
LED1=1;
LED2=0;
LED3=0;
}
if(r<40&&r>20)
{
LED1=0;
LED2=1;
LED3=0;
}
if(r>40)
{
LED1=0;
LED2=0;
LED3=1;
}
delayms(100);
}
}
void Usart() interrupt 4 //串口发送中断函数
{
u8 receiveData;
receiveData=SBUF;
RI=0;
SBUF=j;
while(!TI);
TI=0;
}
复制代码
作者:
Boos丘
时间:
2021-11-23 15:03
有详细资料嘛,作者
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1