ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:1.19MB ,
资源ID:13598723      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13598723.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机设计数字温度计Word下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机设计数字温度计Word下载.docx

1、相比热敏电阻来说,DS18B20单总线数字式温度传感器灵敏度高,精度高,但本次课程设计对温度精度的要求不高,且因为DS18B20温度传感器需要初始化,价格也比热敏电阻高,综合考虑,本设计采用热敏电阻对温度信号进行采集。3) 显示器的选取: 显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,常用的显示器有CRT、LED、LCD等。本设计用LED数码管显示需求片数并不多,观察方便,而LED数码管相对于其他显示器价格也比较便宜,成本也较低,所以本系统采用LED数码管显示。(2) 整体电路 图3-2(3) 单元电路设计1)晶振电路:瓷片电容C1、C2是用来驱动晶振Y1的,因为晶振的大小

2、是16M,所以选用20P的电容。图3-3-12)复位电路:复位电路选用了10nF的电解电容和10K的电阻。图3-3-23)温度显示数码管驱动电路:PE0PE3是进行位选通的控制,PD口进行段选通的控制。图3-3-3(4) 说明电路工作原理本设计使系统可以检测-50110范围内的温度,考虑到测温精度,设置显示数值精确到0.5并且设置温度的上下限,当温度值超过上下限温度时,报警电路中的蜂鸣器鸣响,报警灯闪。根据STM8S105C6T6的引脚特性,本设计中采用PB0PB2和PD口作为四位数码管的驱动引脚,PA3PA5作为外部中断的输入,PB4作为热敏电阻与单片机之间的信息传送。PB5与蜂鸣器相接,控

3、制蜂鸣器是否鸣响。RST作为复位输入,当振荡器工作时,RST引脚出现2个机器周期以上高电平使单片机复位。PB5与正常工作指示灯相连接,PB7引脚与报警灯相接,控制报警灯是否闪亮。XTAL1振荡器反相放大器及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。四、电路和程序调试过程与结果(1)设计逻辑图:(2)部分程序代码#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义 变量范围0255#define uint unsigned int /无符号整型 宏定义 变量范围065535 /数码管段选定义 0 1 2 3 4 5

4、6 7 8 9 uchar code smg_du=0x14,0x77,0x4c,0x45,0x27,0x85,0x84,0x57,0x04,0x05,/ A B C D E F 不显示 0x06,0xa4,0x9c,0x64,0x8c,0x8e,0xff; /断码 /数码管位选定义sbit smg_we1 = P20; /数码管位选定义sbit smg_we2 = P22;sbit smg_we3 = P24;sbit smg_we4 = P26;uchar dis_smg8 = 0x14,0x77,0x4c,0x45,0x27,0x85,0x84; uchar smg_i = 3; /显示

5、数码管的个位数sbit dq = P33; /18b20 IO口的定义bit flag_wd_z_f; /正负温度int temperature ; /*1ms延时函数*/void delay_1ms(uint q) uint i,j; for(i=0;iq;i+) for(j=0;j= smg_i) i = 0; P0 = 0xff; /消隐 smg_we_switch(i); /位选 P0 = dis_smgi; /段选 /*18b20初始化函数*/void init_18b20() bit q; dq = 1; /把总线拿高 delay_uint(1); /15us dq = 0; /给

6、复位脉冲 delay_uint(80); /750us /把总线拿高 等待 delay_uint(10); /110us q = dq; /读取18b20初始化信号 delay_uint(20); /200us /把总线拿高 释放总线/*写18b20内的数据*/void write_18b20(uchar dat) uchar i;8; /写数据是低位开始 dq = 0; /把总线拿低写时间隙开始 dq = dat & 0x01; /向18b20总线写数据了 delay_uint(5); / 60us dq = 1; /释放总线 dat = 1;/*读取18b20内的数据*/uchar rea

7、d_18b20() uchar i,value; /把总线拿低读时间隙开始 value /读数据是低位开始 if(dq = 1) /开始读写数据 value |= 0x80; /60us 读一个时间隙最少要保持60us的时间 return value; /返回数据/*读取温度的值 读出来的是小数*/uint read_temp() uint value; uchar low; init_18b20(); /初始化18b20 write_18b20(0xcc); /跳过64位ROM write_18b20(0x44); /启动一次温度转换命令 delay_uint(50); /500us ini

8、t_18b20(); /初始化18b20 EA = 0; write_18b20(0xbe); /发出读取暂存器命令 low = read_18b20(); /读温度低字节 value = read_18b20(); /读温度高字节 EA = 1; value = 8; /把温度的高位左移8位 value |= low; /把读出的温度低位放到value的低八中 if(value & 0xf000) = 0xf000) flag_wd_z_f = 1; /负温度 else flag_wd_z_f = 0; /正温度 value *= 0.625; /转换到温度值 小数 /返回读出的温度 /*定

9、时器0初始化程序*/void time_init() /开总中断 TMOD = 0X01; /定时器0、定时器1工作方式1 ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时/*主函数*/void main() P0 = P1 = P2 = P3 = 0xff; time_init(); /初始化定时器 temperature = read_temp(); /先读出温度的值 delay_1ms(650); /先读出温度的值 dis_smg0 = smg_dutemperature % 10; /取温度的小数显示 dis_smg1 = smg_dutemperature / 10 % 10 & 0xfb; /取温度的个位显示 dis_smg2 = smg_dutemperature / 100 % 10 ; /取温度的十位显示 while(1) temperature = read_temp(); /先读出温度的值 if(flag_wd_z_f = 1) /负温度 smg_i = 4; dis_smg0 = smg_dutemperature % 10; dis_smg1 = smg_dutemperature / 10 % 10 & dis_smg2 = smg_dutemperature /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1