微原课设家用电热淋浴器研发设计Word文档格式.docx
《微原课设家用电热淋浴器研发设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《微原课设家用电热淋浴器研发设计Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
智能启动电热管加热和停止加热、上下限水位报警等功能。
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
MOVDX,0FH
MOVDX,0FH;
输入时钟为1.0416667MHz,1.0416667M=0FE502H
MOVAX,0E502H
MOVBX,FREQ
DIVBX;
取出频率值计算计数初值,0F4240H/输出频率
MOVDX,MY8254_COUNT0
OUTDX,AL;
装入计数初值
MOVAL,AH
MOVDL,TIME
CALLDELAY
MOVDX,MY8254_MODE;
退出时设置8254为方式2,OUT0置0
MOVAL,10H
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
MOVBH,AH;
MOVSI,OFFSETN_LED_CODE
ADDSI,AX;
计算偏移量
写B口输出十位
CALLDALLY1
MOVAL,0BH
MOVAL,BH
输出个位
RET
LEDENDP
SCANPROCNEAR;
扫描是否有按键闭合子程序
MOVAL,07H
将4列全选通,X1~X4置0
OUTDX,AL
MOVDX,MY8255_C
INAL,DX;
读Y1~Y4
NOTAL
ANDAL,0FH;
取出Y1~Y4的反值
SCANENDP
CLEARPROCNEAR;
清除数码管显示子程序
MOVDX,MY8255_B;
段位置0即可清除数码管显示
MOVAL,00H
CLEARENDP
4系统测试
按照系统连线图连接电路,运行程序。
在实际的设计中,由于没有多余的8254芯片,则利用单次脉冲单元模拟。
8254的计数程序中编译了循环语句,主程序则根据循环的语句进行系统的执行。
在计数到0时执行中断程序,并使电子发声单元发声。
在按下与程序中对应的时间表次数时,电子发声单元开始发声,程序中有电子发声单元的延时子程序。
所以,在电子发声单元发声一段时间后停止发声,程序继续运行主程序。
在测试的过程中,遇到一些问题。
在最开始的测试中,由于粗心导致8254中没有一个频率输入,从而导致电子发声单元无法发声。
则开始分别测试各个芯片的电路是否连接正确。
我们把连接电子发声单元的线路连接到发光二极管上,测试8254中的连线是否正确。
但是,发光二极管发光正常。
然后在询问老师后了解到。
电子发声单元要有一定频率才能发声,最后我们发现此系统并无频率输入,从而导致电子发声单元无法发声。
在连接输入频率后再进行测试,系统能正常发声。
但是,程序在运行到最后循环的时候又遇到一个比较棘手的问题。
就是整个系统无法循环。
在编译连接程序的过程中我们只注意程序是否又错误,并没有注意编译器中提示的警告。
所以,程序的循环问题没有执行。
我们重新检查程序中的循环问题,进过翻阅相关书籍和请老师帮组的情况下,顺利的解决了循环问题。
最后,把所有的问题解决后,再次执行程序。
系统能够正常的执行作息时间的功能。
总结
此次为期两周的微机原理与接口技术的课程设计可以说是获益匪浅。