(学生版)
2011 ~2012 学年第二学期。
教学单位信息工程与技术系
课程名称数据结构
课程设计题目基于51单片机卡的智能鱼缸。
指导教师余松森。
学生姓名。专业名称计算机应用
年级 2010级。
题目。1.课程设计目的。
1)理解温度传感器、时钟芯片及继电器控制等模块的工作原理;
2)掌握单片机与各种模块之间的通信原理以及单片机控制外接模块的方法;
3)掌握单片机的编程方法,包括汇编及c语言。
2. 基于单片机的智能鱼缸
51单片机是一款八位单片机,它的易用性及多功能性受到广大使用者的好评。本课程设计利用单片机和温度传感器等模块,设计一个能够自动调节鱼缸水温、自动加氧、自动换水的智能鱼缸,并通过液晶显示操作提示及相关信息(例如当前时间、设定换水、换氧时间等)。即只需对鱼缸手动设置一次,便可实现较长时间无需人工干预,自动恒温、换氧、换水等。
3. 标题(课程设计报告内容)
3.1 方案设计。
本设计将采取从上自下的设计方法,整个作品分为硬件设计和软件设计两部分,在硬件方面,需要对设备的成本及最终的实现效率进行考虑,本作品的硬件部分将分为如下几个部分:
1、主控制器模块。
微控制器是本系统的核心部分,绝大部分的程序将在微控制器上运行。atmel公司生产的at89s52单片机与mcs-51单片机产品兼容,是一种低功耗、高性能、成本低的cmos8位微控制器,具有8k在系统可编程flash存储器。综合各个因素的考虑,这里采用at89s52单片机作为本设计的核心控制器。
2、控温及加热模块
通过恒温棒加热鱼缸内的水,并通过温度传感器测出实际水温,并将所测值传给单片机,由单片机根据用户设定的温度值来控制加热棒的工作。
3、动换水模块。
根据用户设定的换水时间,将设定的数据存入单片机,与时钟芯片中的当前时间进行比较,控制单片机的i/o口的电平,并以此来控制继电器的通断,从而达到控制换水口的定时换水。并以水位传感器测量水位,来控制换水是否完成。
4、自动充氧模块。
根据用户设定的充氧时间,将设定的数据存入单片机, 与时钟芯片中的当前时间进行比较,控制单片机的i/o口的电平,并以此来控制继电器的通断,决定充氧器是否工作。
5、液晶显示模块。
本设计中所有的参数显示都是通过液晶显示屏来实现的,包括:水的设定温度,实际温度;设定的换水时间,还剩多少时间;设定的充氧时间。
6、用户控制面板模块。
该模块用于与用户的交互。通过六个按键来设置水温,换水时间,充氧时间。通过按键控制单片机的相关控制功能。
其硬件框图如下:
3.2 硬件实现原理。
一、最小应用系统设计。
at89s52是片内有rom/eprom的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用 at89s52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
有可供用户使用的大量i/o口线。
内部存储器容量有限。
应用系统开发具有特殊性。
89s52单片机最小系统。
二、温度传感器。
由美国dallas半导体公司出产的数字化温度传感器ds18b20支持one-wire(一线总线)接口,现场温度直接以“一线总线”方式传输,大大提高了抗干扰性。ds18b20内部结构主要由四部分组成:64位光刻rom、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。
其内部结构如下:
其外部结构如下:
引脚定义为:
gnd——地;
dq——数据i/o;
vdd——可选vdd。
与单片机的连接电路图如下:
三、时钟芯片。
ds1302包含一个实时时钟/日历和31字节的静态ram,它和单片机通信经由一个简单的串行接口实时时钟/日历提供秒、分、时、日、周、月、年信息,月末日期自动调整,单片机与ds1302接口使用同步串行通信,仅需三根线连接:(1)/rst(复位),(2)1/o(串行数据),(3)sclk(串行时钟).
要ds1302正常工作,需在其脚并联一个晶振及两个电容,第8脚位备用电源引脚,单片机掉电时,ds1302可通过备用电源继续工作。其与单片机的电路连接图如下:
四、继电器控制部分。
继电器控制部分采用如下电路,其驱动原理为:当at89s52的引脚输出低电平时,三极管饱和导通,+5v电压加到继电器两端,继电器吸合,电路接通;当at89s52的引脚输出高电平时,三极管截止,继电器衔铁释放。
3.3 软件设计原理。
本系统软件采用模块化结构,由主程序﹑温度传感器子程序、时钟芯**程序﹑主要控制部分子程序构成,其程序流程图如下所示。
主程序流程图。
定时控制流程图。
一、主程序设计。
主程序清单:
#include<>
#include <>
#include"包含lcd控制头文件。
#include"包含温度传感器头文件。
#include"包含时钟芯片头文件。
sbit k1 = p1^1按键引脚定义。
sbit k2 = p1^2;
sbit k3 = p1^3;
sbit k4 = p1^5;
sbit feed = p2^3喂食引脚定义。
sbit water1 = p2^4抽水小水泵引脚定义。
sbit water2 = p2^5
sbit hot = p2^6恒温棒引脚定义。
sbit ox = p2^6加氧器引脚定。
uchar code t0=年月日";
uchar code t1=00 :00 :00";
uchar code t2=水温: c";
uchar code t3=欢迎使用 ";
uchar code t4=请设置喂食时间";
uchar code t5=请设置换水时间";
uchar code t6=请设置最低温度";
uchar code t7=请设置充氧时间";
uchar num,temp,h,keynum,flagh,flagm,flags,flagt;
systemtime currenttime;
void init()
write_com(0x30); 基本指令, 扩充指令为34h
//write_com(0x30); 基本指令, 扩充指令为34h
write_com(0x0c); 显示开, 关光标。
write_com(0x01); 清屏。
write_com(0x90);
writestring(t0);
delay(5);
write_com(0x88);
writestring(t1);
delay(5);
write_com(0x98);
writestring(t2);
void init1()
write_com(0x80);
writestring(t3);
delay(5);
ds1302_gettime(¤ttime);
write_shijian(0x90,(
write_shijian(0x90+2,(
write_shijian(0x90+4,(
write_shijian(0x88+6,(
write_shijian(0x88,(
write_shijian(0x88+2,(
write_shijian(0x88+4,(
temp=readtemperature();
write_tem(3,temp);
void main()
uchar hour,minute,hour1,minute1,temp1,hour2,minute2;
init();
ds1302_initial();
ds1302_settime(¤ttime);
while(1)
init_ds18b20();
for(h=0;h<500;h++)
temp=readtemperature();
write_tem(3,temp);
if(keynum==0)
write_shijian(0x88+4,(
init1();
if(k1==0)
delay(5);
if(k1==0)
while(!k1);
if(ds1302_settime(¤ttime);
ds1302_gettime(¤ttime);
write_shijian(0x88,(
if(k2==0)
delay(5);
if(k2==0)
while(!k2);
if(ds1302_settime(¤ttime);
ds1302_gettime(¤ttime);
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...