空调温度控制器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机控制课程设计

学生姓名:

学生学号:

所在班级:

所在专业:

指导教师:

课题空调温度控制器设计

一.设计任务(要求)

1.设计任务

运用<<微型计算机原理与接口技术>>、《单片机原理及应用》等课程知识,根据题目要求进行软硬件系统的设计和调试,从而加深对本课程知识点的理解,使学生综合应用知识能力、设计能力、调试能力及报告撰写能力等显著提高。

了解闭环控制的基本原理,熟悉A/D变换原理和编程方法,掌握键盘扫描和LED 显示原理和编程方法。

2.设计要求

利用8255扩展LED显示电路,键盘电路,A/D变换电路,完成类似空调恒温控制设计。

(1)可以利用实验仪上的电位器模仿温度变化,利用ADC0809采样可变电位器

的输出电压,可将初始ADC0809的输出值作为设定温度;

(2)加热和致冷电机可以用发光管代替,加热时红色发光管亮,制冷时驱动绿色

发光管亮;

(3)当单片机采样到可变电位器的输出电压值超过设定温度+2℃时,启动致冷电

机;采样到可变电位器的输出电压值低于设定温度-2℃时,启动加热电机。二.设计方案

1. 设定一恒温温度25度,通过键盘来控制它的大小,设定一键温度加一,一键温度减

一,电位器所出的模拟温度来和恒温温度进行比较。

2.对各个子程序(LED显示,键盘扫描,A/D采样)在主程序实行调用,以此来达到实

验的要求。

三.原理框图

A/D采样子程序

温度控制主程序

四.系统模块详细设计与调试

系统模块的设计

1.A/D转换子程序

BEING: MOV DPTR , #8000H ; AD转换子程序

MOV DPTR , #8000H;启动A/D转换

MOVX @DPTR , A

MOV R6 , #14H

DELAY2: NOP

NOP

NOP

DJNZ R6,DELAY2

MOVX A,@DPTR

MOV 47H,A ; 温度AD转换结果暂存47H单元

ACALL CHANGE ; 十六进制转十进制子程序

LCALL DISPLAYLED

RET

CHANGE: MOV R1 , #00H

MOV R2,#00H

CLR C

CHAN: SUBB A,#64H

JC CHAN1

INC R1

AJMP CHAN

CHAN1: ADD A,#64H

CHAN2: SUBB A,#0AH

JC CHAN3

INC R2

AJMP CHAN2

CHAN3: ADD A, #0BH

MOV 64H,A ;转换结果个位暂存2AH单元

MOV 63H,R2 ;十位存2BH单元

MOV 62H,R1 ;百位存2CH单元

RET

2.LED转换子程序

DISPLAYLED :MOV R0,#BUF ;r0指向显示缓冲首地址MOV R1,#5 ;要循环2次,有2个LED

MOV R2,#00100000B ;从第一位开始

LOOP: MOV DPTR,#OUTBIT

MOV A,#0

MOVX @DPTR,A ;关所有的位的显示

MOV A,@R0

MOV DPTR,#LEDMAP ;查表

MOVC A,@A+DPTR

MOV DPTR,#OUTSET

MOVX @DPTR,A ;输出r0指向的单元的数

MOV DPTR,#OUTBIT

MOV A,R2

MOVX @DPTR,A ;开显示,将这个数显示出来(r2决定在哪一位显示)

MOV R6,#01 ;延时

CALL DELAY ;延时

MOV A,R2

RR A

MOV R2,A ;准备显示下一位数

INC R0 ;r0指向下个单元

DJNZ R1,LOOP ;循环六次

MOV DPTR,#OUTBIT

MOV A,#0

MOVX @DPTR,A ;关所有的位的显示

RET

3.按键子程序

ANJIAN:

CALL TESTKEY ;检测键盘是否有按键按下

JZ ANJIAN

MOV R6,#10 ;延时去抖动

CALL DELAY

CALL TESTKEY ;再次检测键盘是否有按键按下

JZ ANJIAN

MOVX @DPTR,A

MOV R1,#00100000B

MOV R2,#6

KLOOP: MOV DPTR,#OUTBIT ;扫描,得到按键的行和列

MOV A,R1

CPL A ;(取反)用零去扫描各列

MOVX @DPTR,A

CPL A

RR A ;下一列

MOV R1,A ;R1暂存列值

MOV DPTR,#IN

MOVX A,@DPTR ;读行状态

CPL A

ANL A,#0FH

JNZ GOON1

DJNZ R2,KLOOP ;下一列扫描(一轮6次)

MOV R2,#06H

SJMP KLOOP ;下一轮扫描

GOON1: ;按照行列计算键值

MOV R1,A ;行号放在R1内

相关文档
最新文档