#define ALLOCATE_EXTERN #include "HC89F0541.h" #define uchar unsigned char #define uint unsigned int void ACK_0() { P2_5=0;} // void ACK_1() { P2_5=1;} #define DATA P2_7 #define CLOCK P2_6 float Temp; float Temp1,Temp2; unsigned char ReadData[5]; //float a,b; //----------------------------------------------------------------------------------------- //????:Delay() //? ?:????? //----------------------------------------------------------------------------------------- void Delay(unsigned char us) //5,7,9 { while(--us); } //----------------------------------------------------------------------------------------- //????:Delayms() //----------------------------------------------------------------------------------------- void Delayms(unsigned int ims) { unsigned int i,j; for(i=0;i<ims;i++) for(j=0;j<65;j++) { Delay(1); } } void TN_IRACK_EN(void) { ACK_0(); Delay(1); } void TN_IRACK_UN(void) { ACK_1(); Delay(1); } void TN_ReadData(unsigned char Flag) { unsigned char i,j,k,BitState=0; for(k=0;k<7;k++) { for(j=0;j<5;j++) { for(i=0;i<8;i++) { while(1) { if(CLOCK==0) break; Delay(1); } Delay(1); if(DATA==1) BitState=1; else BitState=0; ReadData[j]= ReadData[j]<<1; ReadData[j]= ReadData[j]|BitState; Delay(1); while(1) { if(CLOCK==1) break; Delay(1); } } } if(ReadData[0]==Flag) k=8; } TN_IRACK_UN(); } float TN_GetData(unsigned char X) { //InitIO(); TN_ReadData(X); Temp=(ReadData[1]<<8)|ReadData[2]; Temp=(float)Temp/16.00-273.15; return Temp; } float TN_GetTemp(unsigned char mode) { float T; { TN_IRACK_UN(); TN_IRACK_EN(); if(mode==0) { T=TN_GetData(0x4c); } else { T=TN_GetData(0x66); } } return T; } /*************************************************************************************** * @实现效果 对P00端口的消抖时间进行设置,251.9375us<消抖时间<255.9375us。 ***************************************************************************************/ void main() { /************************************系统初始化****************************************/ CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz /**********************************端口消抖初始化**************************************/ P2M7 = 0x62; //P27设置为上拉输入 P2M6 = 0x62; //P27设置为上拉输入 P2M5 = 0xC0; //P27设置为上拉输入 while(1) { Temp1=TN_GetTemp(0); Temp2=TN_GetTemp(1); Delayms(500); } }效果图: 工程: TN9.rar (50.06 KB, 下载次数: 9) 2020-7-12 11:05 上传 点击文件名下载附件
收藏0 举报
晓伍 发表于 2020-8-7 13:57 传感器精度如何
八层楼 发表于 2020-8-7 13:59 对使用环境要求高吗
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
470
3537
7
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号