- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机以定时中断的方法实现DS18B20时序
51 单片机以定时中断的方法实现 DS18B20 时序
原载于: /tyshtang/article/details/9872701
由于DS18B20 是单线操作,所以必须严格遵守它的时序要求才能正常与之建立联系并实现
读写操作。
网上见到的程序多是在主程序中以延时的方式实现,而且要求关中断,以实现18B20 对
时序的要求。但是实际应用中,测温操作一般是作为辅助功能,主要任务是通信及数据处理
等其他操作,这样一来,如果将DS18B20 的程序代码放在主程序中,势必影响其他需要实
时处理的中断。
前些天用到DS18B20,就尝试以51 定时中断的方法实现DS18B20 时序,在面包板上
成功跑了起来。
用的单片机是STC11F16XE,使用外部晶振24MHz 。下面的程序中不仅有DS18B20 的操
作,还包含了数码管显示、按键检测、EEPROM 的操作。定时器T1 专门用于DS18B20
时序产生,定时器T0 用于按键检测、数码管显示,主函数中做EEPROM 及其他的操作。
程序中有些注释是调试过程中加的,并且有些代码部分在调试中修改过,先前的注释并没有
同时删去,所以看下面的代码的时候,不要被注释误导了。
代码如下:
#include REG51.H
#include INTRINS.H
typedef unsigned char BYTE;
typedef unsigned int WORD;
sfr P1M0 = 0x92; //
sfr P1M1 = 0x91; //
sfr P3M0 = 0xB2;
sfr P3M1 = 0xB1;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
/*sfr associated with the IAP*/
sfr IAP_DATA = 0xc2;
sfr IAP_ADDRH = 0xc3;
sfr IAP_ADDRL = 0xc4;
sfr IAP_CMD = 0xc5;
sfr IAP_TRIG = 0xc6;
sfr IAP_CONTR = 0xc7;
/*ISP/IAP/EEPROM command*/
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
#define ENABLE_IAP 0x80 //if SYSCLK30MHz
//#define ENABLE_IAP 0x81//if SYSCLK24MHz
//start address for STC11/10xx series EEPROM
#define IAP_ADDRESS0x0000
void Delay(BYTE N);
void IapIdle();
BYTE IapReadByte(WORD addr);
void IapProgramByte(WORD addr, BYTE val);
void IapEraseSector(WORD addr);
#define MINUTE 8400 //60*140=8400 interrupts per minute
#define DAY3S 4320 //there are 72*60*8400=4320*8400 interrupts in 72 hours
//
sbit shi = P3^7;
sbit ge = P3^2;
//sbit led = P1^5;
sbit key1 = P3^3;
sbit key2 = P3^4;
sbit key3 = P3^5;
sbit heat = P2^7;
sbit water = P2^5;
sbit beep = P2^0;
unsigned char code digit[11] ={
0xbf,//0
0x83,//1
0xed,//2
0xeb,//3
0xd3,//4
0xfa,//5
0xfe,//6
0xa3,//7
0xff,//8
0xfb,//9
0xc0//nfinished
};
unsigned char code cmd[4] = {0xcc,0x44,0xcc,0xbe};
unsigned int cmd_n;
bit nodevice,cunz;
unsigned char saom;
unsigned int num,t1_num;
unsigned char temp,led;
unsigned int jiaoshui,jiaoshui_t,jiaos
您可能关注的文档
最近下载
- 初中语文新课标教学设计及反思.pptx
- 就地型馈线自动化选型技术原则(试行).ppt
- 小学生交通安全知识竞赛课件.ppt
- 科技经费管理培训通用课件.ppt
- 激光模拟打靶技术方案.pptx
- 《思想政治教育方法论》PPT课件 2.第八章 课件 第八章《思想政治教育的一般方法》201812.pptx VIP
- 餐饮劳务外包合同(五篇).doc VIP
- 2023年成都信息工程大学数据科学与大数据技术专业《操作系统》科目期末试卷B(有答案).docx VIP
- 中小型企业局域网的规划与设计.doc VIP
- 2024-2025学年新教材高中英语 Unit 3 On the move理解 课文精研读教案 外研版必修第二册.docx
文档评论(0)