《微机原理及应用》课程设计报告题目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硬件连接本次设计采用了STAR ES598+实验仪,本实验硬件使用该实验仪,使用实验列驱动器74LS24016X16LED 显示点阵行驱动器 74LS 244微处 理 器80868255/8155仪的A2、A3和B4区。
具体的连线可按下图连接。
表1 连线说明连接区接线位置标号(依次)被连接区被接线位置标号(依次)B4区CS(8255)、A0、A1 A3区CS1、A0、A1B4区CS(8152)、IO/M A3区CS2、A8B4区JP56、JP53 A2区JP23、JP24(行输出线)B4区JP52、JP76 A2区JP33、JP34(列输出线)图2 LED驱动原理图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口的控制信号线,通过对命令/状态寄存器编程来选择。
图3 8155硬件图3设计流程3.1 程序流程图此次LED16*16点阵实验程序流程图如下:图4 程序流程图16—>计数器1(一屏行数)计数器0-1=0计数器1-1=0显示一屏子程序DPTR=DPTR+2开始建立“欢迎使用星妍实验仪”初始化8255A ,PA 、PB 、PC 口为输出口初始化8155,PA 口为输出口测试16*16 LED 是否全亮熄灭16*16 LED字符—>计数器0,字符表首地址—>DPTRYN返回开始8—>计数器2(一屏刷新8次)取字符表中数据—>AA 的0~7位调整到A 的7~0位 A —>8255的PC 口(左边行)R2R3—>8255的PA 、PB16—>计数器3OFFFEH —>R3R2(允许显示第一行)取字符表中数据—>A A 的0~7位调整到A 的7~0位 A —>8155的PA 口(右边行) 延时10msR2R3循环左移一位计数器3—1=0计数器2—1=0YN4主程序分析4.1程序分析:扫描子程序:DISP1 PROC NEARPUSH SIPUSH CXMOV CX,16 ;计数器,16列依次被扫描MOV BL,0FEH ;上边列输出值MOV BH,0FFH ;下边列输出值REPEAT: MOV DX,LINE1MOV AL,BLOUT DX,AL ;上边列输出MOV DX,LINE2MOV AL,BHOUT DX,AL ;下边列输出LODSBCALL ADJUST ;调整AL,将AL中二进制数旋转180度 MOV DX,ROW1OUT DX,AL ;左边行输出LODSBCALL ADJUST ;调整AL,将AL中二进制数旋转180度 MOV DX,ROW2OUT DX,AL ;右边行输出CALL DL10MSCALL CLEARSTCRCL BL,1RCL BH,1 ;循环移位BX,行线扫描输出0LOOP REPEATPOP CXPOP SIRETDISP1 ENDP初始化程序:INIT_IO PROC NEARMOV DX,ADDR_8255_C ;8255控制字地址MOV AL,80H ;设置8255的PA、PB、PC为输出口 OUT DX,AL ;写控制字MOV DX,ADDR_8155_C ;8155控制字地址MOV AL,03H ;设置8155的PA口为输出OUT DX,AL ;写控制字RETINIT_IO ENDPLED测试子程序:TEST_LED PROC NEAR ;测试LED子程序,点亮LED并延时1S MOV DX,LINE1XOR AL,ALOUT DX,ALMOV DX,LINE2OUT DX,ALMOV AL,0FFHMOV DX,ROW1OUT DX,ALMOV DX,ROW2OUT DX,ALCALL DL500msCALL DL500msRETTEST_LED ENDP显示程序:CHS_1: PUSH CXMOV CX,16CHS_2: CALL DISP_CHINC SIINC SILOOP CHS_2POP CXLOOP CHS_1JMP CHS_SHOW;显示一个16*16点阵子程序,字型码放在DPTR指出的地址DISP_CH PROC NEARPUSH CXMOV CX,8DISP_CH_1: CALL DISP1LOOP DISP_CH_1POP CXRETDISP_CH ENDP;显示一个16*16点阵子程序,字型码放在显示缓冲区XBUFF设置滚动字符数:MOV CX,9LEA SI,HUAN4.2功能解释:①程序一开始就设置好了循环变量,便于滚动显示多个字符,即从“欢”字一直滚动到“仪”字结束,随后进行重复性的循环显示。