| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

基于单片机的温湿度控制器设计课程设计报告

文***品

贡献于2023-01-30

字数:18839






智仪器仪表设计调试课程设计报告


学 院 电气信息工程学院 专业班级 测控1001
学生姓名 学 号
设计点(单位)_________ __I506_ _____ ___ __
设计题目_____ __基单片机温湿度控制器设计__ _ _
完成日期: 2013年 7月 12日

指导教师评语 ______________________ _______________ __
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _

成绩(五级记分制)______ ___ _______
指导教师(签字)________ ________

设计务性指标 1
11 设计务 1
12 性指标 1
二设计方案 1
三系统硬件设计 2
31单片机系统 2
32 湿度采集电路设计 3
33 温度采集电路设计 4
34 AT24C02存储电路设计 5
36 报警电路设计 6
37液晶模块设计 7
四系统软件设计 8
41 程序设计 8
42 湿度采集子程序设计 9
43 温度采集子程序设计 10
44 AT24C02存储子程序设计 11
45 液晶显示子程序设计 12
46 键设置模式子程序设计 13
47 报警子程序设计 14
五 性调试分析 15
51 调试步骤 15
52 性分析 16
六 心体会 16
参考文献 18
附录1 系统硬件电路图 19
附录2 程序清单 20

设计务性指标
11 设计务
设计基单片机温湿度控制系统求完成功:
1 基功
1)温度采集显示LCD湿度采集显示LCD
2)温湿度限报警值设定温湿度限报警
3)目标温湿度值设定
2 扩展功
1)实现温湿度存储调
2)功
112 进度求
1布置仪表设计务方案设计(1天)
2硬件设计制作调试(2天)
3软件设计调试(4天)
4综合调试(15天)
5成果展示答辩撰写报告(15天)
12 性指标
1传感器:AMT1001DS18B20
2湿度测量范围:20—90RH湿度测量精度 ≤5RH
3温度测量范围:0℃—60℃测温误差<±1 ºC
4湿度输出电压:0—30V
5供电电压:475V—525V
二设计方案
接务首先务分析然设计方案
温湿度监控系统硬件包括单片机系统电路温度采集电路湿度采集电路蜂鸣器电路液晶显示电路AT24C02存储电路键选择电路串行通信电路部分思路:
1.STC12C5A16S2单片机控制部分核心元件务:
1)AD转换通湿度传感器改变湿度值获信号采身AD转换功模拟电压信号转换数字信号
2)处理采集AD转换数字信号温度传感器采集数字信号根换算公式计算出采集前温度值湿度值
3)控制键操作数显示存储查询
2 温度采集工作通温度传感器DS18B20进行湿度采集工作通湿度传感器AMT1001进行温湿度采集数字量时传送数单片机进行处理相应模拟量进行相关计算温度值湿度值
3 采集温度湿度值通AT24C02芯片进行存储查询历史数设定采集时间间隔设计9秒采集次存储20组数
4 液晶显示电路采JM12864LCD液晶显示器单片机获信息显示液晶显示屏
5 蜂鸣器设计中起报警提醒作温度者湿度超设定限者限时蜂鸣器响直温湿度恢复正常
6 键采四具体功写程序调试程中定
部分思路确定画整系统原理图确定元件引脚便写程序时调
三系统硬件设计
31单片机系统
STC12C5A60S2系统包括复位电路时钟电路复位电路电复位键复位门狗等复位方式设计采键复位方式单片机X1X2引脚间加110592MHZ晶振通20pF左右电容接单片机提供工作时钟工作电压3555V部拥4定时器2串口8路高速10位AD转换置门狗电路外部掉电检测电路等原理图图311示:

图311 单片机系统电路
32 湿度采集电路设计
湿度传感器分电阻式电容式两种空气中水蒸汽吸附感湿材料元件阻抗介质常数发生变化制成湿敏元件选择湿度传感器首先应考虑方面:
第互换性目前湿度传感器普遍存着互换性差现象型号传感器互换严重影响效果维修调试增加困难
第二湿度传感器温度系数温漂非线性需电路加温度补偿式采单片机软件补偿温度补偿湿度传感器保证全温范围精度湿度传感器温漂曲线线性化直接影响补偿效果非线性温漂补偿出较效果采硬件温度性补偿会获真实补偿效果湿度传感器工作温度范围重参数
第三湿度传感器供电金属氧化物陶瓷高分子聚合物氯化锂等湿敏材料施加直流电压时会导致性变化甚失效类湿度传感器必须交流电供电
第四精度长期稳定性湿度传感器精度应达±2~±5RH达水难作计量器具湿度传感器达±2~±3RH精度较困难
第五湿度校正般情况缺乏完善检定设备时通常简单饱盐溶液检定法测量温度
综合方面考虑终系统采AMT1001型电阻式湿敏元件湿度测量范围2090RH该传感器具低功耗体积带温度补偿单片机校准线性输出方便成低完全互换超长信号传输距离精确校准等特点
基AMT1001湿度采集电路图321示:

