资源描述
单片机课程设计报告
单片机原理及系统课程设计
专 业:电气工程及其自动化
班 级:
姓 名:
学 号: 7
指导教师:
评语:
平时(40)
修改(30)
报告(30)
总成绩
兰州交通大学自动化与电气工程学院
2012 年 7月 1日
1引言
太阳能热水器控制器设计
2 方案设计及原理
2.1 设计方案
如图2-1所示,本系统主要由控制器、自动控制阀、手动控制阀、水位检测电极、水温检测传感器、电阻加热丝、储水箱等组成。
图 2-1 系统组成示意图
2.2 系统组成及工作原理
本系统由温度传感器及调理电路、水位传感器及调理电路、A/D转换电路、液晶显示电路、FPGA控制模块、按键输入和继电器执行部件组成,其中FPGA控制模块是本系统的核心。系统结构如图2-1所示。
(1) 液位传感器采用ATSl73型霍尔元件121,若干霍尔元件固定在一个垂直导槽上,霍尔元件的输出经电阻网络转成不同电压,经ADC送入智能控制模块中。
(2) FPGA控制部分根据检测到的水位信号、温度信号以及用户的设定或操作,通过必要的逻辑运算,以确定当前应该进行的操作,并通过输出口送至执行部件,进而控制进水阀、加热泵的状态,以实现所要求的控制功能。
2.3 单元模块设计
2.3.1 单片机概述
图3.1中,晶体振荡器的频率选6MHZ,复位电路采用上电复位,电路参数如图中所示,以满足系统复位时两个机器周期的高电平的要求。由于CPU的内部已含有程序存储器,所以EA引脚接高电平。
图2.3.1时钟电路与复位电路
该水位自动显示控制器采用AT89C51单片机,机内有一高增益反相放大器,构成自激振荡电路,振荡频率取6MHz,外接6MHz晶振,两个电容C1、C2取20pF,以便于起振荡的作用。右图中XTAL1为内部时钟工作电路的输入,XTAL2为来自反向振荡器的输出。
2.3.2温度检测模块
本设计温度传感器选用AD590。AD590属于半导体集成电路温度传感器,测温范围-55℃- +150℃,在其二端加上一定的工作电压,其输出电流与温度变化成线性关系,1uA/°K,误差有几种等级:±1、±0.5、±0.3℃,本设计中选取±0.5℃品种。OP07为高精度运算放大器,AD590电流流经R1、RP1转换为电压信号,
R2、RP2为运算负反馈电阻,成反相比例放大器,将温度信号转换成0-5V的电压信号,ADC0832再将其转换为数字信号,输入CPU。图3.2温度检测和A/D转换电路图。
图2.3.2温度检测电路
3 硬、软件设计
3.1 硬件设计
AT89C51是一个低功耗高性能CMOS 8位单片机,4k Bytes Flash只读程序存储器(ROM),512 Bytes 内部数据存储器(RAM),片内的Flash存储器,AT89S51片内总共有256字节的用户数据区,8位中央处理器和Flash存储单元。
单片机的定时器To做16位计数器,四位数码管采用动态扫描方式显示,长度计量仪采用0.5英寸共阳极连接的LED数码管,LED数码管由发光二极管作为显 示字段的数码型显示器件。
3.2 软件设计
主程序流程图如图4.1
开中断
调水位控制子程序
开始
初始化
调温度控制子程序
调键盘控制子程序
判定水位?
显示温度
温度<设定
启动辅助加热
延时
关闭加热
Y
图4.1主程序流程图
4 总结
本控制装置充分应用AT89C51单片机的软硬件资源,该系统具有智能化、结构紧凑、性能稳定等优点,这次基于单片机的太阳能温控进水及水温水位显示控制装置,已经广泛应用于当今社会,以其无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中,本设计仅是太阳能热水器控制器的极小部分展示。
5 参考文献
[1] 刘刚、秦永左. 单片机原理及应用. 北京:北京大学出版社,2006.
[2] 胡汉才.单片机原理及其接口技术. 北京:清华大学出版社,2004.
[3] 蔡美琴、张为民.MCS-51 系列单片机系统及其应用(第二版) 高等教育出版社,2004.
附录1:程序仿真图
附录2:程序
2.1 主程序
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP CT0 ;转定时器0中断服务程序
ORG 0030H ;主程序
MAIN: MOV 30H,#00H ;0.1秒单元
MOV 20H,#00000100B ;置相应标志位
MOV P2,#0FFH ;P2口不显示,电磁阀不通电,不加热
MOV SP,#5FH ;设置堆栈深度
SETB EA ;开中断
SETB ET0 ;允许T0中断
MOV TMOD,#01010001B ;T0方式1定时,T1工作于方式1计数
MOV TH0,#3CH ;定时常数
MOV TL0,#0B7H
MOV TH1,#00H ;清计数单元
MOV TL1,#00H
SETB TR0 ;启动定时定时器0
SETB TR1 ;启动T1
MOV 28H,#60 ;设置初始温度为60度
MOV 40H,#0FFH ;转显示状态为全灭
MOV 36H,#0 ;清温度存放单元
MOV 37H,#0
MOV 2FH,#1 ;目标水位为1
LOOP:LCALL WATER ;水位检测
LCALL DISP ;显示程序
LCALL KEY ;键盘处理程序
SJMP LOOP
2.2 中断子程序
CT0: MOV TH0,#3CH ;重置时间初值
MOV TL0,#0B0H
PUSH AC ;保护现场
PUSH PSW
SETB RS0 ;选工作寄存器1组
MOV R1,#30H ;指向0.1秒单元
INC @R1
CJNE @R1,#10,RET_TIME
MOV @R1,#00H
CPL 00H
LCALL TEST_TEMP ;调温度处理程序
RET_TIME:POP PSW ;恢复现场
POP ACC
RETI ;中断返回
2.3温度检测程序
TEST_TEMP: ;温度处理程序,将温度存放在27H单元,
设置的温度存放于28H单元
JB 01H,RE_AD ;若为设置状态,则不进处理
MOV SCON,#00H ;置串口方式0,禁止接收
CLR ES ;串口禁中
CLR P3.6 ;片选0832
MOV A,#06H ;置CH0通道配置
ADC0: MOV SBUF,A ;启动A/D
ADC1: JNB TI,ADC1 ;串行发送启动及通道配置信号
CLR TI ;清发送中断标志
SETB REN ;允许(启动)串行接收
ADC2: JNB RI,ADC2 ;接收第一字节
CLR RI ;清接收中断标志,同时启动接收第二字节
MOV A,SBUF ;读第一字节数据
MOV B,A ;暂存
ADC3: JNB RI,ADC3 ;接收第二字节
CLR RI ;清接收中断标志
MOV A,SBUF ;读第二字节数据
ANL A,#0FH ;第二字节屏蔽高4位
ANL B,#0F0H ;第一字节屏蔽低4位
ORL A,B ;组合
SWAP A ;高低4位互换,组成正确的A/D数据
MOV 36H,A ;存A/D数据
CLR REN ;两通道A/D完毕,禁止接收
SETB P3.6 ;清0832片选
RET
8
展开阅读全文