全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

单片机控制温度传感器的源程序,51源程序

[复制链接]
2769 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
单片机控制温度传感器的源程序,51源程序


  1. //DS1820 C51 子程序
  2. //这里以11.0592M晶体为例,不同的晶体速度可能需要调整延时的时间
  3. //sbit DQ =P2^1;//根据实际情况定义端口

  4. typedef unsigned char byte;
  5. typedef unsigned int word;

  6. //延时
  7. void delay(word useconds)
  8. {
  9. for(;useconds>0;useconds--);
  10. }

  11. //复位
  12. byte ow_reset(void)
  13. {
  14. byte presence;
  15. DQ = 0; //pull DQ line low
  16. delay(29); // leave it low for 480us
  17. DQ = 1; // allow line to return high
  18. delay(3); // wait for presence
  19. presence = DQ; // get presence signal
  20. delay(25); // wait for end of timeslot
  21. return(presence); // presence signal returned
  22. } // 0=presence, 1 = no part

  23. //从 1-wire 总线上读取一个字节
  24. byte read_byte(void)
  25. {
  26. byte i;
  27. byte value = 0;
  28. for (i=8;i>0;i--)
  29. {
  30. value>>=1;
  31. DQ = 0; // pull DQ low to start timeslot
  32. DQ = 1; // then return high
  33. delay(1); //for (i=0; i<3; i++);
  34. if(DQ)value|=0x80;
  35. delay(6); // wait for rest of timeslot
  36. }
  37. return(value);
  38. }

  39. //向 1-WIRE 总线上写一个字节
  40. void write_byte(char val)
  41. {
  42. byte i;
  43. for (i=8; i>0; i--) // writes byte, one bit at a time
  44. {
  45. DQ = 0; // pull DQ low to start timeslot
  46. DQ = val&0x01;
  47. delay(5); // hold value for remainder of timeslot
  48. DQ = 1;
  49. val=val/2;
  50. }
  51. delay(5);
  52. }

  53. //读取温度
  54. char Read_Temperature(void)
  55. {
  56. union{
  57. byte c[2];
  58. int x;
  59. }temp;

  60. ow_reset();
  61. write_byte(0xCC); // Skip ROM
  62. write_byte(0xBE); // Read Scratch Pad
  63. temp.c[1]=read_byte();
  64. temp.c[0]=read_byte();
  65. ow_reset();
  66. write_byte(0xCC); //Skip ROM
  67. write_byte(0x44); // Start Conversion
  68. return temp.x/2;
  69. }
复制代码

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表