ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:204.32KB ,
资源ID:5878524      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5878524.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(空调温度控制器设计2.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

空调温度控制器设计2.docx

1、空调温度控制器设计2南京工程学院 课程设计任务书 课 程 名 称: 单片机原理及应用A 院(系、部、中心): 自动化学院 专 业: 自动化(数控技术应用) 班 级: 数控061 姓 名: 刘新财 24号 起 止 日 期: 2008.12.172008.12.21 指 导 教 师: 孙来业 课题 空调温度控制器设计一 设计任务(要求)1. 设计任务 运用课程等知识,根据题目要求进行软硬件系统的设计和调试,从而加深对本课程知识点的理解,使学生综合应用知识能力、设计能力、调试能力及报告撰写能力等显著提高。了解闭环控制的基本原理,熟悉A/D变换原理和编程方法,掌握键盘扫描和LED显示原理和编程方法。2

2、. 设计要求 利用实验仪上显示电路,键盘电路,A/D变换电路,完成类似空调恒温控制设计(1)可以利用实验仪上的电位器模仿温度变化(2)加热和致冷电机可以用发光管代替,加热时红色发光管亮,制冷时驱动绿色发光管亮(3)要求可以用键盘预设恒温温度,当外界温度超过设定温度+/-2时,就要启动加热或致冷电机。二设计方案 1. 设定一恒温温度25度,通过键盘来控制它的大小,设定一键温度加一,一键温度减一,电位器所出的模拟温度来和恒温温度进行比较。 2.对各个子程序(LED显示,键盘扫描,A/D采样)在主程序实行调用,以此来达到实验的要求。三 原理框图 A/D采样子程序LED显示子程序 键盘扫描子程序温度控

3、制主程序 四 系统模块详细设计与调试系统模块的设计1. A/D转换子程序BEING: MOV DPTR , #8000H ; AD转换子程序 MOV DPTR , #8000H;启动A/D转换 MOVX DPTR , A MOV R6 , #14HDELAY2: NOP NOP NOP DJNZ R6,DELAY2 MOVX A,DPTR MOV 47H,A ; 温度AD转换结果暂存47H单元 ACALL CHANGE ; 十六进制转十进制子程序 LCALL DISPLAYLED RETCHANGE: MOV R1 , #00H MOV R2,#00H CLR CCHAN: SUBB A,#6

4、4H JC CHAN1 INC R1 AJMP CHANCHAN1: ADD A,#64HCHAN2: SUBB A,#0AH JC CHAN3 INC R2 AJMP CHAN2CHAN3: ADD A, #0BH MOV 64H,A ;转换结果个位暂存2AH单元 MOV 63H,R2 ;十位存2BH单元 MOV 62H,R1 ;百位存2CH单元 RET2. LED转换子程序 DISPLAYLED :MOV R0,#BUF ;r0指向显示缓冲首地址 MOV R1,#5 ;要循环2次,有2个LED MOV R2,#00100000B ;从第一位开始LOOP: MOV DPTR,#OUTBIT

5、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

6、 A,#0 MOVX DPTR,A ;关所有的位的显示 RET3按键子程序 ANJIAN: CALL TESTKEY ;检测键盘是否有按键按下 JZ ANJIAN MOV R6,#10 ;延时去抖动 CALL DELAY CALL TESTKEY ;再次检测键盘是否有按键按下 JZ ANJIAN MOVX DPTR,A MOV R1,#00100000B MOV R2,#6KLOOP: MOV DPTR,#OUTBIT ;扫描,得到按键的行和列 MOV A,R1 CPL A ;(取反)用零去扫描各列 MOVX DPTR,A CPL A RR A ;下一列 MOV R1,A ;R1暂存列值 MO

7、V 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内 MOV A,R2 ;R2中放的是列号 DEC A ; RL A ; RL A ; MOV R2,A ;R2=(列号-1)*4 MOV A,R1 MOV R1,#4LOOPC: RRC A JC EXIT INC R2 DJNZ R1,LOOPC ;行值(0100)右移,并统计移的位数,移的位数就是行值EX

8、IT: ;查表得到键值 MOV A,R2 MOV DPTR,#KEYTABLE MOVC A,A+DPTR MOV R2,AWAITRELEASE: MOV DPTR,#OUTBIT ;等待按键释放,将键值存在A寄存器中 CLR A MOVX DPTR,A MOV R6,#10 ; CALL DELAY ;延时 CALL TESTKEY ;测试按键是否放开 JNZ WAITRELEASE ;是的 MOV A,R2 RET调试(1) 调试的过程A 在实验系统中输入程序,并对其进行编译修正,直到没有错误。B 打开试验箱,对照自己程序,对其进行接线。 C 与计算机连接并进行执行,观察试验箱上各个器件

9、显示的结果,发现错误并对其修改直到实验结果与实验要求一致(2) 调试中遇到的问题实验中遇到最大的问题还是键盘输入的问题,加一减一看似简单但在实验过程中总会出现乱码,最后我把加一减一写了2个子程序,对子程序进行调用,解决了上面出现的问题。=将缓冲区的数加1的子程序=JIAYI: MOV A,#10 MOV B,BUF MUL AB ADD A,BUF+1 MOV R7,A INC A MOV B,#10 DIV AB MOV BUF,A MOV BUF+1,B RET;=将缓冲区的数减1的子程序=JIANYI: MOV A,#10 MOV B,BUF MUL AB ADD A,BUF+1 MOV

10、 R7,A DEC A MOV B,#10 DIV AB MOV BUF,A MOV BUF+1,B RET 五 设计总结这次课程设计是一次综合性质的实验,对我以前学的A/D转换啊,键盘输出等等的一综合运用,所以这次实验不但是巩固了我们以前所学的知识,也给我们带来的新的感悟。程序虽然做出来了。但程序肯定不只一种,方法可以改变,我想我这次课程设计还没结束,我应该学学别人的程序,学会用8255完成,学会用点阵来代替二极管来显示冷和热。有人总是问,我们在大学学了什么,我想我们学的就是我们身边的。六 参考文献单片机原理及应用实验指导书,屈波等编,2008年单片机原理及应用,赵德安等编,机械工业出版社,

11、2004单片机基础,李广弟等,北京航空航天大学出版社,2004年七 附件材料1.硬件接线图接线连接孔1连接孔21AD-CSCS02IN0电位器输出3P1.0L04P1.1L15KEY/LED-CSCS13. 实物图4.程序清单 T20MS EQU 65536-10000C20MS EQU 30HIN EQU 09001H ;键盘读入口OUTBIT EQU 09002H ;位控制口OUTSET EQU 09004H ;段控制口BUF EQU 60H ;显示缓冲区 ORG 0000H LJMP START;=键码的定义=KEYTABLE: DB 17H,16H,15H,14H DB 13H,12H

12、,11H,10H DB 0DH,0CH,0BH,0AH DB 0EH,03H,06H,09H DB 0FH,02H,05H,08H DB 00H,01H,04H,07H;=八段管显示码=LEDMAP: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH DB 39H,5EH,79H,71H;=A/D转换子程序=BEING: MOV DPTR , #8000H ; AD转换子程序 MOV DPTR , #8000H;启动A/D转换 MOVX DPTR , A MOV R6 , #14HDELAY2: NOP NOP NOP DJNZ

13、R6,DELAY2 MOVX A,DPTR MOV 47H,A ; 温度AD转换结果暂存47H单元 ACALL CHANGE ; 十六进制转十进制子程序 LCALL DISPLAYLED RET CHANGE: MOV R1 , #00H MOV R2,#00H CLR CCHAN: SUBB A,#64H JC CHAN1 INC R1 AJMP CHANCHAN1: ADD A,#64HCHAN2: SUBB A,#0AH JC CHAN3 INC R2 AJMP CHAN2CHAN3: ADD A, #0BH MOV 64H,A ;转换结果个位暂存2AH单元 MOV 63H,R2 ;十位

14、存2BH单元 MOV 62H,R1 ;百位存2CH单元 RET;=延时子程序=Delay1: ; 延时子程序 MOV R7, #0FFHAA: DJNZ R7,AA ret;=将缓冲区的数加1的子程序=JIAYI: MOV A,#10 MOV B,BUF MUL AB ADD A,BUF+1 MOV R7,A INC A MOV B,#10 DIV AB MOV BUF,A MOV BUF+1,B RET;=将缓冲区的数减1的子程序=JIANYI: MOV A,#10 MOV B,BUF MUL AB ADD A,BUF+1 MOV R7,A DEC A MOV B,#10 DIV AB MO

15、V BUF,A MOV BUF+1,B RET;=延时子程序=DELAY: MOV R7,#0DELAYLOOP: DJNZ R7,DelayLoop DJNZ R6,DelayLoop RET;=检测按键是否按下的子程序=TESTKEY: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV DPTR,#IN MOVX A,DPTR CPL A ANL A,#0FH RET;=按键子程序=ANJIAN: CALL TESTKEY ;检测键盘是否有按键按下 JZ ANJIAN MOV R6,#10 ;延时去抖动 CALL DELAY CALL TESTKEY ;再

16、次检测键盘是否有按键按下 JZ ANJIAN MOVX DPTR,A MOV R1,#00100000B MOV R2,#6KLOOP: 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: ;按照行列计算

17、键值 MOV R1,A ;行号放在R1内 MOV A,R2 ;R2中放的是列号 DEC A ; RL A ; RL A ; MOV R2,A ;R2=(列号-1)*4 MOV A,R1 MOV R1,#4LOOPC: RRC A JC EXIT INC R2 DJNZ R1,LOOPC ;行值(0100)右移,并统计移的位数,移的位数就是行值EXIT: ;查表得到键值 MOV A,R2 MOV DPTR,#KEYTABLE MOVC A,A+DPTR MOV R2,AWAITRELEASE: MOV DPTR,#OUTBIT ;等待按键释放,将键值存在A寄存器中 CLR A MOVX DPTR

18、,A MOV R6,#10 ; CALL DELAY ;延时 CALL TESTKEY ;测试按键是否放开 JNZ WAITRELEASE ;是的 MOV A,R2 RET;=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 MOV

19、X 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;=main=START: CALL TESTKEY ;测试按键 JZ START CALL ANJIAN ;取键值 CJNE

20、A,#0AH,START SETB P1.0 ;键值=A,开指示灯 MOV BUF,#0 ; MOV BUF+1,#0 ;显示缓冲区清零 MOV BUF+2,#0 MOV BUF+3,#0 MOV BUF+4,#0NEXT1: CALL DISPLAYLED ;显示 CALL TESTKEY ;测试按键 JZ NEXT1 CALL ANJIAN ;取键值 CJNE A,#0AH,NEXT11 LJMP START ;开关NEXT11: MOV BUF,A ;十位数存于60H单元NEXT2: CALL DISPLAYLED ;显示 CALL TESTKEY ;测试按键 JZ NEXT2 CALL

21、 ANJIAN ;取键值 CJNE A,#0AH,NEXT12 LJMP START ;开关NEXT12: MOV BUF+1,A ;十位数存于61H单元NEXT9: CALL DISPLAYLED CALL TESTKEY JZ NEXT9 CALL ANJIAN CALL JIAYI CALL JIANYI CJNE A,#0AH,NEXT10 LJMP START ;开关NEXT10: CJNE A,#0BH,NEXT3 CALL JIAYI NEXT3: CJNE A,#0CH,NEXT5 CALL JIANYI NEXT5: MOV P1 , #00H ACALL BEING ;调用转换显示子程序 MOV A , 47H SUBB A,R7 JZ NEXT6 LJMP SSNEXT6: NOPEXIT1: JMP NEXT5SS: JC HIGH1 SETB P1.0 ;降温子程序 CALL DELAY1 JMP EXIT1HIGH1: SETB P1.1 ; 升温子程序 CALL DELAY1 JMP NEXT9 NEXT4: LJMP NEXT9

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1