微原课设家用电热淋浴器的设计.docx

上传人:b****2 文档编号:18152979 上传时间:2023-04-24 格式:DOCX 页数:25 大小:291.54KB
下载 相关 举报
微原课设家用电热淋浴器的设计.docx_第1页
第1页 / 共25页
微原课设家用电热淋浴器的设计.docx_第2页
第2页 / 共25页
微原课设家用电热淋浴器的设计.docx_第3页
第3页 / 共25页
微原课设家用电热淋浴器的设计.docx_第4页
第4页 / 共25页
微原课设家用电热淋浴器的设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

微原课设家用电热淋浴器的设计.docx

《微原课设家用电热淋浴器的设计.docx》由会员分享,可在线阅读,更多相关《微原课设家用电热淋浴器的设计.docx(25页珍藏版)》请在冰豆网上搜索。

微原课设家用电热淋浴器的设计.docx

微原课设家用电热淋浴器的设计

摘要

随着社会和科学技术的日益发展,家用电热淋浴器也受到了广大家庭用户的信睐。

本次课程设计设计的项目就是模拟电热水器控制器的设计,本项目的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接。

因此,硬件电路的设计及实现相对简单。

控制系统的硬件用8086系统构成:

CPU8086,8254定时器/计数器芯片,8255并行接口芯片,键盘单元,4位7段数码管单元,A/D转换单元,电子发声器等单元。

关键字:

8254定时器/计数器8255并行接口A/D转换电子发声器等

 

1概述

到2003年,我国城市家庭热水器产品的普及率已达到71.5%。

中国家电市场调查研究课题组经过近4年的连续性调查发现,中国城市家庭热水器产品的普及率基本稳定在70%左右,城市家庭较高的普及率说明热水器市场总体上已进入成熟阶段。

然而家用电热淋浴器控制器的设计也是相当重要的,是值得引起关注的。

1.1设计内容

要求打开电源后,先设定水温,水温分为八档(30℃~100℃,每10℃为一档);按下启动键后,开始测量水温并显示,控制电热管加热。

1.2设计要求

1)控制系统硬件用8086系统构成:

CPU8086,定时器/计数器芯片,并行接口芯片,中断控制器,键盘单元,4位7段数码管单元,模数单元,蜂鸣器等单元。

2)设计控制系统应用软件。

3)系统功能:

智能启动电热管加热和停止加热、上下限水位报警等功能。

4)设定两个按键,其中一个用来增加温度,另一个用来降低温度。

5)超过上限水位和低于下限水位发出不同的报警音。

1.3设备需求

PC微机一台、TD-PIT+实验系统一套

 

2概要设计

本设计通过运用8254、8255和ADC0809等芯片来模拟设计一个家用电热淋浴器控制器。

通过此模拟电热器,可以在打开电源后,先设定水温,水温分为4档(小于30℃、30℃~60℃、60℃~100℃、大于100为一档)并且这个四个档分别对应四个不同的LED灯;按下启动键后,开始测量水温并显示在相应的显示单元上,启动电热管加热和降温功能,当温度不在设置范围内时,将会启动报警装置,对其进行报警。

2.1硬件设计

1)水温设定系统

主要是通过键盘上的16个按键,选定其中三个键,分别作为加温、减温和确定。

首先将X1~X4初始化为07H,这样键盘上就只有一行可以实现按键的输出,然后通过Y1~Y4判断哪一列有键按下,最后通过程序处理判断是否按下了此键。

2)分档加热控制系统

通过0809芯片的调节旋转按钮来达到加热的控制。

首先将温度分为四个档(0~30,30~T0,T0~100,100~255),其中T0为用户自己设置的水温,设置了相应的指示灯来提示档数。

还设置了水温不在30~100范围内时,发出声音报警的功能。

3)声音警报系统

当水温过低时系统会有一种提示灯和一种声音提示,当水温过高时系统也会有另一种提示灯和另一种声音来提示

4)LED显示灯的控制

使用LED显示灯可以更直接地控制水温,当水温大于100时,一个红灯亮,当水温在100~T0时,两个红灯亮,当水温在T0~30时,两个绿灯亮,当水温低于30时,一个绿灯亮。

2.2总体流程图

如图2-1。

图2-1总体流程图

2.3硬件连线图

如图2-2

图2-2总的硬件接线图

3详细设计

本项目的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。

硬件电路由A/D转换模块、电子发声模块和键盘扫描及数码管显示模块组成。

3.1A/D转换设计

ADC0809包括一个8拉的逐次逼近型的ACD部分,并提供一个8通道的模拟多路开关和联合寻址逻辑。

