这是我自己做的关于LED显示电子钟的制作。

目录
摘要: 1
关键词:单片机;LED点阵;数字时钟 1
1.电路设计的目的、任务、指标指标及工艺要求 2
1.1 课程设计的目的 2
1.2 课程设计的任务 2
1.3 课程设计的指标 3
1.4课程设计的工艺要求 3
2设计方案分析: 3
3.各部分器件工作的原理 4
3.1单片机 STC89C51 的工作原理 4
3.2 74LS373芯片的工作原理 7
3.3 74LS245芯片的工作原理 9
3.4 74LS138芯片的工作原理 9
3.5 74LS04芯片的工作原理 11
3.6单片机存储器结构及复位电路与时钟电路 11
4. 软件电路设计 13
4.1系统模块及结构框图 13
4.2 系统主程序设计 14
4.3 显示函数 14
4.4 显示秒函数 15
4.5 显示分函数 15
4.6 显示时函数 16
4.7 显示日函数 16
4.8 显示月函数 17
4.9 计时函数 17
4.10 按键函数 18
5.电路的焊接调试与组装 19
5.1硬件电路电路的焊接 19
5.2调试 19
5.3调试中遇到的问题及解决方案 20
6.电路的实验结果 22
6.1Proteus仿真 22
7.结论: 23
感谢: 24
参考文献: 25
附录 26
附件一:Proteus 仿真图 26
附件二:PCB图 27
附加三:原理图 27
附加四: 材料清单 28
附加五:程序代码(加注释) 29

以下是论文正文

摘要:
随着社会文化的不断发展,广告牌扮演着越来越重要的宣传角色,不论是汽车站,火车站,股市交易市场,还是学校都离不开它。我国经济发展迅猛,对信息传播有越来越高的要求可以相信,LED电子显示屏以其色彩鲜亮夺目、大的显示信息量、寿命长、耗电量小、重量轻、空间尺寸小、稳定性高、易于操作、安装和维护等特点,将在社会经济发展中扮演越来越重要的角色。正是由于LED大屏幕控制器行业的竞争越来越激烈。其部分国外知名企业为提高其产品在奥运会,世博会和未来中国市场的竞争力,正在实施本地化的策略,独资或合资在国内建立研发,生产基地。在未来三五年中,会形成几家主导国内市场,与国际接轨的颇具实力的企业。竞争将使国内LED大屏幕控制器产业逐步趋于成熟和相对稳定,规模化,品牌化将成为行业的趋势并成为未来竞争的主要手段。
关键词:单片机;LED点阵;数字时钟

1.电路设计的目的、任务、指标指标及工艺要求
1.1 课程设计的目的
掌握单片机输出口的使用方法和扩展;掌握定时器和外中断的使用方法;掌握LED点阵的驱动原理。
掌握C51语言程序设计方法和技巧,并能灵活运用于解决实际问题。
针对设计任务的要求,学会查阅手册和文献资料,培养学生独立分析和解决实际问题的能力。
通过对设计任务中“功能要求、技术要求、工艺要求”的分析,比较并选择最佳方案,对最佳方案进行论证,计算和选用元器件。
通过电路组装,调试和检测环节,完善设计方案并掌握电路的分析方法和设计方法。
熟悉常用电子元、器件的类型和特性,并掌握合理选型的原则。
掌握运用Proteus进行单片机的方针;学会电路的安装与调试。
掌握常用电子仪器、仪表的使用方法,学会电路整机指标的测试方法。

1.2 课程设计的任务
采用STC89C52单片机和LED点阵显示
能显示当前的月、日、时、分、秒,24小时制;
月、日、时、分、秒均可以单独设置,设置时该项目闪烁;
外接3个按键,一个用于选择需要设置的项目,一个增加、一个减少;

