专栏中心

EEPW首页 > 专栏 > DS2450资料及其51c程序

DS2450资料及其51c程序

发布人:0750long 时间:2009-07-24 来源:工程师 发布文章
 

 

pdf

//本程序用DS2450采集湿敏电阻模拟数据////

#include <reg52.h>
#include "intrins.h"
#define uint  unsigned int
#define uchar unsigned char
sbit RS = P2^0;   //H=data; L="command";   
sbit RW = P2^1;   //H=read; L="write";
sbit  E = P2^2;   //input enable;
sbit PSB= P2^5;   //H=并口; L="串口";
sbit RST= P2^6;   //复位信号低电平有效
sbit ADA="P1"^4;
 //延时子程序//
void delay(uint i)
{
   for(i;i>0;i--);
}

/**********writecommand()函数是写12864液晶指令函数***********/

void writecommand(uchar i)
{
  P0=i;
  RS="0";    
  RW="0";
  E="0";
  delay(255);
  E="1";
}

/***********writedata()函数是液晶显示数据函数**************/

void writedata(uchar i)
{
  delay(200);
  P0=i;
  RS="1";
  RW="0";
  E="0";
  delay(255);
  E="1";
}

void clrram(void)     //液晶清屏
{
   writecommand(0x30);
   writecommand(0x01);
}
/*void delay10(uchar n)
{
do{
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
      
  n--;
    }while(n);
 }*/

/***********DS2450读函数read2450()*********************/

uchar read2450(void)     //DS2450读函数
{
  uchar d="0";
  uint j;
  for(j=0;j<8;j++)
  {
   ADA="0";
   _nop_();
 d>>=1;
 ADA=1;
  _nop_();
  _nop_();
  _nop_();
  _nop_();  
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  if (ADA)
  d|=0x80;    //先高后低一位一位传送数据
 delay(4);
  }
 return (d);
 
 }

/***********DS2450写指令函数Write2450()*********************/

void Write2450(uchar ch)      // DS2450写函数
 {    uint i;
    for(i=0;i<8;i++)
   { ADA="0";
 ADA=ch&0x01;
 delay(5);
 ADA=1;
 ch>>=1;
    }
 ADA=1;
 }

/***********判断DS2450忙碌及准备接受数据函数init2450()*********************/
uchar init2450(void)          //DS复位
 { uchar flag;
   ADA="1";
 delay(8);
   ADA="0";
   delay(80);
   ADA="1";
   delay(14);
   if(ADA==0)
   {
   flag="1";
   delay(80);
     }
   else
   flag="0";
   ADA="1";
   return (flag);
   }


void check(void)                 //ds2450复位函数
{
 uchar flag,j;
 do
 {
  flag="init2450"();
  }
  while(flag);
  for(j=0;j<0x20;j++);
  
 }
/*void Delay10ms(uint delay_num)    //延时函数
 {
 uchar i;

 while(delay_num--)
 {
  for(i=0;i<125;i++)
   {;}
 }
  }*/ 
void set_2450(void)           //由于用的是VCC供电,只有给地址0x1c写入0x40才能工作
{
 check();
 Write2450(0xcc);
 Write2450(0x55);
 Write2450(0x1c);
 Write2450(0x00);
 Write2450(0x40);
 }
void stature_2450()     //设置各个输入通道的功能
{
  check();
  Write2450(0xcc);
  Write2450(0x55);
  Write2450(0x08);
  Write2450(0x00);
  Write2450(0xc0);
  read2450();
  read2450() ;
  read2450() ;
  Write2450(0x00);
  read2450();
  read2450() ;
  read2450() ;
  Write2450(0xc0);
  read2450();
  read2450() ;
  read2450() ;
  Write2450(0x00);
  read2450();
  read2450() ;
  read2450() ;
    Write2450(0xc0);
  read2450();
  read2450() ;
  read2450() ;
  Write2450(0x00);
  read2450();
  read2450() ;
  read2450() ;
 Write2450(0x00);
  read2450();
  read2450() ;
  read2450() ;
  Write2450(0x01);
  read2450();
  read2450() ;
  read2450() ;
 } 
 star2450(void)  //读数据开始命令
{
  check();
  Write2450(0xcc);
  Write2450(0x3c);
  Write2450(0x08);
  Write2450(0x00);
  read2450();
  read2450() ;
  if (read2450()!=0xff)
  read2450();
 }
readAD2450()  //  读取转换数据
{
  uchar a="0",b=0,i=0;
  uint t="0";
  check();
  Write2450(0xcc);
  Write2450(0xaa);
  Write2450(0x06);
  Write2450(0x00);
  a="read2450"();
  b="read2450"() ;
  t="b";
  t<<=8;
  t="t|a";
  return(t);
 
 }
void date_2450()
 { uint l;
 uchar q,i,j,a,b,d  ;
   star2450();
  l="readAD2450"();
 q=l/10000;
 i=l%10000/1000;
 j=l%1000/100;
 a=l%100/10;
 b=l%10/10;
 d=l%10;
    writecommand(0x38);     //00111000B设置显示模式:8位2行5x7点阵//
    writecommand(0x0c);     //00001100B功能设置命令//
    writecommand(0x06);     //00000110B光标和显示模式设置0x06静态显示 0x07滚动显示//
    writecommand(0x90);
    writedata(0x3a);        //冒号
    writedata(0x30+q);
 writedata(0x30+i);
 writedata(0x30+j);
 writedata(0x2e);  //小数点
 writedata(0x30+a);
 writedata(0x30+b);
    writedata(0x30+d);
  
}
main()
{
clrram();
set_2450();
stature_2450();
 
while(1)
{
date_2450();
delay(60000);
}
}

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

OpenAI新计划 设备厂抢上车

智能计算 2025-10-10

OpenAI携手AMD和三星设定新路线,试图打破NVIDIA和SK AI芯片垄断

网络与存储 2025-10-10

高通收购硬件公司Arduino,深耕机器人领域

机器人 2025-10-10

力科示波器助力电源研发(上)

视频 2010-06-12

Meta正在收购人工智能芯片初创公司 Rivos

基于DP-51PROC的单片机高级综合实验室推荐方案

NCL30000单段式功率因数校正LED驱动器原理及TRIAC调光LED驱动器设计方案(下)

视频 2010-06-12

甲类放大器(Class A Amplifier)

服务即软件Service-as-software:面向企业的新控制平面

LOM ARM9

Spawn32 2004-08-18

OpenAI奥特曼呼吁台积电扩大产能 不转向英特尔

软银将以 54 亿美元收购ABB机器人业务,推动人工智能和机器人技术的融合

电源产品的可靠性设计(中)

视频 2010-06-12

基于DP-51+的单片机中级教学实验室建立推荐方案

基于DP-51H的单片机高级综合实验室建立推荐方案

电源产品的可靠性设计(上)

视频 2010-06-12

英国前首相里希·苏纳克加入 Microsoft 和 Anthropic 担任顾问

电源产品的可靠性设计(下)

视频 2010-06-12

日本丰田明年推出「固态电池电动车」 可能改写全球车业格局

更多 培训课堂
更多 焦点
更多 视频

技术专区