DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 121|回复: 0
打印 上一主题 下一主题

18B20通讯程序--源代码介绍

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:43:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

这是我在16F877,18F1320,18F1220上通过的18b20程序,18b20主要是延时问题,这个解决了,什么都可以通过。
[原作者没有提供所使用的编译器,由于是C程序,所以大同小异,建议使用时,确认是否与你的编译器兼容]
?
?
C程序
?#include #define uch unsigned char#define unint unsigned int#define DQ Rb3 //定义18b20数据端口#define DQ_DIR TRISb3 //定义18b20D口方向寄存器#define W1_INPUT 1#define W1_OUTPUT 0#define FALSE 0#define TRUE !FALSE#define DQ_HIGH() DQ_DIR = W1_INPUT#define DQ_LOW() DQ = 0; DQ_DIR = W1_OUTPUTvoid delay(unint x){unint d;d=x;while(--d){;}}bit reset(void) //初始化18b20{static bit presence; //定义一个应答信号DQ_LOW();delay(70); //置总线为低电平并保持至少480usDQ_HIGH(); //等电阻拉高总线并保持15-60usdelay(5);presence=DQ; //接受应答信号delay(20); //延时60-240usreturn(presence); //返回应答信号}//*************** 读一位函数******************//bit read_bit(void){static bit i;DQ_LOW();DQ_LOW();DQ_HIGH();asm("nop");asm("nop");asm("nop");i=DQ;delay(3);return(i);}//*********************写一位函数****************//void write_bit(uch bitval){DQ_LOW();delay(1);if (bitval==1){DQ_HIGH();}delay(3);DQ_HIGH();}//************** 从18b20中读一个字节**************//uch read_byte(void){uch i;uch j;uch value=0;for (i=0;i>i;temp&=0x01;write_bit(temp); //调写位函数}asm("nop");asm("nop");asm("nop");}main(){uch teml,temh;GIE=0;OSCCON=0X6E; //这是18F1320的频率选择寄存器ADCON1=0X7F;do{;}while (reset()) ; //复位等待从机应答write_byte(0XCC); //忽略ROM匹配write_byte(0X44); //发送温度转化命令delay(25000); //延时100-300usdo{;}while( reset()); //再次复位,等待从机应答write_byte(0XCC); //忽略ROM匹配write_byte(0XbE); //发送读温度命令teml =read_byte(); //读出温度低8temh=read_byte(); //读出温度高8位DQ_HIGH(); //释放总线}

?
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-19 06:24 , 耗时 0.104278 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表