您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 单片机课程设计报告_88点阵
Xx学院《单片机原理与接口技术》课程设计报告题目:8×8点阵显示的设计班级:级电子信息工程姓名:学号:指导教师:日期:2010年月日2摘要随着现代电子技术的迅速发展,各种各样的LED显示屏、广告牌样式层出不穷,它们已被广泛地应用于商业市场的各个邻域,如显示器、户外大屏幕、招牌广告、电子公告栏等等,给我印象最深的还有公交车上的车载横向拉幕单行显示屏,它可以实时地显示时间、站点、天气和“东莞因你而文明”等信息。LED显示屏因其亮度高、方便维护和应用灵活等优点,给我们的生活带来很大便利,同时它也具有很大的开发价值。本次设计任务是使LED点阵实现横向拉幕的数字字符显示,以AT89C51单片机为控制器,8×8LED点阵为显示器件构成的数字显示系统。在程序中还可以相应地改变显示字符的样式和显示的个数。本设计所介绍的8×8LED点阵显示器可以横向自右向左地循环拉幕显示0~9这十个数字和空字符。在程序中可以相应地改变显示字符的样式和显示的个数。此显示系统也可用于不同的场合显示信息。关键词:8×8LED点阵;AT89C51;显示器;拉幕显示3目录(一)设计的任务与要求……………………………………………4(二)硬件电路设计……………………………………………4芯片介绍…………………………………………………4电路原理…………………………………………………6(三)软件设计流程及描述………………………………………7(四)设计调试过程……………………………………………7(五)源程序代码……………………………………………8(六)收获体会……………………………………………10(七)参考文献……………………………………………104一、设计的任务与要求LED显示屏(LEDpanel)介绍:LED英文全称就是LightEmittingDiode,为发光二极管的英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,它通常是由很多个红色的发光二极管组成,靠灯的亮灭来显示字符。大规模集成的LED显示屏是由LED点阵组成,是可以用来显示文字、图形、图像、动画、视频、录像信号等各种信息的显示屏幕,又叫电子显示屏或者飘字屏幕。LED显示屏不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点,内容还可以随时更换,且各部分组件都是模块化结构。LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。本次设计采用单片机AT89C51驱动8×8点阵LED显示屏,轮流显示0~9的数字。显示方式采用自左向左拉幕式显示。二、硬件电路设计芯片介绍1.AT89C51单片机:AT89C51是一种低电压、高性能CMOS8位微处理器,它自带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory),俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪存存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。它的部分引脚功能介绍如下。P0口:P0口为一个8位漏级开路双向I/O口。当P1口的管脚第一次写1时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。5P3口:P3口管脚是8个带内部上拉电阻的双向I/O口。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输出,由于外部下拉为低电平,它将输出电流。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。AT89C51单片机的外形及引脚排列说明如后页图示。AT89C51单片机的外形及引脚排列如右图。2.74LS245芯片:74LS245能用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。片选端CE非是低电平有效,数据传输控制口AB/BA非=“0”时,信号由B向A传输;反之当该口为高电平“1”输入时,信号由A向B传输;当CE非端口为高电平时,A、B均为高阻态,关断数据传输。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245作总线驱动器。引脚说明:AA总线端BB总线端OE非三态允许端AB/BA非方向控制端74LS245电路符号和内部结构图:3.8×8LED点阵8×8LED点阵可作为信息输出器件。它是由发光二极管阵列按8排8列的方式排列起来,由x和y引脚输入的电信号对其进行选通,使不同位置的二极管被点亮,相应地显示出文字或图案等信息来。6LED点阵的元件符号及内部结构图:设计原理:单片机利用外部晶振作为时钟信号输入,RST端口接入上电复位信号使它加电后自动进行复位操作。将要显示的字符码表编入单片机的程序中,由单片机控制时序输出相应的扫描数据和字符数据。行码数据由单片机P0口输出,经一个双向总线收发器控制传输方向后进入LED点阵,点亮相应的发光二极管。列码扫描信号由P3口输出后,直接输入LED点阵控制8列的扫描,每列选通时间为5ms,看上去就像8列同时显示的效果一样。加上行中相应的LED灯被点亮,就能看到显示的字符了。电路原理原理框图:硬件设计原理图:时钟输入复位信号AT89C51列码扫描行码数据双向总线收发器8×8LED点阵7三、软件设计流程及描述单片机在上电后能自动执行一次复位操作,同时开始接收外部晶振的信号输入。从程序中的列扫描序列中读取列码的地址,并从码字表中反复读取行码的地址,由I/O口输出信号对LED点阵进行选通点亮,然后判断拉幕次数,显示出相应的字符来。显示一幕后拉幕次数加1,再送新的幕次和行码地址。程序流程图如下所示。四、设计调试过程将电路按原理图连接好之后,把汇编程序编译产生的十六进制文件下载到单片机内。第一次做时是在实验箱上直接连接硬件电路,可是由于没有74LS245双向总线收发器,所以在LED点阵和单片机I/O口之间就直接跳线连接了,因此没有将电平上拉,结果在实验箱上的LED显示屏无法显示单片开始初始化端口设定扫描时间拉幕时序清0取列扫描地址取行数据地址数据输出YesNo幕次数加1送新的行码地址幕次数计满?8机输出的结果,所有的LED灯都不亮。看来直接跳线时单片机I/O口输出的信号不足以驱动8乘8点阵工作。由于硬件条件的各种限制,因此本小组考虑改用软件仿真的方法来实现电路的设计与调试。在PC机上运行Proteus软件,将电路原理图中的元件找出并相应地连接好线;在Keil汇编软件中输入设计的程序,编译通过后生成十六进制文件,并再把该文件下载到虚拟的AT89C51单片机内。因为单片机的RST引脚经电容接到了Vcc电源上,同时并联接地,所以系统可以上电后自动执行一次复位操作。仿真开始。此时可能会看到LED点阵中有字显示的地方(前景)灯是灭的,无字显示的地方(背景)灯是亮的,这种状态叫做“阴文”显示状态。产生这种显示的原因是因为点阵的列码扫描信号线A~H与单片机的P3.0~P3.7口相应的顺序接反了,把对应的接线顺序倒过来,即可看到正确的“阳文”方式显示出的数字。此显示系统最终实现了将数字从0到9向左拉幕显示的功能。部分显示效果如图。五、源程序代码R_CNTEQU31H;列码R_NCT=31H单元NUMBEQU32H;行码NUMB=32H单元TCOUNTEQU33H;拉幕计数值TCOUNT=33H单元ORG00H;程序起始地址LJMPSTARTORG0BH;中断入口地址LJMPINT_T0ORG30H;子程序入口地址START:;主程序开始MOVR0,#00H;每列的行码起始序号置0MOVR_CNT,#00H;列:初值00送到31H单元MOVNUMB,#00H;行:初值00送到32H单元MOVTCOUNT,#00H;计数单元初值置0MOVTMOD,#01H;计数定时器选用16位的计数器,工作在方式1MOVTH0,#(65536-5000)/256;定时5ms。定时器高位初值为236MOVTL0,#(65536-5000)MOD256;定时器低位初值为120SETBTR0;启动C/T的定时器T0MOVIE,#82H;CPU开中断SJMP$;中断等待INT_T0:9MOVTH0,#(65536-5000)/256;定时5ms,设置定时器T0高位初值为236MOVTL0,#(65536-5000)/256;定时器T0低位初值为120MOVDPTR,#TAB;读列码表首地址,放入DPTRMOVA,R_CNT;读列码偏移地址,放入A中MOVCA,@A+DPTR;基址变址寻址将寻到的列码数据放入A中MOVP3,A;将列码数据送P3口输出MOVDPTR,#NUB;装入显示数据的地址MOVA,NUMB;显示幕次的偏移地址MOVCA,@A+DPTR;寻到数据的行码地址MOVP0,A;将该地址值输出INCNUMB;行码地址加1NEXT1:INCR_CNT;扫描列码地址加1MOVA,R_CNT;把列地址放入A中CJNEA,#8,NEXT2;A不等于8,转子程序NEXT2,否则往下执行MOVR_CNT,#00H;就把列码置0MOVNUMB,R0;行码地址送存储单元格中NEXT2:INCTCOUNT;拉幕计数序号加1MOVA,TCOUNT;将幕次序号送A中CJNEA,#40,NEXT4;此序号不等于40转Next4,否则往下执行MOVTCOUNT,#00H;把拉幕时序归0INCR0;行码起始地址加1CJNER0,#88,NEXT3;行码自加次数不满11字符×8行/字符=88行就转Next3MOVR0,#00H;不然就把行码置0NEXT3:MOVNUMB,R0;送新的一幕行码起始位给R0NEXT4:RETI;中断返回TAB:;列码码表DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH;列扫描从右向左NUB:;行码码表,字符数据DB00H,00H,00H,00H,00H,00H,00H,00H;NULLDB00H,00H,3EH,41H,41H,41H,3EH,00H;0DB00H,00H,00H,00H,21H,7FH,01H,00H;1DB00H,00H,27H,45H,45H,45H,39H,00H;2DB00H,00H,22H,49H,49H,49H,36H,00H;3DB00H,00H,0CH,14H,24H,7FH,04H,00H;4DB00H,00H,72H,51H,51H,51H,4EH,00H;5DB00H,00H,3EH,49H,49H,49H,26H,00H;6DB00H,00H,40H,40H,40H,
本文标题:单片机课程设计报告_88点阵
链接地址:https://www.777doc.com/doc-2606757 .html