• 大小: 26KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: ADC0809  DS18B20  

资源简介

51单片机做的温度计和电压采样,温度计采用DS18B20,AD采样用的是ADC0809,然后在12864上显示温度值和电压值

资源截图

代码片段和文件信息

#include 
#include 
typedef unsigned char uint8;
typedef unsigned int uint16;

#define adc0809_data  P1
sbit STR =P3^4; //单片机P3.4接模块STR引脚 启动转换信号
sbit EOC =P3^5; //单片机P3.5接模块EOC, 转换结束信号,高电平有效
sbit OE  =P3^6; //单片机P3.6接模块OE输出允许信号,高电平有效
sbit CLK =P3^3; //单片机P3.7接CLK ,ADC0809时钟输入50-800KHZ的频率
               //一般选用500K
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char AD_DATA[1]; //保存IN0通道转换后的数据
unsigned int  addata2;

sbit  DQ=P3^7;                   
sbit  LCDRS=P0^7;
sbit  LCDWE=P0^6;
sbit  LCDEN=P0^5;
sbit  LCDPSB=P0^4;    
uint8 temp=80temp_Booktemp_Look;
uint8   teying[14]={“温度显示:“};
uint8   ying[15]  ={“电压显示:“};

void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}

/***********AD转换函数**********/ 
void AD(void ) 

   STR=0; 
 
   STR=1; //启动AD转换
 
   STR=0;  
   while(0==EOC);//等待转换结束 
   OE=1;  
   AD_DATA[0]=adc0809_data; //读取AD数据,数据范围为0-255
   OE=0;  

/***********T0中断服务程序************/ 
void t0(void) interrupt 1 using 0 
{  
   CLK=~CLK; 
}  

void delayms(unsigned int ms)
{
unsigned char i=100j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}



void delay_ms(uint16 mao)
{
 uint16 ab;
 for(a=0;a for(b=0;b<120;b++);
}
void write_com(uint8 com)
{
 LCDRS=0;
 LCDWE=0;
 LCDEN=0;
 P2=com;
 delay_ms(5);
 LCDEN=1;
 delay_ms(5);
 LCDEN=0;
}
void write_data(uint8 date)
{
 LCDRS=1;
 LCDWE=0;
 LCDEN=0;
 P2=date;
 delay_ms(5);
 LCDEN=1;
 delay_ms(5);
 LCDEN=0;
}
void LCD_INIT(void)//????????
{
 LCDPSB=1;
 delay_ms(5);
 write_com(0x30);
 delay_ms(5);
 write_com(0x30);
 delay_ms(5);
 write_com(0x0c);
 delay_ms(5);
 write_com(0x01);
 delay_ms(20);
}

void display(void)//?????
{
 uint8 i;
 write_com(0x88);
 for(i=0;i<14;i++)
 {
  write_data(teying[i]);
 }
}
void display_Book()//??LCD12864???????????????????ISCii?
{
 teying[10]=temp/10+0x30;
 teying[11]=temp%10+0x30;
 teying[12]=0x20;
 teying[13]=0x02;
}
void display2(void)
{
 uint8 i;
 write_com(0x80);
 for(i=0;i<13;i++)
 {
  write_data(ying[i]);
 }
}

void display_Book2()
{
 ying[10]=AD_DATA[0]/100+0x30;
 ying[11]=AD_DATA[0]/10%10+0x30;
 ying[12]=AD_DATA[0]%10+0x30;
}

void delay_us(uint8 m)//??
{
 while(--m);
}

bit Inte_DS18B20(void)//??
{
 bit DS18B20_EXIP;
 DQ=1;
 DQ=0;
 delay_us(250);
 DQ=1;
 delay_us(30);
 DS18B20_EXIP=DQ;
 delay_us(200);
 if(DS18B20_EXIP)
 return 1;
 else
 return 0;
}

void write_DS18B20(uint8 num)
{
 uint8 i;
 for(i=0;i<8;i++)
 {
  DQ=1;
  DQ=0;
  _nop_();
   DQ=num&0x01;
   delay_us(20);
   num=num>>1;
   DQ=1;
   delay_us(1);
 }
}

uint8 Read_DS18B20()          //???
{
 uint8 inum;
 for(i=0;i<8;i++)
 {
  DQ=1;
  DQ=0;
  delay_us(1);
  DQ=1;
  _nop_();
  _nop_();
   num=num>>1;
   if(DQ)
   num |=0x80;
   delay_us(20);
 }
 return num;
}
void Get_Temp()
{
 Inte_DS18B20();
 write_DS18B20(0xCC);
 wri

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

     文件      11180  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa

     文件       3633  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.c

     文件       2168  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.hex

     文件         36  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.lnp

     文件       7957  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.LST

     文件      16742  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.M51

     文件      12943  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.OBJ

     文件      11689  2014-05-17 15:32  LCD+DS18B20+ADC0809\aa.plg

    .......     68633  2014-05-17 16:03  LCD+DS18B20+ADC0809\aa.uvgui.Administrator

    .......      5030  2014-05-17 16:03  LCD+DS18B20+ADC0809\aa.uvopt

    .......     13385  2014-05-17 16:03  LCD+DS18B20+ADC0809\aa.uvproj

    .......         0  2014-05-17 14:39  LCD+DS18B20+ADC0809\aa_uvproj.bak

     目录          0  2014-05-17 16:03  LCD+DS18B20+ADC0809

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

               153396                    13


评论

共有 条评论