V .. . ..
微机原理与接口技术
课程设计报告
项目名称:十进制数计算器的设计与实现
专业名称:计算机科学与技术(交通信息工程)学生姓名:李俊(201324020311)
教师姓名:马荣贵
2016年1月1日
一、项目名称及要求 (3)
1项目名称 (3)
2项目要求 (3)
二、项目背景及设计目的 (3)
1项目背景 (3)
2项目目的 (3)
三、设计思路 (3)
1总体设计思路 (3)
2设计流程图 (3)
四、项目方案及原理图 (3)
1项目方案 (3)
2并行接口8255A (3)
3键盘输入模块 (3)
4LED数码管输出模块 (3)
5原理图设计 (3)
五、结果与分析 (3)
1实现现象 (3)
2现象分析 (3)
六、总结及体会 (3)
七、附录 (3)
1参考文献 (3)
2源代码 (3)
一、项目名称及要求
1 项目名称
十进制数计算器的设计与实现
2 项目要求
运用学过的《微机原理与接口技术》课程以及本学期的上机实验操作经验,根据题目设计要求进行软硬件系统的设计和实现,从而加深对本课程知识点的理解。
通过具体项目的实践,来提高学生的动手能力以及实时解决问题的能力,使学生综合能力得到显著提升。
本课题要求学生熟练运用并行接口8255A芯片、4*4键盘输入模块以及
LED数码管输出模块的工作原理以及相应元件驱动程序的编写。
要求通过4*4键盘输入,LED数码管显示来完成简单计算器的功能(加减乘除操作)
二、项目背景及设计目的
1 项目背景
大学课程设计是为了辅助学生加深对本课程的理论知识的理解和提高。
通过动手完成实际的项目设计及实现,减小理论与实践的距离,让同学对实际项目实现的流程有个大体的感受。
通过合作完成项目,提高同学的合作意识,以及模块化设计理念。
2 项目目的
通过十进制数计算器的设计与实现,了解proteus软件使用;
熟练掌握原理图的设计方法
知道各硬件的功能以及电路实现
三、设计思路
1 总体设计思路
4*4键盘输入模块:
键盘“0~9”对应数字0~9
键盘“A”对应符号“+”
键盘“B”对应符号“-”
键盘“C”对应符号“*”
键盘“D”对应符号“/”
键盘“E”对应符号“CE”
键盘“F”对应符号“=”
并行接口8255A:
A口用于LED数码管的段码输出
B口用于LED数码管的位码输出
C口用于4*4键盘的输入
LED数码管输出模块:
采用动态显示的方式,将并行接口8255A中A口中的段码显示2 设计流程图
四、项目方案及原理图
1 项目方案
先设计原理图,然后用PCB布线仿真,最后去实验室用实验器材实现设计2 并行接口8255A
并行接口8255A:
8255A是通用可编程并行接口芯片,是有40个引脚的双列直插式组件,其基本功能为:8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是输出端口;8255A能适应CPU与I/O 接口之间的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。
与此相对应,8255A设置了方式0、方式1以及方式2;
8255A的C口比较特殊,除作为数据口之外,在工作方式1和方式2下,它的部分信号线被分配作为专用的联络应答信号。
8255A引脚图:
8255A的工作原理:
方式0:基本输入输出方式;
方式1:选通式输入/输出方式;
方式2:双向选通输入/输出方式。
8255的控制字:工作方式选择控制字,D7~D0控制位的含义见下图:
本实验中使8255端口C高四位(PC7-PC4)与键盘扫描行连接,低四位(PC0-PC3)与键盘扫描列连接,B口低四位(PB0-PB3)用于控制数码管位码,端口A输出段码信号用于控制数码管对键盘数值的显示。
3 键盘输入模块
4*4键盘:
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。
4*4键盘的电路实现:
4 LED数码管输出模块
LED数码管:
8段数码显示管用于一般的状态或数字的显示
共阴极对应字符的段码表:
显示字形dp g f e d c b a 段码
0 0 0 1 1 1 1 1 1 3fh
1 0 0 0 0 0 1 1 0 06h
2 0 1 0 1 1 o 1 1 5bh
3 0 1 0 0 1 1 1 1 4fh
4 0 1 1 0 0 1 1 0 66h
5 0 1 1 0 1 1 0 1 6dh
5 原理图设计
五、结果与分析
1 实现现象
2 现象分析
由于LED显示是动态的,就没有以图片的方式展示,不过在电子版的报告
中,现象视频在附录文件中。
上述现象包含加减乘除以及混合运算的演示。
其中已经演示了包含高于两位十进制数、负数的运算。
六、总结及体会
这次实验真是一波三折,刚开始我的选题是8259的级联,我和我的小组成员已经将实验的流程以及具体实施方案规划好了。
但是由于临时的变动了选题,我们开始重新设计,利用课余时间陆陆续续的完成了整个设计流程。
到课设的第一天,我们开始连线,以及将驱动程序写入,但是测试的时候出现各种问题,比如说显示不正常,屏幕闪烁太频繁。
我们晚上回去思考,第二天重新调试,得到了预期的结果。
由于课设的时间还没有结束,我们又将其功能进行了扩展:可以实现多位计算器,可实现负数运算,可实现连续运算。
不足的地方在于,没有实现对不同级别运算的先后顺序的判断。
七、附录
1 参考文献
《微机原理与接口技术》,郭兰英等编著,清华大学出版社,2006年
《C++语言程序设计》(第四版),郑丽等编著,清华大学出版社,2010年《TPC-ZK产品说明》,清华大学器材部编写,清华大学出版社,2008年
2 源代码。