




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安保考试题及答案
- 抉择考试题及答案
- 中级财务会计学(湖南工学院)知到智慧树答案
- 妊娠期高血压知识考核试题(含答案)
- 中外文学经典导读知到智慧树答案
- 成人住院患者跌倒风险评估及预防考核试题和答案
- 中药知识二模拟试题及答案
- 药品经营企业计算机系统培训考试试题(附答案)
- 中学化学教学设计(山西师范大学)知到智慧树答案
- 2025年度蔬菜种植与农产品电商平台会员积分体系合同
- 《小肠的结构与功能》课件
- 教师违反职业道德行为处理办法培训
- 高中生德育教育主题班会
- 婚介服务协议书范本
- 2025届高考作文备考之主题素材:家国情怀
- 蜜雪冰城加盟合同(2025年版)
- 消毒供应质量控制指标(2024年版)
- ACS合并消化道出血治疗策略
- 数字化转型视角下H公司订单管理优化策略研究
- 精益管理看板
- 汽车产品初期流动管理计划
评论
0/150
提交评论