数码管的动态显示

发布时间:2012-06-15 15:53:56   来源:文档文库   
字号:

电气工程系毕业论文/设计

 

 

J10秋应用电子技术班

XXX

2012-05-29

\\

引言 3

数码管的结构及工作原理 4

1.1 数码管的结构

1.2 数码管的工作原理

利用单片机控制数码管动态显示功能实现数字功能的设计 6

2.1 数字钟的硬件电路图的设计

2.1.1 系统时钟电路的设计

2.1.2 系统复位电路的设计

2.1.3 按键与按钮电路的设计

2.1.4 数字钟的显示电路设计

系统主要程序设计 9

3.1 主程序

3.2 显示子程序

3.3 定时器T0中断服务程序

3.4 定时器T1中断服务程序

3.5 调时功能程序

软件电路的调试 13

4.1 软件电路调试

4.2 系统程序调试

致谢 17

附录 18

参考文献 26

引言

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

时间对于我们每个人来说都是很宝贵的,市场上出现的各式个样的钟表都很受消费者的欢迎和喜爱,钟表的数字化给人们生产生活带来了极大的方便,满足大家的需求,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等,所有这些,都是以钟表数字化为基础的。

本设计克服了机械式钟表的诸多缺点,而且在常规电子式钟表的功能上加上了省电模式;其次,利用单片机的精确计数功能,可对时、分、秒进行精确的计数。

LED数码管的结构及原理

1.1 LED数码管的结构      

LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成8字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3+1型。位数有半位,123456810位等等....LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图片

1 这是一个7段两位带小数点 10引脚的LED数码管                     

 引脚定义

每一笔划都是对应一个字母表示 DP是小数点.

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。

1.2 数码管的工作原理

A、静态显示驱动:
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二-十进位**进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5×840I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实际应用时必须增加*驱动器进行驱动,增加了硬体电路的复杂性。

B、动态显示驱动:
   数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。

   透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。

利用单片机控制数码管动态显示功能实现数字功能的设计

2 数字硬件系统设计

2.1数字钟的硬件电路的设计

数码管时钟电路接线图如图2所示。其采用AT89C2051单片机最小化应用设计,LED显示采用动态扫描方式实现,P1口输出段码数据,P3.0——P3.5口作扫描输出,P3.7接按钮开关。为了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。

word/media/image4_1.png

2硬件电路

2.1.1 系统时钟电路的设计

YC1C2组成振荡电路,和内部的振荡电路共同构成单片机的工作基准——时钟电路。它含有单片机数字电路系统的工作基准,为数字电路提供稳定的时钟信号。Y为晶体,它的标称频率越高,数字电路系统的工作频率也就越高。系统时钟电路如图3所示。

3系统时钟电路

2.1.2 系统复位电路的设计

电路中C3R15组成复位电路,该电路采用的是上电复位,即整个系统从新开始工作。复位电路有很多种,分别可由不同的元件组成,可靠性也各有不同,本设计采用简单的上电复位。如图4所示。

4复位电路

2.1.3 按键与按钮电路设计

本设计中只使用一个按键开关SET,来对时、分、秒进行调整。SET还作为复位按钮,也可以进入省电(不显示LED数码管)和正常显示三种状态。图5所示为按钮电路。

5 按钮电路

2.1.4数字钟的显示电路设计

驱动数码管采用动态显示。动态驱动是将所有的数码管的8个显示笔画“a,b,c,d,e,f,g,dp”的同名端连在一起,另外每个数码管中的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控制显示。

R1-R8P1口的上拉电阻, P端口必须外接上拉电阻才能正常输出“0和“1电平,保证P1端口所接的LED数码管能够正常显示数字,和软件相配合来驱动数码管显示时、分、秒。该显示电路如图6所示。

6显示电路

系统主要程序设计

3.1 主程序

本设计中计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。其主程序执行流程见图 9 所示。

9 主程序流程图

3.2 显示子程序

数码管显示的数据存放在内存单元70H—75H中,其中70H—71H存放秒数据,72H—73H存放分数据,74H—75H存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出70H—75H某一地址中的数据,然后查得对应的显示用段码从P1口输出,P3口将对应的数码管选中供电,就能显示该地址单元的数据值。为了显示小数点及“-”“A”等特殊字符,在显示计时时采用不同的显示子程序。

