欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    多路DS18B20温度传感器protues仿真.docx

    • 资源ID:35578623       资源大小:9.45KB        全文页数:5页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    多路DS18B20温度传感器protues仿真.docx

    /编程:武汉理工大学XP/时间2021/5/25/DS18B20设置为12位精度/#include"reg51.h" unsigned char code table1=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;/不带小数点断码 unsigned char code table2=0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08; /带小数点断码unsigned char code string="temperature"unsigned char code numtable="0123456789ABCDEF" /液晶显示的字符unsigned char code txttable="-. " /液晶显示的符号,负号,小数点,以及空格unsigned char code ROM_1=0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e; /U1 ROM值unsigned char code ROM_2=0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9; /U2 ROM值unsigned char code ROM_3=0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0; /U3 ROM值unsigned char code ROM_4=0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7; /U4 ROM值unsigned char ROM=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; /初始化的ROM值,/用于装载读取的DS18B20的ROM值sbit ds=P30; /总线/定义的数码管接口 sbit qian=P20; /数码管千位sbit bai=P21; /数码管百位sbit shi=P22; /数码管十位sbit ge=P23; /数码管个位sbit E=P24; /液晶使能端口sbit CONTROL_DATE=P25; /液晶写数据与写控制命令控制端int temp,shuju5=0; /存放温度和温度数据处理后得到的液晶要显示的数 int flag=1; /温度正负标志位/延时函数/void Delay(int z) int x;for(;z>0;z-)for(x=110;x>0;x-);/写入对液晶的控制命令/void Lcd_write_control(char date)CONTROL_DATE=0;P1=date;Delay(50);E=1;Delay(50);E=0;/写入要显示的数据/void Lcd_write_date(char date)CONTROL_DATE=1;P1=date;Delay(10);E=1;Delay(10);E=0;/液晶初始化/void LCD_INIT(void)E=0;Lcd_write_control(0x38); /设置16*2显示,5*7点阵,8为数据接口Lcd_write_control(0x0c); /设置开显示,不显示光标Lcd_write_control(0x06); /写一个字符后地址指针加一Lcd_write_control(0x01); /显示清零,数据指针清零/DS18B20初始化/void DS_rest(void)int i;ds=0;i=103;while(i>0) i-;ds=1;i=4;while(i>0) i-;/读一位数据/bit Temp_read_bit(void)int i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0)i-;return dat;/读取一个字节的温度数据/unsigned char Temp_read(void)unsigned char i,j,dat;dat=0;for(i=1;i<=8;i+)j=Temp_read_bit();dat=(j<<7)|(dat>>1);return dat;/向DS18B20写入一位数据/void DS_writebyte(unsigned char dat)int i;unsigned char j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i>0) i-;else ds=0;i=8;while(i>0) i-;ds=1;i+;i+;/匹配DS18B20的ROM/void MATCH_ROM(unsigned char *ROM_X) int i;DS_rest();Delay(1);DS_writebyte(0x55);for(i=0;i<8;i+) DS_writebyte(*(ROM_X+i);/开场温度转换/void Temp_change(void)DS_rest();Delay(1); DS_writebyte(0xcc);/MATCH_ROM();DS_writebyte(0x44);/获取温度数据/int Get_temp() unsigned char a,b;static int i=1;DS_rest();Delay(1);/tempwritebyte(0xcc);/MATCH_ROM(ROM_1);switch(i)case 1: MATCH_ROM(ROM_1); i+; break;case 2: MATCH_ROM(ROM_2); i+; break;case 3: MATCH_ROM(ROM_3); i+; break;case 4: MATCH_ROM(ROM_4); i=1; break;DS_writebyte(0xbe);a=Temp_read();b=Temp_read();if(b>=90)temp=(a+b*256+1); flag=0;else temp=a+b*256; flag=1;temp=temp*6.25; return temp;/液晶显示/void Lcd_display(int t)int n=1,weishu1=0;static weishu2=0;Lcd_write_control(0x80+0x40);while(t>0)shujun+=t%10;t/=10;weishu1=n-1;if(flag=0) Lcd_write_date(txttable0);if(weishu1<=2) Lcd_write_date('0');for(n=weishu1;n>2;n-)Lcd_write_date(numtableshujun);Lcd_write_date(txttable1);while(n>0) Lcd_write_date(numtableshujun);n-;if(weishu1<weishu2) Lcd_write_date(txttable2);weishu2=weishu1;/读取DS18B20的ROM数据/void READ_ROM(void) int i=0; DS_rest();Delay(1);DS_writebyte(0x33);for(i=0;i<8;i+)ROMi=Temp_read();/显示DS18B20的ROM数据/void DISPLAY_ROM(void) int i; unsigned char t; Lcd_write_control(0x80);for(i=0;i<4;i+) t=ROMi; Lcd_write_date(numtablet/16); Lcd_write_date(numtableROMi%16); Lcd_write_date(0x20);Lcd_write_control(0x80+0x40);for(;i<8;i+) t=ROMi; Lcd_write_date(numtablet/16); Lcd_write_date(numtableROMi%16); Lcd_write_date(0x20);main()int t,i;LCD_INIT();Lcd_write_control(0x80);for(i=0;i<11;i+)Lcd_write_date(stringi); /循环显示温度while(1)Temp_change();t=Get_temp();Lcd_display(t);Delay(1000);/显示DS18B20的ROM值/首先要用这个函数读取DS18B20的ROM值/然后将ROM值写到ROM数组中/最后注释掉ROM的显示,改为显示循环显示温度 /*while(1)READ_ROM();DISPLAY_ROM();

    注意事项

    本文(多路DS18B20温度传感器protues仿真.docx)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开