• 大小: 6KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-07-19
  • 语言: 其他
  • 标签: c51  mpx4115  18b20  

资源简介

mpx4115压力和ds18b20温度LED显示,可精确0.1kpa,显示稳定,带预设值与报警电路,课切换压力与温度预设值显示。

资源截图

代码片段和文件信息

#include  
#include “intrins.h“
#include 

#define uint unsigned int
#define uchar unsigned char

//ADC0832的引脚
sbit ADCS =P2^0;  //ADC0832 chip seclect
sbit ADDI =P3^7;  //ADC0832 k in
sbit ADDO =P3^7;  //ADC0832 k out
sbit ADCLK =P3^6;  //ADC0832 clock signal
sbit key1=P3^1;
sbit key2=P3^2;
sbit key3=P3^3;
sbit key4=P3^4;
sbit key5=P3^5;
sbit A=P2^1;
sbit B_B=P2^2;
sbit C=P2^3;
sbit D=P2^4;
sbit E=P2^5;
sbit LED_r=P2^6;


uchar dispbitcode[8]={0xf70xfb0xfd0xfe0xef0xdf0xbf0x7f};         //位扫描
uchar dispcode[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};   //共阳数码管字段码
uchar dispcode2[]={0xbf0x860xdb0xcf0xe60xed0xfd0x870xff0xef};  //共阳数码管字段码,带点
uchar dispbuf[8];
uint temptemp1;
uchar getdataPH_yPH_wPL_yPL_wabcdefghpqtestN; 
float wendu;


void delay_1ms(void)  //12mhz delay 1.01ms
{
   unsigned char xy;   
   x=3;
   while(x--) 
  {
       y=40;
       while(y--);
    }
}

void delay_ms(void)
{
uchar ij;
for(i=0;i<251;i++)
{
for(j=0;j<113;j++)
{
;
}
}
}

void display(void)  //数码管显示函数
{
    P1=0xff;
    P0=0x00;
    P1=dispbitcode[0];
    P0=dispcode[dispbuf[0]];
    delay_1ms();   
    P1 = dispbitcode[1];
    P0=dispcode2[dispbuf[1]];
    delay_1ms();  
    P1 = dispbitcode[2];
    P0 = dispcode[dispbuf[2]];
    delay_1ms();    
    P1 = dispbitcode[3];
    P0 = dispcode[dispbuf[3]];
    delay_1ms();
    P1 = dispbitcode[5];
  P0 = dispcode[dispbuf[6]];
  delay_1ms();   
  P1 = dispbitcode[6];
  P0=dispcode2[dispbuf[5]];
  delay_1ms();  
  P1 = dispbitcode[7];
  P0=dispcode[dispbuf[4]];
delay_1ms();    
    P1= 0xff;
    P0= 0x00;
}

/************
读ADC0832函数
************/

//采集并返回
unsigned int Adc0832(unsigned char channel)     //AD转换,返回结果
{
    uchar i=0;
    uchar j;
    uint dat=0;
    uchar ndat=0;

    if(channel==0)channel=2;
    if(channel==1)channel=3;
    ADDI=1;
    _nop_();
    _nop_();
    ADCS=0;//拉低CS端
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端形成下降沿1
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=channel&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端形成下降沿2
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=(channel>>1)&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端形成下降沿3
    ADDI=1;//控制命令结束 
    _nop_();
    _nop_();
    dat=0;
    for(i=0;i<8;i++)
    {
        dat|=ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        dat<<=1;
        if(i==7)dat|=ADDO;
    }  
    for(i=0;i<8;i++)
    {
        j=0;
        j=j|ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        j=j<<7;
        ndat=ndat|j;
    

评论

共有 条评论