Altair-80C31Tiny 微型计算机 -...
Transcript of Altair-80C31Tiny 微型计算机 -...
广州周立功单片机科技有限公司
工程技术笔记
《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
TN01010101 V1.00 Date:2012/06/06
类别 内容
关键词 Altair-80C31Tiny 微型计算机;P89V51RB2;结构原理;
电路设计;电路制作;测试例程
摘 要 Altair-80C31Tiny 微型计算机的结构原理、硬件电路设计与制
作、硬件电路调试以及测试例程。
Technical Note
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
i
修订历史
版本 日期 原因
V1.00 2012/06/06 创建文档
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
ii
销售与服务网络(一)
广州周立功单片机科技有限公司
地址:广州市天河北路 689 号光大银行大厦 12 楼 F4
邮编:510630
电话:(020)38730916 38730917 38730972 38730976 38730977
传真:(020)38730925
网址:www.zlgmcu.com
广州专卖店
地址:广州市天河区新赛格电子城 203-204 室
电话:(020)87578634 87569917
传真:(020)87578842
南京周立功
地址:南京市珠江路 280 号珠江大厦 1501 室
电话:(025) 68123901 68123902
传真:(025) 68123900
北京周立功
地址:北京市海淀区知春路 113 号银网中心 A 座
1207-1208 室(中发电子市场斜对面)
电话:(010)62536178 62536179 82628073
传真:(010)82614433
重庆周立功
地址:重庆市石桥铺科园一路二号大西洋国际大厦
(赛格电子市场)1611 室
电话:(023)68796438 68796439
传真:(023)68796439
杭州周立功
地址:杭州市天目山路 217 号江南电子大厦 502 室
电话:(0571)89719480 89719481 89719482
89719483 89719484 89719485
传真:(0571)89719494
成都周立功
地址:成都市一环路南二段 1 号数码科技大厦 403
室
电话:(028)85439836 85437446
传真:(028)85437896
深圳周立功
地址:深圳市福田区深南中路 2072 号电子大厦 12
楼
电话:(0755)83781788(5 线)
传真:(0755)83793285
武汉周立功
地址:武汉市洪山区广埠屯珞瑜路 158 号 12128 室
(华中电脑数码市场)
电话:(027)87168497 87168297 87168397
传真:(027)87163755
上海周立功
地址:上海市北京东路 668 号科技京城东座 7E 室
电话:(021)53083452 53083453 53083496
传真:(021)53083491
西安办事处
地址:西安市长安北路 54 号太平洋大厦 1201 室
电话:(029)87881296 83063000 87881295
传真:(029)87880865
厦门办事处
E-mail:[email protected]
沈阳办事处
E-mail:[email protected]
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
iii
Altair-80C31Tiny 微型计算机
销售与服务网络(二)
广州致远电子股份有限公司
地址:广州市天河区车陂路黄洲工业区 3 栋 2 楼
邮编:510660
传真:(020)38601859
网址:www.zlg.cn
技术支持:
CAN-bus:
电话:(020)22644381 22644382 22644253
iCAN 及数据采集:
电话:(020)28872344 22644373
MiniARM:
电话:(020)28872684 28267813
以太网:
电话:(020)22644380 22644385
无线通讯:
电话:(020) 22644386
串行通讯:
电话:(020)28267800 22644385
编程器:
电话:(020)22644371
分析仪器:
电话:(020)22644375
ARM 嵌入式系统:
电话:(020) 22644383 22644384
楼宇自动化:
电话:(020)22644376 22644389 28267806
销售:
电话:(020)22644249 22644399 22644372 22644261 28872524
28872342 28872349 28872569 28872573 38601786
维修:
电话:(020)22644245
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
1
目 录
1. 概述...........................................................................................................................1
1.1 结构原理...................................................................................................................1
1.2 80C31Small...............................................................................................................2
2. Altair-80C31Tiny硬件电路设计与制作 ...................................................................4
2.1 电路模块划分...........................................................................................................4
2.2 主控制板...................................................................................................................4
2.2.1 电源模块...........................................................................................................4
2.2.2 最小系统...........................................................................................................4
2.2.3 运行控制电路 ...................................................................................................5
2.2.4 外部程序存储器 ...............................................................................................6
2.2.5 外设电路...........................................................................................................7
2.2.6 Altair-80C31Tiny(A) ...................................................................................7
2.3 地址和数据产生电路及显示电路 ...........................................................................9
2.3.1 地址产生电路 ...................................................................................................9
2.3.2 数据产生电路 .................................................................................................10
2.3.3 地址和数据显示电路 .....................................................................................10
2.3.4 Altair-80C31Tiny(C)..................................................................................11
2.4 PCB设计与制作 .....................................................................................................13
2.4.1 电路规划.........................................................................................................13
2.4.2 绘制原理图.....................................................................................................13
2.4.3 设计PCB .........................................................................................................13
2.4.4 电路制作.........................................................................................................14
3. Altair-80C31Tiny硬件电路调试 .............................................................................15
3.1 电路连接.................................................................................................................15
3.2 程序调试.................................................................................................................15
3.2.1 单灯闪烁.........................................................................................................15
3.2.2 LED流水灯 .....................................................................................................18
3.3 在线仿真.................................................................................................................19
4. 扩展电路设计与制作.............................................................................................21
4.1 数码管和矩阵键盘.................................................................................................21
4.1.1 电路制作.........................................................................................................21
4.1.2 电路调试.........................................................................................................22
4.2 16×16 点阵显示屏..................................................................................................22
4.2.1 电路制作.........................................................................................................23
4.2.2 程序调试.........................................................................................................24
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
1
1. 概述
1.1 结构原理
Altair-80C31Tiny微型计算机是根据Altair-8800 制作的早期计算机模型,是基于
80C31Small的 8 位纯硬件计算机系统,但 80C31 没有片内程序存储器需要外接ROM。只能
手动输入二进制程序代码,通过发光二极管直接显示存储器的二进制地址和数据。它的各个
功能键能够支持实验系统的二进制地址寻址和数据的读写校验,以及全速运行,因此
Altair-80C31Tiny是学习CPU机器指令的最佳利器,也是掌握计算机最基本的、最核心的有
效工具。它具有两种工作模式,即编辑模式和运行模式,它的结构框图如图 1.1所示。
具有以下特点:
80C31Small 作为运算器,执行片外程序,根据片外存储器的指令控制外设;
具有两种模式状态,工作模式由模式开关控制;
片外程序存储器存放用户程序代码;
地址和数据产生电路可以为 Altair-80C31Tiny 编程;
集成了 LED 和蜂鸣器等外设电路。
在微型计算机系统中,CPU、存储器、输入/输出设备等各功能部件通过总线相互连接,
Altair-80C31Tiny的三大总线结构如图 1.1所示。
数据总线(Data Bus):用来在 CPU、存储器、I/O 接口之间传送数据和指令,它是双向
三态总线。在 Altair-80C31Tiny 微型计算机中,80C31Small 作为运算器被挂在地址和数据总
线上,数据显示电路直接挂在数据总线上显示总线的状态。当 Altair-80C31Tiny 处于运行状
态时,80C31Small 的 P0 口作为地址和数据总线分时复用到地址和数据总线上面读取片外
ROM 的指令数据,这时需要使数据产生电路与总线隔离;当 Altair-80C31Tiny 处于编辑状
态时,80C31Small 复位,74HC573 输出无效,80C31Small 让出所有总线,数据产生电路占
用数据总线。
地址总线(Address Bus):专门用于传送地址,地址只能从 CPU 向外传送,故地址总线
是单向三态总线,地址总线的位数决定了 CPU 可直接寻址的空间大小。在 Altair-80C31Tiny
微型计算机中,80C31Small 作为运算器被挂在地址和数据总线上,地址显示电路直接挂在
地址总线上显示总线的状态。当 Altair-80C31Tiny 处于运行状态时,80C31Small 的 P0 口作
图 1.1 Altair-80C31Small 微型计算机结构框图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
2
为地址和数据总线分时复用到地址和数据总线上面读取片外 ROM 的指令数据,这时需要使
地址产生电路与总线隔离;当 Altair-80C31Tiny 处于编辑状态时,80C31Small 复位,74HC573
输出无效,80C31Small 让出所有总线,地址产生电路占用地址总线。
控制总线(Control Bus):用来传送各种控制信号。Altair-80C31Tiny 的模式开关能够产
生两条互补的控制信号,一条控制 80C31Small 和 74HC573,另一条接运行控制开关,它们
都是低电平有效。当模式开关输出 1 时,80C31Small 复位,74HC573 输出无效,地址和数
据产生电路接到总线上对片外 ROM 进行读写操作,为编辑状态;当模式开关输出 0 时,运
行控制电路使地址和数据产生电路与总线隔离,80C31Small 控制 74HC573 使 P0 口地址和
数据总线分时复用读取片外 ROM 的指令数据到内部总线,80C31Small 根据指令驱动外设,
为运行状态。
1.2 80C31Small
如图 1.2所示是一款应用非常广泛的经典单片计算机,它是一个 40 引脚封装的集成电
路,8051 单片计算机(简称单片机)是Intel公司在上世纪 70 年代开发的第一个型号,紧接
着推出了ROM-less型 8031 单片机,80C51 与 80C31 采用CMOS技术的第二代单片机,后来
各大半导体公司陆续推出了多种兼容 80C51 的单片机,统称 80C51 系列单片机。
P89V51RB2是一款增强型 80C51微处理器,包含 16kB Flash 和 1024 字节的数据RAM。
我们把它定义为 80C31Small,作为 Altair-80C31Tiny 的主控制器,其管脚功能如下:
VCC与 VSS:+5V 电源与地;
XTAL1 与 XTAL2:用于连接晶体振荡电路,其中,XTAL1 为反相振荡器的输入和
内部时钟发生电路的输入,XTAL2 为反相振荡放大器的输出。当使用外部有源振
荡器时,XTAL2 不用,XTAL1 用于接收振荡信号;
P0 为 8 位开漏双向 I/O 口,能驱动 8 个 TTL 负载。当使用片外存储器时,作为地
址和数据(A0~A7、D0~D7)分时复用总线;
P1 为 8 位准双向 I/O 口,能驱动 4 个 TTL 负载;
P2 为 8 位准双向 I/O 口,能驱动 4 个 TTL 负载。当使用片外存储器时,输出高 8
位地址(A8~A15);
P3 为 8 位准双向 I/O 口,具有内部上拉电阻,能驱动 4 个 TTL 负载;
数据存储器选通:
图1.2 80C31Small、P89V51RB2 引脚图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
3
—P3.6( WR ):低电平有效,片外存储器写选通;
—P3.7( RD ):低电平有效,片外存储器读选通;
控制线
—RST:复位输入信号,高电平有效,在振荡工作期间,在 RST 上外加 2 个机器
周期以上的高电平即可将单片机复位;
—EA:程序存储器访问允许信号,当EA低电平时,CPU 只能访问外部程序存储
器,其地址范围为 0000H~FFFFH。当 EA为高电平时,CPU 可访问内部 16K Flash
程序存储器,其地址范围为 0000H~0FFFFH。当 PC 值大于 0FFFF 时,也可访问外
部程序存储器。
—ALE:地址锁存允许信号,在 ALE 为有效电平期间,P0 口输出 A0~A7。通过在
MCU 片外扩展一片地址锁存器,用 ALE 的有效电平边沿做锁存信号,将 P0 口的
地址信号锁存,直到 ALE 再次有效。在 ALE 无效期间,P0 传送数据,即用作数
据总线,即 P0 口复用地址/数据总线;
— PSEN :片外程序存储器选通信号,低电平有效。MCU 从片外程序存储器取指
期间,在每个机器周期中,当 PSEN 有效时,程序存储器的内容被送到 P0 口数据
总线。
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
4
2. Altair-80C31Tiny硬件电路设计与制作
2.1 电路模块划分
根据 Altair-80C31Tiny 的结构框图可知它具有以下几个基本功能电路单元:
以 80C31Small 为核心的最小系统电路;
具有模式控制功能的运行控制电路;
能够存储指令数据的片外程序存储器电路;
地址和数据产生电路及显示电路;
外设电路。
考虑到最后是采用单面板制作,PCB 设计难度很大,这就需要对电路进行模块划分降
低 PCB 走线的难度,在划分模块电路时要在它们之间保留相应的接口以保证信号和系统的
完整性,最后用杜邦线和排线将电路连接起来就行了。我们将 Altair-80C31Tiny 划分为两个
电路模块,将地址和数据产生及显示电路做成一块板为地址和数据电路板,其它的电路做在
一起为主控制板。
2.2 主控制板
我们将 Altair-80C31Tiny 的电源模块、最小系统、运行控制电路、外部程序存储器以及
外设电路作为一个大的模块电路称之为主控制电路。它有两种用途:EA接低电平执行片外
程序作为 Altair-80C31Tiny 的主控制板(80C51+运行控制),EA接高电平执行片内程序将变
成一块 P89V51RB2 学习板。
2.2.1 电源模块
如图 2.1所示为Altair-80C31Tiny的电源
模块。它从计算机的USB接口取得+5V电源;
D9 为肖特基二极管,它的导通电压大约为
0.2V,起到防反接的作用;电容C1 有两个
作用分别为低频滤波和储能,C2 起到滤高
频的作用;D30 为电源指示灯,JP40A和
JP40B为电源接口,我们可以用杜邦线向其
他电路供电。
2.2.2 最小系统
如图 2.2所示是 80C31Small最小系统电路,它是Altair-80C31Tiny的主要功能部件,具有
以下特点:
用双排针把所有的管脚引出,P0 口接外部上拉电阻,JP30 为数据总线接口;
带上电复位和按键复位,复位电路和 80C31Tiny 的复位管脚断开,便于外接控制电
路;
P3.2 接仿真按键(S21),S20 为手动复位键,使用组合按键(S20 和 S21)时可以
使 P89V51RB2 单片机进入硬件仿真状态;
带 UART 接口(JP3),可以外接 ISP 下载器;
EA具有模式选择(0 或 1)功能。
图 2.1 USB 电源
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
5
2.2.3 运行控制电路
如图 2.3所示为Altair-80C31Tiny计算机的运行控制电路,模式开关K11 能够产生一位二
值控制信号(0 和 1),控制信号经非门被一分为二,分别控制 80C31Small和 74HC573 以及
用户对片外ROM操作,分别代表两种模式—运行(RUN)和编辑(EDIT)。下面我来全面
了解运行控制电路的功能和工作过程。
图 2.2 最小系统电路
图 2.3 运行控制电路
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
6
Altair-80C31Tiny 计算机的工作过程描述:
(1)K11 产生数据 1,80C31Small 复位,CPU 让出所有总线,U12 输出无效,此时用
户可以对 Altair-80C31Tiny 手动输入程序,即 Altair-80C31Tiny 处于编辑状态。当对片外程
序存储器进行“写”操作时,地址和数据三态门均有效,地址和数据线连接到总线上;当对
片外程序存储器进行“读”操作时(校验),只有地址线需要连接到总线上,这时地址产生
电路的三态门有效,数据产生电路的三态门无效,数据被读到数据显示电路上。
(2)K11 产生数据 0,80C31Small高速运行并占用地址和数据总线,此时 80C31Small 的
ALE控制 74HC573 使P0 的地址和数据分时复用,PSEN 的低电平控制P0 口读取片外程序存
储器的数据,然后 80C31Small根据程序指令控制外设电路,这时Altair-80C31Tiny处于运行
状态。此时需要将地址和数据产生电路与总线进行隔离同时避免用户错误的读写(按键)操
作对 80C31Small造成干扰。
电路功能描述及具体的工作过程:
(1)将 EA接低电平,80C31Small执行片外程序。用杜邦线将插针JP29(RESET)和
JP31 的 18 脚(RST)连接,JP7 的 EN (Addr)和 EN (Data)分别接图 2.11的JP5 的 EN (Addr)
和 EN (Data), PSEN 、 6(P3. WR )和 .7(P3 RD )接 80C31Small的相 管应 脚, OE 、 WE 为
IS62C256AL的读写信号。
(2)当Altair-80C31Tiny处于编辑状态时,80C31Small复位,CPU让出所有总线,PSEN 、
P3.6( WR )和 P3.7( RD )均为高电平,U12 不工作,确保了地址和数据不会发生冲突;信号经
过反相器 U10B 变为 0,EN (Addr)有效,地址产生电路占用地址总线,或门输出信号随输入
信号变化而变化;当按下 S11( WR )时,RS 触发器(U10C)输出低电平,使 EN (Data)
有效,数据产生电路占用数据总线同时进入“写”状态,当按下 S11 使 WE 为 0,U11B 输
出 1 使OE为 1,用户可对片外程序存储器进行“写”操作;同理当按下 S10(RD )时,RS
触发器(U10C)输出高电平关闭 EN (Data),使数据产生电路与数据总线隔离,U11B 输出 0
使OE为 0,U11C 的 10 脚被上拉到 1 使 WE 为 1,此时可对片外程序存储器进行“读”操
作,切换地址,用户可根据数据的显示状态对输入数据进行校验。
(3)当Altair-80C31Tiny处于运行状态时,80C31Small高速运行,P3.6( WR )和 P3.7( RD )
为高电平;此时信号经过反相器 U10B 变为 1,地址三态门 EN (Addr)为 1,地址产生电路和
地址总线隔离;或门 U11A 输出信号为 1,数据三态门 EN (Data)为 1,数据产生电路和数据
总线隔离;或门 U11C 输出为 1, WE 输出为 1; 80C31Small 的 ALE 控制 74HC573 使 P0
的地址和数据复用,或门 U11B 输出为 1,PSEN 的低电平控制 P0 口读出片外程序存储器的
数据并传送到内部寄存器,80C31Small 根据指令驱动外设电路。
(4)将EA接高电平, 80C31Small 执行片内程序,可以当作一块 P89V51RB2 单片机
学习板使用。将 K11 拨到运行状态,此时 PSEN 为高电平,此时信号经过反相器 U10B 变为
1,或门输出信号为1,地址和数据产生电路和总线隔离,用户可以控制P3.6( WR )和P3.7( RD )
对片外 SRAM 读写操作。
2.2.4 外部程序存储器
由于 80C31Small没有片内ROM,因此Altair-80C31Tiny必须使用外部程序存储器。如图
2.4为 80C31Small外接 32KB静态随机存取存储器IS62C256AL,它既可以存放数据也可以存
放程序。U12 的D0~D7 和U17 的I/O0~I/O7 为数据总线(JP30)接P89V51RB2 的P0.0
(AD0)~P0.7(AD7),地址锁存允许信号ALE管脚接U12 的LE,RST和U12 的OE 相连保持
工作一致,当电路上电工作时,ALE控制 74HC573 使P0 口地址和数据分时使用。考虑到手
动输入二进制代码过于繁琐,而且代码往往不会太长,因此 32KSRAM只需接 256B就能满
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
7
足要求,所以需要U12 的多余的高 7 位地址和控制线CE 接地,JP19 为地址总线接口,WE
和OE 分别为IS62C256AL的“写”选通和“读”选通管脚,它们分别被接到运行控制电路。
2.2.5 外设电路
任何计算机都具有一些基本的外设电路。我们在 80C31Small 的P0 口接 8 位LED作为一
个简单的显示界面,如图 2.5所示,它采用共阳极接法,低电平点亮;蜂鸣器是一种发声器
件,如图 2.6所示为Altair-80C31Tiny集成的交流蜂鸣器电路。
2.2.6 Altair-80C31Tiny(A)
如图 2.7所示为Altair-80C31Tiny(A)的实物图,CZ1 为电源接口,用户可以从计算机
的USB口取得+5V电源;U18 为 80C31Small,双排针JP30~JP32 将它的所有管脚引出,P1
口接一组共阳极LED显示器;JP3 为 80C31Small的UART接口,可以接ISP下载器;JP36 为
交流蜂鸣器接口;S20 和S21 分别为复位键及仿真键(外部中断 1),它们组合使用可使
80C31Small进入硬件仿真状态;P0 可以作为地址和数据总线,当它和 74HC573 一起使用时,
可以接一片程序存储器;当 EA =0 时,80C31Small执行片外程序,JP30 为数据总线接口,
JP19 为地址总线接口,它们将分别和地址和数据产生电路的JP3 和JP2 相连,JP7 为三态门
接口,当 80C31Small运行时需要用杜邦线将它与地址和数据产生电路板的JP5 的相应插针相
连;S10 和S11 分别为读写键;K11 为模式开关,它能够进行模式控制;当 EA =1 时,
Altair-80C31Tiny(A)可以作为一块P89V51RB2 单片机学习板。
图 2.4 外部程序存储器电路
图 2.5 LED 显示电路
图 2.6 蜂鸣器电路
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
8
Altair-80C31Tiny(A)的元器件清单如表 2.1所示。
表2.1 Altair-80C31Tiny(A)元器件清单
名称 型号 封装 数量 单位 标号
1 电阻 47Ω,±5%,1/6W,Ф1.85×3.5mm 2 只 R75、R114
2 1KΩ,5%,1/6W,Ф1.85×3.5mm 2 只 R76、R79
3 4.7KΩ,5%,1/6W,Ф1.85×3.5mm 1 只 R80
4 10KΩ,5%,1/6W,Ф1.85×3.5mm 8 只 R57~R60、R65、
R66、R115、R118
5 网络电阻 1KΩ,A 型 SIP-9 1 只 RP1
6 10KΩ,A 型 SIP-9 1 只 RP2
7 瓷片电容 22P,±10%,50V,Ф4×2mm 2 只 C6、C7
8 104,+80%-20%,50V,Ф5×2mm 1 只 C2
9 电解电容 10μF,25V,Ф4×7mm 1 只 C44
10 100μF,25V,Ф6.3×7mm 1 只 C1
11 发光二极
管 Ф3,红色 SIP-2 9 只 D1~D9、D30
12 二极管 1N4148 DO-35 6 只 D17~D21、D32
13 1N5819 DO-41 1 只 D9
14 三极管 SS8550D TO-92 1 只 Q1
15 IC IS62C256AL-45ULI SO-28 1 只 U17
16 P89V51RB2FN DIP-40 1 只 U18
17 74HC00N DIP-14 1 只 U10
18 74HC32N DIP-14 1 只 U11
19 74HC573 DIP-20 1 只 U12
图 2.7 Altair-80C31Tiny(A)
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
9
名称 型号 封装 数量 单位 标号
20 IC 座 DIP-14,300mil 2 只 U10,U11
21 DIP-20,300mil 1 只 U12
22 DIP-40,600mil 1 只 U18
23 讯响器 AP-1205G-P3,无源,
Ф12×7.5mm,常州笠翔 1 只 BZ1
24 晶体振荡
器 11.0592MHz,HC-49US 1 只 Y1
25 轻触按键 6×6×4.3mm,进口 4 只 S10、S11、S20、
S21
26 拨动开关 12.5×6×11mm,SW-
SPDT,SW1-0.16,单刀双掷 1 只 K11
27 排针 2.54mm,1×40,180°,
L=11.6mm,3.0/6.0,镀全金 3U 1 条
JP3、JP7、JP19、
JP29、JP35、JP36、
JP40A、JP40B
28 2.54mm,2×40,180°,
L=11.6mm,3.0/6.0,镀全金 3U 1 条 JP30、JP31、JP32
29 USB 插座 B 口,12.2×16.4×11,90° 1 只 CZ1
30 短路器 2.54mm,长柄,黑色 2 只
31 1P 杜邦线 L=230mm,黄 5 条
32 双头插头
带线 2.54-8P 杜邦头,L=210mm 2 条
33 USB 通讯
电缆 A-B,有磁环,L=1500mm 1 条
34 脚钉 Ф3.8×9.6mm,尼龙脚钉 4 只
2.3 地址和数据产生电路及显示电路
Altair-80C31Tiny 微型
计算机是基于 80C31Small
的 8 位纯硬件计算机系统,
用户只能手动为它编程,编
程的前提是它需要拥有一个
产生地址和数据的电路。
2.3.1 地址产生电路
如 图 2.8 所 示 为
Altair-80C31Tiny 的地址产
生电路。74HC393 集成了两
个 4 位计数器,1CP和 2CP
分别为两个 4 位计数器的脉
冲输入端,将它的 6 和 13
管脚相级联就变成了一个 8
位计数器。MR为计数器的
清 0 管脚,只要给它一个高
图 2.8 地址产生电路
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
10
电平,即按下S7 就可使 74HC393 的输出变为 0x00。按下S8 就能够产生计数脉冲,当S8 未
按下时,1CP为 0,每按一次S8 时,1CP由 0 变为 1,松开S8 时,1CP由 1 变为 0 产生下降
沿脉冲使计数器+1。假设第一个脉冲到之前计数器已经被清 0,当计数器+1 后其输出变为
0x01,当地 256 个脉冲到来时,计数器又由 0xFF变为 0x00。
由于连接到计算机总线上的设备任一时刻只能有一个被使能,为避免总线冲突,因此必
须分别在 8 位地址产生电路与地址总线A0~A7 之间增加一组三态门进行隔离。如图 2.8所示
74HC393 的输出端接两片三态输出四总线缓冲器 74HC125,EN 为三态控制端,当 EN 为低
电平时,输出和输入一样;当 EN 为高电平时,无论输入为何值,输出均为高阻态。将所有
的 EN 连到一起,通过控制它将地址产生电路连接到总线上。当设置好地址数据后,这时如
果 EN 有效的话,地址数据将直接送到总线上。
2.3.2 数据产生电路
如图 2.9所示为Altair-80C31Tiny的数据产生电路。74HC164 为 8 位串入并出移位寄存器,
A和B为它的数据输入端,CP时钟输入端,上升沿有效,MR为清 0 端,高电平有效。按下
S5 和S6,74HC164 分别输入数据 0 和 1。
S5 和 S6 未被按下之前,因为 U19E 和 U19F 的输出都为 0,所以 CP 和 AB 端的数据为
0。当按下 S5 时,U19E 输出 1,信号通过 R64 传送到 CP,使 74HC164 的 CP 管脚得到一
个由 0 到 1 的上升沿脉冲,AB 的数据 0 被送到 74HC164 的 Q0,Q0 的数据被传到 Q1,以
此类推,Q7 的数据被溢出。当按下 S6 时,U19F 输出为 1,使 CP 得到上升沿脉冲,由于信
号通过 D27 会产生延时,信号会先到达 AB 后到达 CP。当 CP 端得到上升沿脉冲时,AB 为
1,数据 1 被送到 74HC164 的 Q0。
2.3.3 地址和数据显示电路
为了不产生总线冲突,因此必须分别在数据产生电路与数据总线D0~D7 之间增加一组
图 2.9 数据产生电路
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
11
三态门进行隔离。如图 2.10所示为Altair-80C31Tiny的地址和数据显示电路,它们被直接挂
在地址总线和数据总线上面显示总线的状态,主要作用是当对Altair-80C31Tiny进行编程时,
显示和验证写入的地址和数据是否正确。插针JP2 和JP3 分别为地址总线和数据总线接口。
如图 2.11所示为地址和数据产生及显示电路
板的电源和三态门使能接口电路,使用时需要用
杜邦线将 JP48A连接到 JP40A, JP48B 连接到
JP40B,JP5 为地址和数据产生电路的三态门接口,
使用时需要用杜邦线和JP7 的相应插针相连,R55
和R56 为三态门的上拉电阻,它可以提高地址和
数据产生电路的抗干扰性,避免因三态门的不稳
定因素使地址和数据电路对Altair-80C31Tiny计算
机产生干扰。
2.3.4 Altair-80C31Tiny(C)
如图 2.12所示为Altair-80C31Tiny(C)的实物图。KA0~KA7 为 8 路地址开关,能够产
生 8 位地址数据,KD0~KD7 为 8 路数据开关,能够产生 8 位数据,在它们与总线接口(JP2
和JP3)之间加入了三态门 74HC125(U5 和U6,U7 和U8)进行总线隔离;绿色发光二极管
D1~D8 显示地址总线的状态;红色发光二极管D9~D16 显示数据总线的状态;JP48A、JP48B
为电源接口;JP5 为三态门使能端口,R55、R56 为上拉电阻。
图2.10 地址和数据显示电路
图2.11 电源和三态门接口
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
12
Altair-80C31Tiny(C)的元器件清单如表 2.2所示。
表2.2 Altair-80C31Tiny(C)元器件清单
名称 型号 封装 数量 单位 标号
1 电阻 3KΩ,±5%,1/6W,Ф1.85×
3.5mm 3 只 R51、R52、R54
2 10KΩ,5%,1/6W,Ф1.85×3.5mm 8 只 R53、R55、R56、
R61~R64、R116
3 网络电阻 1KΩ,A 型 SIP-9 2 只 RP3、RP4
4 瓷片电容 102,±10%,50V,Ф4×2mm 1 只 C27
5 104,+80%-20%,50V,Ф5×2mm 3 只 C1、C2、C3
6 发光二极管 Ф3,红色 SIP-2 8 只 D1~D8
7 Ф3,绿色 SIP-2 8 只 D9~D16
8 二极管 1N4148 DO-35 1 只 D27
9 IC 74HC04 DIP-14 3 只 U1、U2、U3
10 74HC14 DIP-14 1 只 U19
11 74HC164 DIP-14 1 只 U14
12 SN74HC125N PDIP-14 4 只 U5~U8
13 74HC393N DIP-20 1 只 U15
14 IC 座 DIP-14,300mil 10 只 15 轻触按键 6×6×4.3mm,进口 4 只 S5~S8
16 排针 2.54mm,1×40,180°,
L=11.6mm,3.0/6.0,镀全金 3U 1 条
JP2、JP3、JP5、
JP48A、JP48B
17 脚钉 Ф3.8×9.6mm,尼龙脚钉 4 只
图2.12 Altair-80C31Tiny微型计算机(C)
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
13
2.4 PCB设计与制作
前面我们已经学习理解了 Altair-80C31Tiny 微型计算机的结构和工作原理,接下来我们
需要设计 PCB 并制作。对于初学者需要事先学习 PCB 设计的原理和过程以及具体步骤,可
以参考《新编计算机基础教程》2.92 和 2.93 节的内容,了解相关的步骤和技巧和电路板制
作方法。
接下来我们就以 Altair-80C31Tiny 微型计算机电路设计为案例来分析,由于人工制作电
路通常以单面制作为主,所以 PCB 设计要按照单面板风格来设计,具体可以按以下几个步
骤进行:
2.4.1 电路规划
由于是单面板制作,因此设计PCB之前必须根据单面板走线以及电路的实际情况进行模
块划分。如图 2.7和图 2.12所示为组成Altair-80C31Tiny微型计算机的两块电路实物,它们的
接线图如图 3.1所示。这时就会有人问为什么将电路分为两块板制作而不制作在一块完整的
单面板上面呢?下面我们分析为什么。
首先,单面板经常会遇到导线无法走通的情况,而且电路越大越复杂,信号线就越多,
走不通的线也会更多,通常需要将飞线的数量控制在 3~5 根以内。比如 Altair-80C31Tiny
的总线上需要接多个设备,就会存在总线复用的情况,势必存在大量的交叉信号线,如果我
们将电路做到一起的话,那么飞线的数量可能达到 20 根以上,这样产生的后果就是电路的
稳定性显著下降以及造成不美观;其次,就是以常用腐蚀板的规格(100mm×150mm)根
本不可能把电路做到一块电路板上面,也需要将电路分别制作成两个板。最后,当我们将电
路分成两块制作时,需要事先在电路之间留下相应的接口,然后用杜邦线和排线将它们连接
起来,这样做可以大大降低单面走线的难度以及减少飞线数量,同时可以使电路更加美观。
2.4.2 绘制原理图
规划好电路之后就可以画原理图了。在这里我们将不详细讲解。
2.4.3 设计PCB
在绘制 PCB 时。应遵循先布局,再做丝印,最后再画线的规则。
布局时,应做到元器件放置合理且符合应用习惯,例如,核心部件放在中心,分模块放
置;左边或上面放置输入接口,右边放置输出接口;上面放置显示部件,下面或右边应用部
分。因为曝光时放置PCB图可能有偏差,如果版面和板材大小一样的话,走线接近PCB边界
的部分线可能会做不出来,所以设计版面往往要比实际板材的尺寸小一点点。布局时可以参
考图 2.7。
丝印可以提高电路的可读性以及方便用户操作,它隐含了很多的信息。放置丝印时有几
个特点:做到顾名思义;放置在相应器件旁和显眼处,方便应用和生产焊接;方向尽可能放
置一致,不能多于 2 方向。假如一款产品的部分丝印被器件挡住或有 2 个以上方向,对生产
和使用都有一定的影响。
走线之前需要设计线宽,一般信号线走 15~25mil,电源线为 25~35mil,当电流较大
时可以适当加宽。感光腐蚀法的最小线宽可以做到 8~10mil,最小线间距离可以做到 8mil
左右,如果走线太细或者线间距太小,制作时成功率就会大大降低,对于初次制板,建议信
号线走 20~25mil,电源线为 30~35mil,线间距设计为 15mil,当熟练后可以适当变小。设
计好走线规则后就可以走线了,走线要做到尽可能简单,如果走线回路太长可以适当调整布
局使走线应尽可能做到最短;走线时不能出现锐角,尽可能走钝角,若出现 90°走线时需
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
14
要补倒角;若出现信号走不通时,可以飞线,焊接时可以从电路板的正面安装金属管脚焊接,
设计时,尽可能减少飞线的数量,使电路漂亮美观。
2.4.4 电路制作
当 PCB 图设计之后就可以制做电路板了。现在制作电路板主要分为感光法和热转印法,
材料分别为感光板和覆铜板,只是感光板比覆铜板多了一层感光层,所以价格稍贵于覆铜板,
但感光板的精度较高。制作时感光板主要是曝光和显影,而覆铜板需要进行热转印,其余的
过程基本上一样,建议采用感光腐蚀法,原因是热转印法比感光腐蚀法复杂且难掌握。具体
的制作过程在这里我们将不详细讲述,请参考学习《新编计算机基础教程》的 2.93 节 PCB
感光腐蚀法制作电路板过程。在这里建议大家百度一下了解两种制作方法以及它们的区别。
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
15
3. Altair-80C31Tiny硬件电路调试
3.1 电路连接
如图 3.1所示为Altair-80C31Tiny微型计算机的接线图,用杜邦线将“和 80C31Small的复
位管脚(RST)相连的JP31_18”与“和运行控制电路的RESET相连的JP29 的 1 脚”相连;
然后用 8P排线将“和 8 位地址线相连的JP2”与“和低 8 位地址总线相连的JP19”相连;再
用 8P排线将“和 8 位数据线相连的JP3”与“和 8 位数据总线相连的JP30 的单号插针”相连;
再用杜邦线将“和三态门使能端相连接的JP5、JP7 的相应管脚相连”;最后用跳线帽将 EA接
地;最后接通电源。
3.2 程序调试
3.2.1 单灯闪烁
连接好电路之后,我们为Altair-80C31Tiny微型计算机编入一段小程序。如程序清单 3.1
所示为 80C31Small 的P1.0 驱动一只LED灯闪烁发光的程序范例。
程序清单3.1 单灯闪烁程序范例(1)
.AREA HOME(ABS, CODE)
.ORG 0x0000
main:
CPL P1.0 ;P1.0 取反,使 LED 闪烁
MOV R7, #0x00 ;R7 取延时初值 0
ACALL Delay ;调用延时子程序 Delay,延时 143ms
SJMP main
Delay:
MOV R6, #0x00 ;R6 取延时初值 0
DJNZ R6, . ;R6 自减循环
DJNZ R7, Delay ;R7 自减循环
RET
我们知道 Altair-80C31Tiny 一台没有监控程序的计算机,用户只能用二进制机器语言为
这台计算机编程,在编程之前,需要先将程序代码转换成能够运行的二进制机器语言代码。
图3.1 电路连接图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
16
如表 3.1所示为 80C51 反汇编手册中与程序清单 3.1相关的汇编—机器码对照表。手工
翻译成的二进制机器语言代码详见程序清单 3.2。
表3.1 指令对照表 1
指令格式 机器码 功能简述
CPL bit 1011 0010 bit.address (PC) ← (PC)+2 (bit) ← |(bit)
MOV Rn, #data 0111 1rrr data (PC) ← (PC)+2 (Rn) ← #data
ACALL addr11 a10a9a81 0001
a7a6a5a4 a3a2a1a0
(PC) ← (PC)+2 (SP) ← (SP)+1
(SP) ← (PC7-0) (SP) ← (SP)+1
(SP) ← (PC15-8) (PC10-0) ← Page address
SJMP rel 1000 0000 rel.address (PC) ← (PC)+2 (PC) ← (PC)+rel
DJNZ Rn, rel 1101 1rrr rel.address (PC) ← (PC)+2 (Rn) ← (Rn)-1
if (Rn)>0 or (Rn)<0 then (PC) ← (PC)+rel
RET 0010 0010 (PC15-8) ← (SP) (SP) ← (SP)-1
(PC7-0) ← (SP) (SP) ← (SP)-1
程序清单 3.2 单灯闪烁程序范例(2)
地址 操作码与操作数 助记符 注释
0000 0000 1011 0010 main: CPL P1.0 ;P1.0 取反,使 LED 闪烁
0000 0001 1001 0000
0000 0010 0111 1111 MOV R7, #0x00 ;R7 取延时初值 0,
0000 0011 0000 0000
0000 0100 0001 0001 ACALL Delay ;调用延时子程序 Delay,延时 143ms
0000 0101 0000 1000
0000 0110 1000 0000 SJMP main ;跳转到 main
0000 0111 1111 1000
0000 1000 0111 1110 Delay: MOV R6, #0x00 ;R6 取延时初值 0
0000 1001 0000 0000
0000 1010 1101 1110 DJNZ R6, . ;R6 自减循环
0000 1011 1111 1110
0000 1100 1101 1111 DJNZ R7, Delay ;R7 自减循环
0000 1101 1111 1010
0000 1110 0010 0010 RET ;延时返回
解释:程序计数器(PC)从地址 0x00 开始执行,CPL P1.0 为双周期指令,地址为 0x00 和 0x01,操
作码为 0xB2,P1.0 的地址为 0x90,所以操作数为 0x90;MOV R7,0x00 为双周期指令,地址为 0x02 和
0x03,操作码 0111 1+R7(111)为 0x7f,操作数为 0x00;ACALL Delay 为双周期指令,地址为 0x04 和 0x05,
操作码为 0x11,它直接跳转到 0x08 执行 Delay,所以它的操作数为 0x08;SJMP main 为双周期指令,地
址为 0x06 和 0x07,它是程序跳至 main 处执行,操作码为 080,PC=PC+2+rel=PC-6,计算后得出:rel=-8,
所以操作数为 0xf8(-8);MOV R6,0x00 为双周期指令,地址为 0x08 和 0x09,操作码 0111 1+R6(110)
为 0x7e,操作数也为 0x00;DJNZ R6,.为双周期指令,地址为 0x0a 和 0x0b,操作码 1101 1+R6(110)为
0xde,它做自减循环即 PC=PC+2+rel=PC,rel=-2,操作数为 0xfe(-2);DJNZ R6,Dealy 为双周期指令,
地址为 0x0c 和 0x0d,操作码 1101 1+R7(111)为 0xdf,它做自减循环即 PC=PC+2+rel=PC-4,rel=-6,操作数
为 0xfa(-6);RET 为单周期指令,它的操作码为 0x22。
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
17
现在我们将程序清单 3.2的二进制代码写入Altair-80C31Tiny当中并运行。
数据输入:参照图 3.1连接电路,然后接通电源,将模式开关打到 1 使Altair-80C31Tiny
进入编辑状态,这时地址产生电路被连接到总线上面,按下S11 使数据产生电路有效,进入
“写”状态。对照程序清单 3.2,按下S7(CLR)使计数器 74HC393 输出清 0,将地址设置
为 0x00,然后设置数据 0xB2(1011 0010),由于S5 的功能为 0,S6 的功能为 1,所以按键顺
序为S6-S5-S6-S6-S5-S5-S6-S5。设置好第一组数据之后再按下S11,即数据被写到SRAM里
面,它的地址为 0x00。接下来,按下S8(+1)使地址+1 变成 0x01,再将数据设置为 0x90
(1001 0000),按下S11,即写入 0x90,对照程序清单 3.2采用同样的方法将后面的程序代码
全部写入外部SRAM当中;当全部数据写入之后,按下S10(读)立即进入读数据状态,此
时数据三态门无效,由于RS触发器的U10D输出 0,使“读”信号一直有效,只要我们切换
地址就可以读出相应的数据;当验证数据输入无误后,将运行控制开关K11 扳至运行(RUN)
状态,80C31Small高速运行片外数据。
我们利用逻辑分析仪对 80C31Small 运行的程序进行采样,由于 80C31Small运行片外程
序时需要时ALE和 PSEN 两个管脚,所以我们在采集P0 口信号的同时还需要采集ALE和
PSEN 的信号作为分析Altair-80C31Tiny工作过程的依据。如图 3.2所示为逻辑分析仪在
50MHz频率下的采样图。
如图 3.2所示,T0~T1 时刻,80C31Small复位,所有管脚均表现为高电平。将K11 拨到
0 使Altair-80C31Tiny进入运行状态,此时地址和数据产生电路与总线隔离,80C31Small 占
用总线。T1 时刻,程序计数器(PC)将地址 0x00(从 0x00 开始执行片外程序)发送到P0
口,即P0 口发送地址信号 0x00,此时ALE和 PSEN 为高电平,74HC573 透明传输 8 位地
址(RST为 0,OE 有效)。T2 时刻,ALE由高电平变为低电平,74HC573 锁存P0 口的 8 位
地址信号作为SRAM地址输入(复用地址总线)。然后P0 口将作为数据总线准备读取SRAM
的数据,T3 时刻 PSEN 由高电平变为低电平产生“读”信号,T4 时刻P0 口作为数据总线
将片外SRAM的数据(机器指令)读出,指令通过内部总线被传送到指令寄存器IR,再由指
令寄存器IR将指令送到指令译码器,指令译码器根据具体的指令内容通过时序及控制逻辑电
路产生相应的控制信号驱动LED发光。在P0 口读取数据的T5 时刻ALE和PSEN 由低电平变
为高电平准备下一次操作,T6 时刻,程序计数器(PC)将地址 0x01 发送到P0 口读取下一
个字节数据。
其实在整个过程当中主要是对片外程序存储器(SRAM)进行操作,如果把它和现代计
算机比较的话:我们会发现,片外 SRAM 相当于硬盘,它既可以存放程序代码(操作系统),
也可以存放数据(用户个人文件),程序指令和数据都采用二进制形式存放在存储器当中。
图3.2 50MHz采样
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
18
CPU 相当于它的运算器(80C31Small)和运行控制电路的组合体,我们还会发现其他部件
也是一一对应的,这说明 Altair-80C31Tiny 和现代计算机并没有本质上的区别,是早期的计
算机模型,因此它是学习计算机结构原理的最佳途径。我们制作的 Altair-80C31Tiny 计算机,
执行片外程序时,它可以做为早期计算机模型,它是学习计算机原理和汇编指令的工具。当
EA =1 执行片内程序时,80C31Small 主板可以当做一块外扩了 256B SRAM 的 P89V51RB2
学习板,因此它具有多种用途。
3.2.2 LED流水灯
前面详细分析了 80C31Small执行单灯闪烁的过程,现在用P1 口执行流水程序,程序清
单 3.3为LED流水灯程序范例。由于LED为低电平点亮,设初值 0xfe点亮最右边的LED,执
行RL A切换P1 口的状态,点亮左边的下一个LED,当显示第 9 次时又点亮最右边的LED,
这样不断的显示就产生流水灯效果。
程序清单3.3 LED流水灯程序范例(1)
.AREA HOME(ABS, CODE)
.ORG 0x0000
main:
MOV A, #0xfe ;操作数据取初值 0xfe,LED 初始状态为●●●● ●●●☼
Loop:
MOV P1, A
RL A ;累加器循环左移一位
MOV R7, #0x00 ;R7 取延时初值 0,延时 143ms
Delay:
MOV R6, #0x00 ;R6 取延时初值 0
DJNZ R6, . ;R6 自减循环
DJNZ R7, Delay ;R7 自减循环
SJMP Loop
表 3.2为程序清单 3.3的指令反汇编对照表,对照该表翻译LED流水灯的二进制机器语言
代码如程序清单 3.4所示,请大家按照上面的方法将程序清单 3.4的二进制机器语言写入外部
SRAM,拨动K11 使 80C31Small执行流水灯程序,观察它的 80C31Small的状态。请大家将
《新编计算机基础教程》第 5 章的汇编程序译成二进制机器码或者将自己编写的程序译成二
进制机器码写入到Altair-80C31Tiny当中并执行,观察程序运行状态并总结。建议大家在学
习的同时阅读计算机组成原理和编译原理相关的书籍,加深对计算机的了解。
表3.2 指令对照表 2
指令格式 机器码 功能简述
MOV A, #data 1011 0010 bit.address (PC) ← (PC)+2 (A) ← (data)
MOV direct, A 1111 0101 direct address (PC) ← (PC)+2 (direct) ← (A)
RL A 0010 0011 (PC) ← (PC)+1 累加器循环左移一位
MOV Rn, #data 0111 1rrr data (PC) ← (PC)+2 (Rn) ← #data
DJNZ Rn, rel 1101 1rrr rel.address (PC) ← (PC)+2 (Rn) ← (Rn)-1 if (Rn)>0 or (Rn)<0 then (PC) ← (PC)+rel
SJMP rel 1000 0000 rel.address (PC) ← (PC)+2 (PC) ← (PC)+rel
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
19
程序清单 3.4 LED 流水灯程序范例(2)
地址 操作码与操作数 助记符 注释
0000 0000 0111 0100 main: MOV A, #0xfe ;操作数据取初值 0xfe
0000 0001 1111 1110
0000 0010 1111 0101 Loop: MOV P1, A
0000 0011 1001 0000
0000 0100 0010 0011 RL A ;累加器循环左移一位
0000 0101 0111 1111 MOV R7, #0x00 ;R7 取延时初值 0,延时 143ms
0000 0110 0000 0000
0000 0111 0111 1110 Delay: MOV R6, #0x00 ;R6 取延时初值 0
0000 1000 0000 0000
0000 1001 1101 1110 DJNZ R6, . ;R6 自减循环
0000 1010 1111 1110
0000 1011 1101 1111 DJNZ R7, Delay ;R7 自减循环
0000 1100 1111 1010
0000 1101 1000 0000 SJMP Loop ;跳转到 Loop
0000 1110 1111 0011
3.3 在线仿真
如图 2.2所示的最小系统电路的JP3 为UART接口,它可以外接UART电路进行ISP下载编
程,如图 3.3所示的USB-ICE就是一款USB-UART下载器,它是广州致远电子股份有限公司
生产的一款以XR21V1410 为核心的USB-UART转换板兼 ISP下载器和 ICE仿真器,是
XR21V1410 的一个典型应用,如图 3.4所示为USB-ICE的原理图。
Exar 公司的 XR21V1410 是单通道 USB to
UART 器件,具有体积小、功耗低、波特率高、应
用方便等优点,能够在计算机(PC)和微控制器
(MCU)之间建立一条简单易用的通信桥梁(现在
很多电脑已经不再安装传统的 RS-232 COM 端
口)。
电源电路:
CZ1 是 USB 插座接口,从 USB 输入 5V,稳
压后输出 3.3V,C2 的作用滤低频和储能, D2 是
电 源 指 示 灯 。 R1 和 C1 是 保 护 电 路 ,
U1(PRTR5V0U2X)是可选的 ESD 保护器件,可以
防止高压静电烧坏 XR21V1410 芯片。
XR21V1410:
芯片本身只需要连接 VCC、GND、USBD+、USBD-、RX/TX 这几根信号就能正常工作,
SDA 和 SCL 是 I2C 接口,可以挂接一颗 CAT24C02(256B EEPROM)存储用户配置信息,并
且记得一定要上拉 2 只 1.5~6.8kΩ电阻(但一般都可以省略该芯片),D3(RX)和 D4(TX)
是收发指示灯,有数据通过就会跟着闪亮。
UART 接口与 3V/5V 电平转换:
图3.3 USB-ICE
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
20
CN1 是 UART 接口,可以用四芯排线与 Altair-80C31Tiny 的 JP3 对插,TXD 连接 MCU
的 TXD,RXD 连接 MCU 的 RXD,VCC 可以向 MCU 供电(若 MCU 已另有电源 VCC 可
不连接)以 Q1 和 Q2 两只三极管(NPN 型小功率通用管)为核心构成 3.3V-5V 电平转换电路;
C4 和 C5 是重要的基极电容(交流共基电路),不可省略。当进行高速 UART 通信时,可以将
C4 和 C5 降低到 1nF 以下。MCU 的 TXD 接 XR21V1410 的 RX、MCU 的 RXD 接 XR21V1410
的 TX。除此之外用户自己可以制作其他电路模块直接挂到 Altair-80C31Tiny 上面使用。
下面我们利用 Altair-80C31Tiny 核心板和 USB-ICE 进行单片机实验。
电路连接:用跳线帽将 Altair-80C31Tiny(A)的 EA接高电平,使用内部 Flash 存储器,
再将 JP31 的 17 和 18 脚短接,使用上电复位,这时它就是一块通用 P89V51RB2 单片机学习
板了。用 A-B 型的 USB 通信电缆将 USB-ICE 的 CZ1 与计算机的 USB 口相连,再用四芯排
线将 USB-ICE 的 CN1 与 Altair-80C31Tiny(A)的 JP3 相连。
实验之前需要安装开发环境以及电路驱动,请大家到周立功网站(www.zlgmcu.com)
下载安装TKStudio IDE集成开发环境和Exar XR21V141x USB Driver。实验之前请自行学习
《新编计算机基础教程》5.3 节TKStudio IDE和SDCC编译器的内容,然后编辑和调试程序清
单 3.1和程序清单 3.3所示的程序范例,最后用K-Flash下载到P89V51RB2 运行。
图 3.4 USB-ICE 原理图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
21
4. 扩展电路设计与制作
4.1 数码管和矩阵键盘
如图 4.1所示为一款四位共阳极数码管LN3461BS和 2×4 矩阵键盘组成的人机界面
“TinyView”,JP36 为TinyView与单片机之间的接口,segA~segH为四位数码管的段选口,
R66~R73 为限流电阻,com1~com4 通过 4 个 2kΩ电阻接到PNP三极管Q11~Q14 的基极,
这 4 个三极管的发射极并联到+5V电源,三极管的集电极分别与LN3461BS的位选口com1~
com4 相连。增加三极管的主要作用是提高com口的驱动电流,因为数码管的 8 个段选端电
流都要流过com口,而单片机的I/O口没有足够的驱动电流。2×4 矩阵键盘共有 8 个按键,
分别为KY1~KY8,KR1 和KR2 为行线,KC1~KC4 为列线,列线与com1~com4 共用一组
线。
4.1.1 电路制作
了解 TinyView 的电路原理之后就可
以设计 PCB 了。
如图 4.2、图 4.3、图 4.4分别为
TinyView的PCB图、电路丝印图和样品图。
图4.1 TinyView电路图
图 4.2 TinyViewPCB 图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
22
4.1.2 电路调试
1. 硬件调试
数码管调试:接通 Altair-80C31Tiny 的电源,用杜邦线将 JP36 的 VCC 与 JP40A 的 VCC
相连,再将 JP36 的 com1 与 JP40B 的 GND 相连,使四位数码管的 com1 位有效,最后用杜
邦线一端接 JP40B 的 GND,另一端依次接 JP36 的 segA~segH,观察 com1 数码管的 a~h
是否被依次点亮,如果它的那一段不亮的话,说明已经损坏,相反全亮的话说明该位数码管
是好的。然后将 JP36 的 com2 与 JP40B 的 GND 相连,依次点亮其它的位。
矩阵键盘调试:用杜邦线将 JP36 的 VCC 与 JP40A 的 VCC 相连,再将 JP36 的 KR1 和
KR2 与 JP40B 的 GND 相连,使矩阵键盘的行线置 0,只要按下其中一个按键,那么按键所
在的列线也将被拉低,由于矩阵键盘的列线与四位数码管的位选共用一组线,所以相应的那
位数码管的位选被选通,这时只要给数码管段选信号,相应的段将被点亮。假如现在我们将
JP36 的 segA 接 GND,由于矩阵键盘的行线全部被置 0,所以当按下 KY1 和 KY5、KY2 和
KY6、KY3 和 KY7、KY4 和 KY8,那么依次被点亮的是 com1~com4 的 a 段。
2. 软件调试
电路调试完毕之后,接下来就能够进行程序调试了,请大家参考和学习《新编计算机基
础教程》5.4~5.7 节的程序代码。
4.2 16×16 点阵显示屏
如图 4.5为 16×16 点阵显示器电路图,它能够显示一个完整的汉字。可以将它看做是 4
个 8×8 点阵模块通过行对行、列对列组成的,有关 8×8 点阵和 16×16 点阵的描述见《新
编计算机基础教程》6.2 节。
如图 4.5所示两片 74HC595 级联传送 16×16 点阵的列信号,U3 和U4 为 74HC138,它
们组成一个 4-16 线译码器,传送 16×16 点阵的行信号,J2 为电源接口,J1 为 08 接口,A、
B、C、D为行信号接 4-16 线译码器,R1 为数据输入端,接第 1 片 74HC595 的Ds,OE 为
74HC595 的输出使能,LTB为锁存信号输入端,SCK为时钟输入端。
4-16 线译码器的输出为 16 个互斥信号,任一时刻只有一行有效,所以它只能按行从上
到下进行扫描,字符从上向下显示,每显示一行 74HC595 发送 2 个字节数据。由于 74HC595
高位发送最左边的数据,所以字符取模由左向右进行。
图4.3 TinyView丝印图
图 4.4 TinyView 样品图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
23
4.2.1 电路制作
如果用单面板制作如图 4.5所示的 16×
16 点阵显示器,其PCB设计难度是不可想象
的,设计时需要将电路拆分成点阵驱动板和
显示板,拆分后的原理图见《新编计算机基
础教程》图 6.20 和图 6.21。如图 4.6所示为
驱动板的PCB图,图 4.7为显示板的PCB图。
当使用时需要将两块安装到一起,这时需要
用到表贴排针。安装时,驱动板的J3、J4、
J5 焊接 2×16 的排母,方向朝上,显示板的
J3、J4、J5 焊接 2×16 的表贴排针,由于表
图 4.5 16×16 点阵显示器驱动电路图
图 4.6 16×16 点阵驱动板 PCB 图
图 4.7 16×16 点阵显示板 PCB 图
图 4.8 16×16 点阵样品图
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
24
贴排阵被安装在底层,所示它的方向朝下,这时它们就具有了两块单面板对插的条件。它的
样品如图 4.8所示。
4.2.2 程序调试
电路制作完成后,将它连接到Altair-80C31Tiny(A)进行程序调试,16×16LED点阵程
序范例如程序清单 4.1所示,请大家自行编辑调试并下载运行。
程序清单4.1 16×16LED点阵程序范例
.AREA HOME(ABS, CODE)
.ORG 0x0000
PIN_HC138_A = P1.0
PIN_HC138_B = P1.1
PIN_HC138_C = P1.2
PIN_HC138_D = P1.3
PIN_HC595_CP = P1.4
PIN_HC595_DS = P1.5
PIN_HC595_STR = P1.6
PIN_HC595_OE = P1.7
Start:
CLR PIN_HC595_CP ;HC595 移位时钟 SH 上升沿有效,先置低
CLR PIN_HC595_STR ;HC595 锁存时钟 ST 上升沿有效,先置低
CLR PIN_HC595_OE ;OE 使能,HC595 使能低有效
MOV R3, #0 ;当前显示数据偏移量
MOV R2, #0 ;同一汉字显示次数
REDISP:
MOV R4, #0 ;行地址,从 0 行开始
MOV DPTR, #Table ;将 Table 表的地址存入数据指针
Loop:
CJNE R4, #0x10, Loop1 ;判断 16 行是否已经显示完成
INC R2
CJNE R2, #0x80, REDISP ;显示 80 次后显示下一个汉字
MOV A, R3
ADD A, #0x20 ;指向下一组字符
MOV R3, A
CJNE R3, #0xE0, NEXT ;是否显示完所有数据
MOV R3, #0 ;显示完所有数据偏移量清 0
NEXT:
MOV R2, #0
AJMP REDISP
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
25
Loop1:
MOV A, R4 ;行地址移入累加器 A
INC R4 ;行地址加 1,准备显示下一行
MOV R7, A ;行地址用 R7 传递
SETB PIN_HC595_OE ;禁止 74HC595 输出
ACALL HC138_Send_Address ;调用 HC138 写地址子函数
CLR A ;清空累加器 A
ADD A, R3
MOVC A, @A+DPTR ;查表取显示数据
INC DPTR ;指针加 1,为下次取数据做准备
MOV R7, A ;用 R7 传递显示数据
ACALL HC595_Serial_Change_Parallel ;调用 74HC595 发送子程序发送 1 字节数据
CLR A ;清空累加器 A
ADD A, R3
MOVC A, @A+DPTR ;查表取显示数据
INC DPTR ;指针加 1,为下次取数据做准备
MOV R7, A ;用 R7 传递显示数据
ACALL HC595_Serial_Change_Parallel ;调用 74HC595 发送子程序发送数据
CLR PIN_HC595_OE ;使能 74HC595 输出
MOV R6, #0x03 ;延时 0.7086ms
Delay: ;1+[(1+2×80+2)×2]个机器周期
MOV R5, #0x55
DJNZ R5, .
DJNZ R6, Delay
AJMP Loop
HC595_Serial_Change_Parallel: ;74HC595 发送 8 位数据子程序
MOV R6, #0x08 ;发送数据位数计数器
Send_1_bit_Data: ;74HC595 发送一个位子程序
MOV A, R7
RLC A
MOV PIN_HC595_DS, C
MOV R7, A
SH_Rising_Pulse: ;产生 74HC595 的移位时钟上升沿
SETB PIN_HC595_CP
NOP
CLR PIN_HC595_CP
DJNZ R6, Send_1_bit_Data ;判断 8 个位是否发送完成
ST_Rising_Pulse: ;发送完 8 个位产生 74HC595 的锁存时钟上升沿
SETB PIN_HC595_STR
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
Altair-80C31Tiny 微型计算机
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
26
NOP
CLR PIN_HC595_STR
RET ;程序返回
HC138_Send_Address: ;向 74HC138 送地址子程序
MOV A, R7 ;参数移到累加器 A
RRC A ;带符号逻辑右移 A 取出地址最低位
MOV PIN_HC138_A, C ;A 为最低位
RRC A ;右移 A 取出地址第二位
MOV PIN_HC138_B, C
RRC A ;右移 A 取出地址第三位
MOV PIN_HC138_C, C
RRC A ;右移 A 取出地址第四位
MOV PIN_HC138_D, C
RET ;送完地址,程序返回
Table:
.DB 0x00, 0x80, 0x00, 0x80, 0xFC, 0x80, 0x04, 0xFC ;"欢",
.DB 0x45, 0x04, 0x46, 0x48, 0x28, 0x40, 0x28, 0x40
.DB 0x10, 0x40, 0x28, 0x40, 0x24, 0xA0, 0x44, 0xA0
.DB 0x81, 0x10, 0x01, 0x08, 0x02, 0x0E, 0x0C, 0x04
.DB 0x00, 0x00, 0x41, 0x84, 0x26, 0x7E, 0x14, 0x44 ;"迎",
.DB 0x04, 0x44, 0x04, 0x44, 0xF4, 0x44, 0x14, 0xC4
.DB 0x15, 0x44, 0x16, 0x54, 0x14, 0x48, 0x10, 0x40
.DB 0x10, 0x40, 0x28, 0x46, 0x47, 0xFC, 0x00, 0x00
.DB 0x10, 0x00, 0x10, 0x00, 0x10, 0x04, 0x12, 0x7E ;"加",
.DB 0xFF, 0x44, 0x12, 0x44, 0x12, 0x44, 0x12, 0x44
.DB 0x12, 0x44, 0x22, 0x44, 0x22, 0x44, 0x22, 0x44
.DB 0x22, 0x44, 0x4A, 0x7C, 0x84, 0x44, 0x00, 0x00
.DB 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00 ;"入",
.DB 0x01, 0x00, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80
.DB 0x04, 0x40, 0x04, 0x40, 0x08, 0x20, 0x08, 0x20
.DB 0x10, 0x10, 0x20, 0x10, 0x40, 0x0E, 0x80, 0x04
.DB 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x20, 0x18 ;"Z"
.DB 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80
.DB 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x08
.DB 0x30, 0x18, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00
.DB 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0C, 0x00 ;"L",
.DB 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00
广州周立功单片机科技有限公司 《新编计算机基础教程》配套读物(2)
工程技术笔记 ©2012 Guangzhou ZLG MCU Technology Co., Ltd.
27
Altair-80C31Tiny 微型计算机
.DB 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x08
.DB 0x0C, 0x18, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00
.DB 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x06, 0x1C ;"G",
.DB 0x0C, 0x0C, 0x18, 0x04, 0x18, 0x00, 0x18, 0x00
.DB 0x18, 0x00, 0x18, 0x3C, 0x18, 0x18, 0x0C, 0x18
.DB 0x06, 0x18, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00