- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中期报告(参考)
PAGE
PAGE 1
———————————————————————————————— 作者:
———————————————————————————————— 日期:
西安工业大学北方信息工程学院
毕业设计(论文)中期报告
题目:基于单片机的温度采集系统设计
系 别
专 业
班 级
姓 名
学 号
导 师
设计(论文)进展状况
在这段时间里,我主要学习了温度传感器AD590的工作原理,连接方法;如何使用ADC0809进行数模转换;Keil uVision2开发软件的使用;以及如何在 Keil uVision2环境下的编程实现及调试。同时,对实现带有小数的温度检测进行了具体学习和编程。具体工作如下:
(1) AD590的具体工作原理与工作方式
AD590,它是一种半导体感受式的,由测温电阻、二极管和集成电路器件成。
AD590是一种单片集成的两端式温度敏感电流源,它有金属壳,小型的扁平封装芯片和不锈钢等几种封装形式,实验平台利用IC温度传感器AD590作为测温器,AD590是一种精度和线性度较好的双端集成温度传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1? A最大电流的变化或1摄氏度等效误差。
上图给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路,当温度有10℃的变化时输出电压变化为20mV,即该电路M点电压随温度变化为2mV/℃
(2) A/D转换
模数转换采用ADC0809,它是芯片输出端具有可控的三态门,这种芯片的输出端可以直接和系统总线相连,由读信号控制三态门,转换结束后,CPU执行一条输入指令,从而产生读信号,将数据从A/D转换器取出。ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存译码电路,其转换时间为100μs左右。
8路
8路
模拟量
开关
地址
锁存
与译码
8位
A/D
转换器
三态
输出
锁存器
START CLK
EOC
Vcc
GND
A
B
C
ALE
Vref Vref
(+) (-)
IN0
︱
︱
IN7
D0
︱
︱
D7
八路模拟量输入
八路模拟量输出
ADC0809内部结构如图所示,图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换,地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择。8位A/D转换器是逐次逼近式,由控制与时序电路、逐次逼近寄存器、树状开关以及256R电阻阶梯网络等组成。输出器用于存放和输出转换得到的数字量。
(3)在 Keil uVision2环境下进行具体程序设计
程序如下
#includereg51.h
#includeabsacc.h
sbit cp_164=P2^6; //164的脉冲控制引脚
sbit data_164=P2^7; //164的串行数据引脚
float xiaoshu;
int temper1,c,temper2; //保存实际温度的变量,只考虑温度为正且取整数
sbit DQ=P2^4; //数据端口
void delay(unsigned int i)
{
while(i--);
}
//初始化函数
Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay(8); //稍做延时
DQ = 0; //单片机将DQ拉低
delay(80); //精确延时 大于 480us
DQ = 1; //拉高总线
delay(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(20);
}
//读一个字节
ReadOneChar(void)
{
unsigned char i=0;
unsigned char
原创力文档


文档评论(0)