微机原理及接口技术课程设计报告

上传人:桔**** 文档编号:487401647 上传时间:2023-06-13 格式:DOC 页数:16 大小:325KB
返回 下载 相关 举报
微机原理及接口技术课程设计报告_第1页
第1页 / 共16页
微机原理及接口技术课程设计报告_第2页
第2页 / 共16页
微机原理及接口技术课程设计报告_第3页
第3页 / 共16页
微机原理及接口技术课程设计报告_第4页
第4页 / 共16页
微机原理及接口技术课程设计报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《微机原理及接口技术课程设计报告》由会员分享,可在线阅读,更多相关《微机原理及接口技术课程设计报告(16页珍藏版)》请在金锄头文库上搜索。

1、. .微机原理与接口技术课程设计报告工程名称:十进制数计算器的设计与实现专业名称:计算机科学与技术交通信息工程学生:俊202124020311教师:马荣贵2021年1月1日一、工程名称及要求21 工程名称22 工程要求2二、工程背景及设计目的21 工程背景22 工程目的2三、设计思路21 总体设计思路22 设计流程图2四、工程方案及原理图21 工程方案22 并行接口8255A23 键盘输入模块24 LED数码管输出模块25 原理图设计2五、结果与分析21 实现现象22 现象分析2六、总结及体会2七、附录21 参考文献22 源代码2一、 工程名称及要求1 工程名称十进制数计算器的设计与实现2 工

2、程要求运用学过的微机原理与接口技术课程以及本学期的上机实验操作经历,根据题目设计要求进展软硬件系统的设计和实现,从而加深对本课程知识点的理解。通过具体工程的实践,来提高学生的动手能力以及实时解决问题的能力,使学生综合能力得到显著提升。本课题要求学生熟练运用并行接口8255A芯片、4*4键盘输入模块以及LED数码管输出模块的工作原理以及相应元件驱动程序的编写。要求通过4*4键盘输入,LED数码管显示来完成简单计算器的功能加减乘除操作二、 工程背景及设计目的1 工程背景大学课程设计是为了辅助学生加深对本课程的理论知识的理解和提高。通过动手完成实际的工程设计及实现,减小理论与实践的距离,让同学对实际

3、工程实现的流程有个大体的感受。通过合作完成工程,提高同学的合作意识,以及模块化设计理念。2 工程目的通过十进制数计算器的设计与实现,了解proteus软件使用;熟练掌握原理图的设计方法知道各硬件的功能以及电路实现三、 设计思路1 总体设计思路4*4键盘输入模块:键盘09对应数字09 键盘A对应符号+键盘B对应符号-键盘C对应符号*键盘D对应符号/键盘E对应符号CE键盘F对应符号=并行接口8255A:A口用于LED数码管的段码输出B口用于LED数码管的位码输出C口用于4*4键盘的输入LED数码管输出模块:采用动态显示的方式,将并行接口8255A中A口中的段码显示2 设计流程图四、 工程方案及原理

4、图1 工程方案先设计原理图,然后用PCB布线仿真,最后去实验室用实验器材实现设计2 并行接口8255A并行接口8255A:8255A是通用可编程并行接口芯片,是有40个引脚的双列直插式组件,其根本功能为:8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是输出端口;8255A能适应CPU与I/O接口之间的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。与此相对应,8255A设置了方式0、方式1以及方式2;8255A的C口比较特殊,除作为数据口之外,在工作方式1和方式2下,它的局部信号线被分配作为专用的联络应答信号。8255A引脚图:82

5、55A的工作原理:方式0:根本输入输出方式;方式1:选通式输入/输出方式;方式2:双向选通输入/输出方式。8255的控制字:工作方式选择控制字,D7D0控制位的含义见以下图:本实验中使8255端口C高四位PC7-PC4与键盘扫描行连接,低四位PC0-PC3与键盘扫描列连接,B口低四位PB0-PB3用于控制数码管位码,端口A输出段码信号用于控制数码管对键盘数值的显示。3 键盘输入模块4*4键盘:矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个穿插点上,设置一个按键。这样键盘中按键的个数是44个。这种行列式键盘构造能够有效地提高单片机系统中

