已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序功能 用 DS18B20 测量室温并在数码管上显示 测试说明 观察显示温度数值 include include DS18B20 h include DS18B20 c define wei h P5OUT BIT5 define wei l P5OUT 数码管七段码 0 f uchar scandata 16 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 数码管位选变量 uchar cnt 0 void Disp Numb uint temper 主函数 void main void 下面六行程序关闭所有的 IO 口 P5DIR 0 xff P5OUT 0 xff P1DIR 0XFF P1OUT 0XFF P2DIR 0XFF P2OUT 0XFF P3DIR 0XFF P3OUT 0XFF P4DIR 0XFF P4OUT 0XFF P5DIR 0XFF P5OUT 0XFF P6DIR 0XFF P6OUT 0XFF uchar i WDTCTL WDTPW WDTHOLD 选择系统主时钟为 8MHz BCSCTL1 打开 XT2 高频晶体振荡器 do IFG1 清除晶振失败标志 for i 0 xFF i 0 i 等待 8MHz 晶体起振 while IFG1 晶振失效标志仍然存在 BCSCTL2 SELM 2 SELS MCLK 和 SMCLK 选择高频晶振 P6DIR BIT6 P6OUT BIT6 关闭电平转换 P5DIR BIT5 P5OUT BIT5 关闭电平转换 P6DIR BIT7 P6OUT BIT7 关闭蜂鸣器 设置看门狗定时器 初始化控制数码管的 IO WDTCTL WDT ADLY 1 9 IE1 WDTIE P4DIR 0 xff P5DIR 0 xFF P5OUT 0 xff P4OUT 0 xff P6DIR 0 xff P6OUT 0 xFF 计数时钟选择 SMLK 8MHz 1 8 分频后为 1MHz TACTL TASSEL 2 ID 3 打开全局中断 EINT 循环读数显示 while 1 Disp Numb Do1Convert 不停地转换显示 函数名称 watchdog timer 功 能 看门狗定时器中断服务函数 进行数码 管动态扫描 参 数 无 返回值 无 pragma vector WDT VECTOR interrupt void watchdog timer void P4OUT 0 xFF wei h wei l P4OUT scandata dN 5 cnt if cnt 1 P4OUT BIT7 在第二位显示小数点 duan h duan l P4OUT 1 cnt wei h wei l cnt if cnt 6 cnt 0 函数名称 Disp Numb 功 能 将从 DS18B20 读取的 11bit 温度数据转换 成数码管显示的温度数字 参 数 temper 11bit 温度数据 返回值 无 void Disp Numb uint temper uchar i for i 0 i 10 dN 2 10 dN 3 1 if temper if temper if temper if temper if temper if dN 4 10 dN 4 10 dN 5 1 if temper dN 5 1 if dN 4 10 dN 4 10 dN 5 1 if temper dN 5 3 if dN 4 10 dN 4 10 dN 5 1 if temper dN 5 6 if dN 4 10 dN 4 10 dN 5 1 if dN 5 10 dN 5 10 18b20 C include typedef unsigned char uchar typedef unsigned int uint define DQ1 P1OUT BIT6 define DQ0 P1OUT TACTL MC 1 增计数到 CCR0 while TACTL 等待 TACTL 停止计数 TACTL 清除中断标志 函数名称 Init 18B20 功 能 对 DS18B20 进行复位操作 参 数 无 返回值 初始化状态标志 1 失败 0 成功 uchar Init 18B20 void uchar Error DQ out 拉高 DINT 关闭中断 DQ0 拉低 DelayNus 500 DQ1 拉高 DelayNus 55 DQ in 方向设置输入 NOP if DQ val 输入值为 1 Error 1 初始化失败 else 输入值为 0 Error 0 初始化成功 DQ out 设为输出 DQ1 拉高 EINT 中断使能 DelayNus 400 return Error 函数名称 Write 18B20 功 能 向 DS18B20 写入一个字节的数据 参 数 wdata 写入的数据 返回值 无 void Write 18B20 uchar wdata uchar i DINT for i 0 i 1 DelayNus 50 延时 50us DQ1 DelayNus 10 延时 10us EINT 函数名称 Read 18B20 功 能 从 DS18B20 读取一个字节的数据 参 数 无 返回值 读出的一个字节数据 uchar Read 18B20 void uchar i uchar temp 0 DINT for i 0 i 1 DQ0 DelayNus 6 延时 6us DQ1 DelayNus 8 延时 9us DQ in NOP if DQ val temp 0 x80 DelayNus 45 延时 45us DQ out DQ1 DelayNus 10 延时 10us EINT return temp 读到的一个字节 函数名称 Skip 功 能 发送跳过读取产品 ID 号命令 参 数 无 返回值 无 void Skip void Write 18B20 0 xcc 函数名称 Convert 功 能 发送温度转换命令 参 数 无 返回值 无 void Convert void Write 18B20 0 x44 函数名称 Read SP 功 能 发送读 ScratchPad 命令 参 数 无 返回值 无 void Read SP void Write 18B20 0 xbe 函数名称 ReadTemp 功 能 从 DS18B20 的 ScratchPad 读取温度转换结果 参 数 无 返回值 读取的温度数值 uint ReadTemp void uchar temp low uint temp temp low Read 18B20 读低位 temp Read 18B20 读高位 temp temp 0 i DelayNus 60000 延时 800ms 以上 do i Init 18B20 while i Skip Read SP 发送读 ScratchPad 命令 return ReadTemp 读取的温度数值 18b20 h void DelayNus unsigned int n unsigned char Init 18B20 void void Write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物出口协议书模板
- 货物转运协议书范本
- 货车司机合伙协议书
- 购买黄精种苗协议书
- 调取监控保密协议书
- 钢材代发协议书范本
- 购买在建房屋协议书
- 购销协议合同书样本
- 调换地契写协议合同
- 购买社保协议书范本
- 农业与科技兴农(第2课时)
- 中国电力科学研究院:中欧能源技术创新合作储能领域工作进展及合作建议
- 2025秋人教版(新教材)初三化学第一学期期末质量检测卷及答案
- 2025北京燃气集团校园招聘30人笔试历年典型考点题库附带答案详解试卷3套
- 综合实践 参加欢乐购物活动 筹备购物活动 课件 2025-2026学年二年级上册数学北师大版
- 中药新药研发技术指导方案
- 确保用药安全课件
- 交通安全日交通安全知识问答题库280题(附答案)
- 2025年湘潭医卫职业技术学院单招《职业适应性测试》测试卷及参考答案详
- (2025年)驾驶员岗前培训试卷及答案
- 2026年湖南石油化工职业技术学院单招职业技能测试题库附答案
评论
0/150
提交评论