重庆大学单片机课程设计16X16LED点阵说明书.doc_第1页
重庆大学单片机课程设计16X16LED点阵说明书.doc_第2页
重庆大学单片机课程设计16X16LED点阵说明书.doc_第3页
重庆大学单片机课程设计16X16LED点阵说明书.doc_第4页
重庆大学单片机课程设计16X16LED点阵说明书.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键入文字键入文字键入文字摘 要本系统是基于at89s52单片机设计的,由2片74hc138八位地址锁存驱动led的行信号,由2片74hc595八位串入并出驱动led的列信号。16*16led的点阵由4块8*8的sz41288k点阵拼接成。在本次的设计中主要是思路是通过定时器定时行扫描时间为1ms,这样人眼由于延时看到的显示就是连续的。在进行扫描的时候,是先送每行的列信号,然后选中当前需要扫描的行。每完成一次行的信号扫描,就跳出定时中断,定时一秒后又重复下一行的扫描。当一个字的16行都扫描完后,延时一段时间,然后对下一个字进行上述的重复扫描。关键词:16*16led点阵;at89s52;74hc138驱动行;74hc595驱动列1.设计任务及要求题目9:1616 led点阵显示汉字 设计要求:通过单片机利用1616 led点阵循环显示汉字“我爱单片机”。2.方案选择: 1、采用32个io口分为两组16个io口,分别驱动行和列。这种方法需要注意p0口外接上拉电阻,并且全部io都占用,不能使led电路模块化。 2、使用锁存器驱动行信号,串入并出移位寄存器驱动列信号,这种方法能够使io的使用减少,只需要8个io口,可以实现led部分的模块化。 本次课程设计采用的是方案22.1总体设计方案用两片片74hc138控制行信号,在对进行片选控制的时候保证,每当第一片74hc138的y0-y7扫描完毕(点阵的第一至八行的扫描),进入下一片74hc138进行y0-y7的扫描(点阵的第九行至十六行的扫描)。用两片74hc595采用级联的方式,保证一次输出16列的字码信号。整体通过定时器定时1ms产生中断,每1ms就扫描一行,当一个字16行扫描完毕后,重复扫描一段时间,用于延时。直到扫描完“我爱单片机”五个字后程序重复执行,这样就能实现“我爱单片机”循环显示。 图2.1 整体设计 3.硬件电路设计 整体原理图见仿真图附件(在仿真中单片机最小系统没有接复位电路,和晶振电路,三极管开关电路用非门代替以及电阻未接)其实际硬件细化模块如下:3.1单片机最小系统模块 图3.1 单片机最小系统最小系统主要包括复位电路,晶振电路,但注意单片机的ea端必须接高电平,否则在做实体时,不会读片内的程序。 图3.2晶振电路 图3.3复位电路3.2 16*16led驱动模块: 整个设计,抛开单片机最小系统,剩下部分作为一个整体led点阵模块。其整体硬件原理如图。 图3.4 16*16点阵模块3.2.1 行信号驱动74hc138译码器的管脚图: 图3.5 74hc138管脚图其工作功能表如下: 图3.6 74hc138真值表 e1、e2、e3用于74hc138的信号使能端。只有当e1、e2为低电平,e3为高电平的时候,片选才能被选中,通过a2-a0的组合,可以选择性的控制y0-y7的某一个口输出低电平。本次课程设计行驱动的方式及原理 图中的线上的标号a,b,c,d,en分别与p2口的p2.0,p2.1,p2.2,p2.3,p2.4相连。en用于74138的行信号的总开关信号。d用于控制两片138的工作顺序,当p2口为xxxx0000至xxxx0111时保证选中的第1片74138,当p2口输出xxxx1000-xxxx1111时保证的是选择的第2片74138.第1片控制1-8行,第2片控制9-16行。 图3.7两片74hc138的连接方法74hc138的输出全部接三极管的开关电路,当输出为低电平的时候才能使三极管导通,所选的行才能选中。 图3.8 三极管开关电路3.2.2 列信号驱动 74hc595管脚图 图3.9 74hc595管脚图管脚含义图 图3.10 74hc595管脚含义功能真值表 图3.11 74hc595真值表本次课程设计列驱动的方式及原理 图3.12两片74hc595级联每次采用串行输入,当74hc595有上跳时钟信号时,串入一位。当移入16位数据时,就开通数据输出驱动列信号。其所传入的数据是每个字每行的列码。3.2.3 16*16led本设计通过4块88单色共阳点阵拼接。单个点阵有64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。8*8点阵内部结构如图 3.13 8*8led点阵的内部原理图4个8*8点阵级联构成16*16点阵如下图 图3.13 led点阵的级联原理led驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;.第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。显示数据传输采用串行传输的方法,控制电路可以spi总线的方法,将列数据一位一位移入列驱动器。但由于采购的8*8led点阵的管脚图与理论上的管脚有出入,所以通过测试,得到其管脚分布如下 图3.14 8*8led的实际管脚在拼接的过程中,上面两块行行相连,下面两块行行相连,左面两块列列相连,右面两块列列相连 16*16共阳型点阵显示字的原理 行对应的给led的阳极,先给第一行以高电平,如果送给16列的代码为efff,则第一行的第4个led被点亮,再给第二行以高电平,如果送给16列的代码为ef07,则第二行的第4、9、10、11、12、13个被点亮,接着给第三行以高电平,同时给列以驱动代码,这样不断地进行行行的扫描,只要速度够快,由于人的视觉暂留作用,就不会感觉到明显的闪烁感。点阵上会看到一个清晰的“机”字。 图3.15显示字的原理图字模提取软件截图 图3.16 字模提取软件4.软件设计(程序以及流程框图)4.1程序流程图 图4.1 程序流程图 4.2程序清单:见附件一4.3程序模块及其之间的关系:1.主程序:主要是对定时器的计数初值以及方式进行初始化,开定时器中断以及写语句实现真个显示程序的重复运行。2.显示子程序:用于初始化行扫描开始的地址以及对每个字的16行重复扫描延时3.时器中断服务程序:定时1ms,定时的时间就是行扫描的间隔时间,在扫描过程中进行行驱动信号的改变和列信号的改变4.74hc595串入并出子程序:主要是将字的代码通过串行的方式,移入74hc595进行暂存。程序之间的具体调用是通过主程序调用显示程序,开始进行定时,当定时时间到,进入中断服务,进行列信号的查表以及对应行的通断送点阵显示。之后调回显示子程序进行每个字的一段时间的延迟,当“我爱单片机”五个字整体显示完一次,就再调用显示子程序重复运行。5.检测与调试 在仿真的过程中,由于简化了电路,用非门代替了三极管开关电路,以及单片机最小系统的简化,在仿真的过程中没有出现大的问题。但在实际电路的焊接好后,由于经验不足,加上平时都是在protues中进行仿真,实际电路中在检查和调试过程中出现了以下问题: 1.8*8的点阵的管脚和理论上的管脚不一样,第一次焊接的时候,忽略了管脚的问题,当焊接好后,出现了不按照预定的程序进行显示。通过万用表对点阵的二极管通断进行检测,将管脚的各行各列依次检查出来后再进行拼接。 2.在单片机最小系统部分,在最开始没有将ea管脚接高电平,导致一开始程序不运行,一开始以为是电路没有连接通,反复查找,在师姐的帮助下,最终发现是ea没接高。当接高后问题解决,程序正常运行。6.总结 通过本次的课程设计,我组织并参与了整个过程,从最开始的编程和仿真的联调,已经后来的焊接实物和检查实物的故障。在这个过程中,我明白了要想学好嵌入式系统必须要有耐心和细心。在对元件的选择方面必须要细心,所有的参数需要通过计算或者类比,在对元件的焊接方面必须要耐心。清楚的记得在拼接16*16的led点阵的时候,急躁之后换回来的是重新焊接,在焊接方面一定需要耐心。在查元件的各管脚的含义的时候一定要细心,要领会所有管脚的含义,最重要的是功能作用表和时序图,这两个也就是描述芯片的作用,我们本次采用的74hc138和74hc595.通过这两个芯片我对译码器的作用有了更深的理解,不再停留在译码器只用在地址的译码。也对单片机的串行通信有了更熟悉的理解,一定要用cy作为过渡寄存器,这样能保证是每到一个脉冲信号就串行通信一位数据。 这里感谢小组同学的付出,特别感谢黄地陪我一起焊接硬件。在这里也感谢简毅老师对我们的帮助和支持。7参考文献 1李朝青单片机原理及接口技术北京北京航空航天大学出版社. 2005.10 2阎石数字电子技术基础北京清华大学出版社 . 1998.123杨欣. 电子设计从零开始(第2版).北京. 清华大学出版社. 2010.10附件一:(本次课程设计程序) sdata_595 equ p2.5 ;串行数据输入 sclk_595 equ p2.7 ;移位时钟脉冲 rck_595 equ p2.6 ;输出锁存器控制脉冲 g_74138 equ p2.4 ;显示允许控制信号端口 row_end bit 20h.0 ;行扫描完毕标志 coun_comp equ 30h ;计数比较值单元;* org 0000h ajmp main org 000bh ajmp timer0;*main: mov sp,#70h mov a,#0ffh mov p1,a mov p2,a mov p3,a mov p0,a clr row_end clr rck_595 mov tmod,#01h ;设置定时器0工作在定时方式1 mov th0,#0fch ;1ms定时常数 mov tl0,#18h mov ie,#82h ;允许总中断,允许定时器0中断 mov dptr,#tab mov r0,#00h main1: lcall display ajmp main1;*; 显示子程序; r1 文字列码的偏址; r2 行扫描地址 r3 每个字循环扫描的次数; b 暂存r1的过程数据;*display: mov b,#00h ;查表偏址暂存(从00开始) mov r1,b mov coun_comp,#0a0hd_loop: mov r3,#5ah ;控制每个字的显示速度d_loop1: mov r2,#00h ;第0行开始 mov r1,b setb tr0 ;开扫描d_loop2: jbc row_end,d_loop3 ;标志为1扫描一个字16行结束 ajmp d_loop2d_loop3: djnz r3,d_loop1 ;每个字重复扫描 mov a,r1 mov b,a cjne a,coun_comp,d_loop ;5个字是否显示完? ret ;*; t0中断扫描子程序; r1 取数据地址; r2 行扫描地址;*timer0: push acc mov th0,#0fch ;1ms定时常数 mov tl0,#18h inc r1 ;取每行右边字节偏址 mov a,r1 movc a,a+dptr ;取每行右边字节数据 lcall wr_595 dec r1 ;取每行左边字节偏址 mov a,r1 movc a,a+dptr ;取每行左边字节数据 lcall wr_595 setb g_74138 ;关行显示,准备刷新 nop nop setb rck_595 ;产生上升沿,数据打入输出端 nop nop clr rck_595 ;恢复低电平 mov a,r2 ; mov p2,a ;行输出 clr g_74138 ;开行显示 inc r1 inc r1 ;下一行数据地址 inc r2 ;修改显示行地址 mov a,r2 anl a,#0fh jnz t0_end ;一个字的16行扫描是否完毕? setb row_end ;一个字的16行扫描完,置标记 clr tr0 ;一个字的16行扫描完,关扫描t0_end: pop acc reti;*;移位寄存器接收数据子程序;*wr_595: mov r4,#08hwr_loop: rlc a mov sdata_595,c setb sclk_595 ;上升沿发生移位 nop nop clr sclk_595 djnz r4,wr_loop ret;*tab:;我db 0fbh,7fh,0f1h,5fh,87h,6fh,0f7h,6fh,0f7h,7bh,00h,01h,0f7h,7fh,0f7h,6fhdb 0f5h,6fh,0f3h,9fh,0e7h,0bfh,97h,5fh,0f6h,0dfh,0f5h,0ebh,0d7h,0ebh,0efh,0f3h;爱db 0ffh,87h,0c0h,7fh,0eeh,0efh,0f6h,0dfh,80h,01h,0bdh,0fdh,7dh,0fbh,80h,07h db 0fbh,0ffh,0f8h,0fh,0f5h,0dfh,0f6h,0bfh,0efh,7fh,0eeh,9fh,0ddh,0e3h,0f3h,0f7h;单db 0efh,0efh,0f7h,0dfh,0fbh,0b7h,0c0h,03h,0deh,0f7h,0deh,0f7h,0c0h,07h,0deh,0f7hdb 0deh,0f7h,0c0h,07h,0deh,0ffh,0feh,0fbh,00h,01h,0feh,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论