6、I/O口的利用率。4*4键盘的电路实现:4 LED数码管输出模块LED数码管:8段数码显示管用于一般的状态或数字的显示共阴极对应字符的段码表:显示字形dpgfedcba段码0001111113fh10000011006h201011o115bh3010011114fh40110011066h5011011016dh6011111017dh70000011107h8011111117fh9011011116fh.1000000080hV001111103eh5 原理图设计五、 结果与分析1 实现现象2 现象分析由于LED显示是动态的,就没有以图片的方式展示,不过在电子版的报告中,现象视频在附录文

7、件中。上述现象包含加减乘除以及混合运算的演示。其中已经演示了包含高于两位十进制数、负数的运算。六、 总结及体会这次实验真是一波三折,刚开场我的选题是8259的级联,我和我的小组成员已经将实验的流程以及具体实施方案规划好了。但是由于临时的变动了选题,我们开场重新设计,利用课余时间陆陆续续的完成了整个设计流程。到课设的第一天,我们开场连线,以及将驱动程序写入,但是测试的时候出现各种问题,比方说显示不正常,屏幕闪烁太频繁。我们晚上回去思考,第二天重新调试,得到了预期的结果。由于课设的时间还没有完毕,我们又将其功能进展了扩展:可以实现多位计算器,可实现负数运算,可实现连续运算。缺乏的地方在于,没有实现

8、对不同级别运算的先后顺序的判断。七、 附录1 参考文献微机原理与接口技术,郭兰英等编著,清华大学,2006年C+语言程序设计第四版,丽等编著,清华大学,2021年TPC-ZK产品说明,清华大学器材部编写,清华大学,2021年2 源代码/*/*实验名称:运算器*/*实验容:实现加减乘除运算*/*作者:俊、丰翔*/*时间:2021 -11-21*/*/*include*include*include ApiExusb.h*pragma comment(lib,ApiExusb.lib)char led18=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0

9、x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40; /* 0F 无字符负号 */void toshu(byte *a,int &shu1) /*将数组a中的字符转化为一个数*/if(a3=16)shu1=0;else if(a2=16)shu1=a3;else if(a1=16)shu1=a3+10*a2;else if(a0=16)shu1=a3+10*a2+100*a1;else shu1=a3+10*a2+100*a1+1000*a0;void shuto(byte* a,int shu1) /*将一个数的各个位转化到数组a中*/int fuhao1

10、;if(shu10)fuhao1=-1;shu1=-shu1;a0=shu1/1000%10;/* 保证溢出的时候仍能正常显示低位*/a1=shu1/100%10;a2=shu1/10%10;a3=shu1%10;if(a0=0&a1=0&a2=0&a3=0)a0=16; a1=16;a2=16;a3=0;else if(a0=0&a1=0&a2=0)a0=16;a1=16;a2=16;if(fuhao10)a2=17;else if(a0=0&a1=0)a0=16;a1=16;if(fuhao10)a1=17;else if(a0=0)a0=16;if(fuhao10)a0=17;void

11、jisuan(int &shu1,int shu2,char fuhao) /*计算,将结果存入shu1中*/if(fuhao=+)shu1+=shu2;else if(fuhao=-)shu1=shu2-shu1;else if(fuhao=*)shu1*=shu2;else if(fuhao=/&shu1!=0)shu1=shu2/shu1;else printf(运算不合法);exit(0);void main() byte data; byte i,j,k=3,ll=0,l=0;/*k是用来控制数码管位码的*/ byte a4=16,16,16,0;/*用来存储LED对应段码的在数组中

12、的下标*/ int shu1=0,shu2=0;/* shu1是临时操作数;shu2是上一步的计算结果*/ char fuhao=+;printf(Press any key to begin!n);getch();if(!Startup()/*翻开设备*/printf(ERROR: Open Device Error!n);return; printf(press any key to exitn); PortWriteByte(0x28b,0x81);/*设置8255的A口B口均为输出、C口输入 1000 10001*/PortWriteByte(0x28a,0x0f); PortReadByte(0x28a,&data);/* 预读端口值 */ i=data; while(!kbhit()/*如果不按接盘,一直循环工作*/ PortWriteByte(0x28b,0x81);/*设置8255的A口B口均为输出 C口输入 1000 10001*/ /PortWriteByte(0x289,0); PortWriteBy

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号