单片机智能数字钟毕业论文_第1页
单片机智能数字钟毕业论文_第2页
单片机智能数字钟毕业论文_第3页
单片机智能数字钟毕业论文_第4页
单片机智能数字钟毕业论文_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机智能数字钟摘 要:时间就是金钱,时间就是生命。在当今竞争激烈的社会中,信息的竞争占据着十分重要的地位。现在的竞争就是信息的竞争,要想在信息战争中取得胜利,就必须打赢时间战。在现代竞争中,时间已经成为取胜的关键。所以,有时间观念的人才能在竞争中取得胜利。因此,看时间也就成为了人们时刻要做的事。在很早时期人们所用的还是比较单一功能的手表。这种手表只能看时间而不能看日期、又不具备闹铃等功能,而且看起来也不够直观,给一些小孩和老人带来了不便。随着科技的发展,电子技术也在不断的向前飞速发展。针对钟表这一问题,电子产业部为此研发出了一款多功能的智能数字钟的研发,这款智能数字钟具有显示年、月、日,时、

2、分、秒及闹钟功能,而且秒、分、时、日、月、年可自动关联进位。秒具备清零功能,分、时、日、月、年可自动修改、手动设置等功能。它主要是以两块AT89S52芯片作为主控模块,采用DS1302作为定时来源,以74LS47和74LS138为次要,以ISD1420芯片为铺的多功能智能数字钟。在日常生活中带来好处,智能数字钟结构较简单,因此便于操作使用。这款智能数字钟的制作,其成本相对于其他具有更多功能的电子时钟要低得多。因而它的市场价格也比较便宜,对大众是个一很好的选择,它具有高度的智能化和集成化,符合现代人们办公、生活、学习的好帮手,具有广阔的市场前景,相信其必将成为了大众化产品。同时,它具有整点报警功

3、能和拨放音乐等功能,正因为有了这点功能,它越来越受到了社会各界人志的欢迎。关键词:单片机AT89S52 74LS138芯片和74LS47芯片 ISD14020芯片 DS1302目 录1.系统方案选择和论证 31.1 设计要求31.2 系统基本方案 3 1.2.1主控模块的选择4 1.2.2显示模块的设计4 1.2.3 控制按键的选择4 1.3 系统各模块的最终方案42.系统的硬件设计与实现 5 2.1 系统硬件概述5 2.2 主要单元电路的设计 5 2.2.1 主控模块电路的设计 5 2.2.2 LED显示模块电路的设计6 2.2.3语音播报模块电路的设计7 2.2.4闹铃模块电路的设计7 2

4、.2.5 自制电源模块电路的设计7 2.2.6转换模块电路的设计8 2.2.7 语音播报模块83.系统的软件设计 9 3.1 系统软件概述 9 3.1.1命令字节9 3.1.2数据的写入或读出10 3.1.3主程序流程图11 3.2 子程序的设计 11 3.2.1 显示子程序 11 3.2.2 自检子程序 124.系统测试 15 4.1 测试仪器 15 4.2 指标测试 15 4.2.1 功能测试 15 4.2.2 硬件测试16 4.2.3 软件调试16 4.3测试结果分析与结论165.总结176.致谢辞187.参考文献 19附录一:系统电路图 22附录二:程序清单23制作日志表471. 系统

5、方案选择和论证1.1 设计要求1 能显示年、月、日;2 能显示时、分、秒;3 具备整点闹铃功能;4 秒、分、时、日、月、年可自动关联进位;5 分、时、日、月、年可手动修改;6 能设置多个闹钟,且每个闹钟时间可多次设置;7 具有正点播报功能且到设定时间时能播放音乐作闹铃声;8 按键尽量少,且显示没有明显抖动。1.2 各模块方案选择和论证1.2.1 主控模块的选择 方案一:8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本较高,性价比低。方案二: 89C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能于3V

