8086系统中数字温度传感器TC77的Proteus仿真

2015-05-30 18:23时斌
俪人·教师版 2015年24期
关键词:数码管子程序微机

时斌

【摘要】Proteus软件强大的CPU仿真功能让其在电子、通信、物联网等相关专业的课程学习中有着重要作用。本文给出了一个用Proteus软件仿真8086系统下数字温度传感器TC77的实例,指出在教学实践中采用适当的仿真技术对教学质量提高的重要意义。

【关键词】微机原理 8086 TC77 Proteus 仿真

电子、通信、物联网等相关专业在选修课学习中大多有传感器技术等课程,而对传感器的相关实验有仿真和实际制作两大类,即使是实际制作,之前先做仿真也是一个比较好的选择。目前高校的教学中以8088为重点的微机原理课程一般安排在单片机之前,以致学习传感器课程时单片机课程尚未学完,故用微机原理的知识进行传感器的仿真成为一种选择,同时也能深化对微机原理课程的理解。

1 8086最小系统

微机原理课程大多以8088为核心进行讲解,但遗憾的是目前Proteus软件里没有8088CPU,只有8086,故要稍作修改,幸好改的地方不多。

图1 8086最小系统图

图1为8086最小系统图,该图提供了16根地址线A0~A15,8根数据线D0~D7,理论上8086可提供16根数据线,但本应用中有8根即可,所以D8~D15没有画出。注意8086的READY端要接VCC,否则系统运行时只运行1条语句,8086的CLK端未接,时钟用的是内部仿真时钟,一般用5MHz即可。

2 系统的控制信号

图2 8086系统的控制信号

图2为系统的控制信号,CS0为8255的片选信号,IOR和IOW为8255的读选通和写选通信号。另外要注意8086的28脚M/IO信号和8088不一样,该脚为低电平时表示IO接口,高电平时表示存储器,该表示方法正好和8088相反。

3 IO接口及传感器和显示部分

图3 8255接口、TC77和显示部分

图3为8255接口和数字传感器TC77及数码管显示部分,8255的A口接数码管的段码,B口低4位接数码管的位码,本应用中用的是共阳数码管。8255的PC7接TC77的CS,PC6接TC77的SCK,PC0接TC77的SI/O。

采用数码管显示是因为程序比较简单,毕竟8086CPU要用汇编进行编程。

4 数字温度传感器TC77

如图3所示,TC77有5个引脚,另外2个是电源和地。

图4 TC77的时序图

图5 TC77的数据格式

图4为TC77的时序图,图5为TC77的数据格式。由图5可看出TC77有16位数据,但其中后3位不用,一直为1,所以有效位为13位,故图4时序图中为13位数据,注意其中第1位为符号位,最低有效位表示0.0625℃。

5 数码管显示子程序

display proc ;输出一位数码管

mov dx,8020h

mov bx,offset seg7

xlat

xor al,0FFh

out dx,al ;输出段码

mov dx,8022h

mov al,ah

out dx,al ;输出位码

call delay

mov al,00h ;清位码

out dx,al

ret

display endp

org 0400h ;数码管段码

seg7 db 03fh,006h,05bh,04fh,066h,06dh,07dh,007h,

db 07fh,06fh,077h,07ch,039h,05eh,079h,071h

上述程序为显示子程序,注意seg7段放在程序的代码段里,因为在Proteus中分段比较麻烦,为简单考虑就一起放在代码段里了。8255的控制口地址为8026h,A口地址为8020h,B口地址为8022h,C口地址为8024h。该子程序的入口AL中放入要输出的00~0F字符,AH中放入位码,第1个数码管为01h,第2、3、4数码管分别为02h、04h、08h。

6 读取TC77数据子程序

Getdata proc

mov ah,0h

mov dx,8024h

mov al,80h ;CS:1,SCK:0

out dx,al

mov al,00h ;CS:0,SCK:0

out dx,al

mov cx,9

g10: in al,dx

and al,01h

shl ah,1

add ah,al

mov al,40h ;SCK:1

out dx,al

mov al,00h ;SCK:0

out dx,al

loop g10

mov al,80h ;CS:1

out dx,al

ret

getdata endp

上述程序为TC77读取数据程序,为简单起见,未考虑小数和负数的情况。返回的TC77数据放在AH中。该程序先把TC77的CS置1,SCK清0,再把CS清0,然后开始串行读取数据,总共读了9位,其中第1位为符号位,为简单考虑丢弃了,最后1位正好代表1℃。

7 主循环程序

start proc far

mov sp,800h

mov dx,8026h

mov al,81h

out dx,al

s10: call getdata ;ah:温度值

mov al,ah

mov ah,0

mov bl,10

div bl

push ax

mov al,ah

mov ah,4

call display

pop ax

mov ah,2

call display

jmp s10

start endp

上述程序为主循环程序,第1行设置了SP,后3行对8255进行初始化。循环体中的程序为调用读取TC77数据子程序及把返回的AH值用十进制方式显示在数码管的2、3位上。

7 仿真结果

图6 仿真结果

图6为仿真结果,如调整TC77的上下按钮可看到数码管上的数据相应变化,TC77每一次变化0.5℃,连续变化2次就可看到数码管上变化1℃。图6中示波器上的3个信号分别为TC77的CS、SCK、SI/O信号,图6中SI/O的数据为000011100,第1位为符号位,后面8位转换为十进制即为28,和数码管中显示的一致。

本文给出了一个用Proteus软件仿真8086系统下数字温度传感器TC77的实例,很好地理解了数字温度传感器的使用方法,为以后的实际制作打下了良好的基础,同时用8086CPU做主控系统在高校的本科教学中也起到了承上启下的效果。

【参考文献】

[1]微型计算机原理与接口技术(第3版)冯博琴 吴宁主编 清华大学出版社

猜你喜欢
数码管子程序微机
Arduino编程
Fuzzy Search for Multiple Chinese Keywords in Cloud Environment
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
电力系统微机保护装置的抗干扰措施
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
新型微机可控顶控制系统原理及现状