目 录
第一章 设计课题………………………………………………………………………………1
1.1 设计要求 .…………………………………………………………………………………………………………… 1
1.2 设计目的 .…………………………………………………………………………………………………………… 1
1.3 基本实验设备 …………………………………………………………………………………………………… 1
第二章 设计思想及实施方案 ………………………………………………………2
2.1 设计思想 .…………………………………………………………………………………………………………… 2
2.2 总体方案 ……………………………………………………………………………………………………………..3
第三章 程序模块及技巧分析 ………………………………………………………9
3.1 典型程序模块分析…………………………………………………………………………………………………..9
第四章 设计中的问题与技巧………………………………………………………11
4.1 本地部分………………………………………………………………………………………………………………..11
4.2 远程(串行)部分…………………………………………………………………………………………………13
第五章 程序清单·流程图…………………………………………………………14
5.1 本地部分程序流程图……………………………………………………………………………………………..14
5.2 远程(串行)部分程序流程图………………………………………………………………………………17
5.3 汇编语言编写的程序..……………………………………………………………………………………………18
C 语言编写的程序…………………………………………………………………………………………………..51
5.4
第六章 收获与体会 …………………………………………………………… 81
第七章 参考文献 ………………………………………………………………… 82
第一章 设计课题
本次实验所选择的设计课题为设计题 11:点阵 LED 显示功能设计
1.1 设计要求:
1.编程语言为汇编语言和 C 语言;
2.硬件电路基于 80x86 微机接口电路;
3.程序功能要求:小键盘给定、数码管显示、控制并显示“待机”,“欢迎你进入系统!”,
“再见”(延时 10 秒);
4.具备本地及远程(串行方式)功能。
1.2 设计目的:
1. 学习 LED 点阵的基本使用方法以及编程方法
2. 学习基于 80x86 微机接口电路的 LED 点阵的设计
3. 掌握矩阵键盘的硬件电路原理以及其扫描程序
4. 掌握串行接口芯片 16550 的工作方式及应用
5. 学习 16550 实现远程通讯的基本编程方法
1.3 基本实验设备
1.
2.
PC 微机两台
TD-PIT+实验系统 2 套
第二章 设计思想和实施方案
2.1 设计思想
8×8 点阵 LED 的工作原理
下图为 8×8 点阵 LED 外观及引脚图,只要其对应的 R、L 轴顺向偏压,即可
使 LED 发亮。例如如果想使左上角 LED 点亮,则 R1=1,L1=0 即可。应用时限流电阻可
以放在 R 轴或 L 轴。
对于 8X8 点阵 LED,只有当某点对应的行、列皆选通,该点才发光,所以,要使点阵显
示出一个汉字,则对应点皆要选通,但是,目前在实验室中点阵 LED 的适用扫描方法只有行
扫描或者是列扫描,无论采取哪一种扫描,都不可能一次性地显示出汉字,故此,只能通过
定义每个字在对应选通行(列)的对应选通列(行)的十六进制码,在行扫描(列扫描)的
方法下逐一显示。另外,由于扫描系统非常快,为使每个字都能清楚显示并停留一段时间,
对于扫描显示程序要作相应的延迟或重复,使扫描频率达到足以引起我们的视觉暂留效果,
对应的观看者就能观看到点阵上显示的汉字。
同时,为使显示汉字可控性,加入键盘控制,从而人为地操控字段显示。
对于本实验的远程(串行)功能,目标是在发送机上运行发送程序,按下相应的显示按
键,接收机上通过接受程序判断发送机的按键情况,操作点阵 LED 显示相应字段,即一机操
控,另一机执行。
2.2 总体方案
本实验按照要求可划分为两大部分:
1.本地实现部分
包含五大模块:
·8086CPU 中控模块
·矩阵键盘及数码管显示模块
·8X8 点阵 LED 显示模块
·基本输入输出单元模块
·8255 并口控制器模块
8086CPU 中控模块:
利用 8086CPU 作为本系统的中控模块,CPU 可以将寄存器中传来的数据做软件处理;
矩阵键盘及数码管显示模块:
矩阵键盘有按键按下时,通过程序的消除抖动、保存键值等步骤后,数码管即时显示
相应的数字;
8X8 点阵 LED 显示模块:
通过程序确定采用行扫描方式,当矩阵键盘及数码管显示模块有选定键按下时,读取
每一行相应的列选通码,通过程序中一系列的延时子程序及重复子程序使每个字清楚显示
一段适当的时间,并通过程序实现字移动显示等效果;
基本输入输出单元模块:
基本输入输出单元是由 74LS245 以及 74LS374 组成,本模块是用于连接 8X8 点阵 LED
显示模块,将相应的设定码输出到 8X8 点阵 LED 使之显示出相应的汉字;
8255 并口控制器模块:
本模块连接矩阵键盘及数码管显示模块,通过 A 口、C 口实现矩阵键盘扫描程序的执
行,通过 B 口实现数码管显示功能。
本地部分各模块硬件接线图如下:
系
统
总
线
8X8 点阵 LED 单元接线图
8255 单元及矩阵键盘数码管显示单元接线图
方案流程如下:
基本输入输出单元 0A 端及 OB 端分别接 8X8 点阵 LED 单元的 R 端及 L 端,OA、OB 端皆
作输出端,基本输入输出单元的 CS_A 端接系统总线 IOY2,CS_B 端接系统总线的 IOY3;8255
单元的 B 口输出,接数码管单元的 A—DP,A 口输出,低四位接矩阵键盘及数码管显示单元
的 X1—X4 端,C 口输入,低四位接矩阵键盘及数码管显示单元的 Y1—Y4 端,8255 单元的
CS 端接系统总线的 IOY1。
当矩阵键盘有键按下时,判断该键的列行信息,通过程序根据 8255 单元的 C 口低四
位、A 口低四位信息(即矩阵键盘的 X 端及 Y 端信息)检测出相应键值,并将对应的数码管
显示码通过 B 口输出到数码管端口 A—DP,从而显示出相应的按键号码;再判断该按键是否
属于指定按键,若不是,继续执行扫描键盘程序直至有指定键按下或满足返回 DOS 条件而
返回 DOS,若是,则程序执行按键键值比较步骤,跳到相应显示汉字的子程序,选出该汉字
对应的字模,通过基本输入输出单元输出到 8X8 点阵 LED 单元,通过行扫描方式显示该段
汉字,显示完毕,则扫描程序自动将存储键值归零,使显示只执行一次,再进入新一轮的键
扫描。
2.远程(串行)功能部分
需要两台计算机及两台实验仪器
包含六大模块:
·8086CPU 中控模块
·矩阵键盘及数码管显示模块
·8X8 点阵 LED 显示模块
·基本输入输出单元模块
·8255 并口控制器模块
·16550 串口控制器
8086CPU 中控模块:
利用 8086CPU 作为本系统的中控模块,CPU 可以将寄存器中传来的数据做软件处理;
矩阵键盘及数码管显示模块:
矩阵键盘有按键按下时,通过程序的消除抖动、保存键值等步骤后,数码管即时显示
相应的数字;
8X8 点阵 LED 显示模块:
通过程序确定采用行扫描方式,当矩阵键盘及数码管显示模块有选定键按下时,读取
每一行相应的列选通码,通过程序中一系列的延时子程序及重复子程序使每个字清楚显示
一段适当的时间,并通过程序实现字移动显示等效果;
基本输入输出单元模块:
基本输入输出单元是由 74LS245 以及 74LS374 组成,本模块是用于连接 8X8 点阵 LED
显示模块,将相应的设定码输出到 8X8 点阵 LED 使之显示出相应的汉字;
8255 并口控制器模块:
本模块连接矩阵键盘及数码管显示模块,通过 A 口、C 口实现矩阵键盘扫描程序的执
行,通过 B 口实现数码管显示功能;
16550 串口控制器
将发送端计算机的按键信息发送到接收端计算机的 16550 串口控制器,再通过程序判
断按键类型,选取相应的汉字字模,再输出到 8X8 点阵 LED 单元显示对应汉字。
两台计算机(连带实验仪器),一台作发送端,一台作接收端;
发送端接线如下:
8255 单元及矩阵键盘数码管显示单元接线图
接收端接线如下:
系
统
总
线
8X8 点阵 LED 单元接线图
两机各 16550 串口控制器连线及两机互联接线图
接收端中,基本输入输出单元 0A 端及 OB 端分别接 8X8 点阵 LED 单元的 R 端及 L 端,
OA、OB 端皆作输出端,基本输入输出单元的 CS_A 端接系统总线 IOY1,CS_B 端接系统总线
的 IOY2;
发送端中,8255 单元的 B 口输出,接数码管单元的 A—DP,A 口输出,低四位接矩阵
键盘及数码管显示单元的 X1—X4 端,C 口输入,低四位接矩阵键盘及数码管显示单元的 Y1
—Y4 端,8255 单元的 CS 端接系统总线的 IOY1。
接收端中的 16550 的 INTR 端需接系统总线的 INTR 引脚。
方案流程如下:
当发送端的矩阵键盘有键按下时,判断该键的列行信息,通过程序根据 8255 单元的 C
口低四位、A 口低四位信息(即矩阵键盘的 X 端及 Y 端信息)检测出相应键值,并将对应的
数码管显示码通过 B 口输出到数码管端口 A—DP,从而显示出相应的按键号码,并且将该码
输出到 16550 串口控制器的除数寄存器 MY16550_0;
接收端不断检测 16550 串口控制器的除数寄存器 MY16550_0 是否有信息输入,有则判
断该信息是否指定按键信息,若不是,继续执行检测程序直至有指定键信息输入或满足返回
DOS 条件而返回 DOS,若是,则程序执行按键键值信息比较步骤,跳到相应显示汉字的子程
序,选出该汉字对应的字模,通过基本输入输出单元输出到 8X8 点阵 LED 单元,通过行扫
描方式显示该段汉字,显示完毕,则程序自动清屏,使显示只执行一次,再进入新一轮的端
口信息扫描。