- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS18B20数字温度计课程设计报告
(内有程序)
一、设计思路:? ?1. 采用AT89S52+DS18B20+三位共阳数码管构架。本案例最终生成的HEX文件只有3.2K,单片机用AT89S52有些浪费了,但芯片是以前学习时留下来的,而且P0口有断脚,发挥余热吧。有强迫症的朋友可以选用STC15W204S+74HC595。? ?2. 数码管上下倒置,目的是为了能显示温度单位,数码管代码需另外取码(推荐),或是在焊接时重新分布脚位也可。? ? 二、电路构成:? ? 1. 单片机最小系统:AT89S52、40P双列插座、晶振(12MHz)、30pF贴片电容(2个)、10K电阻、10uF电解电容。? ? 2. 温度采集电路:DS18B20(数字温度传感器)、4.7K贴片电阻。? ? 3.?数码管显示电路:F4301BH(三位共阳)、100欧电阻8个(段限流电阻,实际焊接为91欧)、SS8550三极管3个+10K电阻3个(位驱动)。? ? 4. 供电电路:DC5V电源座、100uF滤波电容。
#include reg52.h#define uchar unsigned char#define uint unsigned intsbit w1=P2^5;sbit w2=P2^6;sbit w3=P2^7;sbit DQ=P3^4;bit TempFlag;uint Temp;uchar code tab[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82};??//代码表,已重新取码void Delayms(uint xms);? ?void Delayus(uint xus);void GetTemp(void);void InitT0(void);void Init_DS18B20(void);uchar Read_DS18B20(void);void Write_DS18B20(uchar Dat);void display(){? ?P1=0x33;? ?w3=0;? ?Delayms(2);? ?w3=1;? ?? ?? ?? ?P1=tab[Temp%10];? ?w2=0;? ?Delayms(2);? ?w2=1;? ?? ?? ?? ?? ?? ?? ?P1=tab[Temp/10];? ?w1=0;? ?Delayms(2);? ?w1=1;}void main()? ?? ?? ?? ?? ???//主函数{? ? InitT0();? ? while(1)? ? {? ?? ? GetTemp();? ???//读取温度? ?? ? display();? ? }}void Init_DS18B20(void)? ?? ?? ???//初始化DS18B20函数{??DQ=1;??Delayus(4);??DQ=0;??Delayus(100);??DQ=1;??Delayus(40);}uchar Read_DS18B20(void)? ?? ? //读DS18B20函数{??uchar i=0,Dat=0;??for(i=0;i8;i++)? ? {? ?? ???DQ=1;? ?? ???DQ=0;? ?? ???Dat=1;? ?? ???DQ=1;? ?? ???if(DQ)? ?? ???Dat|=0x80;? ?? ???DQ=1;? ?? ???Delayus(25);? ? }??return(Dat);}void Write_DS18B20(uchar Dat)? ?//写DS18B20函数{??uchar i=0;??for(i=0;i8;i++)? ?{? ?? ?DQ=1;? ?? ?Dat=1;? ?? ?DQ=0;? ?? ?DQ=CY;? ?? ?Delayus(25);? ?? ?DQ=1;? ? }}void GetTemp(void)? ?? ?? ???//取温度函数{??uchar a=0,b=0;??Init_DS18B20();??Write_DS18B20(0xcc);??Write_DS18B20(0x44);??Init_DS18B20();??Write_DS18B20(0xcc);??Write_DS18B20(0xbe);??a=Read_DS18B20();??b=Read_DS18B20();??Temp=b;??Temp=8;??Temp=Temp|a;??if(b=8)? ?
您可能关注的文档
计算机三级持证人
从事多年企业管理、在团队建设、员工培训、营销提升、组织架构有多自己的经验,希望在这个平台分享及帮助更多的公司或企业!
原创力文档


文档评论(0)