用它可直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。

ADC0809的主要技术指标有分辨率、转换时间、电源灵敏度、时钟频率等。

其芯片引脚图如图3-2,硬件接线图如图3-3。

图3-2ADC0809引脚图图3-3A/D硬件接线图

其核心代码如下:

MOVDX,AD0809;启动A/D转换

OUTDX,AL

MOVDX,AD0809;读出转换结果

INAL,DX

MOVAH,0H

MOVAD_N,AX

CALLCMP_M;确定安全范围

CALLLED;LED显示十进制

MOVAH,1;判断是否有按键按下

INT16H

JZLOOP1;无按键则跳回继续循环,有则退出

QUIT:

MOVAX,4C00H;结束程序退出

INT21H

3.2电子发声设计

根据实验提供的音乐频率表和时间表,编写程序控制8254,8254内部结构和引脚图如图3-4所示。

使其输出连接到扬声器上能发出相应的乐曲。

利用8254的方式3——“方波发生器”,将相应一种频率的计数初值写入计数器,就可产生对应频率方波。

频率表和时间表是一一对应的,频率表的最后一项为0,作为重复的标志。

根据频率表中的频率算出参应的计数初值,然后依次写入8254的计数器。

将时间表中的相对时间值带入延时程序来得到音符演奏时间。

其硬件接线图如图3-5所示。

图3-48254内部结构图和引脚图

图3-5电子发声硬件接线图

其核心代码如下:

;扬声器报警发声---------------------------------------------

BAOJINGPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;定时器0、方式3

OUTDX,AL

MOVDX,0FH

MOVDX,0FH;输入时钟为1.0416667MHz,1.0416667M=0FE502H

MOVAX,0E502H

MOVBX,FREQ

DIVBX;取出频率值计算计数初值,0F4240H/输出频率

MOVDX,MY8254_COUNT0

OUTDX,AL;装入计数初值

MOVAL,AH

OUTDX,AL

MOVDL,TIME

CALLDELAY

MOVDX,MY8254_MODE;退出时设置8254为方式2,OUT0置0

MOVAL,10H

OUTDX,AL

POPDX

POPCX

POPBX

POPAX

RET

BAOJINGENDP

3.3键盘扫描及数码管显示设计

实验系统中的键盘及数码管显示单元提供了4行×4列共16个按键,4个7段数码管了接成扫描电路方式。

共用段位控制信号A~Dp,各自独立的公共端主列选择信号X1~X4,行扫描信号为Y1~Y4。

电路原理如图3-6所示。

图3-6键盘及数码管显示单元电路结构图

X1~X4控制4位数码管的公共端,并连接到按键的一端,作为列选,确定是哪一列的按键按下。

Y1~Y4连接到按键的另一端,作为行选,用于检测哪一行的按键按下。

结合行选和列选即可得出是哪一个按键按下。

在软件设计上要注意消除按键抖动的处理以及数码管显示的刷新。

其中需要用到8255,8255的内部结构和引脚图如图3-7所示,其相应硬件连线图如图3-8所示。

图3-78255内部结构和引脚图

图3-88255与键盘及数码管硬件连线图

其核心代码如下:

;LED显示

LEDPROCNEAR

MOVAL,0EH

MOVDX,MY8255_A;初始化A口指定显示管百位显示

OUTDX,AL

;MOVAX,INIT_N

MOVAX,INIT_N

MOVBL,64H

DIVBL

MOVBH,AH;保存余数

MOVSI,OFFSETN_LED_CODE

MOVAH,0H

ADDSI,AX

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;写B口输出百位

CALLDALLY1

MOVAL,0DH

MOVDX,MY8255_A

OUTDX,AL

MOVAL,BH;回复余数

MOVAH,0H

MOVBL,0AH

DIVBL

MOVBH,AH;保存余数

MOVSI,OFFSETN_LED_CODE

MOVAH,0H

ADDSI,AX;计算偏移量

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;写B口输出十位

CALLDALLY1

MOVAL,0BH

MOVDX,MY8255_A

OUTDX,AL

MOVSI,OFFSETN_LED_CODE

MOVAL,BH

MOVAH,0H

ADDSI,AX

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;输出个位

CALLDALLY1

RET

LEDENDP

SCANPROCNEAR;扫描是否有按键闭合子程序

MOVAL,07H

MOVDX,MY8255_A;将4列全选通,X1~X4置0

OUTDX,AL

MOVDX,MY8255_C

INAL,DX;读Y1~Y4

NOTAL

ANDAL,0FH;取出Y1~Y4的反值

RET

SCANENDP