6、的超低压工作,与MCS-51系列单片机完全兼容,但是其不具备ISP在线编程技术, 需把程序编写好以后再放到编程器中烧写,才可以进行硬件电路的调试,倘若程序编写出现问题,调试电路就比较麻烦,而且其芯片内存也只有4KB。方案三: 基于前两种方案的比较,考虑到AT89S52,该芯片内部既有Flash ROM,又与MCS-51兼容,而且ISP在线编程技术适用于AT89S52芯片,这样既降低了成本也无需反复插拔芯片,可避免损坏芯片;而且他的性能稳定且内存达8KB。综观上述三种方案的论证与比较,我们采用AT89S52作为主控模块芯片。1.2.2 显示模块的设计方案一:LCD数码管液晶显示,由单片机驱动.它

7、主要用来显示大量数据、文字、图形,能够显示的位数多,显示得清晰多样、美观,但同时液晶显示器的编写程序复杂,价格昂贵,从而降低了整个系统的性价比,故不采用此种方案。方案二: 点阵显示,是由八行八列的发光二极管集成在一块电路上组成,主要用来显示汉字,同时也能显示数字和少量图象,但它的焊接较麻烦,价格高,鉴于所设计的题目要求它不切实际。所以排除此方案。方案三: LED数码管静态显示,电路容易理解且驱动的程序简单,多片七段译码器驱动显示,这不仅增加了成本,还需要占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用这种方案作为显示模块。方案四:采用LED数码管动态扫描显示,价格低廉,不仅减少

8、了对I/O口的浪费,而且能够同时驱动多个数码管。其驱动程序容易编写和理解。经过四种方案的比较,排除了前三种方案之后,最后选择方案四:LED数码管动态扫描显示。1.2.3 控制按键的选择方案一: 选取阵列式按键,减少了I/O口的使用,且扫描M×N个按键只需占用M+N个I/O口即可实现,但给编程带来了一定的困难,虽然节省了很多的口线,降低了成本,但在此设计中所用的按键要尽量少,因此排除此方案。方案二: 独立式按键,每个按键实现一个功能,易于控制且编写程序简单,容易理解,虽然会占用一定的单片机I/O口资源,但是题目中要求使用的按键要尽量少。 通过以上两种方案比较,采用方案二。1.3 系统各

9、模块的最终方案经过方案论证与比较,选择AT89S52作为主控,采用独立式按键控制,LED数码管动态扫描显示。选择出最优方案的系统框图如图1所示:主 控 模 块按键模块电源模块显示模块闹铃模块语音播报模块定时模块图1 系统框图2. 系统的硬件设计与实现2.1 系统硬件概述智能电子钟主要有六个模块组成,其核心是两块AT89S52,用两块AT89S52作控制是为了语音播报和日期显示互不干扰,其中一块控制语音播报,另一块控制日期显示和闹钟。本设计采用了误差小的时钟芯片DS1302作时钟定时,它一星期误差大约为3秒钟,语音播报采用了ISD1420,它的录音时间为20秒。通过AT89S52进行控制各个模块

10、,P0口用来接独立式按键,用于控制可以实现各个功能;P1和P3口用来接数码管动态显示,利用AT89S52单片机给74LS138来实现数码管的动态显示,显示模块是连接一片七段译码器和一片3-8译码器以动态扫描方式同时驱动十五个数码管来显示当前的日期; P2口通过一位与另一块控制语音播报的AT89S52进行通信另外还用一位接上闹铃;P3口还接了时钟芯片DS1302作定时用。2.2 主要单元电路的设计2.2.1 主控模块电路的设计图2 AT89S52单片机接线图智能数字钟采用了两块AT89S52作为主控模块,第一块单片机是用来驱动74LS47和74LS138这三块芯片的。第二块单片机是用来去动语音播

11、报功能的。此外,还用到了转化芯片ISD1420和DS1302,主要用主要是实现电路进行交换。在单片机工作之前,我们必须给它一个电源(5V)和连接一些需要连接的地方。比如第18、19引角之间要给它接上一个12MHz的晶振和两个30PF的电容。第31引角要接上电源,第9引角要接上复位电路。(即接上一个3K电阻和一个200电阻以及一个按键开关。)第20引角要接地,第40引角要接上电源等这些基本的接法。DS1302芯片主要用与电路的转换。单片机剩下的P0口、P3口、和P2口分别是做其他功能使用。同时指出的是在使用P0口时要给它接上上拉电阻,这样单片机的驱动能力就会大大增强。P3口是复用功能,可以用做数

