微机原理及应用课程设计报告最终版要点.docx
《微机原理及应用课程设计报告最终版要点.docx》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计报告最终版要点.docx(15页珍藏版)》请在冰豆网上搜索。
![微机原理及应用课程设计报告最终版要点.docx](https://file1.bdocx.com/fileroot1/2023-1/10/4f4e1385-6086-4495-8ba5-7f175b590718/4f4e1385-6086-4495-8ba5-7f175b5907181.gif)
微机原理及应用课程设计报告最终版要点
《微机原理及应用》课程设计报告
题目
LED16*16点阵实验
学院
电子信息工程学院
专业
电子信息工程
组长姓名和学号
学生姓名和学号
指导教师
2015年1月22日
目录
1选题目的、意义及任务..............................................1
1.1选题目的......................................................1
1.2选题意义......................................................1
1.3设计任务......................................................1
2方案设计.........................................................2
2.1设计思路.....................................................2
2.2总体设计......................................................3
2.3设计论证......................................................3
2.4硬件连接......................................................3
3设计流程.........................................................6
3.1程序流程图....................................................6
4主程序分析.......................................................7
4.1程序分析......................................................7
4.2功能解释......................................................9
5调试结果.........................................................9
5.1硬件、软件实现................................................9
5.2结果图.......................................................10
6团队构成........................................................10
7问题分析........................................................11
8心得体会........................................................11
8附录............................................................14
1选题目的、意义及任务
1.1选题目的
本次微机原理及应用课程设计我们组的选题是LED16*16点阵实验。
LED点阵通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,
LED点阵常常被用来做点阵屏。
点阵屏是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。
LED点阵显示系统中各模块的显示方式有静态和动态显示两种,静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可以显示各种图形或文字信息。
对于我们的课程设计主要目的如下:
①熟悉8155、8255的功能,了解点阵显示的原理及控制方法;
②学会使用LED点阵,通过编程显示不同字符;
1.2选题意义
LED显示屏具有亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定等特点。
广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
因此16*16LED点阵实验的课程设计对实际的生产和生活具有非常重要的指导意义。
通过LED16*16点阵实验来让我们更好地理解微机工作的原理,并更深层次的了解各大芯片的用法以及功能。
1.3设计任务
设计一个能显示16X16点阵图文LED显示屏,要求能显示文字,文字应稳定、清晰,文字以卷帘形式向上滚动显示“欢迎使用星研实验仪”。
2方案设计
2.1设计思路
16×16点阵LED电子显示屏的设计:
能依次显示“欢迎使用星研实验仪”几个字符。
LED点阵中没有16X16的点阵,可以通过四个8X8的LED点阵对应的行和列分别连接起来构成16X16点阵,此时共需要32根行列控制线,对微机来说明显不够,需要外扩I/O接口。
可以选择的芯片有8255、8155等。
设计过程中注意LED的驱动电压。
本实验微机扩展采用74LS244N、8255A、8155A。
LED采用动态扫描的显示方法。
这样扫描驱动电路就可以实现多行的同名列共用一套驱动器。
具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阴极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其点亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快,由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在微机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
2.2总体设计
图1总体设计框架
2.3设计论证
图文显示一般有静态和动态显示两种方案,静态方案虽然设计简单,但其使用的管脚太多,如本设计中16x16的点阵共有256个发光二极管,显然微机没有这么多的端口,如果采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
这就是我们此次课程设计在显示字符上使用动态扫描的原因。
2.4硬件连接
本次设计采用了STARES598+实验仪,本实验硬件使用该实验仪,使用实验仪的A2、A3和B4区。
具体的连线可按下图连接。
表1连线说明
连接区
接线位置标号(依次)
被连接区
被接线位置标号(依次)
B4区
CS(8255)、A0、A1
A3区
CS1、A0、A1
B4区
CS(8152)、IO/M
A3区
CS2、A8
B4区
JP56、JP53
A2区
JP23、JP24(行输出线)
B4区
JP52、JP76
A2区
JP33、JP34(列输出线)
图2LED驱动原理图
LED驱动原理图是通过AD软件绘制的,另附有原理图生成的PCB版图。
在实际连接线路时需要注意接线的方向,行线跟8255的PA口,PB口要高低位对应,不可接反。
而16×16点阵LED的两根列线编号跟点阵是相反的,故连线的时候两根列线要与8255的PC口,8155的PA口高低位反接。
在该电路中JP23、JP24组成16根行扫描线;JP33、JP34组成16根列扫描线。
行扫描线是低电平有效,列扫描线是高电平有效。
需要介绍的芯片是可编程接口芯片8155,8255A接口芯片就不再介绍。
可编程接口芯片8155:
8155采用40脚双列直插式封装,单一+5v电源。
CE:
片选端,8155为低电平有效,8156为高电平有效,当8155上加上一个低电平时,芯片被选中,可以与微机交换信息。
AD0~AD7:
三态地址/数据总线,在ALE的下降沿把8位地址锁存于内部地址锁存器,地址可代RAM或输入/输出用,由IO/M信号的极性而定,8位数据的流向取决于RD或WR信号的状态。
RESET:
复位信号线,高电平有效,在该输入端加一脉冲宽度为600ns的高电平信号,就可使8155可靠复位,复位时三个输入/输出口预置为输入方式。
PA0~PA7:
输入/输出口A的信号线,通用8位输入/输出口,输入/输出的方向通过对命令/状态寄存器的编程来选择。
PB0~PB7:
输入/输出口B的信号线,通用8位输入/输出口,输入/输出的方向通过对命令/状态寄存器的编程来选择。
PC0~PC5:
输入/输出口C的信号线,6位可编程输入/输出口,也可用作A口和B口的控制信号线,通过对命令/状态寄存器编程来选择。
图38155硬件图
3设计流程
3.1程序流程图
此次LED16*16点阵实验程序流程图如下:
图4程序流程图
4主程序分析
4.1程序分析:
扫描子程序:
DISP1PROCNEAR
PUSHSI
PUSHCX
MOVCX,16;计数器,16列依次被扫描
MOVBL,0FEH;上边列输出值
MOVBH,0FFH;下边列输出值
REPEAT:
MOVDX,LINE1
MOVAL,BL
OUTDX,AL;上边列输出
MOVDX,LINE2
MOVAL,BH
OUTDX,AL;下边列输出
LODSB
CALLADJUST;调整AL,将AL中二进制数旋转180度
MOVDX,ROW1
OUTDX,AL;左边行输出
LODSB
CALLADJUST;调整AL,将AL中二进制数旋转180度
MOVDX,ROW2
OUTDX,AL;右边行输出
CALLDL10MS
CALLCLEAR
STC
RCLBL,1
RCLBH,1;循环移位BX,行线扫描输出0
LOOPREPEAT
POPCX
POPSI
RET
DISP1ENDP
初始化程序:
INIT_IOPROCNEAR
MOVDX,ADDR_8255_C;8255控制字地址
MOVAL,80H;设置8255的PA、PB、PC为输出口
OUTDX,AL;写控制字
MOVDX,ADDR_8155_C;8155控制字地址
MOVAL,03H;设置8155的PA口为输出
OUTDX,AL;写控制字
RET
INIT_IOENDP
LED测试子程序:
TEST_LEDPROCNEAR;测试LED子程序,点亮LED并延时1S
MOVDX,LINE1
XORAL,AL
OUTDX,AL
MOVDX,LINE2
OUTDX,AL
MOVAL,0FFH
MOVDX,ROW1
OUTDX,AL
MOVDX,ROW2
OUTDX,AL
CALLDL500ms
CALLDL500ms
RET
TEST_LEDENDP
显示程序:
CHS_1:
PUSHCX
MOVCX,16
CHS_2:
CALLDISP_CH
INCSI
INCSI
LOOPCHS_2
POPCX
LOOPCHS_1
JMPCHS_SHOW
;显示一个16*16点阵子程序,字型码放在DPTR指出的地址
DISP_CHPROCNEAR
PUSHCX
MOVCX,8
DISP_CH_1:
CALLDISP1
LOOPDISP_CH_1
POPCX
RET
DISP_CHENDP
;显示一个16*16点阵子程序,字型码放在显示缓冲区XBUFF
设置滚动字符数:
MOVCX,9
LEASI,HUAN
4.2功能解释:
①程序一开始就设置好了循环变量,便于滚动显示多个字符,即从“欢”字一直滚动到“仪”字结束,随后进行重复性的循环显示。
②由于我们人为输入的各个汉字的显示位置是从左向右的,而LED扫描时是从右向左的,所以程序中需要将AL中的二进制数旋转180度。
③如果你想改变显示内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容。
5调试结果
5.1硬件、软件实现
①硬件的连接
首先检查实验仪是否能够正常使用。
在实验仪断电情况下,严格按照前面硬件设计中的接线说明进行接线。
最后连接USB线和电源线。
在连接导线时务必不能带电操作,否则有可能会烧坏芯片和试验箱。
注意在连接排线时需要对照原理图来正确连接端口。
②将试验箱通电,由于软件库中含有程序的源代码,我们可以直接从库中调出源程序,通过编译、链接、运行,可以观察试验现象。
③通过观察试验箱,可以清楚地观察到“欢迎使用星研试验仪”几个滚动的字符,且文字比较清晰。
5.2结果图
图5结果图
6团队构成
7问题分析:
①这次的课程设计在整个过程中遇到了很多的问题与疑惑,硬件的连接部分就出现了问题。
在组员一起进行硬件连接的时候,如果一味的秉着排线不绕连的原则是无法显示出最终结果的,必须要看清原理图上引脚的对应位,通过引脚的标号来连接排线。
在连线的时候由于试验书上的排线连接印刷错误,开始我们只能显示一半的结果,最终还是通过检查找出了原因所在。
②软件程序部分也存在诸多不合理的部分。
首先是变量名定义的问题,程序出应该将LINE变量定义为列线,将ROW变量定义为行线。
定义比较草率,很难让读者一目了然,要注意代码命名的规范性。
③在软件仿真中也遇到了麻烦,其中proteus对于加载到8086的masm32或emu8086生成的执行文件仿真时,和结果预计不一致。
而其中的8155芯片输出端口总是处于不确定的状态,导致无法有正确的展示。
8心得体会
ccc:
这次微机原理课程设计历时两个多星期,可以说中间遇到了很多麻烦,但是学到了很多东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上学不到的东西,例如AD软件的制版、流程的分析。
课程设计可以说是把课本上的理论知识具体化形象化了,整个学习设计过程也变得更加有趣了。
通过这次课程设计我们懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能够从理论中得出结论,并且很好的运用。
通过这次的课程设计,让我们对汇编语言的基本知识更加的熟练,同时也明白了团队合作的重要性。
aaa:
进行了差不多两个星期的微机原理课程设计,虽然时间较短,但是让我感觉到了学习微机原理这门课的乐趣。
看见实验箱上清晰地显示几个LED文字,整个人都兴奋了,甚至可以自己通过修改程序来改变LED点阵上显示的文字,一下子感觉到了代码的力量。
平时自己做微机原理实验也没太认真去分析代码,现在自己分析代码后知道最后结果是怎么出来的,感觉特别有趣。
这次课程设计也学到了很多,甚至许多课本之外的东西,收获特别大。
ddd:
我负责利用AltiumDesigner绘制原理图和PCB版图。
在绘制过程之中,主要参考《微机原理实验》教材上的原理图。
实验箱上的是双层布线,无法准确查找各个引脚之间连线。
实验书上的原理图,利用三排排针代替8255A的三个八位的PA、PB、PC端口,另一排排针代替8155的八位PA端口。
然而为了方便理解,自行绘制了8255A的原理图封装和PCB封装,而不是用排针代替,是原理图和PCB图看上去浑然一体。
在从原理图转为PCB图时,个别引脚并未同原理图一样连接在一起,后来通过请教同学,找到了原因。
室友绘制原理图和PCB封装时,对应的引脚序号不一样导致。
通过修改对应的引脚序号,使之相同就解决了问题。
同时也查找的74LS240N,74LS244N和16*16LED点阵的资料。
74LS244N和74LS240N是八路缓冲器和线路驱动器设计特别是为了改进的性能和三态存储器地址驱动器密度。
LED连接原理:
将4片8*8点阵连接成为一片16*16点阵,将四个点阵按照同样的方向排列,即有字一面向着同一方向,假设四个点阵的排列方式为:
0001
1011
将00与01的行控制线一对一连接,10和11的行控制线一对一连接;00与10的列控制线一对一连接,01和11的列控制线一对一连接。
最后,00和01的16根列控制线就是16x16的列控制线;00和10的行控制线就是16x16的行控制线。
锻炼了阅读英文文献的能力和了解了驱动器缓冲器的概念。
xxx:
在这次课程设计中,我主要负责proteus仿真及阅读代码的工作,同时协调组员之间的任务分配协调。
其中对于8086在proteus下的仿真着实让我头疼,硬件电路搭建好后,分别使用了emu8086与masm32生成.com和.bin文件,然后加载到proteus的8086中,运行时总是得不到想要的结果,出现了很多问题。
比如说在emu8086中,某种情况下对于LOOP$ 该语句不能正常编译,后来经过换一种形式的代码通过,不过其对PROC~ENDP支持有问题,后经过删除解决编译连接问题,在masm32编译时出现了missingandunreachablecs的问题,后来发现是assume语句的问题。
在这次仿真中,深化了我对proteus的认识,和对微机原理的进一步理解。
最终,整个仿真由于个人水平的问题与时间的等问题,未能达到最终的实验效果,感到很遗憾。
其中偶然发现proteus对8086的最大工作模式不能正确支持的问题,以后有机会会加以证实。
最后,在各位组员的齐心协力下,我们完成了本次课程设计!
附录
1.PCB图
2.proteus仿真原理图