- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机实验-恒温冰箱
迷你恒温冰箱
一 课程设计目的
1通过对本课程的设计加深对AVR单片机的认识、了解以及掌握
2、掌握JETC串口进行数据传输的应用,并学会使用外部芯片辅助项目设计。
3 加深对硬件电路的了解以及掌握,掌握对模数转换部分以及对中断部分的应用。
4、通过此次课程设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。
5 培养团队意识,锻炼分工合作以及协调能力。
二 设计原理
利用DS18B20芯片实现温度探测和温度信号输入,利用3个七段数码管显示温度。当温度高于临界温度15°时,单片机则输出信号,通过继电器控制半导体制冷片及风扇工作,使冰箱实现制冷功能。
三 用途与功能
1、利用DS18B20芯片实现温度探测和温度信号输入,显示室内温度,并随室内温度变化而变化。
2、利用3个七段数码管显示温度,温度精确度为0.5。
3、当外界温度高于15度时,利用单片机输出信号,通过继电器控制半导体制冷片及风扇工作,使冰箱实现制冷功能。
4、 制冷片不工作即冰箱不工作时绿灯亮,工作时红灯亮。
四 设计功能模块
迷你恒温冰箱的功能主要有4个模块构成:探测模块,显示模块,主控模块以及制冷驱动模块
。
设计功能模块图及各功能模块分析:
设计功能模块图
1探测模块
对于温度传感器,理想情况下应该能够随时高效地感应到所在整个空间内的温度变化。鉴于性价比高的考虑,我们选择了DS18B20作为本系统中的温度传感器。DS18B20是DALLAS半导体器件公司生产的可编程一线数字温度传感器芯片,它仅用一线就可完成与单片微控制器的硬件接口,具有使用简单方便、分辨率高的优点。
2显示模块
我们使用3位共阴7段数码管输出温度数据,因测量温度精确到0.5°
2.3主控模块
我们直接选用Atmel公司的ATmaga16L单片机作为主控模块。Mega16是高性能、低功耗的8位AVR微处理器,具有先进的RISC结构,内部集成两个具有独立预分频器和比较器功能的8位定时器/ 计数器和一个具有预分频器、比较功能和捕捉功能的16 位定时器计数器。可通过JTAG对MCU进行程序烧写及仿真。内置晶振,使用方便。
2.4制冷驱动模块
我们选用的是TEC12705半导体制冷片,通过5腿继电器控制其工作。
四 电路设计图
六 程序流程图
七 程序代码
#include iom16v.h
#include macros.h
unsigned char ds1820_reset(void);
unsigned int ds1820_read_temp(void);
flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
flash unsigned char position[4]={0x0E,0x0D,0x0B,0x07}; //初始化中断
int led_buf[4];
unsigned char poist=0;
#define DQ_IN DDRA = ~(1 PA7) /*设置输入*/
#define DQ_OUT DDRA |= (1 PA7) /*设置输出*/
#define DQ_CLR PORTA = ~(1 PA7) /*置低电平0*/
#define DQ_SET PORTA |= (1 PA7) /*置高电平1*/
#define DQ_R PINA (1 PA7) /*读电平*/
unsigned char m;
unsigned char flag; /*中断标志缓存*/
/*
延时函数
延时时间:i X 10 + 16uS。
CPU频率为:1MHz。
*/
void delay_10us(unsigned char i) {
if(i==0)
{
return ;
}
while(i--)
{
NOP();
NOP();
NOP();
NOP();
}
}
/*DS18B20复位函数*/
unsigned char ds1820_reset(void) {
unsigned char i;
flag=SREG; /*中断保护*/
CLI(); /*关闭中断*/
DQ_OUT;
DQ_CLR;
delay_10us(49); /*延时500uS(480-960)*/
DQ_SET;
DQ_IN;
delay_10us(7); /*延时80uS*/
i=DQ_R;
delay_10us(49); /*
文档评论(0)