图321 温湿度传感器采集电路
Hot端接P11口串联10K拉电阻然接数量通P11口进入单片机进行AD转换成模拟量通计算成正确湿度值然显示液晶屏面
33 温度采集电路设计
温度传感器指感受温度转换成输出信号传感器传感器材料电子元器件特性分分热电阻热电偶两类测量方式分接触式温度传感器非接触式温度传感器选美国Dallas 半导体公司数字化温度传感器DS1820温度检测
DS18B20 支持线总线接口测量温度范围55°C~+125°C10~+85°C范围精度±05°C现场温度直接线总线数字方式传输提高系统抗干扰性适合恶劣环境现场温度测量特点:
1负压特性芯片极性接反时芯片会发热烧毁
2转换速度快12 位分辨率时750ms温度转换数字速度更快9位分辨率时9375ms温度转换数字
3独特单线接口方式DS18B20微处理器连接时仅需条口线实现微处理器DS18B20 双通讯
4适应电压范围更宽寄生电源方式数线供电电压范围:30~55V
5编程分辨率9~12位应分辨温度分00625℃0125℃025℃05℃实现高精度测温
基DS18B20温度采集电路图331示:

图331 温度采集电路
数量通P10口进入单片机进行AD转换成模拟量通计算成正确温度度值然显示液晶屏面
34 AT24C02存储电路设计
存储器AT24C02满足系统采集温度湿度进行存储查询分析求工作电压18V~55V采二线串行接口输入引脚施密特触发器滤波抑制噪声具双数传输协议支持硬件写保护读写次数较保存时间长保存100年久AT24C02时低工作电压2K位串行点擦读存储器部组织位256字节字节8位该芯片广泛应低电压低功耗工商领域
AT24C02操作:
1时钟数传输:SDA引脚通常外围器件拉高SDA引脚数应SCL低时变化
2起始命令:SCL高SDA高低必须起始命令作次读写操作命令开始
3停止命令:SCL高SDA低高
4应答:收组8位数EEPROM会第9时钟周期时返回应答信号
AT24C02SDA接P37口SDA引脚实现双串行数传输该引脚开漏输出开漏输出器件开集电极器件线连接SCL接入P36口SCL输入时钟信号升数送入EEPROM器件时钟降数读出次设计温度湿度采集成功表示通P34口LED灯闪烁表示已存入芯片电路图341示:

图341 存储器AT24C02电路

35 键选择电路设计
系统中需键四采独立键方式中mode键P20口相接up键P21口相接dn键P22口相接en键P32口相接
设计中键功:显示实时温湿度值界面中up键进入修改温湿度限界面dn键进入查询历史温湿度值界面查询温湿度时en键返回修改界面mode键返回功外upen键修改限功键电路图图351示:

图351 键电路
36 报警电路设计
系统中采蜂鸣器报警作系统报警检测温度湿度超设定温度湿度限者低设定温度湿度限蜂鸣器发出报警声时联合液晶界面显示出报警提示蜂鸣器报警电路图发光二极图361362示:

图361 蜂鸣器报警电路

图362 发光二极电路
37液晶模块设计
液晶显示器显著特点性稳定进行简单图形显示适需复杂图形显示功场合
系统采液晶LCD12864液晶显示器LCD12864种具4位8位行2线3线串行种接口方式部含国标级二级简体中文字库点阵图形液晶显示模块利该模块灵活接口方式简单方便操作指令构成全中文机交互图形界面显示8×4行16×16点阵汉字完成图形显示显示分辨率128×64 置819216*16点汉字12816*8点ASCII字符集
系统中液晶RS(CS)端接P05口RW(SID)端接P06口E(CLK)端接P07口加背光通电源液晶单片机连接液晶显示电路图361示:

图371 液晶显示电路
四系统软件设计
41 程序设计
温湿度监控系统软件部分包括温度采集子程序湿度采集子程序AD转换子程序液晶显示子程序AT24C02存储子程序程序键模式选择程序首先进行系统初始化函数赋初值液晶初始化等然while循环中调子程序实现温湿度监控功温湿度监控系统函数流程图图411示:


图411 函数流程图
42 湿度采集子程序设计
AMT1001采集模拟量信号必须单片机AD转换采集模拟信号转换成电压信号通湿度值电压信号值通公式电压信号转换成湿度值转换程中需注意AMT10010RH~100RH湿度值应电压值0~3V电压计算程中直接单片机板子5V电压带进公式计算
次数换算中AD转换器十位换算电压时采高八位低两位换算采集电压值Vd*500010245放1000倍5000d(ADC_RES&0x03)*256+ADC_RESL时电压值公式:dd1003时d湿度值湿度采集子程序流程图421示:

图421 湿度采集模块流程图
43 温度采集子程序设计
DS18B20采集数字量信号单片机直接进行AD转换换算成温度DS18B20采9~12位数字值读数方式750ms完成12位数字量中9位读数方式更快更方便分采集温度限值整合成16位温度值通查表法者公式法进行换算设计采二分法通显示数函数显示液晶温度采集子程序流程图431示:

图431 温度采集模块流程图


44 AT24C02存储子程序设计
调子程序采集温度值湿度值通芯片读写操作温度值湿度值存储芯片调查询函数读出存储存储器数显示液晶面AT24C02存储址范围0x000H~0x7FFH系统次存储占AT24C025址重复檫址存储情况芯片存储409数存储查询流程图图441示:

