• 大小: 77KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签: 51单片机  仿真  

资源简介

056 货车超重监测系统 51单片机 仿真

资源截图

代码片段和文件信息



//线性区间标度变换公式:    y=(115-15)/(243-13)*X+15kpa   


#include  
#include 
#include 


#define R24C04ADD 0xA1
#define W24C04ADD 0xA0

//ADC0832的引脚
sbit ADCS =P2^2;  //ADC0832 chip seclect
sbit ADDI =P2^4;  //ADC0832 k in
sbit ADDO =P2^4;  //ADC0832 k out
sbit ADCLK =P2^3;  //ADC0832 clock signal


sbit SDA = P2 ^ 1;                         //数据线
sbit SCL = P2 ^ 0;                         //时钟线
bit bAck;                                   //应答标志 当bbAck=1是为正确的应答

unsigned char dispbitcode[8]={0xf70xfb0xfd0xfe0xef0xdf0xbf0x7f};  //位扫描
unsigned char dispcode[11]={0xC00xF90xA40xB00x990x920x820xF80x800x900xff};  //共阳数码管字段码
unsigned char dispbuf[4];
unsigned int temp;
unsigned char getdata; //获取ADC转换回来的值


void delay_1ms(void)  //12mhz delay 1.01ms
{
   unsigned char xy;   
   x=3;
   while(x--) 
  {
       y=40;
       while(y--);
    }
}
void display(void)  //数码管显示函数
{
  char k;
  for(k=0;k<4;k++)
  {

  P1 = dispbitcode[k];
  P0 = dispcode[dispbuf[k]];
  if(k==1)   //加上数码管的dp小数点
   P0&=0x7f;
  delay_1ms();   
  }
}

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

//采集并返回
unsigned int Adc0832(unsigned char channel)     //AD转换,返回结果
{
    unsigned char i=0;
    unsigned char j;
    unsigned int dat=0;
    unsigned char 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;
        if(i<7)ndat>>=1;
    }
    ADCS=1;//拉低CS端
    ADCLK=0;//拉低CLK端
    ADDO=1;//拉高数据端回到初始状态
    dat<<=8;
    dat|=ndat;
    return(dat);            //return ad k
}

//启动I2C总线,即发送起始条件
void StartI2C()
{
SDA = 1;                       //发送起始条件数据信号
_nop_();
SCL = 1;
_nop_();                     //起始建立时间大于4.7us
_nop_();
_nop_();
_nop_();
_nop_();
SDA = 0;                       //发送起始信号
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL = 0;                         //时钟操作
_nop_();
_nop_();
}
//结束I2C总线,即发送I2C结束条件
void StopI2C()
{
SDA = 0;                         //发送结束条件的数据信号
_nop_();     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        420  2019-05-27 17:14  说明.txt

     文件     102192  2012-04-06 11:25  056 货车超重监测系统\Last Loaded 电子地秤.DBK

     文件       7536  2012-04-06 15:49  056 货车超重监测系统\MCU.c

     文件       6376  2005-03-22 15:22  056 货车超重监测系统\STARTUP.A51

     文件      18528  2012-04-06 11:38  056 货车超重监测系统\电子地秤

     文件     102216  2012-04-06 16:40  056 货车超重监测系统\电子地秤.DSN

     文件       5115  2012-04-06 11:38  056 货车超重监测系统\电子地秤.hex

     文件      22007  2012-04-06 11:38  056 货车超重监测系统\电子地秤.M51

     文件       1013  2012-04-06 15:22  056 货车超重监测系统\电子地秤.Opt

     文件      21514  2019-05-26 01:23  056 货车超重监测系统\电子地秤.pdsprj

     文件        328  2019-05-26 01:23  056 货车超重监测系统\电子地秤.pdsprj.ANOOP.PC1.workspace

     文件        885  2019-05-27 17:40  056 货车超重监测系统\电子地秤.PWI

     文件       2147  2012-04-05 16:06  056 货车超重监测系统\电子地秤.Uv2

     目录          0  2019-05-27 17:40  056 货车超重监测系统

----------- ---------  ---------- -----  ----

               290277                    14


评论

共有 条评论