12、据的传输和地址线。特别强调的是这里只能用高8位做数据线。P2口内部已经具备了上拉电阻,因此不用再加上拉电阻了。这些都是上电之前要做好的一些前提条件,如果忽视了哪一点,都可能使单片机不能正常工作,或者说容易烧坏单片机。2.2.2 LED显示模块电路的设计从图4中可以观察到单片机P1口低4位连接一片七段译码器74LS47,由于74LS47是共阳极数码管的七段译码器所以选用共阳极的数码管。单片机P1口低4位的输出信号经过74LS47译码后就可以驱动数码管的段码显示相应的数字。为了防止有过大的电流流过时烧坏数码管,因此在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻。单片机P1口高4位

13、接于3-8译码器74LS138的三个输入端,而74LS138的输出端通过三极管分别接于六个数码管的COM端。由P1.4-P1.6口的输出量来控制74LS138选择点亮某一个数码管。由于74LS138是低电位有效,所以应该采用PNP型的三极管来驱动数码管。为了过大电流烧坏芯片,所以在74LS138的输出与三极管基极之间接上8个1K的电阻,在此的电阻也起到限流的作用。 显示模块用到了16个数码管、两块74LS47和一块74LS138。单片机的P0口与两块74LS47和74LS138相连。74LS47的高四位与P1.0P1.3连接,低四位与74LS138相连。为了更好的驱动数码管,我们在三-八译码器

14、上外加了八个PNP型三极管。显示电路图如下:图3 LED动态扫描显示电路2.2.3语音播报模块电路的设计闹铃功能是可以设置多个闹铃的。如果整点闹铃与音乐播放是同一时刻的话,那么谁在前边就先响应谁。闹铃的时间长短可以根据自己的意志来设定。播放音乐时不能出现同一首歌,同时也不能超过两首歌,只能是一到两首歌之内。报警电路如下:图4 语音播报模块电路2.2.4闹铃模块电路的设计图5 闹铃模块电路2.2.5自制电源模块电路的设计整个数字电子钟系统需要+5V以下的电源供电,采用直流稳压电源提供,但这样不便于携带,所以还要设计一个自制的简易直流稳压电源。电源电路如图6所示。图6 自制直流稳压电源 电源电路原

15、理:由220V交流电经过变压器变为15V交流电,然后通过桥式整流电路和滤波电容后得到近似为直流的电信号,并将直流电信号经过一个稳压管7805得到一个稳定的5V电压。2.2.6转换电路模块的设计为了初始化任何数据的传输,引脚信号应由低变高,并且应将具有地址和控制信息的8位数据(控制字节)装入芯片的移位寄存器内,数据的读写可以用单字节或多字节的突发模式方式进行。所有的数据应在时钟的下降沿变化,而在时钟的上升沿,芯片或与之相连的设备进行输入。图7  DS1302的引脚图2.2.7 语音播报模块语音播报模块采用语音芯片ISD1420构成,该芯片能够高质量地完成声音录制与还原,最大录音时间为2

16、0秒,具备分段录音功能,便于与单片机连接。语音播报模块电路如图9。图8 语音播报模块电路其中S3键为录音键,S1、S2键为播放键,A0-A7为地址选择端,将ISP1420的A0-A7直接与单片机的P1口相连,就可以实现录音地址选择功能,再将播放键接于P3.0口以实现单片机控制的实时播放功能。3. 系统的软件设计3.1 系统软件概述3.1.1 DS1302的命令字节1)命令字节的格式如图9所示.图9  命令字节格式每次数据的传输都是由命令字节开始的,这里的最高有效位必须是1。D6是RAM(为1)或时钟/日历(为0)的标识位。D1D5定义片内寄存器的地址。最低有效位(D0)定义了写操作(

17、为0时)或读操作(为1时)。命令字节的传输始终从最低有效位开始。3.1.2数据的写入或读出2)对芯片的所有写入或读出操作都是由命令字节为引导的。每次仅写入或读出1B数据的操作称为单字节操作。每次对时钟/日历的8B或31个RAM字节进行全体写入或读出操作,称其为多字节突发模式操作。包括命令字节在内,对于单字节操作,每次需要16个时钟;对于时钟/日历多字节突发模式操作,每次需要72个时钟;而对于RAM多字节突发模式操作,每次则需要多达256个时钟。单字节传送操作格式如图10所示。多字节突发模式操作格式如图11所示。图10  单字节传送操作格式图11  多字节突发模式操作格式3)

