以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!
软件设计 |
---|
/*********************************************************************
微 雪 电 子 WaveShare http://www.waveShare.net
目 的: 建立DS18B20操作库
目标系统: 基于STM8单片机
应用软件: Cosmic CxSTM8
说 明: 若用于商业用途,请保留此段文字或注明代码来源
深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权
*********************************************************************/
void _delay_us(u8 us) { while(--us); } //-----复位----- void resetOnewire(void) { OUT_DQ(); CLR_DQ(); _delay_us(750); SET_DQ(); _delay_us(100); IN_DQ(); //while(GET_DQ()); while(!(GET_DQ())); SET_DQ(); } //-----读数据----- u8 rOnewire(void) { u8 data=0,i=0; for(i=0;i<8;i++) { data=data>>1; OUT_DQ(); CLR_DQ(); IN_DQ(); if(GET_DQ()) data|=0x80; else while(!(GET_DQ())); _delay_us(60); } return(data); } //-----写数据----- void wOnewire(u8 data) { u8 i=0; OUT_DQ(); for(i=0;i<8;i++) { CLR_DQ(); if(data&0x01) { SET_DQ(); } else { CLR_DQ(); } data=data>>1; _delay_us(60); //65 SET_DQ(); } } //-----DS18B20转换温度----- void convertDs18b20(void) { resetOnewire(); wOnewire(0xcc); wOnewire(0x44); } //------------DS18BB0读温度---------- u8 readTemp(void) { u8 temp1,temp2; convertDs18b20(); resetOnewire(); wOnewire(0xcc); wOnewire(0xbe); temp1=rOnewire(); temp2=rOnewire(); temp2=temp2<<4; temp1=temp1>>4; temp2|=temp1; return (temp2&0x7F); }
STM8 DS18B20温度传感器子程序
——