第二、三讲介绍了适于初学者使用的TD-Ⅰ型单片学习机和向外开发能力很强的TD-Ⅱ型单片学习开发机。本讲介绍TD-Ⅲ型自开发式单片学习开发机。该机体积小、功能齐全(包括A/D、D/A、RS-232C接口等),不怕掉电,抗干扰和工作稳定性强,显示位数多达8位。该机除可以用来学习单片机原理外,还可以直接装入仪器仪表或控制设备作为控制核心,可在较恶劣环境之中长时间稳定工作。
电路简介
TD-Ⅲ型机由主机板和键盘、显示板组成,它们的电路原理图请参见图1所示。主机时钟频率为6MHz,8031单片机还提供了128字节的片内RAM、2个外部中断和2路16位定时/计数器。外部程序存储器EPROM27256占用0000H~7FFFH的32kB地址空间,在27256的前4kB已经固化了系统监控程序,后28kB可由用户烧写应用程序。外部数据存储器EEPROM2864占用了8000H~9FFFH的8kB地址空间,2864不怕掉电,可由键盘直接键入和修改指令或数据。外部数据存储器RAM6264占用了A000H~BFFFH的8kB地址空间。在X3端接入后备电源可防止6264掉电丢失数据。可编程并行接口芯片8255占用F000H~FFFFH的4kB地址空间,其中8255的A口地址为F000H,B口地址为F001H,C口地址为F002H。命令口占用F003H地址。8255提供了14个扩展I/O端。将8路模拟信号转换为8位数字量的A/D转换器0809占用E000H~EFFFH的4kB地址空间,其中模拟信号输入通道0~7分别对应E000H~E007H地址。0809每次转换大约需120μs。由于设计时对0809地线单独处理,并采用精密参考稳压源TL431作参考基准源,所以A/D转换具有较高的稳定性。TL431的稳压值为2.5V,故0809的满量程输入电压也为2.5V。D/A转换器0832占用了D000H~DFFFH的4kB地址。与0809一样,D/A转换精度较高,稳定性也较好,满量程输出电压亦为2.5V。键盘扫描和显示扫描专用芯片8279占用地址为C000H~CFFFH的4kB空间,其中数据口地址为CFFEH,命令口地址为CFFFH。采用8279扫描键盘和显示器有效地节省了CPU时间。TD-Ⅲ型机面积为115×130mm\(^{2}\)×2(分体式),供电电源电压为+5V(0.5A)和±12V(0.1A)。当不进行D/A转换和串行发送时,只有单一电源(+5V)就够了。