1.3 课程设计的指标
计时精度误差:≤1秒/日
LED显示清晰,不能有明显的残影、乱码;
电源:DC5V、2A;
1.4课程设计的工艺要求
印刷电路板布局合理、走线清晰整洁;
IC装在插座上,发热元、器件应考虑散热的方法;
在印制板上应留出定位孔及固定支架所占用的位置;
焊点大小适中、呈锥状、美观、结实、光亮、无虚焊;跳线整齐美观;
程序采用C51语言 编写,适当注释,具备良好的编程风格;
2设计方案分析:
点阵是按照一定规则排列起来的列阵。它里面是由很多个点组成的,通过控制这些点来显示想要显示的图形或者汉字,并可以实现屏幕上下左右滚动,动画功能。 点阵屏主要仅限于“点阵”显示,是比较简单、成本比较低的器材。坏了一部分,不影响另一部分,而且维修简单,换掉那块坏的就可以。点阵,由多个点状LED(或其他发光器件)显示单元排列构成,通过行、列矩阵控制方式点亮对应位置的显示单元,通过多点组合构成字形、图形,显示内容丰富,但控制相对复杂,显示效果好,功耗小,且成本更低。
数码管是一种半导体发光器件,由多条线状LED显示单元(称为段)构成的显示器,其基本单元是发光二极管。数码管实际上是由七个发光管组成8字形而构成的,加上小数点就是8个。这些段分别由a,b,c,d,e,f,g,dp来表示。数码管通过多段组合构成字形,主要显示阿拉伯数字,常见为七段,控制简单、方便,显示的信息有限。其小型的每段由一只LED构成,大型的每段由多只LED(串联、并联)构成。
点阵管——由多个点状LED(或其他发光器件)显示单元排列构成,通过行、列矩阵控制方式点亮对应位置的显示单元,通过多点组合构成字形、图形,显示内容丰富,但控制相对复杂。
本文介绍一种实用的LED点阵显示屏的制作,考虑到电路元件的易购性,我选用了8×8的点阵发光管模块,而且在整个制作过程中我又进一步熟悉了LED显示屏的基本结构和工作原理。此次的电路设计主要阐述了驱动电路与显示部分各器件的内部构造工作原理及在整个电路中的作用,整个电路有编译、驱动和显示三个部分组成。充分展示了制作和分析的全部过程。当编辑好程序接入自动行扫描驱动结口时,电路将自动进行行扫描,对应的发光二极管将会被点亮。
3.各部分器件工作的原理
3.1单片机 STC89C51 的工作原理
STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K字节在系统可编程Flash。

STC89C52引脚图、原理图,如图所示:

图1 STC89C52引脚图
介绍如下:
① 主电源引脚(2根)  
VCC(Pin40):电源输入,接+5V电源  GND(Pin20):接地线  
②外接晶振引脚(2根)  
XTAL1(Pin19):片内振荡电路的输入端   XTAL2(Pin20):片内振荡电路的输出端  
③控制引脚(4根)  
RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。  
ALE/PROG(Pin30):地址锁存允许信号 
PSEN(Pin29):外部存储器读选通信号  
EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读令。

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

PO 口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7  
  
P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
  
P1口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
  此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能
  P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出
  P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
  P1.5 MOSI(在线系统编程用)
  P1.6 MISO(在线系统编程用)
  P1.7 SCK(在线系统编程用)
 
P2口:P2口是一个具有内部上拉电阻的8位双向I/O 口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
  在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
  
P3口:P3口是一个具有内部上拉电阻的8位双向I/O 口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。
  P3口除作为一般I/O口外,还有其他一些复用功能:RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
  ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
  对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
  如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
  PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
3.2 74LS373芯片的工作原理
单片机系统中常用的地址锁存器芯片74LS373以及coms的74hc373。是带三态缓冲输出的8D触发器,其引脚图与结构原理图、电路连接图如图2所示:

图2 74LS373引脚图,内部结构原理图电路连接图
74LS373 的输出端 O0-O7 可直接与总线相连。O0-O7 为输出端。极限值:电源电压 7V,输入电压 55.5V ,输出高阻态时高电平电压 5.5V。
当三态允许控制端 E 为低电平时,O0-O7 为正常逻辑状态,可用来驱动负载或总线。当 E 为高电平时,O0-O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在 已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 引出端符号:D0-D7 为数据输入端,E 为三态允许控制端(低电平有效)LE 锁存允许端。

E G D Q L H H H L H L L L L X Q
上表是74LS373的真值表,表中:
L——低电平;
H——高电平;
X——不定态;
Q0——建立稳态前Q的电平;
G——输入端,与8031ALE连高电平:畅通无阻低电平:关门锁存。图中OE——使能端,接地。
当G=“1”时,74LS373输出端1Q—8Q与输入端1D—8D相同;
当G为下降沿时,将输入数据锁存。
3.3 74LS245芯片的工作原理
其电源电压为 7V,输入电压为 7V,输出高阻态时高电平电压为 5.5V。引脚图如图3所示:

图3 74LS245引脚图
74LS245是我们常用的芯片,用来驱动led或者其他的设备,用法很简单如上图,这里简单给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)
DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。
3.4 74LS138芯片的工作原理
74LS138 是3 线-8 线译码器,共有 54/74S138和 54/74LS138两种线路结构型式,其工作原理如下: ①当一个选通端(E1)为高电平,另两个选通端((/E2))和(/E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。(即输出为Y0至Y7的非)比如:A2A1A0=110时,则Y6输出端输出低电平信号。 ②利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。④可用在8086的译码电路中,扩展内存。
引脚功能:
1、A0-A2:地址输入端
2、STA(E1):选通端
3、STB(E2)、STC(E3):选通端(低电平有效)
4、Y0-Y7:输出端(低电平有效)
5、VCC:电源正
6、GND:地,
A0-A2 对应 Y0–Y7;A0,A1,A2 以二进制形式输入,然后转换成十进制,对应相应 Y 的序号输出低电平,其他均为高电平。

图4 用与非门组成的3线-8线译码器74LS138

图5 线-8线译码器74LS138的功能表 
无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
3.5 74LS04芯片的工作原理
74LS04是6非门(反相器)他的工作电压6V,他的内部含有6个coms反相器,74LS04的作用就是反相把1变成0。使用中请注意不要芯片的管脚顺序搞错。下面是芯片的管脚图1A-6A 输入端,1Y-6Y 输出端。引脚图如图 6 所示。

图6 74LS04芯片引脚
3.6单片机存储器结构及复位电路与时钟电路
MCS-51 器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以 64K 寻址。
程序存储器:如果 EA 引脚接地,程序读取只从外部存储器开始。对 STC89C51, 如果 EA 接 VCC,程序读写先从内部存储器(地址为 0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H-FFFFH。
数据存储器:STC89C51 有 256 字节片内数据存储器。高 128 字节与特殊功
能寄存器重叠。也就是说高 128 字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于 7FH 的地址时,寻址方式决定 CPU 访问高 128 字节 RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。因此,高 128 字节数据 RAM 也可用于堆栈空间。
复位是单片机的初始化操作,只要给 RESET 引脚加上两个机器周期以上的高电平信号,就可使 STC89C51 单片机复位。复位的主要功能是把程序计数器(PC) 初始化为 0000H,使单片机从 0000H 单元开始执行程序,同时复位操作还对一些寄存器有影响。STC89C51 的复位是由外部的复位电路来实现的,复位电路分为上电复位和按键复位两种方式。其电路图如图7 所示.

                                  图7  复位电路图

单片机的时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常见的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。本系统选用内部时钟方式,STC89C51 内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器, STC89C51 时钟电路如图 8所示。

图8 时钟电路图
电路中的电容的取值通常在 20pF~30pF 之间,对外接电容的值没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。由于单片机要进行串行通信,为了获得准确的波特率,选择晶振的频率为 12MHz。
4. 软件电路设计
4.1系统模块及结构框图
该系统采用了 STC89S51 单片机系统来控制系统的工作。数字时钟设计包括以下几部分:显示模块、计时模块、按键模块结构框图如图 9 所示。为了方便使用,我们把数据采集单独使用一个单片机系统,然后显示模块通过 5 个 8*8 点阵型 LED 显示出来。按键模块通过计数中断次数,赋值给 key,根据 key 的值来选择 1-5 号点阵并进行加减调整。
该设计可以实现以下功能:
1、能正常显示时间、日期。
2、对错误的时间进行修。
图9
4.2 系统主程序设计

主函数结构框图,在主程序的中首先进行程序初始化,进行死循环,循环内调用显示程序。当有按键按下则转到相应的功能程序执行。若没有则继续执行显示函数。如图10所示
4.3 显示函数
显示函数依次调用秒、分、时、日、月的显示子函数。流程图如图11所示

图10主函数结构框图

图11 显示函数

4.4 显示秒函数

P0 口先为低电平,熄灭点阵,之后通过片选选择秒钟的点阵,通过循环, 按照前面定义的全局变量数组,依次显示每个数字。每显示一个数字后都将 P0 口置低电平,以免鬼影的出现。流程图如图12所示
4.5 显示分函数

P0 口先为低电平,熄灭点阵,之后通过片选选择分钟的点阵,通过循环, 按照前面定义的全局变量数组,依次显示每个数字。每显示一个数字后都将 P0 口置低电平,以免鬼影的出现,流程图如图 13 所示

图12显示秒函数图

图13 显示分函数图

4.6 显示时函数
P0 口先为低电平,熄灭点阵,之后通过片选选择小时的点阵,通过循环, 按照前面定义的全局变量数组,依次显示每个数字。每显示一个数字后都将 P0 口置低电平,以免鬼影的出现,流程图如图14所示
4.7 显示日函数
P0 口先为低电平,熄灭点阵,之后通过片选选择天的点阵,通过循环,按照前面定义的全局变量数组,依次显示每个数字。每显示一个数字后都将 P0 口置低电平,以免鬼影的出现,流程图如图15所示

图14 显示时函数图

图15 显示日函数图
4.8 显示月函数
P0 口先为低电平,熄灭点阵,之后通过片选选择月份的点阵,通过循环, 按照前面定义的全局变量数组,依次显示每个数字。每显示一个数字后都将 P0 口置低电平,以免鬼影的出现,流程图如图16所示
4.9 计时函数
计时函数完成秒的计时及向分钟、小时、日和月的进位,流程图如图17所示

  图16  显示月函数图

图17 显示时函数图

4.10 按键函数
按键函数则是根据中断的次数来选择要调整的点阵,再根据 P3.6 和 P3.7 的变化来进行加减调整。S2:功能移位键,对应单片机上的 P3.5 引脚。按一次, 表示当前要校对秒;按第二次,表示当前校对的是分位;按第三次,则表示校对的是小时位;按第四次,则表示校对的是天数位;按第五次,则表示校对的是月份位。S3:数字“+”键,可在当前校对的数字上相应加 1,对应单片机上的 P3.6 引脚。S4:数字“-”键,可在当前校对的数字上相应减 1,对应单片机上的 P3.7 引脚。流程图如图18所示

图18 按键函数图

5.电路的焊接调试与组装
5.1硬件电路电路的焊接

准备施焊:焊接前的准备包括焊接部位的清洁处理,元器件安装及焊料、焊剂和工具的准备。左手焊锡丝,右手握电烙铁(烙铁头要保持清洁,并使焊接头随时保持施焊状态)。
加热焊件:应注意加热整个焊件整体,要均匀受热。
送入焊丝:加热焊件达到一定温度后,焊丝烙铁从对面接触焊件。
移开焊丝:当焊丝融化一定量后,立即移开焊丝。
移开焊铁:焊锡渡润焊盘或焊件的施焊部位后,移开烙铁。

5.2调试

电路仿真与测试:
对设计的电路都要进行严格的测试,确保电路与预期目标一致。电路测试大致分为软件仿真和硬件测试。其中软件仿真又分为功能仿真和时序仿真,功能仿真为理论上运行的状态,与芯片和硬件无关,仿真速度快,而时序仿真与硬件有关,进行时序仿真时需要加入目标器件的库其中包含了延时信息。与功能仿真相比,时序仿真的结构更接近实际硬件运行情况,仿真过程耗时也更长。
仿真通过了以后就可以进行硬件测试。为何要进行硬件测试叻,前面讲过仿真都为软件运行的结构,仅作为参考,并不是硬件测试结果,而且作者在设计的过程中还遇到更为严重的问题,及仿真能够运行,硬件完全观察不出结果。所以硬件测试是必须的环节,也在最为准确的。前面提到过嵌入式逻辑分析仪SignalTapⅡ的强大功能,它能探测到器件内部任何一个寄存器和任何端口的运行情况,确保设计电路达到预期目的同时为设计者节约了宝贵的时间。
模块复用:
在设计中我们经常会用到计时器之类的模块,当电路庞大时这些模块会用得很多,占用很多资源。在设计中我们可以把多个相同的模块独立出来,使多个需要的共同使用这个资源,达到资源优化配置,也提高了电路的稳定性。
模块的调用:
生成的模块的调用,在原理图文件中选择查找元件按钮在弹出窗口展开Project 文件夹该文件夹下都为是由模块生成的元件,确定后点击OK按钮即可将元件添加到原理图中。
5.3调试中遇到的问题及解决方案

无显示:
检查电源连接,确认电源灯和控制卡上灯是否亮,测量电源控制卡,单元板的电压,是否正常。如果电源正常,请检查控制控制卡与单元板的连接。采用替换配件的方法,排除错误。LED电子显示屏坏了。
显示混乱:
单元板显示相同的内容。–请用软件,重新设定屏幕的大小。很暗。–请用软件,设定OE电平。
隔行亮:
数据线接触不好,请重新连接。
某些汉字显示不正常。–属于正常,不在国标字库内的汉字和符号。
屏幕某些区域没显示。更换单元板。LED电子显示屏
无法更新屏幕数据 :
采用广播地址,发送。看看是不是屏幕编号错了。
检查串口号 是否正确,串口是否被占用。
检查连线,是否正确,是否断了。
WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
没把C文件添加到项目中!
还有可能是因为存在没有被调用的已经定义的函数。

图19 实物图

图19 实物图

6.电路的实验结果
通过软硬件的设计及结合调试,达到了预期的目的,以下是调试结果及图片。该控制器实现了256*128的双色点阵屏驱动,稳定显示,达到人眼观看不闪烁,能够通过串口发送数据的目的。
6.1Proteus仿真

Proteus仿真电路分别为仿真前图20和仿真后图21

图20 仿真前

图21仿真后
7.结论:
在源程序的阅读理解中有一定的困难,由于对单片机和Proteus的不熟悉,具体操作步骤操作起来有些困难和不理解,但是在多次尝试、调试后逐一解决了这些问题
通过这次LED数码管点阵制作实训;了解点阵电路工作原理。经过了软件的编制设计,硬件的仿真调。后在面包板上排线组装实现调试功能,最后在电路 板上进行焊接;最后进行功能调试实现相关功能参数。这次实训增强了我们对单片机的核心控制中断、处理、储存有了的进一步了解。更增强了我们的动手能力与独立思考实践能力。
感谢:
在论文即将完成之际,诚挚感谢张健老师在论文的撰写过程中对我的悉心教导,在您严谨的治学态度、艰苦朴素的生活作风和刻苦钻研精神的激励下,使我能够克服困难,一如继往地坚持学习,在此我表示衷心感谢。
在这期间,有许多的老师对我悉心的教导,也有很多同学、朋友给我莫大的帮助,在此,我还对梅开乡老师致以最真诚的谢意;还有向与我一起努力一起奋斗的同学表示感谢,因为有你们的陪伴才有我的坚持。

代码
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/* 片选线 设置按键函数 */
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
unsigned char code table[][8]={
0x3c,0x42,0x42,0x3c,0x3c,0x42,0x42,0x3c, //00
0x40,0x7e,0x44,0x00,0x3c,0x42,0x42,0x3c, //01
0x4c,0x52,0x62,0x44,0x3c,0x42,0x42,0x3c, //02
0x6c,0x92,0x92,0x54,0x3c,0x42,0x42,0x3c, //03
0x10,0x7e,0x14,0x18,0x3c,0x42,0x42,0x3c, //04
0x32,0x4a,0x4a,0x4e,0x3c,0x42,0x42,0x3c, //05
0x30,0x49,0x4a,0x3c,0x3c,0x42,0x42,0x3c, //06
0x7e,0x02,0x02,0x02,0x3c,0x42,0x42,0x3c, //07
0x6c,0x92,0x92,0x6c,0x3c,0x42,0x42,0x3c, //08
0xfc,0x12,0x12,0x0c,0x3c,0x42,0x42,0x3c, //09
0x3c,0x42,0x42,0x3c,0x40,0x7e,0x44,0x00, //10
0x40,0x7e,0x44,0x00,0x40,0x7e,0x44,0x00, //11
0x4c,0x52,0x62,0x44,0x40,0x7e,0x44,0x00, //12
0x6c,0x92,0x92,0x54,0x40,0x7e,0x44,0x00, //13
0x10,0x7e,0x14,0x18,0x40,0x7e,0x44,0x00, //14
0x32,0x4a,0x4a,0x4e,0x40,0x7e,0x44,0x00, //15
0x30,0x49,0x4a,0x3c,0x40,0x7e,0x44,0x00, //16
0x7e,0x02,0x02,0x02,0x40,0x7e,0x44,0x00, //17
0x6c,0x92,0x92,0x6c,0x40,0x7e,0x44,0x00, //18
0xfc,0x12,0x12,0x0c,0x40,0x7e,0x44,0x00, //19
0x3c,0x42,0x42,0x3c,0x4c,0x52,0x62,0x44, //20
0x40,0x7e,0x44,0x00,0x4c,0x52,0x62,0x44, //21
0x4c,0x52,0x62,0x44,0x4c,0x52,0x62,0x44, //22
0x6c,0x92,0x92,0x54,0x4c,0x52,0x62,0x44, //23
0x10,0x7e,0x14,0x18,0x4c,0x52,0x62,0x44, //24
0x32,0x4a,0x4a,0x4e,0x4c,0x52,0x62,0x44, //25
0x30,0x49,0x4a,0x3c,0x4c,0x52,0x62,0x44, //26
0x7e,0x02,0x02,0x02,0x4c,0x52,0x62,0x44, //27
0x6c,0x92,0x92,0x6c,0x4c,0x52,0x62,0x44, //28
0xfc,0x12,0x12,0x0c,0x4c,0x52,0x62,0x44, //29
0x3c,0x42,0x42,0x3c,0x6c,0x92,0x92,0x54, //30
0x40,0x7e,0x44,0x00,0x6c,0x92,0x92,0x54, //31
0x4c,0x52,0x62,0x44,0x6c,0x92,0x92,0x54, //32
0x6c,0x92,0x92,0x54,0x6c,0x92,0x92,0x54, //33
0x10,0x7e,0x14,0x18,0x6c,0x92,0x92,0x54, //34
0x32,0x4a,0x4a,0x4e,0x6c,0x92,0x92,0x54, //35
0x30,0x49,0x4a,0x3c,0x6c,0x92,0x92,0x54, //36
0x7e,0x02,0x02,0x02,0x6c,0x92,0x92,0x54, //37
0x6c,0x92,0x92,0x6c,0x6c,0x92,0x92,0x54, //38
0xfc,0x12,0x12,0x0c,0x6c,0x92,0x92,0x54, //39
0x3c,0x42,0x42,0x3c,0x10,0x7e,0x14,0x18, //40
0x40,0x7e,0x44,0x00,0x10,0x7e,0x14,0x18, //41
0x4c,0x52,0x62,0x44,0x10,0x7e,0x14,0x18, //42
0x6c,0x92,0x92,0x54,0x10,0x7e,0x14,0x18, //43
0x10,0x7e,0x14,0x18,0x10,0x7e,0x14,0x18, //44
0x32,0x4a,0x4a,0x4e,0x10,0x7e,0x14,0x18, //45
0x30,0x49,0x4a,0x3c,0x10,0x7e,0x14,0x18, //46
0x7e,0x02,0x02,0x02,0x10,0x7e,0x14,0x18, //47
0x6c,0x92,0x92,0x6c,0x10,0x7e,0x14,0x18, //48
0xfc,0x12,0x12,0x0c,0x10,0x7e,0x14,0x18, //49
0x3c,0x42,0x42,0x3c,0x32,0x4a,0x4a,0x4e, //50
0x40,0x7e,0x44,0x00,0x32,0x4a,0x4a,0x4e, //51
0x4c,0x52,0x62,0x44,0x32,0x4a,0x4a,0x4e, //52
0x6c,0x92,0x92,0x54,0x32,0x4a,0x4a,0x4e, //53
0x10,0x7e,0x14,0x18,0x32,0x4a,0x4a,0x4e, //54
0x32,0x4a,0x4a,0x4e,0x32,0x4a,0x4a,0x4e, //55
0x30,0x49,0x4a,0x3c,0x32,0x4a,0x4a,0x4e, //56
0x7e,0x02,0x02,0x02,0x32,0x4a,0x4a,0x4e, //57
0x6c,0x92,0x92,0x6c,0x32,0x4a,0x4a,0x4e, //58
0xfc,0x12,0x12,0x0c,0x32,0x4a,0x4a,0x4e,};//59
unsigned char code AM[8]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};

void delay(uint y);
uchar int_time;
char second;
char minute;
char hour;
char day;
char month;
/延时函数/
void delay()
{
uint x,y;
for(y=0;y<5;y++)
for(x=0;x<12;x++);
}
/显示函数/
void display()
{
uint j;
for(j=0;j<8;j++)
{
P2=AM[j];
P0=table[second][j];
P1=0xfe;
delay();
}
for(j=0;j<8;j++)
{

P2=AM[j];

P0=table[minute][j];

P1=0xfd;

delay();

}

for(j=0;j<8;j++)

{
P2=AM[j];

P0=table[hour][j];

P1=0xfb;

delay();

}

for(j=0;j<8;j++)

{

P2=AM[j];

P0=table[day][j];

P1=0xf7;

delay();

}

for(j=0;j<8;j++)

{

P2=AM[j];

P0=table[month][j];

P1=0xef;

delay();

}

}

/主函数/

void main()

{

TMOD=0x01; //T0工作在定时器方式1

EA=1; //中断允许

EX0=1; //外中断1

ET0=1; //T0开中断

TR0=1; //定时器0计数

TR1=1; //定时器1计数

IT0=1; //外中断0为跳沿触发

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

int_time=0; //设置初始值

second=02;

minute=05;

hour=01;

day=4;

month=9;

while(1)

{

display();

}

}

/定时器0中断/

void T0_isr() interrupt 1 using 0

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

int_time++;

if(int_time==20)

{int_time=0;second++;}

if(second==60)

{second=0;minute++;}

if(minute==60)

{minute=0;hour++;}

if(hour==24)

{hour=0;day++;}

if(day==31)

{day=1;month++;}

if(month==13)

{month=1;}

}