CLEARPROCNEAR;清除数码管显示子程序

MOVDX,MY8255_B;段位置0即可清除数码管显示

MOVAL,00H

OUTDX,AL

RET

CLEARENDP

 

4系统测试

按照系统连线图连接电路,运行程序。

在实际的设计中,由于没有多余的8254芯片,则利用单次脉冲单元模拟。

8254的计数程序中编译了循环语句,主程序则根据循环的语句进行系统的执行。

在计数到0时执行中断程序,并使电子发声单元发声。

在按下与程序中对应的时间表次数时,电子发声单元开始发声,程序中有电子发声单元的延时子程序。

所以,在电子发声单元发声一段时间后停止发声,程序继续运行主程序。

在测试的过程中,遇到一些问题。

在最开始的测试中,由于粗心导致8254中没有一个频率输入,从而导致电子发声单元无法发声。

则开始分别测试各个芯片的电路是否连接正确。

我们把连接电子发声单元的线路连接到发光二极管上,测试8254中的连线是否正确。

但是,发光二极管发光正常。

然后在询问老师后了解到。

电子发声单元要有一定频率才能发声,最后我们发现此系统并无频率输入,从而导致电子发声单元无法发声。

在连接输入频率后再进行测试,系统能正常发声。

但是,程序在运行到最后循环的时候又遇到一个比较棘手的问题。

就是整个系统无法循环。

在编译连接程序的过程中我们只注意程序是否又错误,并没有注意编译器中提示的警告。

所以,程序的循环问题没有执行。

我们重新检查程序中的循环问题,进过翻阅相关书籍和请老师帮组的情况下,顺利的解决了循环问题。

最后,把所有的问题解决后,再次执行程序。

系统能够正常的执行作息时间的功能。

 

总结

此次为期两周的微机原理与接口技术的课程设计可以说是获益匪浅。

通过查阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:

仔细谨慎,精益求精。

本次设计主要用到了5254单元、8255单元、A/D转换单元以及键盘及数码管显示单元和电子发声单元。

在系统调试过程中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小范围内。

通过该课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识师机械的,表面的。

通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

而且在设计中,把死板的课本知识变得生动有趣,激发了学习的积极性。

把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

 

参考文献

[1]赵树升,赵雪梅.现代微机原理及接口技术[M],北京:

清华大学出版社,2008年8月

[2]戴梅萼.微型计算机技术及应用——从16位到32位(第2版)[M],北京:

清华大学出版社,2003年2月

[3]王成耀等.汇编语言程序设计.北京:

机械工业出版社,2004

附件

源程序代码如下:

;****************根据查看端口资源修改下列符号值*******************

IOY0EQU0DA00H;片选IOY0对应的端口始地址

IOY1EQU0DA40H;片选IOY1对应的端口始地址

IOY2EQU0DA80H;片选IOY2对应的端口始地址

;*****************************************************************

MY8255_AEQUIOY1+00H*4;8255的A口地址

MY8255_BEQUIOY1+01H*4;8255的B口地址

MY8255_CEQUIOY1+02H*4;8255的C口地址

MY8255_MODEEQUIOY1+03H*4;8255的控制寄存器地址

AD0809EQUIOY0+00H;AD0809的端口地址

MY8254_COUNT0EQUIOY2+00H*4;8254计数器0端口地址

MY8254_COUNT1EQUIOY2+01H*4;8254计数器1端口地址

MY8254_COUNT2EQUIOY2+02H*4;8254计数器2端口地址

MY8254_MODEEQUIOY2+03H*4;8254控制寄存器端口地址

;数据段

DATASEGMENT;DATA

INIT_NDW40H

AD_NDW0

N_LED_CODEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H

FREQDW0001;频率表

TIMEDB01

KEY_BUFFDB0

DATAENDS

;STACK

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

;代码段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA;取数据段的段地址

MOVDS,AX

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入,高4位输出

OUTDX,AL

KEY_BEGIN:

MOVAX,INIT_N

MOVAD_N,AX

CALLLED;数码管显示

SCAN_INIT:

CALLCCSCAN;扫描按键;如果有按键AL中不为0

JNZISKEY;有键按下则跳置ISKEY

JMPKEY_BEGIN;跳转到开始,再循环检测按键

ISKEY:

;CALLDELAY

MOVCH,0F7H

;MOVCL,00H;设置当前检测的是第几列

MOVAL,CH;选取一列,将X1~X4中一个置0

MOVDX,MY8255_A

OUTDX,AL

MOVDX,MY8255_C;读Y1~Y4,用于判断是哪一行按键闭合

INAL,DX

TESTAL,01H;是否为第1行

