数字温度计的设计(3)

2020-04-17 04:52

数字温度计的设计

CLR C MOV R7,#3 MOV R0,#41H MOV R1,#45H LOOP:MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A RLC A RLC A RLC A RLC A INC R0 INC R1 DJNZ R7,LOOP MOV A,#0

ADDC A,#0 MOV @R0,A

;将TH0与TL0的BCD码相加

MOV A,42H ;第2位BCD带小数点输出

以下为7279显示子程序,7279芯片是一片具串行接口的,可同时驱动8们共阴式数码管的智能显示驱动芯片,要使7279工作,

CPU首先要给7279发送一个字节的控制指

ORL A,#80H MOV 42H,A RET

令,然后再把具体数据传送给7279使它显示出来,而这两条指令之间需要一段时间的延时。

11

数字温度计的设计

7279发送一个字节的控制指令或一字节数据时,都是一位一位发送的,因此要循环发送8次。

DISP: PUSH PSW SETB RS0

MOV R1,#90H CLR CS MOV R6,#20 DJNZ R6,$ MOV A,R1 ACALL STFS MOV R6,#12 DJNZ R6,$

MOV A,#4EH ; ACALL STFS MOV R6,#04H DJNZ R6,$ SETB CS INC R1

CLR CS

MOV R6,#20 DJNZ R6,$ MOV A,R1 ACALL STFS MOV R6,#12 DJNZ R6,$ MOV A,#63H ACALL STFS

;7279显示子程序

;显示字符C

字符C代码

;显示一个小圆圈

;小圆圈代码

12

数字温度计的设计

MOV R6,#04H DJNZ R6,$ SETB CS

MOV R7,#5 MOV R0,#40H MOV R1,#82H DISP1: CLR CS MOV R6,#20 DJNZ R6,$ MOV A,R1 ACALL STFS MOV R6,#12 DJNZ R6,$ MOV A,@R0 ACALL STFS MOV R6,#04H DJNZ R6,$ SETB CS INC R0 INC R1 DJNZ R7,DISP1

POP PSW RET

STFS: PUSH PSW SETB RS1

发送一字节子程序

13

;7279数字温度计的设计

MOV R7,#8 STF1: RLC A MOV DAT,C SETB CLK MOV R6,#04H DJNZ R6,$ CLR CLK MOV R6,#04H DJNZ R6,$ DJNZ R7,STF1 POP PSW RET

第4章 实验调试

4.1 硬件调试

在实验开始之初,编写完代码且编译成功后,用proteus软件进行硬件仿真,这里的模拟电压是直接用一个滑动变阻器接上电源后产生,改变其阻值,得到不同的电压,将该电压加到后续电路;碰到的问题是如果不加D触发器进行二分频,则从LM331芯片看不到脉冲输出,通过翻阅实验指导书,发现书上V/F转换电路后面加了个二分频电路,于是在仿真图上加上该芯片组成个分频器后,其输出端通过示波器果然看到了脉冲信号。对于这个问题,没有去深究,也没有看到相关资料的说明,估计这里可能是分频器还起到了一个驱动的作用。

然后开始硬件焊接时,是按照仿真图上的样子连接下来的,依旧是用一个变位器接电源产生模拟电压,发现改变其阻值,显示器阻值确实会照预想变化,说明硬件连接成功。

14

数字温度计的设计

接下来是思考如何用温度传感器来产生模拟电压,而不是依靠一个变位器,经老师提点,选择热敏电阻作为温度传感器,采用其典型电桥电路,由于热敏电阻随温度变化,电桥两端压差会有变化,而这个压差可能不大,因此还思考如何设计一个较好的放大电路,将这个小信号放大后,接至LM331进行V/F转换。有了这个思路,开始在另一块试验板上将这个任务分两个模块进行,从图1看出,其中电桥电路有两个阻值严格相等的电阻,因此选择电阻对阻值要精确测量,电桥连接好后,加上电源,对热敏电阻加热,发现电桥两端确实有压差出现,而且最大确实只有零点几伏大小。下面就是要把这个小信号进行放大,选择LM741作为放大器形成一个加减运算电路,并且把放大器倍数初设为15,当给正负输入端加入较小的模拟电压时,发现输出电压确实是输入电压的15倍,这样放大器这块也设计成功。

之后,便在实验板上把上述两个模块电路焊上去,所有焊接工作完成后进入软件调试。在此,又碰到一个奇怪的问题,当给热敏电阻加热一段时间后,7279显示电路数码管显示的值不会再增加,而且还不稳定,最后会跳回零去,其实这个问题在用proteus进行仿真时也遇到了,当时怀疑是否因为温度越高,模拟电压越大,脉冲频率越大,脉宽越窄,导致计数器识别不来,计数出现紊乱,但是细想又不可能,脉冲信号频率再怎么大输出频率最大也只有几十K,对于计数器来说,这样大小的频率对计数是没有影响的,后来怀疑是放大倍数最大了,但是即使放大倍数为15,LM331的最大输入电压也只有4点几伏,而它能接受的能达到10V,权衡之下,还是将放大倍数降为10倍,即把反馈电阻由150K变为100K,这样当加热热敏时7279显示电路数码管显示的值到后面不会因温度较大时而出现紊乱,只不过这时最大计数值下降了零点几倍。

4.2 软件调试

定时器1的定时时间是要控制好的,要反复调试,它要使在这个定时时间段内计数器0的值大小合适,这样后面进行数据转换就不会很麻烦,最后选定为600ms。

对于这个系统,到底具体的温度对应的单片机的计数值是多少,这个是要通过理论计算得来的,但是这样是很难算出来的,因为这跟具体的电路及芯片参数都有关系,况且理论计算都是要有严格的推算步骤的,还有,课设要求能进行0—100度的温度显示,而人手加热只可能在30几度温度内变化,因此,这次实验并不是真实地显示实时温度,而只是摸拟一下热敏电阻随人手加热温度升高,导致显示器显示值增大的这个现象而已,也就是说,

15


数字温度计的设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:船舶电子海图系统常见缺陷(JRC设备)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: