单片机原理及接口智能散热系统课程设计报告

上传人:aa****6 文档编号:38148335 上传时间:2018-04-27 格式:DOC 页数:26 大小:1,014KB
返回 下载 相关 举报
单片机原理及接口智能散热系统课程设计报告_第1页
第1页 / 共26页
单片机原理及接口智能散热系统课程设计报告_第2页
第2页 / 共26页
单片机原理及接口智能散热系统课程设计报告_第3页
第3页 / 共26页
单片机原理及接口智能散热系统课程设计报告_第4页
第4页 / 共26页
单片机原理及接口智能散热系统课程设计报告_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机原理及接口智能散热系统课程设计报告》由会员分享,可在线阅读,更多相关《单片机原理及接口智能散热系统课程设计报告(26页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及接口单片机原理及接口课课程程设设计计报报告告题 目: 智能散热系统 专业名称: 通信工程 班 级: 创新 142 学 号: 8 姓 名: 刘小杰 2015 年 12 月课程设计报告首页课程设计报告首页院、系(部)信息工程学院专业通信工程 班级创新 142学号8姓名刘小杰任课教师陈玮课程名称单单片片机机原原理理及及接接口口成绩评语签字:年 月 日复核人意见签字:年 月 日课程设计报告的要求:课程设计报告的要求:首先应先介绍课程设计的基本内容(包括设计目标) 、设计的背景及意义。其次是方案论证:说明设计的原理并进行方案选择,再然后进行硬件电路的设计及原理说明,和软件的流程说明。第三是过

2、程(设计或实验)论述:对设计调试工作的详细表述。最后是结论或总结:对整个研究工作进行归纳和综合、包括心得体会。大致内容按上面要求来写,也可以参考网上“单片机 课程设计报告”来扩充。文章中的格式规定:文章中的格式规定:图:图的名称采用中文,图名在图片下面格式为:图 1-1,后接图名。表格:表名在表格上面。正文五号字一级标题 四号 加粗二级标题 小四 加粗行距:1.5 倍附录的程序:两列页边距:上下 2.5 厘米 左右 2.8 厘米不要目录需要中文摘要 排版参考毕业设计论文格式(见下页)参考文献若有可写打印的报告里面不需要附录程序 电子版里面需要报告里面应该有各模块电路图 调试现象图刻盘要求:刻盘

3、要求:最后,除了打印的,全班把每个人的程序(keil 项目及 hex 文件)、电路(proteus 文件或硬件的照片及电路原理图)和报告打包压缩后命名为“班级名-学号-姓名”(如电信 091-陈玮)刻盘。散热系统刘小杰信息工程学院摘要:由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。关键词:单片机,程序,DS18B20 温度传感器,LCD1602 液晶显示屏,定时器,直流电机等等1 课程设计的基本内容为实现系统能采集当前环境温度,当温度达到一定值时触发直流风扇的转动进行主动散热,

4、并且随着温度的变化而改变风力大小,风力与温度成正比,本系统设置了三个档来控制风力的大小,20C-22C为一档,22C-24C为二档,24C-26C为三档(为了演示方便而设计的三档,在实际用途中可依据要求来设置) 。本智能散热系统根据环境温度智能调控风力的功能可以放置在一些硬件中以达到降温的功能。2 方案论证2.1 设计原理及方案选择通过 DS18B20 温度传感器来采集当前环境的温度,通过 LCD1602 液晶显示屏来显示温度以及工作时间,CPU 根据当前温度来控制电机的速度。2.2 硬件电路设计及原理说明使用 P1.1 口来连接电机,P0 口连接 LCD1602,P2.5 口为读/写选择端,

5、P2.6为命令/数据选择端,P2.7 为使能端,P3.7 口为数据总线,P3.4 口为定时器 0,P3.5 为定时器 1.图为 DS18B20 原理图图为 LCD1602 原理图 图为外部电路接线图 3 设计过程论述3.1 DS18B20 温度传感器 DS18b20 采用单总线的结构,单总线的特点就是只有一根数据线,系统中的数据交换都由 这根线进行。DS18B20 的一线工作协议流程是:的一线工作协议流程是: 初始化ROM 操作指令存储器操作指令数据传输。 其工作时序包括:其工作时序包括: 1、初始化时序 2、写时序 3、读时序 DS18B20 的初始化的初始化 主机首先发出一个 480960

6、 微秒的低电平脉冲,然后释放总线变为高电平,并在随后的 480 微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无 低电平出现一直都是高电平说明总线上无器件应答。做为从器件的 DS18B20 在一上电后就一直在检测总线上是否有 480960 微秒的低电 平出现,如果有,在总线转为高电平后等待 1560 微秒后将总线电平拉低 60240 微秒做 出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待初始化时序图初始化程序初始化程序 unsigned char Ds18b20Init() unsigned int i; DSIO=0; /将总线拉低 480u

7、s960us i=70; while(i-);/延时 642us DSIO=1;/然后拉高总线,若 DS18B20 做出反应会将在 15us60us 后将总线拉低 i=0; while(DSIO) /等待 DS18B20 拉低总线 i+; if(i50000)/等待50MS return 0;/初始化失败 return 1;/初始化成功 主机发出各种操作命令都是向 DS18B20 写 0 和写 1 组成的命令字节,接收数据时也是从 DS18B20 读取 0 或 1 的过程。写周期最少为 60 微秒,最长不超过 120 微秒。写周期一开始做为主机先把总线拉低 1 微秒 表示写周期开始。随后若主机

8、想写 0,则将总线置为低电平,若主机想写 1,则将总线置为 高电平,持续时间最少 60 微秒直至写周期结束,然后释放总线为高电平至少 1 微秒给总线恢复 。而 DS18B20 则在检测到总线被拉底后等待 15 微秒然后从 15us 到 45us 开始对总线 采样,在采样期内总线为高电平则为 1,若采样期内总线为低电平则为 0。写操作时序图写操作时序图向向 DS18B20 写入一个字节写入一个字节 void Ds18b20WriteByte(unsigned char dat) unsigned int i,j; for(j=0;j=1; 读周期是从主机把单总线拉低 1 微秒之后就得释放单总线为

9、高电平,以让 DS18B20 把 数据传输到单总线上。作为从机 DS18B20 在检测到总线被拉低 1 微秒后,便开始送出数据, 若是要送出 0 就把总线拉为低电平直到读周期结束。若要送出 1 则释放总线为高电平。主 机在一开始拉低总线 1 微秒后释放总线,然后在包括前面的拉低总线电平 1 微秒在内的 15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为 0。采样期内总线 为高电平则确认为 1。完成一个读时序过程,至少需要 60 微秒才能完成读操作时序图读操作时序图读取一个字节读取一个字节 unsigned char Ds18b20ReadByte() unsigned char

10、 byte,bi; unsigned int i,j; for(j=8;j0;j-) DSIO=0;/先将总线拉低 1us i+; DSIO=1;/然后释放总线 i+; i+;/延时 6us 等待数据稳定 bi=DSIO; /读取数据,从最高位开始读取 byte=(byte1)|(bi void Time1Config(); /*相关字符的重定义*/ #define uchar unsigned char #define uint unsigned int #define LCD1602_DATAPINS P0sbit LCD1602_E=P27; /定义 P2.7 口为使能端 sbit LC

11、D1602_RW=P25; /定义 P2.5 口为读/写选择端(H/L) sbit LCD1602_RS=P26; /定义 P2.6 口为数据/命令选择端(H/L) sbit DSPORT=P37; /定义 P3.7 口为总线 sbit PWM=P11; /定义 P1.1 为电机电压输出端/*定义一些相关变量*/ unsigned char timer1; float tp; int temp,speed; unsigned char table=0,1,2,3,4,5,6,7,8,9; int i1=0,n1=0,j1=0,a1,k1=0,m1=0,flag=0,o1=0,p1=0,z1=0

12、;/*LCD1602 延时函数*/ void Lcd1602_Delay1ms(uint c) /误差 0us uchar a,b; for (; c0; c-) for (b=199;b0;b-)for(a=1;a0;a-); /*向 LCD1602 写入一个字节命令*/ void LcdWriteCom(uchar com) /写入命令 LCD1602_E = 0; /使能 LCD1602_RS = 0; /选择发送命令 LCD1602_RW = 0; /选择写入LCD1602_DATAPINS = com; /放入命令 Lcd1602_Delay1ms(1);/等待数据稳定LCD1602

13、_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0; /*向 LCD1602 写入一个字节数据*/ void LcdWriteData(uchar dat)/写入数据 LCD1602_E = 0;/使能清零 LCD1602_RS = 1; /选择输入数据 LCD1602_RW = 0;/选择写入LCD1602_DATAPINS = dat; /写入数据 Lcd1602_Delay1ms(1);LCD1602_E = 1; /写入时序 Lcd1602_Delay1ms(5); /保持时间 LCD1602_E = 0; /*初始化 LCD

14、屏*/void LcdInit() /LCD 初始化子程序 LcdWriteCom(0x38); /开显示 LcdWriteCom(0x0c); /开显示不显示光标 LcdWriteCom(0x06); /写一个指针加 1 LcdWriteCom(0x01); /清屏 LcdWriteCom(0x80); /设置数据指针起点 /*DS18B20 的延时函数*/ void Delay1ms(uint y) uint x; for( ; y0; y-) for(x=110; x0; x-); /*DS18B20 的初始化*/uchar Ds18b20Init() uchar i; DSPORT =

15、 0; /将总线拉低 480us960us i = 70; while(i-);/延时 642us DSPORT = 1;/然后拉高总线,如果 DS18B20 做出反应会将在 15us60us 后 总线拉低 i = 0; while(DSPORT)/等待 DS18B20 拉低总线 i+; if(i5)/等待5MS return 0;/初始化失败 Delay1ms(1); return 1;/初始化成功 /*向 DS18B20 写入一个字节*/void Ds18b20WriteByte(uchar dat) uint i, j;for(j=0; j= 1; /*读取一个字节*/ uchar Ds18b20ReadByte() uchar byte, bi; uint i, j; for(j=8; j0; j-) DSPORT = 0;/先将总线拉低 1us i+; DSPORT = 1;/然后释放总线 i+; i+;/延时 6us 等待数据稳定 bi = DSPORT; /读取数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号