1、拉幕式数码显示第 1 章 概述 1单片机的硬件特性与发展趋势 1第 2 章 系统总体方案设计 3第 3 章 硬件设计 53.1控制模块 53.2显示模块 53.3驱动模块 63.4其他硬件 63.4.174LS138 译码器 73.4.2时钟电路 . 73.4.3复位电路 83.5系统硬件原理图 8第 4 章 软件设计及调试 94.1设计软件 94.1.1Keil C51 软件 94.1.2Proteus 软件 94.2程序流程图 94.3程序设计 10第 5 章 系统联调及操作说明 15第 6 章 总结 17第 1 章 概述近年来随着计算机在社会领域的渗透和大规模集成电路的发 展,单片机的应
2、用正在不断地走向深入,由于它具有功能强,体 积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特 别适合于与控制有关的系统,越来越广泛地应用于自动控制,智 能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域。 单片机往往是作为一个核心部件来使用,再根据具体硬件结构, 以及针对具体应用对象特点的软件结合,以作完善。单片机, 亦称单片微电脑或单片微型计较机。 它是把中心处理 器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)输入/输出 端口 (I/0) 等首要计算机功能部件都集成在一块集成电路芯片上 的微型计较机。单片机的硬件特性与发展趋势1.低功耗CMO化MCS-51系列的8
3、031推出时的功耗达630mW而此刻的单片机 普遍都在100mW随着对单片机功耗要求越来越低,此刻的各个单 片机制造商根基都采用了 CMOS互补金属氧化物半导体工艺 )。 80C51就采用了 HMOSg卩高密度金属氧化物半导体工艺)和 CHMO互补高密度金属氧化物半导体工艺)。CMOSS然功耗较低, 但因为其物理特征决定其工作速度不够高,而CHMO则具备了高速 和低功耗的特点。这些特征 , 更适合于在要求低功耗 , 电池供电的 应用场所。2.微型单片化常规的单片机普遍都是将中心处理器(CPU)、随机存取数据存 储(RAM)只读存储器(ROM)并行和串行通信接口 ,中断系统、定 时电路、时钟电路
4、集成在一块单一的芯片上 , 增强型的单片机集成 了如A/D转换器、PMW脉宽调制电路)、WDT看门狗)、有些单片 机将LCD液晶)驱动电路都集成在单一的芯片上,这样单片机包含 的单元电路就更多 ,功能就越强。单片机厂商还可以按照用户的要 求量身定做 , 制造出具有自己特色的单片机芯片。单片机除了功能 强和功耗低外 , 还要求其体积要小3.高性能以往单片机内的ROM为1KA4KB,RAM为64128B但在需 要复杂工作的场所 , 该存储容量是不够的 , 必需进行外接扩充。为 了顺应这种规模的要求 , 须运用新的工艺 , 使片内存储器容量增 大。此外单片机进一步改变CPU勺性能能,加速指令运算的速
5、度和 提高系统机制的稳定性。采用精简指令集 (RISC)结构和流水线工 艺, 可以大幅度提高运行速度。单片机改变了我们的生活 , 从导弹的导航装配 , 到飞机上的各 类仪表, 从计算机的收集通信与数据传输 , 到工业自动化过程的控 制, 以及我们生活中普遍使用的各类智能 IC 卡、电子宠物等 , 这些 都离不开单片机 , 单片机有着广阔的应用前景。本次课程设计的要求是以 51 系列单片机为核心, 以开发板为 平台, 设计一个拉幕式数码显示系统。对于要显示的数码 1、 2、 3、4、 5、 6、 7、 8 具有比较平滑的拉幕显示效果。 本设计是以 AT89C51 单片机为核心,结合相关的元器件(
6、共阴极七段 LED数码显示器,74LS138 等),再配以相应的软件,达到制作简易的数码显示技术 目的,其难点在于程序的编写与调试等。第 2 章 系统总体方案设计课题的核心为采用单片机设计一个具有拉幕式数码显示效果 的系统,我们可以通过采用 AT89C51芯片、74LS138芯片和一片 8LED数码显示管进行设计。用 AT89C51单片机的PO.O/ADOP0.7/AD7端口接数码管的a h端,通过编写相应程序,实现从右 到左、从左到右的“ 12345678”的数字显示和从两端到中间“43211234”的显示,能够比较平滑地看到拉幕的效果。数码管的公共端固定接地(共阴极)或接正电源(共阳极)
7、, 直接在 I/O 线发送相应的字段码即可,为静态显示工作情况。使 每个数码管轮流点亮相应字符再不断循环,从计算机角度看是一 个一个显示的,但由于人的视觉暂留效应,只要循环周期足够短, 看起来所有数码管都是一起显示的,为动态显示工作情况。AT89C51芯片总共有40个管脚,其中可做I/O管脚有P0 口、 P1 口、P2 口和P3 口共32个,我们可以通过选择其中一个口的 8 个管脚作为输出端接通七段数码显示管,再选择另外一个口接至 七段数码显示管的片选端,通过此方式,我们直接通过 AT89C51 芯片驱动七段数码显示管工作,而无须其他扩展端口。系统总体框图设计如下:段码信号通过选择AT89C5
8、1的P0 口作为数据传送端口传送数据,在数 码管上显示相应的数据,选择 P2 口的P2.0、P2.1、P2.2三个端 口实现对数码管的位选;同时为了使单片机能比较精确工作,夕卜 部还需有时钟电路等。第3章硬件设计3.1控制模块对于AT89C51单片机单元,由于其共有 40个管脚,其中有 32个管脚可作为I/O 口用,它们分别为P0 口的八个管脚、P1 口 的八个管脚、P2 口的八个管脚和P3 口的八个管脚,其中P3 口的 八个管脚可作串行口、外部中断、定时器、读写控制等特殊用途, 当不需要作特殊用途的时候, P3 口可作I/O 口使用。AT89C51单图3.1 AT89C51单片机芯片示意图3
9、.2显示模块对于数码显示管单元,我选用的是七段数码显示管,七段数 码显示管有共阴极和共阳极两种,显示器接口按驱动方式可分为 静态显示和动态显示两种方式。静态显示的优点是显示稳定,亮 度高;缺点是占用硬件电路(如I/O 口、驱动器等)多。动态显 示的优点是节省硬件电路;缺点是采用软件扫描时占用 CPU时间多,当显示位数较多时,显示器亮度将受到影响。此系统我们采 用的是7段共阴数码显示管、静态显示的工作情况。7段共阴数码 显示管如下图所示:图3.2 7段共阴数码显示管硬件图3.3驱动模块数码显示管单元中还用到了驱动电阻,如下图所示:R1R2R3R4R5R6R73k33K33k33k33怕3k3t
10、4 彳 *3k3图3.3驱动电阻电路图3.4其他硬件341 74LS138 译码器74LS138为3线8线译码器,其硬件图如下图所示:U274LS138图3.4 74LS138 3线8线译码器3.4.2时钟电路利用片内振荡电路,将XTAL1和XTAL2外接晶体振荡器或陶C1T;瓷谐振器,构成内部自激振荡器,产生振荡时钟脉冲。电路中, 石英晶体选择12MHz电容器C1和C2对振荡频率有微调作用,取 值为30pF。时钟电路图如下:X1CRYSTALFREQ=12MHz图3.5时钟电路343复位电路复位电路设计如下图:R1IK图3.6复位电路3.5系统硬件原理图系统硬件原理图见附录 A所示。第 4
11、章 软件设计及调试4.1设计软件4.1.1Keil C51 软件Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单 片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、 可读性、可维护性上有明显的优势。是目前最流行开发 MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、 库管理和一个功能强大的仿真调试器等在内的完整开发方案,通 过一个集成开发环境( uVision )将这些部分组合在一起。4.1.2Proteus 软件Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它不仅具有其
12、它 EDA工具软件的仿真功能,还能仿真 单片机及外围器件。它是目前最好的仿真单片机及外围器件的工 具。从原理图布图、代码调试到单片机与外围电路协同仿真,一 键切换到PCB设计,真正实现了从概念到产品的完整设计。是目 前世界上唯一将电路仿真软件、PCE设计软件和虚拟模型仿真软件 三合 一的 设计 平台, 其 处理器 模型 支持 8051、 HC11、 PIC10/12/16/18/24/30/DsPIC33 、AVR ARM 8086和 MSP43等。4.2程序流程图程序采用C语言编写,相对用汇编语言编写简单易读,程序 流程图也相对简单。程序主要包括延时子程序段、左移程序段、 右移程序段、两端往
13、中间显示程序段。设计其程序流程图如下图所示:4.3程序设计拉幕式数码显示程序设计思路:课程设计要求实现从右往左 “ 12345678”、从左往右“ 87654321”、和从两端往中间“ 4321123 4”的数码显示,而 7 段共阴数码显示管每个时刻只显示了一位数 码,要达到这种连续显示的效果,可将段码表分组,取一组段码 显示一段时间后,再取下一组显示,如此循环下去,即可看到拉 幕式显示效果: 0000001,00000012,00000123,00001234,00012345, 00123456,01234567,12345678 等。只要数码管刷新时间够快,由 于人眼视觉暂留效应,看起来
14、就像是同时显示 8 位数,即看到拉 幕式数码显示效果。设计好段码表“ 00000001234567800000000”, 将其分为 16 组,每次按顺序取其中的一组显示,为了防止人眼看 来有闪烁效果,我将每组数码显示了 10 次,这样就看不到闪烁效 果了。按要求从左往右显示时,只需按顺序反向查一组段码表, 即可看到拉幕式显示效果: 1000000,21000000,32100000,4321000 0,54321000,65432100,76543210,87654321 等。按照类似从右往左 移的方法,每组数码显示了 10 次,就完成了从右往左移的显示设 计。综上,编写子程序段如下: 左移程
15、序段for(ci=4;ci0;ci-) /* 控制循环 4 次*/for(i=0;i0;cnt-) /* 每组刷新 10 次,防止闪烁*/for(j=0;j0;ci-) /*for(i=0;i0;cnt-) /*烁*/for(j=0;j0;ci-) /* 控制循环 4 次*/for(cnt=10;cnt0;cnt-) /* 每组刷新 10 次,防止闪烁*/for(j=0;j0;cnt-)for(j=0;j0;cnt-)for(j=0;j0;cnt-)for(j=0;j=7;j+) P2=weij;P0=sheet4j; /* 查第四张表 */ delay(15);第5章系统联调及操作说明调试主
16、要分为硬件调试和软件调试,由于没有时间做实物,硬 件调试在proteus软件中完成。程序部分是用 C语言编写程序的, 由于没有专门学习过用 C语言来实现对单片机的控制,我又花了 许多时间上网找相关资料,在程序编写过程中遇见了各种各样的 问题,但都一一解决了。在编程的过程中,尽量争取使程序简单, 可读性强。通过仿真软件ISIS对写好的程序进行仿真,在此过程 中出现显示不正确、数码显示不全、扫描频率太快等难题,最后 通过对程序的不断调试,实现从右到左、从左到右的“ 12345678的数字显示和从两端到中间“ 43211234”的显示,能够比较平滑 地看到拉幕的效果。仿真效果图如下所示:从右到左“
17、12345678的数字显示效果:左移“ 12345678”的数字显示从左到右“ 87654321”的数字显示效果:两端到中间“ 43211234”的数字显示第 6 章 总结通过两个星期的单片机课程设计,我受益匪浅。 首先,在这次课程设计当中,我将单片机原理与应用的 教材重新认真复习了一遍,由于以前没认真听过课,这个过程十 分痛苦,许多知识点都看不懂,但我没有放弃,遇到不懂的知识 点反复思考,仔细推敲,并结合老师的讲义,最终把教材过了一 遍,为后来的单片机课程设计打下了一个良好的基础。在此期间 我还阅读了大量各种有关单片机的参考书,这使我对单片机的硬 件结构更加清晰,对单片机的软件的设计有了初步
18、的系统的了解, 对其中的各种常用的指令更加熟悉,相对于课程设计以前的水平 有了很大的提高。在此次的课程设计当中,虽然最后以 C 语言来 编写这次课程设计的程序,但在此之前我尝试用汇编语言编写程 序,使我对使用汇编语言设计程序不再感到陌生,通过对程序的 不断修改,我对汇编语言中的各种指令和语句的使用更加熟练, 这对我步入使用汇编语言编写程序的大门做了一个很好的铺垫, 以后我会更加努力学习用汇编语言来编写大型程序。其次,在这次课程设计当中,周向红老师的悉心教导,使我 对单片机的软件设计与硬件方面的知识有了很大的收获,以前只 是停留在理论认识单片机的层次,通过这次课程设计我更加加深 了对单片机软件与
19、硬件方面的理解。最后,在这次课程设计当中, 锻炼了我的毅力与恒心。此次课程设计的难点主要在于程序的编 写与调试,在此之前我从未有过此方面的经验,拿到一个要求不 知道从何下手。最后跌跌撞撞的把程序写完了,但调试又遇到了 大问题。许多错误不知道是什么意思,根本不知道从何改起。我 只好定位到错误的地方,在书本上找到相关知识,或者问同学, 最后把错误一一排除。在系统联调时,又遇到了许多问题,如出 现显示不正确、数码显示不全、扫描频率太快,我不断的修改程 序、修改方案,最终在我的不懈努力下完成了拉幕式数码显示的 课程设计,这种成功后的喜悦溢于言表,最重要的是在此期间我 的意志力得到了锻炼,这应该是我这次
20、课程设计的最大收获!图理原统系需LTIM附录1系统原理图4QLQ w 1 二尸L1 11. II 11L 1丿1附录 2 程序清单 #include #define uchar unsigned char #define uint unsigned int /* 右移与左移的段码显示 */ uchar duan=0,0,0,0,0,0,0,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0,0,0,0,0,0,0,0;/* 两边往中间的段码显示 */ uchar sheet18=0x06,0,0,0,0,0,0,0x06;uchar sheet28=0x5b,
21、0x06,0,0,0,0x06,0x5b;uchar sheet38=0x4f,0x5b,0x06,0,0,0x06,0x5b,0x4f; ucharsheet48=0x66,0x4f,0x5b,0x06,0x06,0x5b,0x4f,0x66;uint wei8=0,1,2,3,4,5,6,7;void delay(uint ms) /* 延时子程序 */ uint t0,t1;for(t0=ms;t00;t0-) for(t1=15;t10;t1-);void main() uint i,j,k,m,cnt,ci; k=10;m=7; while(1) /* 左移程序段 */for(i=0
22、;i0;cnt-) /* 每组刷新 10 次,防止闪烁*/for(j=0;j8;j+) P2=weij; /* 位选信号 */P0=duanj+i; /* 段选信号 */ delay(20); /* 延时 */*/ */* 右移程序段 */烁*/for(j=0;j0;ci-) /* 控制循环 4 次 */for(cnt=10;cnt0;cnt-) /*每组刷新 10 次,防止闪烁*/for(j=0;j0;cnt-)for(j=0;j0;cnt-) for(j=0;j0;cnt-) for(j=0;j=7;j+) P2=weij;P0=sheet4j;/* 查第三张表 */* 查第四张表 */delay(15);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1