18、时钟/日历寄存器地址命令格式及功能定义访问DS1302片内各寄存器地址命令格式如表2所示。 访问DS1302片内各寄存器数据格式如表3所示。表3  DS1302片内各寄存器数据格式注:x表示任意,可为0或1。3.1.3 主程序流程图如下: 开始 初始化程序 读日历、时间 将日历、时间分离显示子程序结束播报子程序图12 主程序流程图3.2 子程序的设计3.2.1自检子程序 为了检测数码管和喇叭的好坏,特编此程序:ZJ: MOV 2BH,#200ZJ1: MOV 2AH,#250ZJ2: MOV P3,#10001111B MOV P1,#10001000B MOV P3,#1

19、0011111B MOV P1,#10001000B MOV P3,#10101000B MOV P1,#10001000B MOV P3,#10111000B MOV P1,#10001000B MOV P3,#11001000B MOV P1,#10001000B MOV P3,#11011000B MOV P1,#10001000B MOV P3,#11101000B MOV P1,#10001000B MOV P3,#11111000B MOV P1,#10001000B SETB P2.0 DJNZ 2AH,ZJ2 DJNZ 2BH,ZJ1 MOV P2,#0FFH MOV P1,#

20、0FFH CLR P2.0 RET3.2.2电子闹钟子程序为了提高使用价值和丰富功能,本温度计扩展了两个独立的电子闹钟作为其它功能。通过按键设定某一时间,用当前时间与该设定时间进行对比,每秒钟对比一次,一旦发现当前时间与设定时间一致则调用电子乐曲(用程序编写的曲子)发出闹铃声。 实现闹钟功能的程序如下:(注:以下仅是闹钟1的程序,闹钟2的程序与此类似)ORG 0000HLJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETISTART:MOV SP,#50HMOV TH0,#0D

21、8HMOV TL0,#0EFHMOV TMOD,#01HMOV IE,#82HMUSIC0:NOPMOV DPTR,#DAT ;表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0MUSIC1:NOPCLR AMOVC A,A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL P2.0MOV A,R6MOV

22、 R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRLJMP MUSIC1MUSIC3:NOPCLR TR0 ;休止100毫秒MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64H ;歌曲结束,延时1秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NO

23、PDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETEND3.2.2语音播报子程序语音播报是为了报整点时间而设计的,当每到某一时刻的整点时电子钟就会自动地报时。在程序里它是通过与时和分的寄存器相比较,如果分为零,则比时,时为多少就报多少点钟。其程序如下:ORG 0000H MOV P0,#0FFH MOV P2,#0FFH MOV P3,#0FFHBOBAO: ;播报子程序 MOV A,P3 CJNE A,#00000000B,N2 ;北京时间0点整 LCALL SS12 LCALL DEL1 LCALL SS0 LCALL DEL1

24、LCALL SS11 LCALL DEL1 LJMP BOBAON2: CJNE A,#10000000B,N3 LCALL SS12 LCALL DEL1 LCALL SS1 LCALL DEL1 LCALL SS11 LCALL DEL1 LJMP BOBAON3:N25: CJNE A,#00011000B,N26 LCALL SS12 LCALL DEL1 LCALL SS2 LCALL DEL1 LCALL SS10 LCALL DEL1 LCALL SS3 LCALL DEL1 LCALL SS11 LCALL DEL1N26: LJMP BOBAOSS0: SETB P1.0 M

