1、基于单片机的电子课程表系统课程设计 数理与信息工程学院单片机原理及应用期末课程设计 题 目: 基于单片机的电子课程表系统 专 业: 计算机科学与技术 班 级: 计算机072班 姓 名: 梁姣 学 号: 07220111 指导老师: 余水宝 成 绩: ( 2010.1 )目 录 第1节 引 言31.1 电子课表系统概述31.2 本设计任务和主要内容4第2节 系统主要硬件电路设计52.1 单片机控制系统原理52.2 单片机主机系统电路62.2.1时钟电路72.3 七段数码管显示电路72.4 LED显示系统电路82.5 汉字显示硬件电路9第3节 系统软件设计10 3.1 系统主程序设计103.2 汉
2、字的点阵显示原理及字库代码获取方法15第4节 结束语18参考文献19附录20基于单片机的电子课程表系统数理与信息工程学院 计算机科学与技术 梁姣指导教师:余水宝 第1节 引 言 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多
3、嵌入式控制系统提供了一种灵活性高且价廉的方案。 LED因其体积小,耗电量低,高亮度及环保等优点而被广泛应用于公共场所的大屏显示上,LED点阵大屏可应用于户外广告,交通导航,大厅公告,比赛的多媒体实时显示等领域。学校新建体育馆内就置有大幅LED显示,校运会时为赛事信息实时显示提供了便捷。 我们的课程设计是基于AT89C51单片机,用16*16点阵显示滚动的课程名称,至于教室门口,可即时显示该教室内正在上的课程名称,方便师生选择合适的教室学习。所作的点阵屏具有可移植性强,功能简单,可以简单继续添加更多相关功能的模型,也可以扩展成多块点阵屏的组合,以改良显示效果。该系统灵活性强,易于操作,可靠性高。
4、1.1 电子课表系统概述 经过一段时间的观察,我们发现,同学们上自习是经常遇到一个问题。教室中有很多人,但不能确定里面是不是准备要上课,能不能到里面去自习。有时候坐下没多久刚刚进入学习状态,就有人进来说此教室将被班级活动占用或临时调整为上课教室。所以我们设想,能不能设计一个电子课表,放在每个教室的门口,显示当前在上的课程,并可以通过一定的按键来及时改变课程,以应对临时变化。我首先想到的是设计一种有控制终端的课程显示系统。即每个教室门口都有一个电子课表,通过终端的控制完成所有课表的显示。但后来发现,以我们的能力做这样的工作太过复杂,所以选择了更容易的方式:单一的放在教室门口的电子课表,只显示当前
5、的课程。于是现在的作品应运而生。发光二极管具有亮度高、体积小、单色性好、响应速度快、驱动简单、寿命长等优点,LED显示屏由发光二极管阵列构成并通过一定的控制方式,用于显示文字、图像、行情等各种信息以及电视、录像信号,由于由LED器件阵列组成的显示屏幕成本低,安装方便灵活,正受到社会各界尤其是商业界、广告界的极大重视。在大型商场、车站、码头、地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示图形和汉字。显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。本文基于单片机(AT89C51)讲述了1616 LED汉字点阵显示的基本原理、硬件组成与设计、程序编译与下载等基本环节和相
6、关技术,根据点阵屏和七段数码管的基本原理,做出了方便实用的电子课表!1.2 本设计任务和主要内容本课程设计的主要任务是以AT89C51为核心芯片设计16 16 L ED 汉字点阵显示电路。硬件电路主要由AT89C51 单片机控制器、L ED 显示屏行列驱动电路以及L ED 点阵显示屏,六位七段数码管4 部分组成。通过汉字字模点阵数据批量生成软件来实现汉字点阵,采用汇编语言对单片机进行控制操作。完成实物电路并在Proteus 软件的基础上对结果进行仿真,得到了汉字点阵效果图。预计设计完成的电子课程表有如下功能:1.实现LED点阵屏汉字名称的滚动显示。2.实现不通课程汉字名称的自动切换。3.实现按
7、键控制课程名称的临时更改。4.实现节日动画的显示。5.实现6位七段数码管显示时分秒。6.实现按键控制时间的调整。第2节 系统主要硬件电路设计 2.1 组成框图硬件设计思想:通过按键输入控制信号,由单片机进行处理,并将行列信号分别通过显示驱动输入点阵屏和数码管,控制点阵和数码管的显示.图2-1 电子课表系统原理框图图2-2 系统主要硬件电路图22 单片机主机系统电路本产品采用以AT89C51单片机为核心芯片的电路来实现,主要由AT89C51芯片、时钟电路、复位电路、列扫描驱动电路(74HCl54)、1616LED点阵5部分组成,如图2-1所示。其中,AT89C51单片机是51系列单片机的一个成员
8、,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。图2-3 AT89C51引脚图2.2.1时钟电路时钟电路由AT89C5l的18,19脚的时钟端(XTAI l及XTAL2)以及12 MHz晶振X、电容C2、C3组成,采用片内振荡方式。复位电路采用简易的上电
9、复位电路,主要由电阻R,R2,电容C,开关K组成,分别接至AT89C51的RST复位输入端。2.3七段数码管显示电路 用74HC164实现8路并口输出的扩展,占用单片机的两个端口。程序控制PD6作为数据线,将一字节由高位到低位,依次输出,输出时先根据该位的数值置PD6为“1”或“0”,然后控制PA7输出“1”,再输出“0”,模拟时钟信号,将PD6数据打入74HC164。循环移位8次后,将1字节的数据由低位到高位串行输入到74HC164中,即可在74hc164的输出端得到并行的8位数据,即七段数码管的段码值。用74LS138实现6路并口输出的扩展,将位选的段码值依次打入74LS138,74LS1
10、38任一时刻只有一个输出口输出低电平,对应的一位数码管被选中,扫描6次后可以实现六位数码管的显示。电阻起限流的作用。该模块可以实现时分秒的显示,补充并强化了电子课表的功能,为了节省单片机布局有些不合理的端口,用了两处串入并出的扩展。图2-4六位七段数码管显示结构图24 LED显示系统电路 LED点阵显示屏采用1616共256个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。我们把行列总线接在单片机的I0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。但是若将LED点阵的行列端口全部直接接入AT89C51单片机,则需要使用32条I0口,这样会造成I0口资源
11、的耗尽,系统也再无扩充的余地。因此,我们在实际应用中只是将LED点阵的16条行线直接接在P0口和P2口,至于列选扫描信号则是由416线译码器74HCl54来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO口资源,为单片机系统扩充使用功能提供了条件。考虑到P0口必需设置上拉电阻,我们采用47 k排电阻作为上拉电阻。 汉字扫描显示的基本过程是这样的:通电后由于电阻R,电容c1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C、C3、X以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2接口输出与内部汉字对应的代码电平送至LED点阵的行选线
12、(高电平驱动),同时在P11,P12,P13,P14接口输出列选扫描信号(低电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。再改变取表地址实现汉字的滚动显示。图2-5 LED显示原理框图2.5汉字显示硬件电路本文所设计的目标是在16 16 L ED 点阵上实现汉字显示。汉字点阵控制电路选用A T89C51 。硬件电路分为单片机控制器、L ED 显示屏行列驱动电路、L ED 点阵显示屏3 部分,完整的硬件电路如图2-2 所示。选用4216 译码器74154 作为行选址逻辑控制端,A T89C51 的P0 、P2 口作为列数据输入端。图2-6 16*16LED
13、汉字显示仿真图第3节 系统的软件设计软件程序主要由开始、初始化、主程序、字库组成。其中主程序的流程图如图2-7所示。图2-7 汉字输出流程图31 系统主程序设计 ORG 0000HST: MOV A,#0FFH ;初始化MOV P1,AMOV P2,AMOV P3,AMOV P0,ACLR AMOV R0,#50H ;显示缓存清0MOV R1,#20H ;控制清0的次数ST0: MOV R0,AINC R0DJNZ R1,ST0;正文显示CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1LCALL HZ;结束动画SCREE:MOV DPTR,#TAB2;查表指针指向TAB2
14、ACALL DDMOV DPTR,#TAB3;查表指针指向TAB3ACALL DDMOV DPTR,#TAB4;查表指针指向TAB4ACALL DDLJMP CHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD: MOV B,#00HMOV R0,#08H ;显示8幅画面AJMP CCCC0: MOV A,BADD A,#20H ;指向下一幅画面MOV B,ACC: MOV R7,#08H ;画面停留时间MOV R3,BMOV 37H,R0LCALL ENTERDIS00: LCALL DISPLAYDJNZ R7,DIS00MOV R0,37HDJ
15、NZ R0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ: MOV R3,#00H ;查表偏移量MOV R5,#81H ;查表128次MOVBACK: MOV R4,#10H ;使显示完一个汉字MOVBACK0:MOV R7,#02H ;一桢画面显示时间MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;内存后移的次数DJNZ R5,MOVBACK1RET ;显示完该表,返回MOVBACK1:MOV A,R0 ;低8位被
16、后移的内存单元数据暂存入AINC R0 ;后移两字节INC R0MOV R0,A ;放入要移的低8位数据MOV A,R0 ;R0指向下一个要后移的内存单元SUBB A,#04HMOV R0,AMOV A,R1 ;高8位被后移的内存单元数据暂存入AINC R1 ;后移两字节INC R1MOV R1,A ;放入要移高8位的数据MOV A,R1 ;R1指向下一个要后移的内存单元SUBB A,#04HMOV R1,A ;R1指向下一个要后移的内存单元DJNZ R2,MOVBACK1 ;显示缓存数据依次后移MOV A,R3 ;从表TAB1读入要移进50H,51H的数据MOVC A,A+DPTR;先给50
17、H读数据MOV 50H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOVC A,A+DPTR;再给51H读数据MOV 51H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOV 30H,R3 ;保护数据MOV 31H,R4MOV 32H,R5DISMOV: LCALL DISPLAY ;显示当前数据DJNZ R7,DISMOVMOV R3,30HMOV R4,31HMOV R5,32HDJNZ R4,MOVBACK0MOV 30H,R3 ;保护数据MOV 32H,R5MOV R7,#24H ;显示当前数据延时DISMOV0: LCALL DISPLAYDJNZ
18、 R7,DISMOV0MOV R3,30HMOV R5,32HLJMP MOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3ENTER: MOV R1,#50H ;从50H单元起把表存入MOV R2,#20H ;查表次数MOV A,R3CLLOOP_: MOVC A,A+DPTR ;查表MOV R1,A ;将表放进5X,6X单元INC R1 ;R1指向下一个地址空间MOV A,R3 ;查表指针后移INC AMOV R3,A ;将指针修改结果存入R3DJNZ R2,CLLOOP_;没查完转CLLOOP_RET;15MS,显示子程序,一桢32个字节,影
19、响A,R0,R1,R3,R4,R5,R6;单片机网提供汉字取模工具,可显示任意汉字DISPLAY: MOV A,#0FFHMOV P0,AMOV P1,AMOV P2,AMOV P3,ASETB CMOV R6,#7FH ;赋扫描字初值,左移后初值为0FEHMOV R5,#00H ;列扫描低8位控制MOV R0,#50H ;行的高8(p1)位要显示的数据起始地址MOV R1,#10H ;扫描次数DISLOOP: MOV A,R0 ;从内存读数据MOV P2,#0FFH ;装入数据时不显示任何东西MOV P3,#0FFHCPL A ;数据取反以适合显示MOV P1,A ;送入行的高8(p1)位要
20、显示的数据INC R0 ;修改R0指向低8位要显示的数据MOV A,R0 ;读低8位要显示的数据CPL A ;数据取反以适合显示MOV P0,A ;送入行的低8(p0)位要显示的数据INC R0 ;R0指向下一个高8(p0)位要显示的数据LCALL NEXT ;调用列扫描程序LCALL DELAY1MS ;显示延时DJNZ R1,DISLOOP;一桢显示完返回MOV P3,#0FFH ;全灭RET;列扫描子程序DISLOOP专用NEXT: JNC NEXT1 ;C=0转扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AINC R5CJNE R5,#09H,NEXT0 ;
21、R6=#0FEH时C=0AJMP NEXT1BACK: RETNEXT0: MOV P2,R6 ;扫描低8(p2)位行AJMP BACKNEXT1: MOV P2,#0FFHMOV P3,R6 ;扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AAJMP BACK;延时1MS子程序DELAY1MS:MOV R3,#10D0: MOV R4,#50D1: DJNZ R4,D1DJNZ R3,D0RETTAB1:DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070H,001H,000H,01DH,070H,000H,000H
22、DB 01FH,0F0H,011H,010H,01FH,0F0H,011H,010H,01FH,0F2H,001H,002H,001H,002H,000H,0FEH;電DB 000H,000H,03FH,0F0H,000H,020H,000H,040H,000H,080H,001H,000H,001H,000H,001H,004HDB 0FFH,0FEH,001H,000H,001H,000H,001H,000H,001H,000H,001H,000H,005H,000H,002H,000H;子 其余字略; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16
23、END3.2汉字的点阵显示原理及字库代码获取方法我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。如查用8位的AT89C51单片机控制,由于单片机的总线由8位,一个字需要拆分为2个部分,如图2-7所示图2-7 汉字输出点阵图为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。汉字可拆分为上部和下部,上部由816点阵组成,下部也由816点阵组成。本例通过列扫描方法首先显示左上角
24、的第一列的上半部分,即第0列的P00P07口,方向为P00到P07,显示汉字“我”时,为全灭,第一列的下半部分也为全灭。第二列的上半部分P06、点亮,由上往下排列,为:PO0灭,PO1灭,P02灭PO3灭,PO4灭,P05灭,P06亮,P07灭。即二进制00000010,转换为十六进制为02h。上半部第二列完成后,继续扫描下半部的第二列,为了接线的方便,我们仍设计成由上往下扫描,即从P27向P20方向扫描,从图3可以看到,这一列P23亮,即为00001000,十六进制则为08h。依照这个方法转向第三列、第四列,直至第十六列的扫描,一共扫描32个8位,可以得出汉字“我”的扫描代码为: 00H,0
25、2H,08H,06H,28H,02H,24H,22H 0FCH,3FH,24H,2 1H,20H,10H,3CH,08H 0E2H,07H,20H,0AH,0E4H,11H,0A8H,20H 20H,30H,00H,00H,00H,00H,00H,00H 由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。上述方法虽然能够让我们弄清楚汉字点阵代码的获取过程,但是依靠人工方法获取汉字代码是一件非常繁琐的事情。为此,我们经常采用字库软件查找字符代码,软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到程序中即
26、可,如图2-8所示。图2-8 字库提取程序可见,汉字点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法的扫描频率必须大于16641 024 Hz,周期小于1 ms即可。行扫描和列扫描方法的扫描频率必须大于168一128 Hz,周期小于78 ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。结 束 语 首先,通过这次应用系统设计,在很大程度上提高了自己的独立思考能力和单片机的专业知识,也深刻了解写一篇应用系统的步骤和格式,有过这样的一次训练,相信在接下来的日子我们都会了,而且会做得更好。因为对期末将近自习教室管理混乱的状况有所感
27、触,所以选择了书写这个系统,如果设计一个电子课表,放在每个教室的门口,显示当前在上或者将要上的课程,并可以通过一定的按键来及时改变课程,以应对临时变化,一定可以给广大复习学习的同学带来便利,于是现在的作品应运而生。虽然本设计只使用了一块1616 LED点阵,电路简单,但是已经包涵了LED显示屏的电路基本原理和基本程序,只要扩展单片机的IO接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。因此本文对同类设计具有一定的理论和实践参考价值。我所写的系统主要根据目前节水灌溉技术的发展趋势和国内实际的应用特点和要求,采用了自动化的结构形式,实现对土壤湿度的自动检测和控制。
28、系统基于单片机(AT89C51)讲述了1616 LED汉字点阵显示的基本原理、硬件组成与设计、程序编译与下载等基本环节和相关技术,根据点阵屏和七段数码管的基本原理,做出了方便实用的电子课表!利用MCS51汇编语言编制,运行程序该系统的主要特点是:1) LED点阵屏汉字名称的滚动显示,醒目了然。2) 不通课程汉字名称的自动切换,简明易懂。3) 按键控制课程名称的临时更改,为班会等班级活动临时占用教室提供方便。4) 节日动画的显示,喜庆欢快,带给同学们好心情。5) 6位七段数码管显示时分秒,以便老师和同学们随时获知准确时间。6) 按键控制时间的调整,确保时间的准确性。 另外,该系统适用性强,成本低
29、廉,操作非常简单,在现实中的推广使用具有十分重要的意义:参考文献 1 王飞,靳桅,邬芝权. L ED 大屏幕输出电路的优化设计J . 液晶与显示, 2008 ,23 (1) :1022105. 2 刘飞,田承雷. 单片机控制液晶显示器J . 矿业科学技术,2005 , (2) :9212. 3 张平均,黄家骏. 点阵式液晶显示模块的旋转式菜单设计J . 液晶与显示,2005 , 20 (4) :3422345. 4 陈伟锋,高宝建,汪俊,等. 基于点阵图形液晶模块的多菜单设计J . 液晶与显示,2007 ,22 (5) :6342638. 5 郑喜凤,邓春健,冯永茂,等. 一种实现L ED 显示屏显示信息的方法J . 液晶与显示,2007 ,22 (3) :3312335. 6 冯道宁,王念春. 地铁列车L ED 显示屏的设计J . 液晶与显示,2007 ,22 (1) :992103. 7 吴金戌,沈庆阳,郭庭吉. 8051 单片机实践与应用M . 北京:清华大学出版社,2006 :15. 8 石长华,周杰. 基于Proteus 的单
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1