图441 存储查询模块流程图
45 液晶显示子程序设计
LCD液晶显示包括文字数字显示通选择键显示页面页面进行清屏址回左角
显示实时温湿度界面时采设定标志位方式while循环屏幕进行刷屏判断标志位进入显示页面种方式减数跳变频率够稳显示液晶显示流程图图4512示:

图451 液晶显示模块流程图
46 键设置模式子程序设计
界面利键显示界面者进行界面操作界面实时温湿度显示界面温湿度限设置界面历史数查询界面报警界面中报警界面闪烁形式出现出现警报时实时显示界面交显示时进行操作键设置模式流程图图461示:

图461 键选择模块流程图

47 报警子程序设计
温度者湿度超设定限值蜂鸣器发出声音果温度超限会液晶面显示报警界面温度超限度时会液晶显示报警字样会显示超高度数报警流程图图471示:

图471 报警模块流程图
五 性调试分析
51 调试步骤
调试写程序进度开始进行温湿度采集调试首先考虑温度显示位数开始显示三位数精确数点面位改四位数电温度值正常显示根周围温度变化标准数字温度计测量值设计程序显示测量值相差2度左右超误差范围便开始温度误差进行调试调试完成电显示温度误差控制1度
次湿度测量调试讲传感器红色线接电源黑色线接黄色线接P11口软件运行调试发现正常显示数字数值错误发现传感器0RH~100RH应输出电压0~3V程序中算法修改正常显示湿度值误差允许范围
接着设计键模式首先构思键途接着程序里面编写调试先温湿度限设置问题键设置液晶面会提示需键显示界面if语句判断键否进入步操作开始进入修改页面 修改值出现点问题修改 正常键显示
问题存储模块调试开始结果显示历史数乱码情况试发现存储检查硬件电路发现没问题发现键模式设置问题便键方重新步步修改存储显示存储历史数
52 性分析
系统够实现功数实时采集显示报警控制存储
查询测量数:实时温度值湿度值
系统温度测温范围:0℃~100℃测温分辨率:001℃电压范围:30~55V
湿度测量范围 20—90RH测量精度 ≤5RH输出电压 0—30V电源475V—525V温度 0—60℃
求报警蜂鸣器发光二极系统加液晶屏显示报警显示超温度具体数值区分开温度超限湿度超限
温度值显示分辨率001℃更准确
存储历史查询正常系统设置9秒存储次数方便采集设置想存储间隔例十分钟需改动计时中断里面cont数值存储82k数系统存储10组数
六 心体会
次课程设计务实挺重前接触AD转换程序设计采集温度值湿度值显示液晶面部分较容易手然调试实现程中出现问题甚破眼睛发现起问题缘常问题里修改电测试久找出原c语言表达方式较样时候语句问题导致液晶显示出现乱码者问题说字符显示函数显示规定字数汉字者字符偶尔字会出现乱显示开始输入法问题改种输入法然问题发现出问题字单独调显示函数显示会问题
存储编写缓慢程前没接触程序问题清楚导致调试非常复杂次送数存储器应答然会出错导致存储器正常工作前键设置标志位键标志位模式编写正确会存储数
设计先制作硬件电路图熟悉protel 99 SE法熟悉单片机部结构特前没存储器结构液晶屏显示问题AD转换次设计中完全熟练解存储器AT24C02方法程序编写起始命令停止命令应答命令固定形式需存储象采定时器计时存储数方法较简单
时间充足Labview熟练次设计没实现位机位机通信时间会研究位机问题




