键盘的功能和操作方法
TD-Ⅲ型机的25个键的排布请见表1,其中0~F键是数字键,用来输入地址、指令和数据的16进制码;另外的9个功能键的功能和操作方法如下:
表1:键盘排布表
RST MOV WRI RDS EXA
(复位) (传送) (写入) (反读) (检查)
USE C D E F
(自定义)
EXE 8 9 A B
(运行)
[F] 4 5 6 7
(设定)
MON 0 1 2 3
(命令)
1.RST(复位)键:按下此键后,主机复位并进行初始化,然后显示“P8031hh”,等待输入各种命令。
2.MON(返回监控)键:接下该键,主机退出当前键盘输入操作状态,显示器显示“P”,等待输入新命令。
3.USE(第二功能定义)键:按下此键后,显示“P.”,再按下RDS、WRI、EXE等键,则主机执行它们的第二功能。
4.[F](首末地址定义)键:当输入4位地址后,按下[F]键,则输入的4位地址就作为首地址,同时显示“Γ.”提示符号;输入另一个4位地址,再按下[F]键,第2次输入的4位地址就作为末地址,显示器显示“L.”提示符。
5.MOV(数据块传送)键:输入源数据块首地址和末地址(见上条)后,再输入目标地址,按下MOV键,则将源数据块传送到从目标地址开始的一段存储区域中。传送完毕,主机显示目标地址和其中内容。
6.EXA(检查)键:输入2位(或4位)地址,再按此键则可读出8031片内RAM(或外部ROM及RAM)中的数据。再接下EXA键,则地址自动加1,其中内容也被显示出来。
7.RDS(反读/串行接收)键:当进行检查存储器内容操作时(见上条),按下此键,显示的地址自动减1,其中内容被显示出来。这是一个多功能键。在监控状态下,先按USE键,再按RDS键,则主机接收串行数据。此时显示“C—C”提示符,表示数据正在传送。接收完毕,主机自动返回监控,并显示“P”。
8.WRI(写入/串行发送)键:在存储器检查状态下(见6条),键入新的数据,再按WRI键,新数据即写入指定存储单元;显示地址自动加1。这也是一个多功能键。在监控状态下,按USE键,再输入数据块首末地址及目标地址,按WRI键,则主机将数据块从串行口TXD发送出去。此时主机显示“C—C”提示符。传送完毕自动返回监控,显示“P”。
9.EXE(连续/单步运行)键:输入程序的首地址,按EXE键,主机连续执行该程序。单步运行程序时,可在监控状态下按USE键,再输入程序的首地址并按EXE键,则可单步执行程序。每按一次EXE键,就执行一条指令。
内部资源介绍
监控程序用来管理系统内的各个功能单元,其中常用子程序的入口地址介绍如下:①MON(返回监控)子程序入口地址为00A0H;②DIR(显示)子程序入口地址为0450H;③KEY(键盘)子程序入口地址为0396H;④SI(串行接收)子程序入口地址为0690H;⑤SO(串行发送)子程序的入口地址为0860H。数码管VH1~VH8对应8031片内RAM的78H~7FH等显示缓冲地址单元。另外,系统BFFFH单元是一个特殊功能单元。在单步执行程序之前,将片内RAM中寄存器地址写入BFFFH中,再单步执行程序,则每执行一条指令就显示该寄存器的内容。
在对8255芯片进行操作时,首先要向命令口送控制字(字节)。控制字7D位为置方式标志,当7D=1时置方式有效。6D、5D为方式选择位,当它们为00时置PA口和PC口上半部(7PC~4PC)工作方式为方式0(即基本输入输出方式);01时置方式1(即选通输入输出方式);1X(X=0或1)时置方式2(即双向传送方式)。有关方式0~2的详细说明请参见有关书籍,限于篇幅本文不作介绍。4D位用来设置端口PA,当4D=1时端口PA为输入口;当4D=0时,PA为输出口。3D为端口PC上半部(7PC~4PC)I/O状态设置位,当3D=1时,7PC~4PC为输入端;当3D=0时,7PC~4PC为输出端。2D为方式选择位,它只负责PB口和PC口下半部(3PC~0PC)工作方式的选择。当2D=0时,为方式0;当2D=1时,设置方式1。 1D为PB口I/O状态设置位,ID=1为输入,1D=0为输出。0D为PC口下半部(3PC~0PC)I/O状态设置位,1代表输入,0表示输出。对8255的操作可通过键盘进行,也可以由程序操作。下面举例说明。
例1:利用键盘对8255进行操作。首先按下MON键(表示为↓MON)进行复位→显示“P”→↓F003→“PF003”(送入命令口地址)→↓EXA→“PF003—03”→↓80→“PF003—80”(将8255的PA、PB和PC口均设置为输出状态)→↓WRI→“PF004—04→↓RDS→↓RDS→“PF002”→↓FF→“PF002—FF”→↓WRI(将FFH写入PC口,这时可测得PC口各端均为高电平。
例2:用程序完成对8255的操作。实验程序如下:
MOV DPTR.#0 F003H
MOV A,#80H 将8255的各个口设置为
MOVX @DPTR,A 输出方式
MOV A. #55 H
LOOP: MOV DPTR,#0F000H 向PA口送01010101,
MOV @DPTR,A
LIMP LOOP
执行后可测得7PA~0PA端电平为0101 0101。
在06F5H开始的一段监控程序为A/D转换程序,执行该程序,显示器将显示通道号“1”和端电位数值。电位数值00H对应0V,FFH对应2.5V。读者可以利用数据块传送指令,把该程序传送到RAM区中进行修改、执行。
使用D/A转换器0832前应将±12V电源加上,否则不会有模拟量输出。下面举例说明 D/A操作方法。
例3:用键盘操作0832。↓MON→“P”→↓D000→“PD000”(将0832的选通地址送入)→↓EXA→↓00→“PD000—00”→↓WRI→“PD001—* *”(0832输出零电位)→↓JRDS→“PD000—**”→↓FF→“PD000—FF”→↓WRI(0832将2.5V送出),这时可在X5的D/A脚测得2.5V电压。
例4:运行下面的程序可在X5的D/A端得到锯齿波输出。
MOV A,#00H ;74 00
LOOP 2: MOV R0,#FFH ;78 FF
MOV R1,#10H ;79 10
MOV DPTR,#0D000H ;90 D0 00
MOVX @DPTR,A ;F0
LOOP 1: DJNZ R0,LOOP1 ;延时。D8 FE
DJNZ R1,LOOP1 ;D9 FC
INC A ;04
SJMP LOOP2 ;80 F1
下面给出TD-Ⅲ型机的学习程序:
ORG 0A000H
MOV R0,#08H 000H:78 08
MOV R1,#78H 002H:79 78
CLR: MOV A,#10 004H:74 10
MOV @R1,A 006H:F7
INC R1 007H:09
DJNZ R0,CLR 008H:D8 FA
LCALL PRO 00AH:12 A1 00
MAIN:MOV B,A 00DH:F5 F0
ANL A,#0FH 00FH:54 0F
MOV R1,#7FH 011H:79 7F
MOV @R1,A 013H:F7
XCH A,B 014H:C5 F0
SWAP A 016H:C4
ANL A,#0FH 017H:54 0F
MOV R1,#7EH 019H:79 7E
MOV @R1,A 01BH:F7
DISP:LCALL 0450H 01CH:12 04 50
LJMP DSP 01FH:02 A0 1C
ORG 0A100H
PRO: MOV A,#81H ;A100H:74 81
RET ;A102H:22
该程序执行结果显示81H,它的用法请参见《无线电》1990年第10期本讲座的有关内容。(朱小华 陈尚品 梁建国)