3.3 定时器T0中断服务程序

定时器T0用于时间计时。定时溢出中断周期设为50ms,中断累计20次(即1s)时对秒计数单元进行加1操作。时钟计数单元地址分别在70H—71H(秒)、76H—77H(分)、78H—79H(时),7AH单元内存放“熄灭符”数据(#0AH)。在计数单元中采用十进制BCD码计数,满60(秒表功能时有100)进位,T0中断服务程序执行流程见图10

10 T0中断服务程序执行流程图

3.4定时器T1中断服务程序

T1中断服务程序用于指示调整单元数字的亮闪,在时间调整状态下,每过0.3秒,将对应单元的显示数据换成“熄灭符”数据(#0AH)。这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。

3.5调时功能程序

调时功能程序的设计方法是:按下按键,若按下时间小于1s,进入省电状态(数码管不亮,时钟不停),否则进入调分状态,等待操作,此时计时器停止走动。当再次按下按钮时,若按下时间小于0.5秒,则时间加1min;若按下时间大于0.5s,则进入小时调整状态。在小时调整状态下,当按键按下的时间大于0.5s时退出调整状态,时钟继续走动。

LED数码管时钟电路的完整源程序见附录3

软件电路的调试

4.1软件电路调试

本设计是采用AT89C2051单片机控制LED数码管显示电路的,其操作步骤如下:

1 添加元件到元件列表中

本设计要用到的器件有:元件中的单片机芯片AT89C2051、电阻Resistor 、数码管7SEG-MPX-CA-BLUE、按键开关BUTTON、电源POWER、地线GROUND、示波器OSCILLOSCOPE

在模型选择工具栏中选 元件 (默认),单击 P 按钮,出现挑选元件窗口,如图 11 所示。

11 挑选元件窗口图

将元器件添加到编辑窗口可以在左上角的关键字搜索栏Keywords中输入,例如输入AT89C2051,即可在Results栏中筛选出该名称或包含该名称的器件,双击Results栏中的名称 AT89C2051 即可将其添加到对象选择器。同样的方法放入7SEG-MPX-CA-BLUE、按键开关BUTTON等。

2 将元件放入原理图编辑窗口:

在元件列表中左键选取AT89C2051,在原理图编辑窗口中单击左键,这样AT89C2051就被放到原理图编辑窗口中了。同样放置其它各元件。如果元件的方向不对,可以在放置以前用方向工具转动或翻转后再放入;如果已放入图纸,可以选定后,再用方向工具或块旋转工具转动。

左键选择模型选择工具栏中的终端接口图标: 从模型中挑选出地线-GROUND和电源-POWER,并在原理图编辑窗口中左击放置到原理图编辑窗口中。

添加示波器:左键选择模型选择工具栏中的虚拟仪器图标,左键选择OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置到原理图编辑窗口中了。

3连线

按样图绘制电路连线,如图 12 所示。

12 接线图

4仿真

对于单片机需要下载程序后才能运行,所以要将事先准备好的仿真程序调试文件下载到单片机芯片中。本设计用的是:dianzishizhong.hex。先右击AT89C2051再左击,出现Edit Component 对话框,如图 13 所示。

13

Program File中单击出现文件浏览对话框,找到dianzishizhong.hex文件,单击确定”即将仿真程序装入单片机,单击OK退出。然后单击开始仿真,此时可以看到程序的运行结果如图 14 所示。单击分别可以暂停/终止仿真的运行。

14 显示结果图

注:仿真时,元件引脚上的红色代表高电平,蓝色代表低电平

仿真波形如图 15 所示。

15 波形图

4.2 系统程序调试

软件调试在Wave E2000编译器下进行,该编译器对源程序进行仿真编译,把.ASM文件加入模块文件,出现图16所示的对话框。将所加入的模块保存,然后选择“工具菜单编译”。 编译通过后生成.Hex文件,图 17 所示的为程序软件仿真通过的结果图。

16

17 程序仿真结果图

致谢

在离校之际,借这毕业论文的最后一页,表达对老师们的谢意。

本次毕业设计是在孟庆峰老师的精心指导下完成的。从课题选择、方案论证到具体设计和调试,无不凝聚着老师的心血。平时,老师对我们的设计要求严格、也给了我们相当独立的空间。

设计的过程是不简单的,不论是在做作品还是在写论文方面.正因为它的不简单,使我明白了如果真的要做好一件事也是要付出辛勤和汗水的,世界上没有不劳而获的事,只有自己努力过了才能体会其中的乐趣。

当然设计的成功并不是我一个人的功劳,在这里首先要感谢的是我的指导老老师。老师这段时间课挺多,但在我们做毕业设计时还不时的关心我们的进程,给我们一些建议,才使得设计顺利成功。

同时,我要感谢课题组的各位同学。在毕业设计的短短2个月的时间里,他们给我提出了很多宝贵的意见,给了我不少帮助还有工作上的支持,在此也真诚的谢谢他们。

本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业论文工作顺利完成,在此向蚌埠机电技师学院电子工程系的全体老师表示由衷的谢意,感谢他们三年来的辛勤栽培。

即将结束三年的学院生活,相信等待我的是一片充满机遇、风险与快乐的土地。

附录

1 材料清单

2(作品成品照片

附录3(软件程序清单)

;*****************************************

;; AT89C2051秒表/时钟程序 ;;

;*****************************************

; 定时器T0T1溢出周期为MST0为秒计数用,T1为调整时闪烁用,

; P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。

;*****************************************

;; 中断入口程序 ;;

;*****************************************

ORG 0000H ;程序执行开始地址

LJMP START ;跳到标号START执行

ORG 0003H ;外中断0中断程序入口

RETI ;外中断0中断返回

ORG 000BH ;定时器T0中断程序入口

LJMP INTT0 ;跳至INTT0执行

ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回

ORG 001BH ;定时器T1中断程序入口

LJMP INTT1 ;跳至INTT1执行

ORG 0023H ;串行中断程序入口地址

RETI ;串行中断程序返回

;*****************************************

;; 主程序 ;;

;*****************************************

START: MOV R0, #70H ;70H-7AH11个内存单元

MOV R7, #0BH ;

CLEARDISP: MOV @R0, #00H ;

INC R0 ;

DJNZ R7, CLEARDISP ;

MOV 20H,#00H ;20H(标志用)

MOV 7AH,#0AH ;放入“熄灭符数据”

MOV TMOD,#11H ;T0T116位定时器

MOV TL0,#0B0H ;50ms定时初值(T0计时用)

MOV TH0,#3CH ;50ms定时初值

MOV TL1,#0B0H ;50ms定时初值(T1闪烁定时用)

MOV TH1,#3CH ;50ms定时初值

SETB EA ;总中断开放

SETB ET0 ;允许T0中断

SETB TR0 ;开启T0定时器

MOV R4,#14H ;1s定时用初值(50ms*20

START1: LCALL DISPLAY ;调用显示子程序

JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序

SJMP START1 ;P3.7口为1时跳回START1

SETMM1: LJMP SETMM ;转到时间调整程序SETMM

;*****************************************

;; 1秒计时程序 ;;

;*****************************************

;T0中断服务程序

INTT0: PUSH ACC ;累加器入栈保护

PUSH PSW ;状态字入栈保护

CLR ET0 ;T0中断允许

CLR TR0 ;关闭定时器T0

MOV A,#0B7H ;中断响应时间同步修行

ADD A,TL0 ;8位初值修正

MOV TL0,A ;重装初值(低8位修正值)

MOV A,#3CH ;8位初值修正

ADDC A, TH0 ;

MOV TH0,A ;重装初值(高8位修正值)

SETB TR0 ;开启定时器T0

DJNZ R4, OUTT0 ;20次中断未到中断退出

ADDSS: MOV R4,#14H ;20次中断到(1s)重赋初值

MOV R0,#71H ;指向秒计时单元(71H-72H

ACALL ADD1 ;调用加1程序(加1s操作)

MOV A,R3 ;秒数据放入AR32位十进制数组合)

CLR C ;清进位标志

CJNE A, #60H, ADDMM ;

ADDMM: JC OUTT0 ;小于60s时中断退出

ACALL CLR0 ;大于或等于60s时对秒计时时单元清零

MOV R0,#77H ;指向分计时单元(76H-77H

ACALL ADD1 ;分计时单元加1min

MOV A,R3 ;分数据放入A

CLR C ;清进位标志

CJNE A, #60H,ADDHH ;

ADDHH: JC OUTT0 ;小于60s时对秒计时单元清0

ACALL CLR0 ;大于或等于60min时分计时单元清0

MOV R0,#79H ;指向小时计时单元(78H-79H

ACALL ADD1 ;小时计时单元加1h

MOV A,R3 ;时数据放入A

CLR C ;清进位标志

CJNE A,#24H,HOUR ;

HOUR: JC OUTT0 ;小于24h小时计时单元清0

ACALL CLR0 ;大于或等于24h小时计时单元清0

OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移入对应显示单元

MOV 73H,77H ;

MOV 74H,78H ;

MOV 75H,79H ;

POP PSW ;恢复状态字(出栈)

POP ACC ;恢复累加器

SETB ET0 ;开放T0中断

RETI ;中断返回

;*****************************************

;; 闪动调时程序 ;;

;*****************************************

;T1中断服务程序,用作时间调整时调整单元闪烁指示

INTT1: PUSH ACC ;中断现场保护

PUSH PSW ;

MOV TL1, #0B0H ;装定时器T1定时初值

MOV TH1, #3CH ;

DJNZ R2,INTT1OUT ;0.3s未到退出中断(50ms中断6次)

MOV R2,#06H ;重装0.3s定时用初值

CPL 02H ;0.3s定时到对闪烁标志取反

JB 02H,FLASH1 ;02H位为1时显示单元“熄灭”

MOV 72H,76H ;02H位为0时正常显示

MOV 73H,77H ;

MOV 74H,78H ;

MOV 75H,79H ;

INTT1OUT: POP PSW ;恢复现场

POP ACC ;

RETI ;中断退出

FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制

MOV 72H,7AH ;01H位为0时,“熄灭符”数据放入分

MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据

MOV 74H,78H ;

MOV 75H,79H ;

AJMP INTT1OUT ;转中断退出

FLASH2: MOV 72H,76H ;01H位为1时,“熄灭符”数据放入小时

MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示

MOV 74H,7AH ;

MOV 75H,7AH ;

AJMP INTT1OUT ;转中断退出

;*****************************************

;; 加子程序 ;;

;*****************************************

ADD1: MOV A,@R0 ;取当前计时单元数据到A

DEC R0 ;指向前一地址

SWAP A ;A中数据高4位与低4位交换

ORL A,@R0 ;前一地址中数据放入A中低4

ADD A,#01H ;A1操作

DA A ;十进制调整

MOV R3,A ;移入R3寄存器

ANL A,#0FH ;4位变0

MOV @R0,A ;放回前一地址单元

MOV A,R3 ;取回R3中暂存数据

INC R0 ;指向当前地址单元

SWAP A ;A中数据高4位与低4位交换

ANL A,#0FH ;4位变0

MOV @R0,A ;数据放入当前地址单元中

RET ;子程序返回

;*****************************************

;; 清零程序 ;;

;*****************************************

;对计时单元复零用

CLR0: CLR A ;清累加器

MOV @R0,A ;清当前地址单元

DEC R0 ;指向前一地址

MOV @R0,A ;前一地址单元清0

RET ;子程序返回

;*****************************************

;; 时钟调整程序 ;;

;*****************************************

;当调时按键按下时进入此程序

SETMM: CLR ET0 ;关定时器T0中断

CLR TR0 ;关闭定时器T0

LCALL DL1S ;调用1s延时程序

JB P3.7,CLOSEDIS ;键按下时间小于1s,关闭显示(省电)

MOV R2,#06H ;进入调时状态,赋闪烁定时初值

SETB ET1 ;允许T1中断

SETB TR1 ;开启定时器T1

SET2: JNB P3.7,SET1 ;P3.0口为0(键未释放),等待

SETB 00H ;键释放,分调整闪烁标志置1

SET4: JB P3.7,SET3 ;等待键按下

LCALL DL05S ;有键按下,延时0.5s

JNB P3.7,SETHH ;按下时间大于0.5s转调小时状态

MOV R0,#77H ;按下时间小于0.5s1min操作

LCALL ADD1 ;调用加1子程序

MOV A,R3 ;取调整单元数据

CLR C ;清进位标志

CJNE A,#60H,HHH ;调整单元数据与60比较

HHH: JC SET4 ;调整单元数据小于60SET4循环

LCALL CLR0 ;调整单元数据大于或等于60时清0

CLR C ;清进位标志

AJMP SET4 ;跳转到SET4循环

CLOSEDIS: SETB ET0 ;省电(LED不显示)状态,开T0中断

SETB TR0 ;开启T0定时器(开时钟)

CLOSE: JB P3.7,CLOSE ;无按键按下,等待

LCALL DISPLAY ;有键按下,调显示子程序延时消抖

JB P3.7,CLOSE ;是干扰返回CLOSE等待

WAITH: JNB P3.7,WAITH ;等待键释放

LJMP START1 ;返回主程序(LED数据显示亮)

SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)

SETHH1: JNB P3.7,SET5 ;等待键释放

SETB 01H ;小时调整标志置1

SET6: JB P3.7,SET7 ;等待按键按下

LCALL DL05S ;有键按下延时0.5s

JNB P3.7,SETOUT ;按下时间大于0.5s退出时间调整

MOV R0,#79H ;按下时间小于0.5s1h操作

LCALL ADD1 ;调加1子程序

MOV A,R3 ;

CLR C ;

CJNE A,#24H,HOUU ;计时单元数据与24比较

HOUU: JC SET6 ;小于24SET6循环

LCALL CLR0 ;大于或等于24时清0操作

AJMP SET6 ;跳转到SET6循环

SETOUT: JNB P3.7,SETOUT1 ;调时退出的程序,等待键释放

LCALL DISPLAY ;延时消抖

JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待

CLR 01H ;清调小时标志

CLR 00H ;清调分标志

CLR 02H ;清闪烁标志

CLR TR1 ;关闭定时器T1

CLR ET1 ;关定时器T1中断

SETB TR0 ;开启定时器T0

SETB ET0 ;开定时器T0中断(计时开始)

LJMP START1 ;跳回主程序

SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分)