25、OV P0,#00H ;0 CLR P1.0 RETSS1: SETB P1.0 MOV P0,#28H ;1 CLR P1.0 RETSS2: SETB P1.0 MOV P0,#14H ;2 CLR P1.0 RETSS3: SETB P1.0 MOV P0,#3CH ;3 CLR P1.0 RETSS4: SETB P1.0 MOV P0,#0AH ;4 CLR P1.0 RETSS5: SETB P1.0 MOV P0,#26H ;5 CLR P1.0 RETSS6: SETB P1.0 MOV P0,#1EH ;6 CLR P1.0 RETSS7: SETB P1.0 MOV P0,

26、#31H ;7 CLR P1.0 RETSS8: SETB P1.0 MOV P0,#05H ;8 CLR P1.0 RETSS9: SETB P1.0 MOV P0,#2DH ;9 CLR P1.0 RETSS10: SETB P1.0 MOV P0,#13H ;10 CLR P1.0 RETSS11: SETB P1.0 MOV P0,#3AH ;点 CLR P1.0 RETSS12: SETB P1.0 MOV P0,#0FH ;北京时间 CLR P1.0 RETDEL1: MOV R5,#5Y1: MOV R6,#200Y2: MOV R7,#250 DJNZ R7,$ DJNZ R6

27、,Y2 DJNZ R5,Y1 RET4. 系统测试4.1 测试仪器 下表为调试所使用到的仪器:序号仪器名称1直流稳压电源2数字万用表3ISP在线编程器4PC机4.2 指标测试4.2.1 功能测试年、月、日的显示及设定功能自检完成后八个数码管就会显示当前的时、分、和秒。当按下开关就可以显示所设定的年月日。时、分、秒的显示及进位功能按下显示时、分、秒的开关后,数码管就会显示当前的时间。等到秒钟超过60后就会向分钟进一位;分超过60后就会向时进一位。键盘输入功能可设定中断按键(即年、月、日及时、分、秒按键)、设定闹铃按键和其他功能的按键。显示功能能显示当前的时间及年月日,同一时刻可以设置多个闹钟。报

28、警功能当输入的时间与设定的时间一致时,蜂鸣器就会发出报警声,还可以到点播放音乐。422 硬件测试 本电路主要是由数字集成芯片和单片机软件实现的,因此硬件调试比较少。不过在调试时还是出现了一些问题。1上电测试时发现有一个数码管不亮。可能的原因有:一、数码管损坏;二、选取的数码管极性错误;三、电路虚焊;四、程序编写有误。解决方法:换上完好的数码管,结果还是不亮;检测数码管极性也没有取错;用万用表检测电路时,接线线路又没有虚焊,然后通过编写简单的自检程序烧写后调试,结果数码管已能点亮。2自检时蜂鸣器不响。原因分析:一、蜂鸣器已损坏;二、连接蜂鸣器部分的电路有误;三、程序编写出错。解决方法:给蜂鸣器加

29、上起动电压,可发出声音;用万用表检查此部分电路也没发现错误,不过细心检查后发现三极管接反;第三种可能则被排除。3语音芯片不能录音。原因分析:一、电源没接上;二、芯片已损坏;三、麦克风坏了;四、录音按键没接上。解决方法:接上电源用万用表测芯片电压结果有电压,排除此种可能;把芯片换到正确的电路板上测试没有问题;接着又换了麦克风,也没出现问题;经过仔细检查电路后发现原来是录音按键没有接上,录音按键根本不起作用,把电路接好后上电测试录音正常。423 软件调试 由于本系统要实现的功能比较多,所以在编写程序和调试时出现了许多问题,不过经过多次反复的调试后还是能把题目所要实现的功能都能实现了。1刚开始自检时

30、发现只有第一个数码管点亮。由于数码管是采用动态扫描方式来显示的,所以检查自检子程序,把子程序的延时加大,结果全部数码管都显示正常。2输入数字时只有一个数码管显示数字。此问题是数码管不能移位,检查程序时发现所赋的值出错,例如:本来所要赋的值为#00000001B,但是实际赋予的值变为#00000001H。3不能修改时间。通过仔细地检查程序时才知道原来在编写程序时并没有把相应的值送入对应的寄存器中。4.3测试结果分析与结论从拿到题目到电路焊接的完成及软件的调试完成后,我们组对作品进行了调试,所得到的结果基本上完成作品要求的功能,即:1、能显示年、月、日和时、分、秒;2、智能数字钟具备开机自检功能;

