1、科 研 实 践课 程 科研实践 题 目 88 点阵 LED 数码字符显示器二级学院 延陵学院 班 级 07 电 Y2 姓 名 沈 霞 学 号 07121121 指导教师 范力旻 设计时间 2011.1.102011.1.21 目录绪论 .2第一章 总体方案设计 .3第二章 系统硬件电路的设计 .4第三章 系统软件电路的设计 .43.1 软件设计思想 .43.2 主程序设计 53.3 子程序设计 73.3.1 动态显示程序设计 .73.3.2 按键程序设计 .93.3.3 延时程序设计 .103.3.4 中断程序设计 .11第四章 调试及性能分析 .134.1 软件调试 134.2 性能分析 1
2、3总结 .14参考文献 .14附录 .15A 元件清单 15B 总原理 图 16C 程序清单 17绪论当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。目前,点阵式显示器件具体包括 LED 显示模块和 LCD 显示模块等。现在发展的 LCD 比较先进,LCD 的优点较为明显,他体积小,容易控制,功能强,价格适宜,能够适应显示器的发展方向,因而在通信、家电、大屏幕投影等领域得到了越
3、来越广泛的应用;随着社会经济的迅猛发展,工业生产逐渐实现了自动化,其中,设备的工作状态和生产过程状态的显示与监控起到了非常重要的作用,对于那些需要显示的信息量不是很大,分辨率不是很高,又需要制造成本相对比较低的场合,使用大、小屏幕 LED 点阵显示器是比较经济适用的,他可以显示字符、数字、汉字和简单图形,可以根据需要使用不同字号、字型,显示亮度较高,并且对环境条件要求比较低。LED 显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。据不完全统计,1991 年,全国 LED 显示屏的产值还不到亿元人民币,而在
4、1993 年,仅蓝通公司一家企业的显示屏产值即达 1 亿多人民币。由于 LED 电子显示屏具有所显内容信息量大,外形美观大方,操作使用方便灵活.适用于火车,汽车站,码头,金融证券市场,文化中心,信息中心体育设施等公共场所.该项目广泛涉及了计算机及电子技术中的电源技术,单片机技术,数据通讯技术,显示技术,存储技术,系统软件技术,接口及驱动等技术.我国经济发展迅猛,对信息传播有越来越高的要求.可以相信,LED 电子显示屏以其色彩鲜亮夺目,大的显示信息量,寿命长,耗电量小,重量轻,空间尺寸小,稳定性高,易于操作,安装和维护等特点,将在社会经济发展中扮演越来越重要的角色。第一章 总体方案设计(1)总体
5、设计要求本系统采用单片机 AT89C51 为 LED 显示屏的控制核心,制造一种简单的88 显示屏,能够在目测条件下 LED 显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字稳定、清晰无串扰,图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。根据设计要求,初步确定设计方案如下:1. 选择 AT89C51 单片机(晶振频率为 f=12MHZ)作为整个系统的核心器件,对整个系统进行总体控制,发送并时时处理系统信息。2通过编程显示数字:“8、0、5、1” 。3动态显示“8051” ,即跑马灯文字幕,每 0.25 秒左移一次。 4.
6、扫描信号连接到单片机的 P0 口,显示信号连接到单片机的 P2 口。5点阵的点亮过程有程序控制,由驱动电路完成,点阵采用单色显示,其中驱动电路采共阴型高态扫描、高态显示信号的驱动电路。(2)系统框图本文设计行、列驱动电路,显示屏电路,运用单片机的智能化,系统的将每个功能电路模块连接在一起,总体结构设计如下图 1 所示:P C 上位机 单片机点阵显示器行驱动电路点阵显示器列驱动电路8 8 点阵L E D 显示器电路图 1 系统框图第二章 系统硬件电路的设计本系统的硬件电路是由单片机最小系统、按键电路、动态显示驱动电路三部分组成。其中,单片机最小系统包括电源电路、复位电路和晶振电路构成;按键电路采
7、用独立非编码方式;显示部分使用共阴型高台扫描、高态显示信号驱动电路,完成“跑马灯”文字幕效果(这部分主要由周璐同学完成制作) 。总原理图见附录 B。第三章 系统软件电路的设计3.1 软件设计思想主程序先进行设置中断,并启动,再进行键盘扫描载入“8051”字型,然后判断一组字型是否扫描完,按不同情况进行循环调用子程序。进入子程序后,首先设置相应的程序,反复调用显示子程序,并在显示过程中反复调用键盘扫描子程序进行延时,判断是否退出相应的方式显示子程序。设计过程中,能很好得提高按键响应速度。如图 2 所示为软件系统框图。主程序按键程序延时程序动态显示程序中断程序图 2 软件设计框图字符编码:88 点
8、阵可以看成是从上至下 8 个字节,每个字节 8 位,因为该点阵为共阴型点阵,因此若该灯亮,则该位为“1” ;该灯不亮,则该位为“0”。所以“8051”的编码为,从上至下:“8”: 00H 00H 36H 49H 49H 36H 00H 00H;“0”: 00H 1CH 22H 41H 41H 22H 1CH 00H;“5”: 00H 00H 27H 45H 45H 45H 39H 00H;“1”: 00H 40H 44H 7EH 7FH 40H 40H 00H。3.2 主程序设计主程序首先设置并启动 T0 中断,然后调用初始化程序,为后面程序要用到的数据调入,并清零一些用到的数据单元,然后载入
9、“8051”字型,进行扫描。图 3 为主程序流程图。 开始设置 T 0 中断 ,启动初始化键盘扫描载入“ 8 0 5 1 ” 字型延迟时间下一个字型是否扫描完 4 个字型 ?是否图 3 主程序流程图主程序如下:COLUMN REG P0 ;行ROW REG P2 ;列SCANCODE EQU 10000000B ;扫描码SPEED EQU 1 ;0.25s 延迟S_TIME EQU -2500 ;2.5ms 扫描时间ORG 0000H ;程序从 0000H 地址开始JMP MAIN ;跳至 MAINORG 000BH ;TIMER0 中断向量JMP TIMER0 ;跳至 TIMER0 中断子程
10、序MAIN: MOV IE,#82H ;设定 TIMER0 中断MOV TOMD,#01H ;使用 T0 定时器,方式 1MOV SP,#60H ;移开堆栈指针SETB RS0 ;切换到 RB1MOV R1,#20H ;显示存储起始地址MOV R2,#8 ;扫描 8 行MOV R3,#SCANCODE ;载入扫描码CLR RS0 ;切换回 RB0MOV TH0,#0F6H ;设定每行扫描时间MOV TL0,#3CH ;设定每行扫描时间SETB TR0 ;启动 TIMER0LOOP: MOV DPTR,#TABLE ;将数据指针指向 TABLE 地址MOV R4,#4 ;4 组字型 SJMP $
11、 ;等待中断或其他3.3 子程序设计子程序中包括动态显示程序、按键程序、延时程序和中断程序四种,下面依次详细介绍。3.3.1 动态显示程序设计本系统中采用左移动态显示方式。对于 88LED 阵列,其左移就是显示 4个不同的字型。首先扫描第一个字型,同样是 8 行、8 次扫描,8 次显示;完成第一个字型后,再扫描第二个字型;完成第二个字型后,再扫描第三个字型依次类推,即可产生“8051”左移的感觉。假如第一个字型的编码为 00H 00H 36H 49H 49H 36H 00H 00H;第二个字型的编码为 00H 1CH 22H 41H 41H 22H 1CH 00H,也就是把第一个字型编码中,第
12、 1 行显示数据,变为第 8 行显示数据、第 2 行显示数据,变为第 1 行显示数据、第 3 行显示数据,变为第 2 行显示数据、第4 行显示数据,变为第 3 行显示数据依次类推。当第一个字型扫描完成后,就进行这样的调整动作,以产生第二个字型的编码。同样的,当第二个字型扫描完成后,就进行这样的调整动作,以产生第三个字型的编码。这个调整动作是将 8 个编码根据顺序填入存储器,调整存储器地址的程序流程图如图 4 所示。开始源位置搬至目的位置源数据搬至目的位置下一个数据4 个字型有显示完吗 ?返回否是图 4 动态显示流程图动态显示子程序如下:MOV R2,#8 ;转移次数MOV R0,#20H ;R
13、0 内置目的存储器地址MOV R1,#21H ;R1 内置来源存储器地址MOV 28H,R0 ;先将第一行内容搬至 28H 地址MOVE_L: MOV A,R1 ;将来源存储器内容搬至 ACCMOV R0,A ;将 ACC 内容搬至目的存储器INC R0 ;下一个目的地址INC R1 ;下一个来源地址DJNZ R2,MOVE_L ;跳至 MOVE_L,执行 8 次RET ;返回3.3.2 按键程序设计系统中采用独立式非编码键盘,在 P1 口接一个按键,P0 端口分别控制88LED 阵列。当有键按下时,对应的 LED 亮;反之则灭。如图 5 所示为按键控制流程图。开始置 P 1 口为输入读引脚数
14、据按键处理有键按下 , 则数据送入 P 0口 , 控制 L E D循环图 5 按键流程图按键子程序如下:ORG 0000HSTART: MOV P1,#0FFH ;置 P1 口为输入状态LOOP: MOV A,P1 ;读入 P1 口状态数据NOPMOV P0,A ;将状态数据送入 P0 口,控制 LED 阵列SJMP LOOP ;继续循环END3.3.3 延时程序设计延时程序在单片机编程中使用非常广泛,也很重要,在本设计的程序中用到了延时子程序。已知晶振 12MHZ,所以机器周期为 1s,但执行一次 DJZN 操作为 2s,则延时时间是(1200250)次2s/ 次=100000s=100ms
15、。延时流程图如图 6 所示。 开始键盘载入“ 8 0 5 1 ” 字型延迟约 1 0 0 m s是否扫描完 4 个字型 ?下一个字型是否程序如下:DELAY: MOV R7,#1D1: MOV R6,#200图 6 延时流程图D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RET3.3.4 中断程序设计显示程序在进入中断后首先要对定时器 T0 重新赋初值,以保证显示屏刷新率的稳定。根据设计要求,设定扫描时间为 2.5ms,那么定时器 T0 定时2.5ms,则定时初值计算公式为:定时时间 t时钟频率 /12162X36.5012/532063FCH中断流程
16、图如图 7 所示。T 0 中断关闭中断 , 切换到 R B 1输出显示字型超过 8 行吗 ?从第一行开始载入定时值 ,打开中断 , 切换回 R B 0返回否是中断子程序如下:图 7 中断流程图TIMER0: CLR TR0 ;关闭 TIMER0PUSH A ;储存 ACCSETB RS0 ;切换到 RB1MOV COLUMN,#0 ;关闭 LED 阵列MOV A,R1 ;取出显示信号;使用共阳极式 LED 阵列,则加入下一列指令CPL AMOV ROW,A ;输出显示信号MOV A,R3 ;载入扫描码MOV COLUMN,A ;输出扫描码(显示一行)RR A ;下一个扫描码MOV R3,A ;
17、储存下一个扫描码INC R1 ;下一个显示信号DJNZ R2,NEXT_C ;未超过 8 行则跳至NEXT_CMOV R2,#8 ;重新开始扫描MOV R1,#20H ;从第一行开始扫描NEXY_C: MOV TH0,#F6H ;设定每行扫描时间MOV TL0,#3CH ;设定每行扫描时间SETB TR0 ;启动 TIMER0CLR RS0 ;切换回 RB0POP A ;取回 ACCRETI第四章 调试及性能分析4.1 软件调试软件调试主要是利用计算机仿真针对程序中可能存在的错误进行检测,直到得到正确的显示结果。按照程序流程图在 KEIL C51 软件中编写好程序,在此软件中检测编写好的程序是
18、否有误语法错误。此次软件调试参考前面的子程序,选择动态显示程序和延时程序进行调试,并观察其结果,如图 8、9 所示。4.2 性能分析此次系统设计结果较好,LED 显示屏能很好的显示信息。这个方案设计的88 的点阵 LED 图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。图 8 动态显示程序调试结果图 9 延时程序调试结果总结通过此次论文设计,让我学到了许多知道的和不知道的,都有提高,在单片机的选择、显示屏的组合还有各种器件的选用有了一个明确的认识,程序设计上清晰地思路,理论在实
19、践方面的运用能力有巨大的提高。在实践以前,由于对单片机有一定的兴趣,我通过课外学习已经接触了很多概念以及设计方式,但不专业。但是通过这次深层次的学习、设计我有了一定的实践经验和理论基础,也让我可以进行更深的研究学习,在设计思路上,通过查阅资料了解了许多方法,认识到形式的多样性,模仿优秀作品是每个设计师必走之路,但是做设计必须要有自己的思想,人也要有自己的鲜明个性,久了就成了自己的风格,风格的养成与一个人的艺术素养和个人修养有直接关系。要拓展自己的知识面,使自己的知识系统化知识需要接触社会的方方面面,光有书本知识是远远不够的。要求自己在以后的学习中多想,多读,多学。要求自己的写作水平一定要过硬。
20、经验的提高,让我今后在设计时更加方便、快捷,也为毕业后的就业提供了保障。 参考文献1张靖武,周灵彬 单片机系统的 PROTEUS 设计与仿真 电子工业出版社.2夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001. 3何立民从 Cygnal 80C51F 看 8 位单片机发展之路单片机与嵌入式系统应用,2002 年,第 5 期:P58. 4何立民. 单片机高级教程.第 1 版北京:北京航空航天大学出版社,2001.5 AT89C51 DATA SHEEP Philips Semiconductors 1999.dec.6Yang. Y., Yi. J., Woo, Y.Y
21、., and Kim. B.:Optimum design for linearityand efficiency of microwave Doherty amplifier using a new loadmatching technique, Microw. J., 2001, 44, (12), pp. 2036.7 吴金戌,沈庆阳,郭庭吉 8051 单片机实践与应用 清华大学出版社.8 李群芳,肖看 单片机原理、接口及应用 北京:清华大学出版社.附录A 元件清单元器件名称 型号 数目1、AT89C51 单片机 1 块2、晶振 12MHZ 1 块3、PNP 三极管 9012 8 只4、
22、88 点阵共阳 LED 显示器共阳 1 块5、按钮开关 1 只6、极性电容 10uf 1 只7、极性电容 0.01uf 1 只8、瓷片电容 30pf 2 只9、电阻 4.7k 9 只10、电阻 10 k 1 只11、电阻 270 8 只12、电源插座 1 个B 总原理图S1X212MHZC330PFC430PFC510MF/25VVCCXTAL1XTAL2VCCR24.7KQ5Q4Q3Q2Q7Q8Q6a b c d e f g h8123456788LEDQ1+5VEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134
23、P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VSS20VCC40U2AT89C51+5VGND+5VC110uFC20.01uFR110k27084.7k890129012901290129012901290129012C 程序清单COLUMN REG P0 ;行ROW REG P2 ;列SCANCODE EQU 10000000B ;扫描码SPEED EQU 1 ;0.25s 延迟S_TIME EQU
24、 -2500 ;2ms 扫描时间ORG 0000H ;程序从 0000H 地址开始JMP START ;跳至 STARTORG 000BH ;TIMER0 中断向量JMP TIMER0 ;跳至 TIMER0 中断子程序START: MOV IE,#82H ;设定 TIMER0 中断MOV TOMD,#01H ;使用 T0 定时器,方式 1MOV SP,#60H ;移开堆栈指针SETB RS0 ;切换到 RB1MOV R1,#20H ;显示存储起始地址MOV R2,#8 ;扫描 8 行MOV R3,#SCANCODE ;载入扫描码CLR RS0 ;切换回 RB0MOV TH0,#0F6H ;设定
25、每行扫描时间MOV TL0,#3CH ;设定每行扫描时间SETB TR0 ;启动 TIMER0LOOP: MOV DPTR,#TABLE ;将数据指针指向 TABLE 地址MOV R4,#4 ;4 组字型 NEXT: MOV R2,#8 ;加载数据数量MOV R0,#20H ;储存存储器起始地址CALL LOADING ;加载一个字型CALL DELAY ;延时DJNZ R4,NEXT ;跳至 NEXT 形成一个循环JMP LOOP ;跳至 LOOP 形成一个循环LOADING: MOV R3,#0 ;间距L_1: MOV A,R3 ;将间距放入 ACCMOVC A,A+DPTR ;读入数据M
26、OV R0,A ;将数据存入存储器INC R3 ;指向下一个读取地址INC R0 ;指向下一个储存地址DJNZ R2,L_1 ;跳至 L_1 形成一个循环INC DPTR ;下一笔数据RETDELAY: MOV R7,#1 D1: MOV R6,#200D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETTIMER0: CLR TR0 ;关闭 TIMER0PUSH A ;储存 ACCSETB RS0 ;切换到 RB1MOV COLUMN,#0 ;关闭 LED 阵列MOV A,R1 ;取出显示信号;使用共阳极式 LED 阵列,则加入下一列指令CPL AM
27、OV ROW,A ;输出显示信号MOV A,R3 ;载入扫描码MOV COLUMN,A ;输出扫描码(显示一行)RR A ;下一个扫描码MOV R3,A ;储存下一个扫描码INC R1 ;下一个显示信号DJNZ R2,NEXT_C ;未超过 8 行则跳至NEXT_CMOV R2,#8 ;重新开始扫描MOV R1,#20H ;从第一行开始扫描NEXY_C: MOV TH0,#F6H ;设定每行扫描时间MOV TL0,#3CH ;设定每行扫描时间SETB TR0 ;启动 TIMER0CLR RS0 ;切换回 RB0POP A ;取回 ACCRETITABLE: ;8BYTES10=80BYTESDB 00H,00H,00H,00H ;空白DB 00H ;空白DB 00H,00H,36H,49H ;8DB 49H,36H,00H,00H ;DB 00H ;空白DB 00H,1CH,22H,41H ;0DB 41H,22H,1CH,00H ;DB 00H ;空白DB 00H,00H,27H,45H ;5DB 45H,45H,39H,00H ;DB 00H ;空白DB 00H,40H,44H,7EH ;1DB 7FH,40H,40H,00H ;DB 00H,00H,00H,00H ;空白DB 00H,00H,00H,00H ;空白END