/外中断0/

void int0() interrupt 0 using 1

{

int i;

if(P3_5==0) //选择月日时分秒

{

delay();

if(P3_5==0)

i++;

if(i>5)

i=1;

}

if(P3_6==0) //加按键

{

delay();

if(P3_6==0)

switch(i)

{

case 1:second++;if(second==60)second=0;break;

case 2:minute++;if(minute==60)minute=0;break;

case 3:hour++;if(hour==24)hour=0;break;

case 4:day++;if(day==31)day=1;break;

case 5:month++;if(month==13)month=1;break;

}

}

if(P3_7==0) //减按键

{

delay();

if(P3_7==0)

switch(i)

{

case 1:second–;if(second<0)second=59;break;

case 2:minute–;if(minute<0)minute=59;break;

case 3:hour–;if(hour<0)hour=23;break;

case 4:day–;if(day<1)day=30;break;

case 5:month–;if(month<1)month=12;break;

}

}

}

基于STC89C52单片机的LED显示电子钟的制作相关推荐

  1. 基于STC89C52单片机的霓虹灯

    基于STC89C52单片机的霓虹灯 1.设计要求 使用PWM驱动8个LED灯         人眼不能观察到灯光全灭         灯光要有动画效果 2.设计概述         本实验所用芯片为S ...

  2. 基于STC89C52单片机的智能车控制系统设计

    目 录 1系统概述 1 1.1设计目的和意义 1 1.2设计思路 2 1.3系统需求分析 2 1.3.1市场需求 2 1.3.2实现功能 2 1.4开发环境 3 1.5运行环境 3 2总体设计 4 2 ...

  3. 基于51单片机数码管显示

    基于51单片机数码管显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们 ...

  4. 基于at89c51单片机的led数字倒计时器设计c语言,课程设计(论文)-基于AT89C51单片机的LED数字倒计时器设计.docx...

    单片机原理及其应用课程设计 课 题: 基于AT89C51单片机的LED数字倒计时器设计专 业: 电工程及其自动化班 级: 2013 级 4班学 号: 姓 名: 设计日期: 2015年6月6日--201 ...

  5. 基于51单片机点阵汉字显示程序设计

    文章目录 基于51单片机点阵汉字显示程序设计 一.实践目的 二.实践依托的实验设备与软件 1.设备 2.软件 二. 系统或装置的设计 1. 硬件原理图设计 2.印制板图绘制 三.程序框架及主要算法流程 ...

  6. stc89c51单片机音乐盒系统设计_基于STC89C52单片机的七彩迷你音乐盒

    基于STC89C52单片机的七彩迷你音乐盒.在单片机最小系统的基础上,对其他两个I/O口连接硬件电路.P1.0接一个七彩快闪LED灯.P1.5口接一个NPN型三极管的放大电路,再连接一个无源蜂鸣器(用 ...

  7. 基于at89c51单片机的led数字倒计时器设计c语言,课程设计(论文)-基于AT89C51单片机的LED数字倒计时器设计精选.docx...

    课程设计(论文)-基于AT89C51单片机的LED数字倒计时器设计精选 单片机原理及其应用课程设计课题:基于AT89C51单片机的LED数字倒计时器设计专业:电工程及其自动化班级: 2013 级4班学 ...

  8. 基于at89c51单片机的led数字倒计时器设计c语言,at89c51单片机led数字倒计时器课程设计论文-本科毕业设计.doc...

    课 题: AT89C51单片机LED数字倒计时器 专 业: 班 级: 学 号: 姓 名: 指导教师: 设计日期: 成 绩: 重庆大学城市科技学院电气学院 目录 一.设计目的作用1 二.设计要求1 三. ...

  9. 基于at89c51单片机的led数字倒计时器设计c语言,基于AT89C51单片机的LED数字倒计时器设计1.docx...

    基于AT89C51单片机的LED数字倒计时器设计1 单片机原理及其应用课程设计课 题: 基于AT89C51单片机的LED数字倒计时器设计专 业: 电工程及其自动化班 级: 2013 级 4班学 号: ...

  10. C语言智能窗帘编码,基于STC89C52单片机智能窗帘控制系统.doc

    基于STC89C52单片机智能窗帘控制系统 基于STC89C52单片机智能窗帘控制系统 [摘要] 本设计以STC89C52单片机为主控芯片,接收并处理BH1750FVI光照传感器的光强信号.DS18B ...

最新文章

  1. WPF MeshGeometry3D
  2. MinGW安装与使用简介
  3. 王者荣耀服务器维护1月9号,王者荣耀1月9日维护到几点 王者荣耀1月9日几点能上游戏?...
  4. Android 环境搭建的错误解决方案
  5. 如何通过css选取元素以及封装了获取,删除css的相关操作
  6. WinAPI: Ellipse - 绘制椭圆
  7. csrf保护php,防止PHP中的CSRF
  8. 雷神开机logo更改_九代酷睿i9加持的性能怪兽 雷神911黑武士Ⅱ评测
  9. 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
  10. golang之tcp自动重连
  11. 理解 .NET 2015
  12. class文件-常量池类型汇总
  13. 【链表】牛客网:链表删除
  14. 继续SecureString
  15. 度数计算机在线使用,度数换算(度数换算计算器)
  16. 如何使用python进行社交网络分析
  17. 财经大数据可视化Vdc平台_为何要使用大数据可视化平台
  18. 独立院校转设,高考新生何去何从|转设对新生有哪些影响
  19. 数字信号处理综合MATLAB设计 双音多频拨号系统
  20. 【情人节特别篇】想知道玫瑰在哪些城市最畅销嘛?

热门文章

  1. 分享2020年第三方支付产品服务流程
  2. webpack性能优化
  3. 增强 扫描王 源码_camscanner(扫描全能王)功能解析与复现 - 页面增强
  4. 【网络基础】以太网电缆:UTP和STP,直连线和交叉线,网线类别
  5. 点云配准ICP算法推导,SVD分解
  6. MATLAB图形绘制--极坐标和对数图像
  7. Visio画正态分布曲线
  8. java坦克大战互相碰撞_加强版坦克大战(java版)
  9. 主流前端框架实现原理
  10. Python-XML文件读取/添加/修改方法记录(一)