31、3、具备整点闹铃功能,秒、分、时、日、月、年可自动关联进位。秒具备清功能,分、时、日、月、年可手动修改;4、能设置多个闹钟,且每个闹钟时间可多次设置;5、具有正点报警功能且到设定时间时能播放音乐作钟声;6、显示数字时没有明显的抖动现象。对于这次的测试结果基本上还满意,虽然没能做出创新功能,但已经能够实现所有的功能,实现了作品要求完成的功能。5.总结本次电路的调试相对于之前的几次比较难,经过我们共同努力之后,解决了所有难题,终于顺利地完成了本次设计任务。从一开始得到题目后,我们立即对题目的要求进行了仔细、深入的分析,设计出不同的电路原理图,综合各个电路的优点,最后确定了现在使用的正确的电路原理图

32、。在电路的焊接完成之后,我们立即进行了硬件的调试。由于这次的焊接相对复杂,因而在调试时出现了不少问题。刚开始时,电路的自检不能完成。在经过仔细的检查后发现数码管与单片机P1口的排线接反了,所以导致复位电路没有起作用。改接电路后这个问题得到解决。至此,硬件的其他功能都能实现。软件的调试。我们组所编出来的程序烧写到单片机中,第一次测试时实现了年、月、日、时、分、秒显示,在整点闹铃功能上还有写问题。例如要设置12:00闹铃,可是还没有进位就开始闹铃了。经过我们的修改之后重新测试,最终实现了闹铃功能。在年、月、日的设置中,也遇到了不少的问题。比如润年是可以整除四的,但是有的年份不是润年它也能被四整除。

33、这就造成了一些麻烦,程序编写时就出现了问题。组长想了很久才把这个问题解决了。特别是一些细微的东西,我们做得也不太好。在秒进位这块运行时,当进行到第三分钟时,它就不再进位了。组长研究了半天也不知道是什么原因造成的。经过我们再三讨论后才把问题解决了。在硬件这方面,我们也做得不够好。虽然这次焊接电路较少,但是稍微不注意也很容易出现错误。本次实训中犯了一个低级的错误。焊完电路后对其进行调试,结果调不出什么花样,后来对电路进行细微的检查,发现电源和地线都没有连上,74LS47也有一个地方连错了。原本不应该出现的错误,编编出错了,真是太大意了。从这个小小的错误中我们得到了一个启示:无论做什么事都要认认真真

34、地去完成它。在做完事情之后,一定要重新检查之后才把它放过去。这次实训给我们印象最深刻的是我们都得到了锻炼的机会,我们学到了不少的东西。同时,我们也学会了如何养成良好的团队精神。总之,在本次实训中,我们遇到了不少的问题。硬件焊接也是比较重要的一个环节,在做之前组长跟我们说过,如果硬件不过关的话就不能实现基本的功能。对此,组长和组员在焊接电路的时候都很小心,最终我们的焊接一次性成功了。在软件方面更加重要了,我们所要实现的功能都是由软件来控制的。问题就出现在语音播报这一块。依据理论,把需要播放的语音通过程序调用然后检测播完信号即可,但是在实际中是行不通的,原因在于播完信号检测不到,结果只能用延时的方

35、法逐一尝试,最后终于调试成功! 6致谢辞首先感谢我们的指导老师(陈正振),他严谨细致、一丝不苟的作风一直是我们工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我们无尽的启迪。此外还要感谢所有帮助的同学们。本次课程设计是在陈正振老师的亲切关怀和悉心的指导下完成的,他精益求精的工作作风,深深地感染和激励着我,从课题的选择到项目的最终完成,陈老师都始终给予我们细心的指导和不懈的支持,在这两个星期以来,由于有老师孜孜不倦的教诲及耐心的讲解和自己的努力,我们都能完成好我们所要设计的作品,在此特向陈老师致以诚挚的谢意和崇高的敬意! 此外,我们还要感谢在一起度过愉快的大学生活的全班同学,正是由于你们

