2022年单片机电子时钟课程设计 .pdf
目录一、 设计目的二、 总体设计系统硬件总框图三、 硬件单元设计电路总设计图NE55P模块LED灯显示数码管显示DS1302模块时钟控制蜂鸣器键盘扫描AT89C52 四、 软件单元设计程序清单五、 调试软件调试、硬件调试六、 设计总结七、 参考文献名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 一、设计目的1 总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书 (6) 写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、 参数计算、 元器件选择、 原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。2 具体要求本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功, 学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。软件编程是本次工程实践的重要环节。在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点: 1) 、熟悉 Keil C51编程平台及相关编程软件 2) 、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调 3) 、编写、调试LED流水灯(循环显示)程序并进行软硬件联调 4) 、编写、调试键盘扫描子程序并进行软硬件联调 5) 、编写、调试数码管动态扫描程序并进行软硬件联调 6) 、电子钟设计(包括键盘、时钟、显示等) 7) 、温度测量控制系统设计(包括键盘、显示、控制、报警等)其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础。电子钟设计一个简单的单片机编程设计,要求电子钟软件程序必须具备键盘扫描、数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 码管显示、时钟以及日历、秒表和闹钟功能。温度测量与控制系统设计是一种非常简单而又应用普遍的温度控制系统、他包括温度采集、信号转换、单片机处理以及控制、报警等部分。要求学生采用声光报警方式。二 、总体设计2.1 系统硬件总框图系统设计总框图此次课程设计, AT89C52是一种带 2K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。此次课程设计的电子钟就是由AT89C52单片机、时钟电路、 报警电路, LED流水灯电路,动态数码管显示电路、音乐电路等组成。运用汇编语言来控制单片机AT89C52 来实现LED流水灯、报警器、动态数码显示、电子音乐等功能,并在此基础上综合运用上述功能,实现电子钟的设计 ( 包括键盘、时钟、显示等) ,温度测量控制系统( 包括键盘、显示、控制、报警等 ) 。且本设计中的AT89C52单片机是整个工作过程的核心,是整个设计灵魂,它控制了脉冲时序的产生,显示信号的发送控制显示LED的选择。同时也考虑到AT89C52 单片机来制作电子时钟其最大的好处就是可最大的调整时钟使其准确度更高。三、硬件单元设计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 3.1 电路总设计图电路总设计图3.2 NE555P 模块555 定时器可构成多谐振荡器,是一种性能较好的时钟源。调节电位器RW1 ,使在 555输出端 3 获得频率为5060Hz的矩形波信号, 当基本 RS触发器 Q为 1 时,门 5 开启,此时脉冲信号通过门5 作为计数脉冲加于计数器的计数输入端CP 。3.3 LED 灯显示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - Led 灯原理图本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,单片机可工作。 要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直接高电平驱动LED灯。如图 D1-D8 和 R1、R2 以及 R6-R11 连接到单片机IO 口,当 P1口某脚变低时相应LED 发光。实现LED灯的闪烁,只需利用编程方法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。3.4 数码管显示为了能使电路简单我们采用数码管动态显示方式。数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。数码管显示图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 3.5 DS1302 模块DS1302 的 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。当 RST 为高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。如果在传送过程中 RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。其管脚图如下:DS1302管脚图各引脚功能:Vcc1 为后备电源, VCC2为主电源, X1和 X2 是振荡源,SCLK为输入端RST 输入有两种功能:首先,RST 接通控制逻辑, 允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。3.6 时钟控制石英晶体振荡器是利用石英晶体的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片,在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器。其产品一般用金属外壳封装,也有用玻璃壳、 陶瓷或塑料封装的。HMOS 型 MCS-51外部时钟源的接发:在 XTLA1和 XTLA2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自激振荡器。其发出的时钟脉冲直接送入片内定时控制部件,其中C电容对频率有微调作用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 时钟电路3.7 蜂鸣器蜂鸣器原理图蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。因此需要一定的电流才能驱动它,单片机IO 口输出的电流较小,其TTL 电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。程序中通过改变单片机对应IO 口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 另外,改变其占空比,也可以控制蜂鸣器的声音大小。可以有两种驱动方式,即用 PNP或 NPN三极管电流放大电路驱动。本电路通过一个PNP三极管 9012 来放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制IO 口输出的电平来使蜂鸣器发出声音和关闭,从而实现各种可能音响的产生。启动报警子程序如下:停止报警子程序如下:START: SETB P1.0 STOP: CLR P1.0 RET RET 3.8 键盘名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 键盘扫描流程图在 MCS-51系列单片机的指令系统中设有散转指令JMP A+DPTR,可看成是专门配合键入程序是整个应用程序的核心部分。键盘的操作, 无论是按键或键盘都是利用机械触点的合、断作用。 一个电压信号通过机械触点的闭合、 断开过程。由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。抖动时间的长短,与开关的机械特性有关,一般为510ms 。一组按键或键盘都要通过I/O 口线查询按键的开关状态。且独立式按键电路配置灵活,软件结构简单, 但每个按键必须占用一根I/O 口线,在按键数量较多时,I/O 口线浪费较大。3.9 AT89C52 AT89C52是此次课程设计的核心部分。其管脚图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - AT89C52管脚图AT89C52是低功耗、高性能的CMOS8 位单片机。片内带有8KB的 Flash 存储器,且允许在系统内改写或用编程器编程。另外,AT89C52的指令系统和引脚与80C52完全兼容。AT89C52各管脚功能如下:VCC :供电电压;GND :接地; P0 口:P0 口为一个 8 位漏级开路双向I/O 口,每脚可吸收8TTL门电流。 ;P1 口:P1口是一个内部提供上拉电阻的8 位双向 I/O 口,P1口缓冲器能接收输出 4TTL 门电流; P2 口:P2口为一个内部上拉电阻的8 位双向 I/O 口, P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流;P3口:P3口管脚是 8 个带内部上拉电阻的双向I/O 口,可接收输出4 个 TTL 门电流。 当 P3 口写入“ 1”后, 它们被内部上拉为高电平,并用作输入;P3 口管脚功能:P3.0 是 RXD (串行输入口);P3.1 是 TXD(串行输出口);P3.2 是/INT0 (外部中断0); P3.3 是/INT1 (外部中断1); P3.4 是 T0(记时器0 外部输入); P3.5 是 T1(记时器1 外部输入);P3.6 是/WR (外部数据存储器写选通); P3.7 是/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。 RST :复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG :当访问外部存储器时,地址锁存允许输出电平用于锁存地址的地位字节。/PSEN : 外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当 /EA保持低电平时, 则在此期间外部程序存储器(0000H-FFFFH ),不管是否有内部程序存储器。XTAL1 : 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2: 来自反向振荡器的输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 四、软件单元设计程序清单T_R Bit P3.4 ;实时时钟复位线引脚 T_C Bit P3.2 ;实时时钟时钟线引脚 T_I Bit P3.3 ;实时时钟数据线引脚 SEC EQU 30H MIN EQU 31H H EQU 32H D EQU 33H MON EQU 34H W EQU 35H Y EQU 36H ORG 0000H LJMP start ORG 001bH AJMP INTT1 ORG 0030H START: LCALL KEY AJMP START ;*蜂鸣器 * KEY0: SETB P3.4 LCALL DELAY LCALL DELAY CLR P3.4 LCALL DELAY LCALL DELAY SETB P3.4 LCALL DELAY LCALL DELAY CLR P3.4 LCALL DELAY LCALL DELAY SETB P3.4 LCALL DELAY LCALL DELAY CLR P3.4 RET ;*流水灯 * KEY1: MOV R2,#2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - REB: MOV R1,#8 MOV A,#0AFH LOOPB: MOV P2,A RL A LCALL DELAY DJNZ R1,LOOPB DJNZ R2,REB RET ;*日期* KEY2: CLR T_R CLR T_C MOV SP,#60H ;修改堆栈 MOV SEC,#00H ;初始时间设为10:00:00 MOV MIN,#00H MOV H,#10H MOV D,#18h ;初始日期设为08 年 1 月 18 日第一周 MOV MON,#01H MOV W,#01H MOV Y,#08H LCALL SETDS1302 LCALL GET1302 LCALL DISPLAY MOV R3,#25 MOV TMOD,#01H MOV TH0,#70H ;置定时器初值 ( 定时 40ms) MOV TL0,#00H SETB TR0 ;启动定时器0 LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到 40 ms 继续计数LP2: MOV TH0,#0B8H ;重新置定时器初值 MOV TL0,#00H LCALL DISPLAY ;显示 DJNZ R3,LP1 ;未到 1 S 继续循环 LCALL GET1302 ;每过 1s 从 DS1302读取一次时间 MOV r3,#25 SJMP LP1 ;数码显示子程序DISPLAY: MOV DPTR,#DIG_CODE ;显示分钟 MOV P1,#11110111b MOV A,MIN ANL A,#0FH MOVC A,A+DPTR MOV P0,A 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - LCALL DIS_DELAY MOV P1,#11111011b MOV A, MIN SWAP A ANL A,#07H MOVC A,A+DPTR MOV P0,A LCALL DIS_DELAY ;显示小时 MOV P1,#11111101b MOV A,H ANL A,#0FH MOVC A,A+DPTR MOV P0,A LCALL DIS_DELAY MOV P1,#11111110b MOV A,H SWAP A ANL A,#03H MOVC A,A+DPTR MOV P0,A LCALL DIS_DELAY RET ;显示延时5ms子程序DIS_DELAY: PUSH PSW MOV R7,#10 D1: MOV R6,#248 D2: DJNZ R6,$ DJNZ R7,D1 POP PSW RET ;设置 DS1302初始时间 , 并启动计时SETDS1302: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,#8EH ;写控制命令字 LCALL INPUTBYTE MOV B,#00H ;写保护关闭 LCALL INPUTBYTE SETB T_C NOP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - CLR T_R MOV R0,#SECOND ;内存中的时间首地址 MOV R1,#80H ;DS1302中的时间首地址 MOV R7,#7 ;字节数SETLOOP: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,R1 ;写命令字 LCALL INPUTBYTE MOV A,R0 ;设置时间 MOV B,A LCALL INPUTBYTE INC R0 INC R1 INC R1 SETB T_C NOP CLR T_R NOP DJNZ R7,SETLOOP CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,#8EH LCALL INPUTBYTE MOV B,#80H ;开写保护 LCALL INPUTBYTE SETB T_C NOP CLR T_R NOP RET ; 从 DS1302读取时间GET1302: MOV R0,#SECOND MOV R1,#81H ;DS1302中读时间的首地址 MOV R7,#7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - GETLOOP: CLR T_R NOP CLR T_C NOP SETB T_R NOP MOV B,R1 LCALL INPUTBYTE ;写命令字 LCALL OUTPUTBYTE ;读时间 MOV R0,A ;将从 DS1302中读取的时间从内存中保存 INC R0 ;修改地址指针 INC R1 INC R1 SETB T_C NOP CLR T_R NOP DJNZ R7,GETLOOP RET ; 向 DS1302写一个字节INPUTBYTE: MOV R4,#8 INPUTLOOP: MOV A,B RRC A MOV B,A MOV T_I,C SETB T_C NOP NOP NOP CLR T_C DJNZ R4,INPUTLOOP RET ; 从 DS1302读一个字节OUTPUTBYTE: CLR a CLR c MOV R4,#8 OUTPUTLOOP: NOP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - NOP MOV C,T_I RRC A SETB T_C NOP NOP NOP CLR T_C DJNZ R4,OUTPUTLOOP RET KEY: MOV P1,#0F0H MOV A,P1 MOV B,A ACALL DELAY MOV A,P1 CJNE A,B,DO CJNE A,#0E0H,K1 AJMP KEY0 K1: CJNE A,#0D0H,K2 AJMP KEY1 K2: CJNE A,#0B0H,K3 AJMP KEY2 K3: CJNE A,#070H,DO AJMP KEY3 DO: RET DELAY: MOV R6,0ffh DL1: MOV R5,#250 DJNZ R5,$ DJNZ R6,DL1 RET DEL1: MOV R7,#02 DL2:MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL2 RET DELAYY1:MOV R7,#02 DELAY10:MOV R4,#187 DELAY11:MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY11 DJNZ R7,DELAY10 DJNZ R5,DELAYY1 RET 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - key3: MOV SP,#60H MOV TMOD,#10H SETB ET1 SETB EA SETB TR1 START0:clr p3.4 MOV 30H,#00H NEXTT:MOV A,30H MOV DPTR,#TABLE MOVC A,A+DPTR MOV R2,A JZ ENDD ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR1 AJMP DD1 SING:DEC A MOV 22H,A RL A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV TH1,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL1,A MOV 20H,A SETB TR1 DD1: LCALL DELAYY INC 30H AJMP NEXTT ENDD:CLR TR1 AJMP START0 INTT1:PUSH PSW PUSH ACC MOV TL1,20H MOV TH1,21H CPL p3.4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - POP ACC POP PSW RETI DELAYY:MOV R7,#02 DELAY0:MOV R4,#187 DELAY1:MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 DJNZ R5,DELAYY RET TABLE: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H TABLE1: DW 64260,64400,64524,64580,64684,64777,64820,64898 DW 64968,65030,65058,65110,65157,65178,65217 ; 字符显示码表DIG_CODE: DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H END 五、调试(一)软件调试步骤1、打开软件后 , 在 Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。2、为项目文件选择一个目标器件,即选择8051 的类型。在Data base 列表框中选择“A TML 89C52”,确定。3、 上述设置好后, 创建源程序文件并输入程序代码。输入好代码后点击“文件/ 保存”。4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试(二)硬件调试按照此次课程设计的要求调试过程如下:按键KEY0 ,KEY1 ,KEY2 ,KEY3 分别对应 LED 流水灯,蜂鸣器,数码管,音乐四个功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 1、LED流水灯测试通过按按键KEY0 ,观察到LED流水灯显示,并循环2 次;与相应的程序代码相比较,结果正确。2、蜂鸣器测试通过按按键KEY1 ,听到蜂鸣器发出“嘀”, “嘀”的响声;与相应的程序代码相比较,结果正确。 3、数码管测试通过按按键KEY2 ,观察到数码管从 “1000” 开始计时, 依次显示 “1001” , “1002” ,“1003”;与相应的程序代码相比较,结果正确。因为程序要求数码管显示的时间是小时和分钟,所以要观察到数码管的变化要等一分钟的时间。 4、 音乐测试通过按按键KEY3 ,听到蜂鸣器响起“生日快乐”的音乐;六、设计总结经过为期两周的忙碌,终于完成了单片机的课程设计,在此期间不仅将课堂上所学的东西进行了巩固, 而且在实验的过程中有所提高,当然这里少不了老师的指导和小组之间的团队合作。前几天我们在教室集中,并根据报告要求查找相关资料。该课程设计中应用到了蜂鸣器、LED流水灯、数码管,并且要求在一个电路板上将各个功能集成在一起,也就是能实现LED灯流水工作,数码管计时以及蜂鸣器发生。以前我们做试验都是一个功能一个功能的完成,从来没有一起实现过,这样问题就来了, 比如三种程序放在一起相互冲突怎么办?经过老师的讲解和分析, 我们可以用键盘扫描的程序来解决,将各个功能设置在不同的模块作为子程序一一调用,这样就可以实现全部功能并互不干扰。之后我们在实验室进行调试,结果出了一些问题,首先是LED流水灯只亮一个,不进行流水工作, 然后就是复位以后再按下蜂鸣器的工作开关,放出的不是音乐而是噪音。经过分析以后发现是时间设定的有问题,之前是 DELAY: MOV R6,200 应改成 DELAY: MOV R6,0ffh 。关于音乐的问题, 其实也很简单, 就是音乐响起之前没有清零,之前如果蜂鸣器工作过的话,对现在的执行有干扰,两种不同频率的声音在一起肯定会有影响的。进行最后的调试和下载,终于正常工作,并能顺利实现所有的功能。七、参考文献曲泊涛, 微型计算机系统原理,接口与组装 ,大连理工大学出版社, 1998年李大有, 单片机应用与设计,电子工业大学出版社,1998年徐惠民, 单片微型计算机原理接口应用 ,北京邮电大学出版社, 1999年。钟睿.MCS-51 单片机原理及应用开发技术.北京:中国铁道出版社, 2006 年李有才, 单片机课程设计纲要 ,电子科技大学出版社, 2003年名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -