北邮微机系统与接口技术小学期报告

北邮微机系统与接口技术小学期报告
北邮微机系统与接口技术小学期报告

北京邮电大学课程设计报告

目录

1. 实验目的

①.进一步加深和巩固对所学知识点的理解和掌握;

②.综合运用所学知识、工程原理来分析和完成本课程设计;

③.理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;

④.掌握接口电路设计过程和驱动程序的编写方法;

⑤.学会如何区分系统中软件、硬件故障和调试手段;

⑥.培养计算机软硬件的综合设计能力和调试能力。

2. 实验内容

硬件部分

4x4小键盘接口设计(利用8255 C口)

异步串行通信接口设计(8254为波特率发生器)

4位数码管显示器设计

软件部分

键盘扫描程序。将按键0F转换成015的二进制值

串行接口通信程序。1.发送/接收均为查询方式;2.发送为查询方式/接收采用中断方式;二者选其一

4位七段数码管显示程序。左移位方式显示09、AF

将串行接口发送端和接收端环回,当在4x4小键盘上敲击按键时,经串口发送、接收后将对应键值显示在4位数码管上。(要求:依次敲击1、2、3、4、5、…,则依次显示xxx1、xx12、x123、1234、2345、…)

要求

两个实验组间进行双机通信,一方用小键盘键入数字,另一方接收到后在4位数码管上显示

在液晶显示器上实现显示功能(选作,成绩加10分,但满分为100分)

3. 实验原理

设计思想

主函数

发送端:从8255C口进行键盘扫描读入按键,获得其ASCII码值,将其发送给8251,并把发送值变换为七段译码值在LED上进行移位显示。

接收端:8251接收到发送来的ASCII码值,在液晶显示器LCD上进行移位显示。

主函数为一个大循环,采用查询方式,依次查询是否有键被按下,发送是否准备好,按键是否为E,接收是否准备好,接受到的数据是否为E,条件满足则执行相应操作,不满足则进行下一个查询,而不是原地踏步地查询。若按键不为E则返回一开始循环执行主程序。

键盘扫描

8255C口高四位PC7-PC4输出,低四位PC3-PC0输入,接键盘的行3-列0。

采用行扫描法,使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;

如果列值中有某位为低电平,则表明当前行与当前列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止。

分别用寄存器记录当前行和当前列,并用行数X 4+列数计算键值。

数码管显示

8255B口输出,高四位PB7-PB4接LED位码S3-S0,选择某一个数码管。

8255A口输出,PA7-PA0接LED的DP-A,将七段译码值输出到数码管,并进行显示。

液晶屏显示

8255B口输出,低三位PB2,PB1,PB0分别接LCD的E,RW,DI,控制液晶显示器的使能,读/写,数据/指令。

8255A口输出,PA7-PA0接LCD的D7-D0,与LED复用数据线,将ASCII值输出到液晶屏,并进行显示。

实验原理图

系统接线图

自发自收

CLK0 /8254 接 1M时钟

GATE0/8254 接 +5V

OUT0 /8254 接 TX/RXCLK/8251

CS /8254 接 Y0/IO地址

CS /8251 接 Y7/IO地址

RXD /8251 接 TXD/8251

双机通信

机器A的RXD/8251接机器B的TXD/8251 ,机器B的RXD/8251 接机器ATXD/8251,其余接线与自发自收相同。

显示模块

PA7~PA0/8255 接 DP-A/7段译码管

PA7~PA0/8255 接 D7-D0/LCD12864

PB7-PB4/8255 接 S3-S0/7段译码管

PB2 /8255 接 E/LCD12864

PB1 /8255 接 R/W /LCD12864

PB0 /8255 接 D/I /LCD12864

PC7~PC0/8255 接行3-列0/4*4键盘

CS /8255 接 Y1/IO地址

流程图

4. 实验程序

5. 实验结果

硬件连线图

自发自收

自发自收时,按下4×4键盘,可以看到对应键值在数码管上移位显示,即发送的数据,同时,在LCD液晶显示屏上出现接收的数据,与数码管显示的一致。当在键盘按下E,数码管不再显示,LCD液晶屏也清屏。

双机通信

两机通信时,A机按下4×4键盘,A机的数码管显示按下的键值,B机收到A机发送的数据,在LCD液晶显示屏显示,即A机的数码管与B机的液晶显示屏显示内容一致。B机发送数据时,在B机的数码管显示B机按下的键值,A机LCD液晶显示屏显示收到的数据,即B机的数码管与A机的液晶显示屏显示内容一致。通信过程中,任意一端均可做发送或接受端。在任意一端4×4键盘按下E时,两机都结束通信,数码管不显示,LCD液晶屏清屏。

6. 问题解决及收获体会

问题解决

问题:LED显示出现明显的闪烁

解决:LED是靠高电平点亮,要保持其显示,必须要持续给LED高电平。所以在每个循环中,要多次调用LED显示函数。

问题:LED输出重叠显示

解决:在进行数码管显示时,要先输出数据,再选择位码,否则会因为顺序相反造成重叠显示。

问题:运行程序时,只按键一次程序就退出

解决:在主程序中有个大循环,在大循环的最后要使用jmp语句跳到开头重复进行查询。

问题:LCD无法显示

解决:在一开始要对LCD进行初始化,如发送基本指令集等。

问题:双机通信时双方没有显示

解决:数据未能稳定传输,将两台机器共地。

实验过程还有很多如编译错误,赋值错误等问题,不再一一列出。还有部分问题解决见收获体会↓。

收获体会

相关主题
相关文档
最新文档