JZIS_UP;判断是否按了加键,是的话的跳转不是的话继续判断

TESTAL,02H;是否为第2行

JZIS_DOWN;判断是否按了减键,是的话的跳转不是的话继续判断

TESTAL,06H

JZSCAN_INIT

TESTAL,08H;是否为第4行

JZLOOP1;判断是否按了确定键,是的话的跳转不是的话继续判断

IS_UP:

CALLCLEAR;清空数码管

MOVAX,AD_N

ADDAX,01H

MOVINIT_N,AX

MOVAD_N,AX

CALLLED

JMPSCAN_INIT

IS_DOWN:

CALLCLEAR

MOVAX,AD_N

SUBAX,01H

MOVINIT_N,AX

MOVAD_NUM,AX

CALLLED

JMPSCAN_INIT

LOOP1:

MOVDX,AD0809;启动A/D转换

OUTDX,AL

MOVDX,AD0809;读出转换结果

INAL,DX

MOVAH,0H

;MOVBX,INIT_N

MOVAD_N,AX

;CALLLED

CALLCMP_M;确定安全范围

CALLLED;LED显示十进制

MOVAH,1;判断是否有按键按下

INT16H

JZLOOP1

;无按键则跳回继续循环,有则退出

QUIT:

MOVAX,4C00H;结束程序退出

INT21H

;报警子程序

;初始化8254

;安全范围比较子程序

;30度~100度之间为安全值

;8255的PC口高4位灯闪烁

;四灯全亮为安全值

CMP_M:

;ANDAX,00FFH

CMPAX,1EH

JGLEVEL30;大于30度

MOVBX,371

MOVFREQ,BX

MOVBL,4

MOVTIME,BL

CALLBAOJING;报警

MOVDX,MY8255_C

MOVAL,10H

OUTDX,AL

RET

LEVEL30:

MOVBX,INIT_N

CMPAX,BX

JGLEVEL_W;大于LEVEL_W度

PUSHAX

MOVDX,MY8255_C

MOVAL,30H

OUTDX,AL

POPAX

RET

LEVEL_W:

CMPAX,64H

JGLEVEL100

PUSHAX

MOVDX,MY8255_C

MOVAL,0C0H

OUTDX,AL

POPAX

RET

LEVEL100:

PUSHAX

MOVBX,1665

MOVFREQ,BX

MOVBL,4

MOVTIME,BL

CALLBAOJING;报警

MOVDX,MY8255_C

MOVAL,80H

OUTDX,AL

POPAX

RET

;LED显示

LEDPROCNEAR

MOVAL,0EH

MOVDX,MY8255_A;初始化A口指定显示管百位显示

OUTDX,AL

;MOVAX,INIT_N

MOVAX,INIT_N

MOVBL,64H

DIVBL

MOVBH,AH;保存余数

MOVSI,OFFSETN_LED_CODE

MOVAH,0H

ADDSI,AX

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;写B口输出百位

CALLDALLY1

MOVAL,0DH

MOVDX,MY8255_A

OUTDX,AL

MOVAL,BH;回复余数

MOVAH,0H

MOVBL,0AH

DIVBL

MOVBH,AH;保存余数

MOVSI,OFFSETN_LED_CODE

MOVAH,0H

ADDSI,AX;计算偏移量

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;写B口输出十位

CALLDALLY1

MOVAL,0BH

MOVDX,MY8255_A

OUTDX,AL

MOVSI,OFFSETNUM_LED_CODE

MOVAL,BH

MOVAH,0H

ADDSI,AX

MOVAL,[SI]

MOVDX,MY8255_B

OUTDX,AL;输出个位

CALLDALLY1

RET

LEDENDP

;延时子程序1

DELAYPROC

PUSHAX

PUSHCX

MOVCX,0ffFFH

D11:

MOVAX,0ffFH

D12:

DECAX

JNZD12

LOOPD11

POPCX

POPAX

RET

DELAYENDP

;延时子程序2

DALLY1PROCNEAR

PUSHAX

PUSHCX

MOVCX,0fffFH

D21:

MOVAX,0FFH

D22:

DECAX

JNZD22

LOOPD21

POPCX

POPAX

RET

DALLY1ENDP

;延时子程序3

DALLY2PROC

PUSHCX

MOVCX,00FFH

D31:

MOVAX,00FFH

D32:

DECAX

JNZD32

LOOPD31

POPCX

RET

DALLY2ENDP

;扬声器发声---------------------------------------------------------

BAOJINGPROC

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;定时器0、方式3

OUTDX,AL

MOVDX,0FH

MO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

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

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