参考文献
[1]姚永STC12C5A60S2系列单片机器件手册[OL]宏晶STC单片机官方网站2011
[2]乐享电子温湿度模块AM1001AMT1001产品手册[OL] 广州乐享电子限公司2007
[3王景景单片机原理应 [M]北京:机械工业出版社201003
[4]张元良王建军智仪表开发技术[M]北京:机械工业出版社200910
[5]蔡明生电子设计[M]北京:高等教育出版社2004
[6]李东生Protel 99SE电路设计教程[M]北京:电子工业出版社20071
[7]康华光电子技术基础(模拟部分)[M]北京:高等教育出版社200609
附录1 系统硬件电路图




附录2 程序清单
#include
#define AddWr 0xa0 器件址选择写标志
#define AddRd 0xa1 器件址选择读标志
#define THCO 0x15 110592MHZ晶振
#define TLCO 0xa0 60ms
#define uchar unsigned char
#define uint unsigned int
#define N 10

*****LCD接口定义*****
sbit SID P0^6 串行数
sbit SCLK P0^7 串行步时钟
sbit cs P0^5
sbit PSBP1^5
sbit modeP2^0
sbit upP2^1
sbit dnP2^2
sbit enP3^2
sbit Sda P3^7 串行数
sbit Scl P3^6 串行时钟
sbit led1P3^6 存储指示灯
sbit p34P3^4
sbit warmP2^5
sbit wlightP3^5

void change()
void disp()
void disp1()
void disp2()
void hchange()
void tchange()
void hs1()
void hx1()
void ts1()
void tx1()
void time0()
void store()
void history()

**********汉字址表**********
uchar code addr_tab[]{
0x800x810x820x830x840x850x860x87第行汉字位置
0x900x910x920x930x940x950x960x97第二行汉字位置
0x880x890x8a0x8b0x8c0x8d0x8e0x8f第三行汉字位置
0x980x990x9a0x9b0x9c0x9d0x9e0x9f第四行汉字位置
}

unsigned long hout1[]{
1315 1358 1401 1444 1487 1531 1575 1619 1663 1707 1751
1756 1776 1810 1852 1903 1958 2017 2079 2410 2204 2266
2327 2386 2444 2500 2554 2606 2657 2706 2753 2799 2844
2888 2931 2974 3016 3057 3098 3138 3178 3217 3257 3295
3334 3372 3409 3447 3483 3519 3555
}
uchar xdata add[21]{0x000x050x0a0x0f0x140x190x1e0x230x280x2d0x310x360x3b0x400x450x4a0x4f0x540x590x5e0x63}


unsigned long cntcnt2xjt_flag1
unsigned int flag0hx5hs32ts60tx30
unsigned int jj0cun0cont0
uchar xdata data_1[5]nn[4]n[4]mm[4]
uchar xdata data_2[5]data_3[5]
***************延时子程序************
void delayms(uint t)
{
uint i
while(t)
{
for(i0i<125i++)
}
}

void time0() interrupt 1 计时存储采集数
{
TH0THCO
TL0TLCO
if(t_flag0)
{
contcont+1
if(cont>150)6s存储次
{
cont0
store()
}
}
}

void hs1()
{
if(hs>40) hs40
if(hs<20) hs20
if(up0)
{
delayms(250)
if(up0)
hshs+1
}
if(dn0)
{
delayms(250)
if(dn0)
hshs1 }
}
void hx1()
{
if(hx>15) hx15
if(hx<5) hx5
if(up0)
{
delayms(250)
if(up0)
hxhx+1
}
if(dn0)
{
delayms(250)
if(dn0)
hxhx1 }
}
void ts1()
{
if(ts>80) ts80
if(ts<40) ts40
if(up0)
{
delayms(250)
if(up0)
tsts+1
}
if(dn0)
{
delayms(250)
if(dn0)
tsts1 }
}
void tx1()
{
if(tx>39) tx39
if(tx<10) tx10
if(up0)
{
delayms(250)
if(up0)
txtx+1
}
if(dn0)
{
delayms(250)
if(dn0)
txtx1 }
}

**************AD设置***************
unsigned int AD(unsigned long j)
{
unsigned long i
P1M10x00P1M00x00
P1M1P1M1|(1< P1M0P1M0|(1< P1ASF0x00|(1< ADC_CONTR0xe0|j 开 AD 转换电源选择AD速度
ADC_CONTR|0x08 启动 AD 转换
while((ADC_CONTR&0x10)0) 等 AD 转换结束
ADC_CONTR&0xE0 ADC_FLAG 清 0
iADC_RES*256+ADC_RESL
return(i)
}

**************均滤波***********
long d_data(unsigned int j)
{
unsigned long new_dat0dat0
unsigned int k
for(k0k dat+AD(j) 开启AD转换选择通道
new_datdatN
return (new_dat)
}
long hout()
{
unsigned long datdat1dat2dat3
uint maxminmid
datd_data(0)*50001024
max50min0
while(1)
{
mid(max+min)2
if(dathout1[mid])
{
return mid*100
break
}
if((maxmin)1)
{
dat1hout1[max]hout1[min]
dat2(hout1[max]dat)*100
dat3dat2dat1
mid(max*100dat3)
return mid
break
}
if(dat else
minmid
}
}

*****************串行发送字节******************

void SendByte(uchar Dbyte)
{ uchar i
cs1
for(i0i<8i++)
{ SCLK 0
if((Dbyte< SID1
else
SID0
SCLK 1
SCLK 0
}
cs0
}
***************送指令******************
void Lcd_WriteCmd(uchar Cbyte )
{ delayms(1)延时
SendByte(0xf8) 11111RW(0)RS(0)0
SendByte(0xf0&Cbyte) 高四位
SendByte(0xf0&(Cbyte<<4)) 低四位(先执行<<)
}
***************送数***********
void Lcd_WriteData(uchar Dbyte )
{
delayms(1)
SendByte(0xfa) 11111RW(0)RS(1)0
SendByte(0xf0&Dbyte) 高四位
SendByte(0xf0&(Dbyte<<4)) 低四位(先执行<<)
}
*************初始化LCD*************
void Lcd_Init(void)
{
delayms(50)
Lcd_WriteCmd(0x30) 选择基指令集
delayms(1)
Lcd_WriteCmd(0x06) 选择8bit数流
delayms(1)
Lcd_WriteCmd(0x0c) 开显示(游标反白)
delayms(1)
Lcd_WriteCmd(0x01) 清显示设定址指针00H
delayms(50)
}
*****************显示汉字**************
void hanzi_Disp(uchar xuchar yuchar code *s)
{
Lcd_WriteCmd(addr_tab[8*x+y]) 写址
while(*s>0)
{
Lcd_WriteData(*s) 写数
s++
}
}
************温度限修改****************
int hchanges()
{ uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(02键up增)
hanzi_Disp(12键dn减)
hanzi_Disp(22键mode返回)
}
while(1)
{
uchar cc[2]
cc[0]0x30+hs10
cc[1]0x30+hs10
hanzi_Disp(31限:)
Lcd_WriteData(cc[0])
Lcd_WriteData(cc[1])
hanzi_Disp(36℃)
hs1()
delayms(5)
if(mode0)
{
delayms(1)
if(mode0)
{ change()flag0 break }
}
}
}
******温度限修改********
int hchangex()
{
uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(02up键增)
hanzi_Disp(12dn键减)
hanzi_Disp(22键mode返回)
}
while(1)
{
uchar bb[2]
bb[0]0x30+hx10
bb[1]0x30+hx10
hanzi_Disp(31限:)
Lcd_WriteData(bb[0])
Lcd_WriteData(bb[1])
hanzi_Disp(36℃)
hx1()
delayms(5)
if(mode0)
{
delayms(1)
if(mode0)
{ change()flag0 break }
}
}
}
**************湿度限修改**************
int tchanges()
{ uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(02键up增)
hanzi_Disp(12键dn减)
hanzi_Disp(22键mode返回)
}
while(1)
{
uchar bb[2]
bb[0]0x30+ts10
bb[1]0x30+ts10
hanzi_Disp(31限:)
Lcd_WriteData(bb[0])
Lcd_WriteData(bb[1])
hanzi_Disp(36RH)
ts1()
delayms(5)
if(mode0)
{
delayms(1)
if(mode0) while(1)tchange()
}
if(mode0)
{
delayms(1)
if(mode0)
{ change()flag0 break }
}
}
}
*************湿度限修改*************
int tchangex()
{ uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(02键up增)
hanzi_Disp(12键dn减)
hanzi_Disp(22键mode返回)
}
while(1)
{
uchar bb[2]
bb[0]0x30+tx10
bb[1]0x30+tx10
hanzi_Disp(31限:)
Lcd_WriteData(bb[0])
Lcd_WriteData(bb[1])
hanzi_Disp(36RH)
tx1()
if(mode0)
{
delayms(1)
if(mode0)
{ change()flag0 break }
}
}
}
*****************温度限选择**************
void hchange()
{ uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(00改变温度限:)
hanzi_Disp(10键up改变限)
hanzi_Disp(20键dn改变限)
hanzi_Disp(30键en返回)
}
while(1)
{
if(up0)
{
delayms(1)
if(up0)
hchanges()
}
if(dn0)
{
delayms(1)
if(dn0)
hchangex()
}
if(en0||flag0)
{
delayms(1)
if(en0||flag0)
{change()break}
}
}
}
**************湿度限选择************
void tchange()
{uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(00改变湿度限:)
hanzi_Disp(10键up改变限)
hanzi_Disp(20键dn改变限)
hanzi_Disp(30键en返回)
}
while(1)
{if(up0)
{delayms(1)
if(up0)
tchanges()
}
if(dn0)
{delayms(1)
if(dn0)
tchangex()
}
if(en0||flag0)
{delayms(1)
if(en0||flag0)
{change()break}
}
}
}
**************选择温湿度修改**************
void change()
{
uchar k
for(k0k<60k++)
{ Lcd_Init()
hanzi_Disp(00改变温湿度限)
hanzi_Disp(10键up改变温度)
hanzi_Disp(20键dn改变湿度)
hanzi_Disp(30键en返回)
}
while(1)
{if(up0)
{delayms(1)
if(up0)
hchange()
}
if(dn0)
{
delayms(1)
if(dn0)
hchange()
}
if(en0||flag0)
{
delayms(1)
if(en0||flag0)
{flag0break}
}
}
}

void disp1() **************实时温湿度显示(包括报警)**************
{
unsigned char b[4]b1[4]b2[3]
hs1()hx1()ts1()tx1()
cnt2d_data(1)*500010243湿度
cnthout()温度
if(cnt>hs*100||cntts*10||cnt2 else {warm1wlight0}
n[0]0x30+cnt100010
n[1]0x30+cnt1000100
n[2]0x30+cnt10010
n[3]0x30+cnt10
nn[0]0x30+cnt2100010
nn[1]0x30+cnt21000100
nn[2]0x30+cnt210010
nn[3]0x30+cnt210
b1[0]0x30+hs10
b1[1]0x30+hs10
b1[2]0x30+ts10
b1[3]0x30+ts10
b[0]0x30+hx10
b[1]0x30+hx10
b[2]0x30+tx10
b[3]0x30+tx10
Lcd_Init()
delayms(10)
hanzi_Disp(00前温度)
Lcd_WriteData(n[0])
Lcd_WriteData(n[1])
hanzi_Disp(05)
Lcd_WriteData(n[2])
Lcd_WriteData(n[3])
hanzi_Disp(07℃)
delayms(1)
hanzi_Disp(10前湿度)
Lcd_WriteData(nn[1])
Lcd_WriteData(nn[2])
hanzi_Disp(15)
Lcd_WriteData(nn[3])
hanzi_Disp(16RH)
delayms(1)
hanzi_Disp(20温限)
Lcd_WriteData(b[0])
Lcd_WriteData(b[1])
hanzi_Disp(23)
Lcd_WriteData(b1[0])
Lcd_WriteData(b1[1])
hanzi_Disp(25℃)
hanzi_Disp(30湿限)
Lcd_WriteData(b[2])
Lcd_WriteData(b[3])
hanzi_Disp(33)
Lcd_WriteData(b1[2])
Lcd_WriteData(b1[3])
hanzi_Disp(35RH)
if(cnt<(hs*100+1000)&&(cnt>hs*100))
{ unsigned int w1
w1cnths*100
b2[0]0x30+w1100
b2[1]0x30+w110010
b2[2]0x30+w110
Lcd_Init()
hanzi_Disp(12橙色警报)
hanzi_Disp(20温度超高 )
Lcd_WriteData(b2[0])
hanzi_Disp(25)
Lcd_WriteData(b2[1])
Lcd_WriteData(b2[2])
hanzi_Disp(27度)
}
delayms(5000)
if(up0||flag1)
{
delayms(1)
if(up0||flag1)
flag1
}
if(dn0||flag2)
{
delayms(1)
if(dn0||flag2)
flag2
}

}
**************存储器起始命令函数**************
void Start(void)
{
Sda1
Scl1
Sda0
}
void Stop(void) **************存储器停止命令函数**************
{
Sda0
Scl1
Sda1
}
void Ack(void)
{
Sda0
Scl1
Scl0
}
void NoAck(void)
{
Sda1
Scl1
Scl0
}
void Send(uchar Data)
{
uchar BitCounter8 位数控制
uchar temp 中间变量控制
do
{
tempData
Scl0
if((temp&0x80)0x80) 果高位1
Sda1
else
Sda0
Scl1
Scl0
tempData<<1 RLC
Datatemp
BitCounter
}while(BitCounter)
Scl0
}
uchar Read(void)
{
uchar temp0
uchar temp10
uchar BitCounter8
Sda1
do{
Scl0
Scl1
if(Sda) 果Sda1
temptemp|0x01 temp低位置1
else
temptemp&0xfe 否temp 低位清0
if(BitCounter1)
{
temp1temp<<1
temptemp1
}
BitCounter
}while(BitCounter)
return(temp)
}
void WrToROM(uchar Data[]uchar Addressuchar Num)
{
uchar i
uchar *PData
PDataData
for(i0i{
Start() 发送启动信号
Send(0xa0) 发送SLA+W
Ack()
Send(Address+i) 发送址
Ack()
Send(*(PData+i))
Ack()
Stop()
delayms(250)
led10
}
}
**************读出ROM数**************
void RdFromROM(uchar Data[]uchar Addressuchar Num)
{
uchar i
uchar *PData
PDataData
for(i0i {
Start()
Send(0xa0)
Ack()
Send(Address+i)
Ack()
Start()
Send(0xa1)
Ack()
*(PData+i)Read()
Scl0
NoAck()
Stop()
}
led11
}
void store() 存储函数
{ p34p34
if(cun>20) cun0
delayms(1)
WrToROM(nadd[cun]4) 温度值写入rom
delayms(1)
WrToROM(nnadd[cun+1]4) 湿度值写入rom
delayms(1)
cuncun+2
}
****************查询历史******************
void history()
{ uint ccmmm
store()
jjcun
mmm90
while(1)
{

if(mmm<0) mmm90
if(jj>20) jj0
mm[0]0x30+mmm1000100
mm[1]0x30+mmm10010
mm[2]0x30+mmm10
RdFromROM(data_1add[jj]4)
RdFromROM(data_3add[jj+1]4)
delayms(1)
for(cc0cc<60cc++)
{
Lcd_Init()
hanzi_Disp(00温度:)
Lcd_WriteData(data_1[0])
Lcd_WriteData(data_1[1])
hanzi_Disp(04)
Lcd_WriteData(data_1[2])
Lcd_WriteData(data_1[3])
hanzi_Disp(06℃)

hanzi_Disp(10湿度:)
Lcd_WriteData(data_3[0])
Lcd_WriteData(data_3[1])
Lcd_WriteData(data_3[2])
hanzi_Disp(14)
Lcd_WriteData(data_3[3])
hanzi_Disp(16RH)
hanzi_Disp(20前)
Lcd_WriteData(mm[0])
Lcd_WriteData(mm[1])
Lcd_WriteData(mm[2])
hanzi_Disp(23秒温湿度)
hanzi_Disp(30键en返回)
}
if(mode0) { delayms(1)if(mode0) {jjjj+2mmmmmm9}}
if(en0) { delayms(1)if(en0) {flag0 break}}
}
}
}
****************函数**************
void main(void)
{ TMOD0x01 定时器0初始化
TH0THCO
TL0TLCO
TR01
ET01
EA1
PSB0
AUXR10x04
Lcd_Init()
hanzi_Disp(02欢迎进入)
hanzi_Disp(10温湿度检测系统)
delayms(10000)
hanzi_Disp(00姓名:魏钊)
hanzi_Disp(10 ^_^ )
hanzi_Disp(20专业:测控1001 )
hanzi_Disp(30学号:2010441466 )
delayms(10000)
while(1)
{
if(mode0||flag0)
{
delayms(1)
if(mode0||flag0)
{
t_flag0
flag0
EA1}
}
if(up0||flag1)
{
delayms(1)
if(up0||flag1)
{
t_flag1
flag1
EA0}
}
if(flag2||dn0)
{
delayms(1)
if(flag2||dn0)
{
t_flag1
flag2
EA0}
}
if(en0||t_flag0)
{
delayms(1)
if(en0||t_flag0)
t_flag0
EA1
}
switch(flag)
{
case 0 disp1() break
case 1 change() break
case 2 history() break
defaultbreak

}
}
}
重庆科技学院
文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

单片机课程设计作息时间控制器的设计报告

XX大学单片机课程设计报告作息时间控制器设计姓 名: 学 号: 专业班级: 自动化班 指导老师: 所在学院:电气工程与自动化学院2009年X月X日 摘要本设计是作息时间控制器的设计,由单片机AT89C52芯片和L

文***享 3年前 上传566   0

单片机课程设计报告基于单片机的温控系统

职业学院机械与电子工程学院基于单片机温控系统课程设计报告班 级 电信班 学生姓名 学 号 指导教师 时 间 2011 目录摘 要 I1系统方案设计及组成 I2系统设计 1

文***品 3年前 上传996   0

基于51单片机的定时闹钟设计单片机课程设计

单片机 课 程 设 计 报 告 院系: 信息工程学院 专业: 电子信息工程 课程设计题目: 基于51单片机的定时闹钟设计

文***品 2年前 上传496   0

基于单片机的室内温湿度

本文采用STC89C52单片机、DHT11传感器、1602LCD显示屏和继电器控制等模块,完成温湿度测试和控制任务,其关键部分为(1)温湿度传感器DHT11实时测试温度、湿度。(2)判断采集的数值与设置值是否一致,并控制继电器进行下一步的控制。

爱***享 3年前 上传690   0

基于单片机温湿度测量系统的研究与设计

温湿度的测量应用范围是很广的,对温湿度测量系统的研究也具有深远意义,本课题针对国内外对温湿度测量系统的研究与发展状况,分析了目前温湿度测量系统存在的主要问题,设计了一种基于单片机的温湿度测量系统,对某些有着特殊要求温度

文***享 3年前 上传393   0

基于单片机温室大棚温湿度采集系统设计

温度和湿度是在农业生产中常见的和基本的参数之一,它们会大幅度影响作物产量和品质,现代科学和技术在提高农业生产力方面发挥着重要作用,以确定温度和湿度,实时显示、储存和监测。国内生产,产品质量与节能。本次设计欲将单片机、传感器、计算机技术相结合设 计出一套符合现代温 室大棚的温湿度采集系统。

王***朝 4年前 上传568   0

基于单片机的彩灯控制器设计毕业设计

 题目: 基于单片机的节日彩灯控制器的设计 作 者 姓 名: 学 号: 系 (院): 机械与电子工程学院 专 业: 电子信息工程 指导教师姓名:

文***品 3年前 上传563   0

基于单片机的鱼缸控制器设计毕业设计论文

基于单片机的鱼缸控制器设计 摘 要 本文是基于单片机的鱼缸控制器的设计,目前市场上有各种各样的观赏类的鱼缸,进入了不同的应用场合,如家庭、宾馆和商场等等,但现有的鱼缸一般需要人为的操作,比如水温的检测、水循环、鱼儿喂食和液位控制等,给人们带来了很大的不便。本论文就是基于这一现状,分析和研究目前大多数的鱼缸的控制设备和现状,提出了一种新型的基于单片机控制的自动化鱼缸控制器,该控制器是以

z***u 5年前 上传2470   0

单片机课程设计报告

1 方案设计与论证1.1 硬件总体设计设计并制作一个基于单片机的数字电压表的电路其结构框图如图 1-1 所示: 图1-1 硬件结构框图(1)单片机最小系统电路部分 (2)数码管显示部分(3) PCF8591芯片 AD转换部分(4)外部电压采集部分

文***享 5年前 上传1670   0

基于FPGA的多路彩灯控制器的设计课程设计

 FPGA课程设计报告 学院: 信息工程学院班 级: 信息级班姓 名: 学 号: 完成时间: 2015年X月X日 评阅意见: 题目基于FPGA多路彩灯控制器的设计一、引言 21世纪,电子技术迅猛发展,高薪技术日新月异。传统的设计方法正逐步退出历史的舞台,取而代之的

文***品 3年前 上传528   0

基于单片机的土壤温湿度检测计设计毕业设计

基于单片机的土壤温湿度检测计设计毕业设计 目 录 1 绪论 1 1.1选题背景及意义 1 1.2设计任务与要求 1 2 总体方案设计 2 3单元模块设计 5 3.1各单元模块功能介绍及电路设计 5 3.1.1时钟模块简介 5 3.1.2 复位模块简介 6 3.1.3 报警模块简介 6 3.1.4 显示模块简介 7 3.2特殊器件的介绍 8 3.3.1 土壤湿度传

文***品 5年前 上传1823   0

基于单片机的拔河游戏机设计课程设计

××大学××学院××课程设计基于单片机的拔河游戏机设计学生姓名学 号所 在 系专业名称班 级指导教师成 绩 ××大学××学院二○一二年X月摘要:近年来随着计算机在社会领域的渗透和大规模集成电

文***享 3年前 上传585   0

基于单片机的交通灯显示系统的设计与研究课程设计

 XX学院课程设计课 程 单片机课程设计 题 目 交通灯系统 院 系 机电系 专业班级 学生姓名

文***品 3年前 上传901   0

基于单片机的数字温度计设计课程设计

基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单

文***享 3年前 上传937   0

基于单片机的直流稳压电源设计课程设计

课程设计论文 设计题目:单片机控制直流稳压电源设计学校:院系:专业:年级:2013级姓名学号: 指导教师 单片机控制的直流稳压电源设计摘要: 本系统以 AT89S52 单片机作为系统的核心,由D/A数字模拟转换模块、按键、LED串口显示模块等模块组成一个

文***享 4年前 上传904   0

基于51单片机数字温度计设计课程设计

课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: 指导教师: 设计日期:成 绩:XX大学XX学院电气学院 基于51单片机数字温度计设计一、设计目的 1、掌握单片机电路的设计原理

文***品 3年前 上传977   0

基于单片机的“叮咚”门铃设计课程设计

基于单片机的“叮咚”门铃设计摘要:本文设计了一种基于单片机的“叮咚”门铃,主要有键盘,音频功率放大器LM386,AT89S51单片机,扬声器等构成,通过单片机定时/计数器t0来产生700Hz和500Hz的频率来使扬声器发出“叮咚”声音。关键词:AT89C51单片机 ;扬声器 ;频率;前言:1在现代电子产品中,“叮咚”门铃以它成本低,方便快捷等优点占据了很大的市场空间。本课程设计是基于

文***品 3年前 上传757   0

基于单片机的自动节水灌溉系统课程设计

 数理与信息工程学院应用系统设计 题 目: 基于单片机的自动节水灌溉系统 专 业: 计算机科学与技术(专升本) 班 级: 计算机班 姓 名: 学号: 指导老师:

文***享 3年前 上传612   0

基于单片机的遥控窗帘课程设计

《单片机应用与仿真训练》设计报告基于单片机的遥控窗帘设计姓 名: 学 号: 专业班级: 11电气升班 指导老师:   所在学院: 电气工程与自动化系

z***u 1年前 上传293   0

基于单片机的数字温度计课程设计

摘要 本文提出了关于MCS-51系列单片机的数字温度计的制作电路方法和编程思想。设计一直灌输着电子电路制作软硬结合,以硬件为主的理念。采用模块化的设计思想。硬件模块分为温度的感应模块、时钟模块、控制模块、显示模块。软件同样采用模块化设计,分为中断模块、温度转化模块、时间调整模块。控制器采用单片机AT89S51,时钟电路采用万年历芯片DS1302,温度传感器采用DS18B20,用数码管并行

文***享 3年前 上传783   0

基于单片机淬火炉温温度控制课程设计

基于PID控制的淬火炉炉温控制系统设计1总体方案设计 这次课程设计针对PID控制的淬火炉进行温度控制,设计步骤分为以下几步。 首先进行控制系统的建模和数字控制器设计,设计方案为:选用Ziegler-Nichols方法进行PID参数整定,建立闭环控制系统,用MATLAB仿真,得到达到要求的PID参数。A/D转换温度采集加热电路D/A转换AT89C52单片机硬件的设计与

文***品 1年前 上传342   0

基于51单片机音乐盒课程设计

基于51单片机音乐盒课程设计 课程名称: 微机原理课程设计 题 目: 基于51单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本设计是一个基于STC89C52RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路

l***金 5年前 上传1274   0

单片机课程设计实习报告

单片机课程设计实习报告  实训任务:  做单一灯的左移右移,八个发光二极管l1-l8分别接在单片机的p1.0→p1.2→p1.3┅→p1.7→p1.6→┅→p1.0亮,重复循环3次。然后左移2次,右移2次,闪烁2次(延时的时间0.2秒)。  一、 实训目的和要求:  (1) 熟练掌握keil c51集成开发环境的使用方法  (2) 熟悉keil c51集成开发环境调试功能的使

a***冰 11年前 上传820   0

基于单片机构成环境温湿度实时测控系统的研究

编号 本科生毕业论文基于ARM的数控冲床自动送料系统设计ARM-based CNC punch automatic feeding system design学 生 姓 名专 业学 号指 导 教 师学 院 二〇一三年六月 毕业设计(论文)原创承诺书1.本人承诺:

天***猩 3周前 上传71   0

开题报告-基于单片机的交通灯设计

开题报告电气工程及自动化基于单片机的交通灯设计一、综述本课题国内外研究动态,说明选题的依据和意义当今社会,随着日益增长的社会发展,人们对于社活的水平也日益提高,不仅在物质享受方面有所提高,在精神享受方面也逐渐增长。最明显的就是汽车的增长。现在几乎每户人家都有一辆汽车,以至于道路经常堵塞,频繁出现交通事故。由于这种状况的出现,这就要求能有效的管理交通,其中十字路口的交通灯起着巨大的作用。因

毕***阁 4年前 上传1254   0