我做的是用 STC12C5A60S2+Nokia5110+DS18B20+DHT21+光敏电阻+NRF42L01 测量温度,然后经过无线传输再显示的小东西。
有快一周的时间被DS18b20折腾着,主要是因为时序不正确。在Keil中模拟(好吧,新手不会有Protel仿真),延时什么的都对,就是初始化失败。求助Google,才知道STC12是1T的单片机,拥有比以往更快的计算速度。所以延时函数要重新写。恩,后来还有温度表的问题,显示乱码,不过换了一个就不乱码了,现在还没弄懂原理是什么。
之前的小数对照表,不过一直有乱码的问题。
//小数位对照表
//uchar code df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
现在用的小数对照表:
unsigned char code wendu[]="0123456789"; //利用一个温度表解决温度显示乱码
DS18B20的主要函数:
// 初始化DS18B20
unsigned char Init_DS18B20()
{
uchar status;
DQ = 1 ;
Delay(60);
DQ = 0 ;
delay500us();
DQ = 1 ;
Delay(60);
status = DQ ;
Delay(120);
//