AJMP SET2 ;防止键按下时无时钟显示

SET3: LCALL DISPLAY ;等待调分按键时时钟显示用

AJMP SET4 ;

SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时)

AJMP SETHH1 ;防止键按下时无时钟显示

SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用

AJMP SET6 ;

SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待

AJMP SETOUT ;防止键按下时无时钟显示

;FUNSUB,分减程序?

;*****************************************

;; 显示程序 ;;

; 显示数据在74H-75H单元内,用六位LED共阳数码管显示,P1口输出段码数据,

;P3口作扫描控制,每个LED数码管亮MS时间再逐位循环。

DISPLAY: MOV R1,#70H ;指向显示数据首地址

MOV R5,#0FEH ;扫描控制字初值

PLAY: MOV A,R5 ;扫描字放入A

MOV P3,A ;P3口输出

MOV A,@R1 ;取显示数据到A

MOV DPTR,#TAB ;取段码到表地址

MOVC A,@A+DPTR ;查显示数据对应段码

MOV P1,A ;段码放入P1

LCALL DL1MS ;显示1ms

INC R1 ;指向下一地址

MOV A,R5 ;扫描控制字放入A

JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束

RL A ;A中数据循环左移

MOV R5,A ;放回R5

AJMP PLAY ;跳到PLAY循环

ENDOUT: SETB P3.5 ;一次显示结束,P3口复位

MOV P1,#0FFH ;P1口复位

RET ;子程序返回

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

;共阳段码表示 “”“”“”“”“”“”“”“”“”“”“不亮”

;*****************************************

;; 延时程序 ;;

;1MS延时程序,LED显示程序用

DL1MS: MOV R6,#14H

DL1: MOV R7,#19H

DL2: DJNZ R7,DL2

DJNZ R6,DL1

RET

;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象

DS20MS: ACALL DISPLAY

本文来源:https://www.2haoxitong.net/k/doc/a15f676858fafab069dc0242.html

《数码管的动态显示.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式