36、的帮助和支持,我们才能克服一个一个的困难和疑惑,直至本次课程设计的顺利完成,特别感谢和我们一起做课程设计的同学们,他们给予了不少的帮助。谢谢大家!7参考文献1 王法能 单片机原理及应用,科学出版社,20042 沈庆阳 8051单片机实践与应用,清华大学出版社,20023 刘勇 数字电路,电子工业出版社,20044 徐正惠 单片机原理及应用科学出版社,20045 :/ 21icsearch , 芯片查找网站附录一:系统电路图附录二 程序清单ORG 0000 MOV P0,#0FFH MOV P2,#0FFHMIAN: MOV 30H,#50H ; 秒 MOV 31H,#59H ; 分 MOV 3

37、2H,#23H ; 时 MOV 33H,#01H ; 日 MOV 34H,#01H ; 月 MOV 35H,#02H ; 星期 MOV 36H,#08H ; 年底 MOV 37H,#20H ; 年高 MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 44H,#00H MOV 46H,#00H MOV 48H,#00H MOV 4AH,#00H MOV 4CH,#00H MOV 56H,#00H ; 数码管选择标志 MOV 57H,#00H ; 闪烁标志 MOV 58H,#00H MOV 74H,#00H LCALL ZIJIAN ; 调用自检子程序 LCAL

38、L XIEDS1302 ; 调用写操作子程序START: LCALL DUDS1302 ; 调用读取DS1302数据子程序ST: LCALL XIAOMIAO ; 调用扫描子程序ST5: LCALL CHULI ; 调用显示处理子程序 LCALL SHANSHUO ; 调用闪烁子程序 LCALL XIANSHI ; 调用显示子程序 LCALL BOBAO MOV A,56H CJNE A,#15,ST1 ; 等于15时说明修改完成,把修改后的数据写入DS1302 LCALL XIEDS1302 ; 写操作子程序ST1: MOV A,56H CJNE A,#0,ST2 ; 不等于0,说明有开关按

39、下,则不再读取DS1302里的数据 LJMP START ; 等于0,说明没有开关按下,则一直读取DS1302里的数据ST2: LJMP STZIJIAN: ; 自检子程序 MOV R2,#2D1: MOV R3,#100D2: MOV R4,#250D3: MOV P3,#00011111B MOV P1,#10001000B MOV P3,#00111111B MOV P1,#10001000B MOV P3,#01011111B MOV P1,#10001000B MOV P3,#01111111B MOV P1,#10001000B MOV P3,#10011111B MOV P1,#

40、10001000B MOV P3,#10111111B MOV P1,#10001000B MOV P3,#11011111B MOV P1,#10001000B MOV P3,#11111111B MOV P1,#10001000B DJNZ R4,D3 DJNZ R3,D2 DJNZ R2,D1 RETDEL: MOV 3DH,#255 DJNZ 3DH,$ RETXIEDS1302: ; 写操作子程序 MOV R1,#80H MOV R0,#55H MOV 55H,#80H ; 停止振荡 LCALL XIE MOV R1,#8EH MOV R0,#55H MOV 55H,#00H ; 允

41、许写 LCALL XIE MOV R0,#30H MOV R1,#80H MOV R3,#7XD2: LCALL XIE INC R1 INC R1 INC R0 DJNZ R3,XD2 MOV R1,#8EH MOV R0,#55H MOV 55H,#80H ;禁止写 LCALL XIE MOV R1,#90H MOV R0,#55H MOV 55H,#0A6H ;充电 LCALL XIE MOV R1,#80H MOV R0,#55H MOV 55H,#00H ;开始振荡 LCALL XIE RETXIE: ; 对DS1302进行写操作 CLR P3.2 NOP SETB P3.4 NOP

42、 MOV R2,#8 MOV A,R1XD: RRC A NOP NOP CLR P3.2 NOP NOP NOP MOV P3.3,C NOP NOP NOP SETB P3.2 NOP NOP DJNZ R2,XD CLR P3.2 NOP MOV R2,#8 MOV A,R0XD1: RRC A NOP CLR P3.2 NOP NOP MOV P3.3,C NOP NOP NOP SETB P3.2 NOP NOP DJNZ R2,XD1 CLR P3.4 RETDUDS1302: ; 读取DS1302的数据 MOV R0,#30H MOV R1,#81H MOV R3,#7DD2:

43、CLR P3.2 NOP NOP SETB P3.4 NOP MOV R2,#8 MOV A,R1DD: RRC A NOP MOV P3.3,C NOP NOP NOP SETB P3.2 NOP NOP NOP CLR P3.2 NOP NOP DJNZ R2,DD MOV R2,#8DD1: CLR P3.2 NOP NOP NOP MOV C,P3.3 NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP SETB P3.2 NOP DJNZ R2,DD1 MOV R0,A CLR P3.4 INC R1 INC R1 INC R0 DJNZ R3,DD2

44、 RETXIAOMIAO: ; 扫描子程序 SETB P0.0 JNB P0.0,KAIGUANG1XM1: SETB P0.1 JNB P0.1,KAIGUANG2XM2: SETB P0.2 JNB P0.2,KG3XM3: SETB P0.3 JNB P0.3,KG4 RETKG3: LJMP KAIGUANG3KG4: LJMP KAIGUANG4KAIGUANG1: ; 按键1功能子程序 LCALL XIANSHI JNB P0.0,KAIGUANG1 INC 56H MOV A,56H CJNE A,#16,KG1 MOV 56H,#00HKG1: LJMP XM1KAIGUANG

45、2: ; 按键2功能子程序 LCALL XIANSHI JNB P0.1,KAIGUANG2 ; 修改年高 MOV A,56H CJNE A,#1,S1 ; 选择第1个数码管 MOV A,37H ADD A,#10H ; 对该数码管加1 MOV 37H,A ANL A,#0F0H ; 取出该数码管显示的数据,并放到低四位 SWAP A CJNE A,#10,S1 ; 是否已加到9 MOV A,37H ANL A,#0FH ; 已加到9,清零并保护后一数码管的数据 MOV 37H,AS1: MOV A,56H CJNE A,#2,S2 ; 选择第2个数码管 MOV A,37H ADD A,#01

46、H ; 对该数码管加1 MOV 37H,A ANL A,#0FH ; 取出该数码管显示的数据 CJNE A,#10,S2 ; 是否已加到9 MOV A,37H ANL A,#0F0H ; 已加到9,清零并保护前一数码管的数据 MOV 37H,A ; 修改年低S2: MOV A,56H CJNE A,#3,S3 ; 选择第3个数码管 MOV A,36H ADD A,#10H ; 对该数码管加1 MOV 36H,A ANL A,#0F0H ; 取出该数码管显示的数据,并放到低四位 SWAP A CJNE A,#10,S3 ; 是否已加到9 MOV A,36H ANL A,#0FH ; 已加到9,清

47、零并保护后一数码管的数据 MOV 36H,AS3: MOV A,56H CJNE A,#4,S4 ; 选择第4个数码管 MOV A,36H ADD A,#01H ; 对该数码管加1 MOV 36H,A ANL A,#0FH ; 取出该数码管显示的数据 CJNE A,#10,S4 ; 是否已加到9 MOV A,36H ANL A,#0F0H ; 已加到9,清零并保护前一数码管的数据 MOV 36H,A ; 修改月S4: MOV A,56H CJNE A,#5,S5 ; 选择第5个数码管 MOV A,34H ADD A,#10H ; 对该数码管加1 MOV 34H,A ANL A,#0F0H ; 取出该数码管显示的数据,并放到低四位 SWAP A CJNE A,#2,S5 ; 是否已加到2 MOV A,34H ANL A,#0FH ; 已加到2,清零并保护后一数码管的数据 MOV 34H,AS5: MOV A,56H CJNE A,#6,S6 ; 选择第6个数码管 MOV A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论