课程设计实验报告扩展时钟系统实验原理及分析报告.doc

上传人:laozhun 文档编号:2388777 上传时间:2023-02-17 格式:DOC 页数:25 大小:1.30MB
返回 下载 相关 举报
课程设计实验报告扩展时钟系统实验原理及分析报告.doc_第1页
第1页 / 共25页
课程设计实验报告扩展时钟系统实验原理及分析报告.doc_第2页
第2页 / 共25页
课程设计实验报告扩展时钟系统实验原理及分析报告.doc_第3页
第3页 / 共25页
课程设计实验报告扩展时钟系统实验原理及分析报告.doc_第4页
第4页 / 共25页
课程设计实验报告扩展时钟系统实验原理及分析报告.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《课程设计实验报告扩展时钟系统实验原理及分析报告.doc》由会员分享,可在线阅读,更多相关《课程设计实验报告扩展时钟系统实验原理及分析报告.doc(25页珍藏版)》请在三一办公上搜索。

1、JINGCHU UNIVERSITY OF TECHNOLOGY 扩展时钟系统实验原理及分析报告学 院 计算机工程学院专 业 计算机科学与技术年级班别 09级1班学 号 2009404010121学生姓名 指导教师 2012年1月8号 目录扩展时钟系统实验原理及分析报告一、扩展时钟系统实验题目、目的及内容2 二、实验器材及工作原理2-4 三、实验接图方案4-5 四、实验程序框图 5 五、实验步骤 5-6 六、实验所用芯片说明 6-9 DS2887芯片说明6-8 74ls164芯片说明 8-9七、实验代码分析10-15八、实验代码调试15- 16九、实验心得体会 16扩展时钟系统实验原理及分析一

2、、实验题目: 扩展时钟系统实验、实验目的及内容:掌握MCS51单片机扩展时钟电路的设计方法;了解DS12887的工作原理。编程实现下列功能:程序第一次运行后,初始化时间显示为00:00:00,即6位数码管显示为00.00.00。通过键盘MON设定小时为07,通过键盘LAST设定分钟为08,通过键盘NEXT设定秒为09,两分钟后即在7.10.09时关掉电源,等待2分钟后再打开电源,这时时间应为7.12.09,即停电后DS12887中的时钟不会停止运行。 二、实验器材: 1、超想3000TC综合实验仪 1台2、KEIL仿真器 1台3、连线 若干根4、计算机 1台工作原理:在很多应用场合要求单片机系

3、统不仅能够准确地采集数据,而且还需要了解产生这些数据的时刻,为单片机系统增加日历时钟是一项非常有用的技术,掌握这项技术便是本实验的目的。实验中使用DALLAS公司生产的日历、时钟加RAM芯片DS12887。它具有接口简单,使用方便等特点,曾被用在586计算机中。其引脚分布如图所示,内部有128字节的非易失SRAM,具体分配也如图所示。14BYTE000DFF00SECONDS01SECODES ALARM02MINUTES114BYTE03MINUTES ALARM04HOURS05HOURS ALARM06DAY OF THE WEEK07DAY OF THE MONTH08MONTH09Y

4、EAR0AREGISTER A0BREGISTER B0CREGISTER C0DREGISTER D引脚分布图存储器分布图通过对寄存器A、B、C、D的编程可以控制DS12887的工作方式。寄存器AD7 D6 D5 D4 D3 D2 D1 D0UIPDV2DV1DV0RS3RS2RS1RS0UIP位当其为0时指示更新在244S内不会发生;DV2 DV1 DV0当其为010时,打开晶振,并允许时钟开始计时;RS3 RS2 RS1 RS0用于选择周期中断或输出方波频率,当其分别为0111、1000、1001、1011、1101、1110、1111时,对应频率为512Hz、256Hz、128Hz、6

5、4Hz、32Hz、16Hz、8Hz、4Hz、2Hz。寄存器BD7 D6 D5 D4 D3 D2 D1 D0SETPIEAIEUIESQWDM12/24DSESET位为0时,每秒计数一次,置1后,更新转换被禁止;PIE、AIE、UIE位当它们为1时,分别允许周期中断、报警中断和时钟数据更新结束中断,为0时,禁止中断产生;SQWE位当其为1时,按以寄存器A中由RS3 RS2 RS1 RS0设定的频率从SQW引脚输出方波,当其为0时,SQW为低电平;当DM为1时选用二进制数据格式,反之为BCD数据格式;12/24位为1时,指定24小时时间格式,否则为12小时时间格式;DSE为1时允许夏时制发生。寄存

6、器CD7 D6 D5 D4 D3 D2 D1 D0IRQFPFAFUF0000寄存器C的内容是周期中断标志位PF、报警中断标志位AF、更新结束中断标志位UF和中断请求标志位IRQF,它们之间的关系为IRQF=PF*PIE+AF*AIE+UF*UIE,只要IRQF为1,/IRQ引脚输出就保持低电平,读寄存器C将清除所有标志。寄存器DD7 D6 D5 D4 D3 D2 D1 D0VRT0000000寄存器D中仅D7有定义,读时应总为1,若为0则说明内部锂电池已耗尽。为防止锂电池在芯片装入系统前被耗尽,DS12887在出厂时先关掉了其内部的晶振,编程时必须首先给寄存器A的DV2 DV1 DV0位写入

7、010以打开晶振,然后读寄存器D以检查内部锂电池是否有效;接着根据需要对寄存器A、B进行设置。当需要修改日历时钟时,需要先使SET位置1,当需要读日历时钟数据时,必须先查询寄存器A中的UIP位,只有当其为0时,才能进行读取数据。 三、 接线方案: 图中使用了8051单片机和DS12887芯片并且讲数据送往74LS164芯片74LS138YS7 09IN0四、程序框图: 开 始8155初始化DS12887初始化读秒、分、时拆字后送显示缓冲器调用显示子程序调用键扫子程序有键按下吗?是NEXT键?是LAST键?是MON键?调整秒位调整分位调整时位NNYNYNYNYNNNNNNN五、实验步骤:1、设定

8、仿真模式程序空间在仿真器上,数据空间在用户板上。2、从“接线图案”中看出,DS12887的/CS脚已连接U17译码器的YS7脚,于是可知DS12887的地址空间为0FE00H-0FFFFH。3、硬件调试:因为DS12887内部有114个内部RAM,在系统中的地址空间为:0FE0EH-0FE7FH,所以,可通过查看这一区域的数据读写来判断硬件是否有故障。超想-3000TC+KEIL仿真器,在WINDOWS调试环境下打开数据存贮器区,在0FE10H开始的地址上写入一串55H,然后按右键,弹出一窗口,点击“刷新”,如写入的的一串55H未被修改,则硬件无故障。4、设计程序并进行调试。六、所用芯片说明:

9、 DS12887芯片: 芯片作用简要说明:DS12887为DALLAS公司生产的实时时钟芯片,除具有实时钟功能外,它还具有114字节的通用RAM。内藏锂电池,并与广泛应用的DS1287、MC146818B脚对脚兼容。(1)内含一个锂电池,断电情况运行十年以上不丢失数据。 (2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。 (3)二进制数码或BCD码表示时间、日历和定闹。 (4)12小时或24小时制,12小时时钟模式带有PWM和AM指导,有夏令时功能。 (5)MOTOROLA5和INATAEL总线时序选择。 (6)有128个RAM单元与软件音响器,其中14个作为字节时钟和控制寄存器,1

10、14字节为通用RAM,所有ARAM单元数据都具有掉电保护功能。 (7)可编程方波信号输出。 (8)中断信号输出(IRQ)和总线兼容,定闹中断、周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。DS12887主要功能和引脚的说明如下:GND,VCC:直流电源+5V电压。当5V电压在正常范围内时,数据可读写;当VCC低于4.25V,读写被禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计时器被切换到内部锂电池。 MOT(模式选择):MOT管脚接到VCC时,选择MOTOROLA时序,当接到GFND时,选择INTEL时序。 SQW(方波信号同):SQW管脚能从实时时钟内部15

11、级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。 AD0AD7(双向地址/数据复用线):总线接口,可与MOTOROLA微机系列和INTEL微机系列接口。 AS(地址选通输入):用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。 DS(数据选通或读输入):DS/RD客脚有两种操作模式,取决于MOT管脚的电平,当使用MOTOROLA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总的时刻,在写周期,DS的后沿使DS12887锁存写数据。选择INTEL时序时,DS称作(RD),RD与典型存贮器的允许信

12、号(OE)的定义相同。 R/W(读/写输入):R/W管脚也有两种操作模式。选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期,DSO为高电平时,R/W高电平指示读周期,R/W低电平指示写周期;选INTEL时序,R/W信号是一低电平信号,称为WR。在此模式下,R/W管脚与通用RAM的写允许信号(WE)的含义相同。 CS(片选输入):在访问DS12887的总线周期内,片选信号必须保持为低。 IRQ(中断申请输入):低电平有效,可作微处理的中断输入。没有中断条件满足时,IRQ处于高阻态。IRQ线是漏极开路输入,要求外接上接电阻。 RESET(复位输出):当该脚保持低电平时间大于2

13、00ms,保证DS12887有效复位。 DS12887模块: DS12887的内部逻辑结构图: 74ls164芯片:芯片作用简要说明:74LS164是一个串行输入并行输出的移位寄存器(串行输入,并行输出),在此实验的作用是用于数据送往164中使其按要求显示。74LS164与数码管连接图:164 为 8 位移位寄存器,其主要电特性的典􀩟值如下:􀩟号 fm Pn54/74164 36MHz 185mW54/74LS164 36 MHz 80mW当清除端(CLEAR)为低电平时,输出端(QAQH)􀨛为低电平。串行数据输入端(A,B)可控制数据。当

14、 A、B 任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下 Q0 为低电平。当 A、B有一个为高电平,则另一个就允许输入数据,并在 CLOCK 上升沿作用下决定Q0 的状态。 引出端符号、CLOCK 时钟输入端、CLEAR 同步清除输入端(低电平有效)、A,B 串行数据输入端、QAQH 输出端逻辑及封装图:七、实验代码分析: 按“NEXT”键,调整秒位;按“LAST”键,调整分位;按MON键,调整时位;按“NEXT”键,调整秒位;按“LAST”键,调整分位;按MON键,调整时位;OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段

15、控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf: equ 60h ; 显示缓冲 ljmp StartLEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h db 00HDelay: ; 延时子程序 mov r7, #00DelayLoop: djnz r7, DelayLoop djnz r6, Delay retDisplayLED: mov r0,

16、#LEDBuf mov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 关所有八段管 mov a, r0 mov B, #8 ; 送164 74LS164DLP: rlc a mov r3, a mov acc.0, c mov dptr, #DAT164 anl a,#0fdh movx dptr, a mov dptr, #CLK164启动74LS164芯片 orl a,#02h movx dptr, a anl a,#0fdh movx dptr, a

17、 mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管 mov r6, #1 call Delay mov a, r2 ; 显示下一位 rl a mov r2, a inc r0 djnz r1, Loop ret 此段代码主要是启动LS164 芯片和显示 6段八段管TestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 输出线置为0 mov dptr, #IN movx a, dptr ; 读入键状态 cpl a anl a, #0fh ; 高四位不用

18、ret此段代码:从A口送出低电平,如果有键按下,C口读回的也是低电平KeyTable: ; 数字键码定义 db 00h, 01h, 04h, 07h db 0fh, 02h, 05h, 08h db 0eh, 03h, 06h, 09h db 0dh, 0ch, 0bh, 0ah db 10H,11H,12H,13H,14H db 15H,16H,10H,10H,10HGetKey: MOV 13H,#06H 表示 键的列数 MOV 12H,#20H 控制那一列输出低电平 0010 0000Key2: MOV A,12H CPL A 被检测的列输出为0 其他列输出为1 MOV R7,A MOV

19、 DPTR,#0E101H MOV A,R7 MOVX DPTR,A MOV A,12H CLR C RRC A同等于RR A MOV 12H,A MOV DPTR,#0E103H MOVX A,DPTR 读入PC端口,检测待测列哪行按键被按下 MOV R7,A MOV A,R7 CPL A MOV R7,A MOV A,R7 ANL A,#0FH 保留低四位 MOV 14H,A DEC 13H MOV R7,13H MOV A,R7 JZ Key1 MOV A,14H JZ Key2Key1 : MOV A,14H JZ GetKey6 MOV A,13H ADD A,ACC ADD A,A

20、CC MOV 13H,A MOV A,14H JNB ACC.1,GetKey1 INC 13H SJMP GetKey3GetKey1: MOV A,14H JNB ACC.2,GetKey2 INC 13H INC 13H SJMP GetKey3GetKey2: MOV A,14H JNB ACC.3,GetKey3 MOV A,#03H ADD A,13H MOV 13H,AGetKey3: MOV DPTR,#0E101H CLR A MOVX DPTR,AGetKey4: MOV R7,#0AH LCALL Delay 调用延时子程序 LCALL TestKey 调用检测键盘是否有

21、键按下 MOV A,R7 JNZ GetKey4 检测按键是否放开,没有放开则继续检测 MOV R7,13H MOV A,R7 MOV DPTR,#KeyTable MOVC A,A+DPTR MOV R2,A RETGetKey6: MOV R2,#0FFH RETWaitRelease: mov dptr, #OUTBIT ; 等键释放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 retStart: mov r6,#02h call delay 调用延时子程序 mov 20

22、h,#00h mov 21h,#00h mov 22h,#00h 缓存 mov sp, #40h mov dptr,#0e100h mov a,#03h movx dptr,aStart1: mov dptr,#0fe0ah movx a,dptr anl a,#70h cjne a,#20h,start2 ;判断晶振打开否? sjmp start3start2: mov dptr,#0fe0bh ;设置SET=0,芯片正常工作.24/12=1,选24小时制. mov a,#82h movx dptr,a mov r0,#06h mov dptr,#0fe00h ;时分秒清零 mov a,#0

23、0hretun0: movx dptr,a inc dptr djnz r0,retun0 mov dptr,#0fe0ah mov a,#27h movx dptr,a ;打开晶振,输出方波。 inc dptr mov a,#5ah movx dptr,astart3: mov dptr,#0fe0ah movx a,dptr jnb acc.7,loop12 mov r5,#4dh djnz r5,$loop12: mov dptr,#0fe0bh mov a,#5ah movx dptr,aloop13: mov dptr,#0fe00h ;读秒,分,时 mov r1,#60h mov

24、r0,#03hloop11: movx a,dptr lcall Ptreg ;读取的值,进行拆字后送显示缓冲器60H-65H inc dptr inc dptr djnz r0,loop11 mov dptr,#0fe0bh call DisplayLED ; 调用显示子程序 call TestKey ; 有键入? jz loop12 ; 无键入, 继续显示 call GetKey ; 有键入,读入键码 cjne a,#14h,keep0 sjmp keep1 ;是NEXT键,调整秒位keep0: cjne a,#15h,keep2 sjmp keep3 ;是LAST键,调整分位keep2:

25、 cjne a,#16h,start1 sjmp keep5 ;是MON键,调整时位keep1: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mov a,20h lcall Hbcd cjne a,#60h,loop20 ;秒位不能超过60秒 mov 20h,#00h sjmp loop13loop20:mov dptr,#0fe00h movx dptr,a inc 20h sjmp loop13keep3: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mov a,21h lcall Hbcd cjne a,#60h

26、,loop21 ;分位不能超过60分 mov 21h,#00h sjmp loop13loop21:mov dptr,#0fe02h movx dptr,a inc 21h sjmp loop13keep5: mov dptr,#0fe0bh mov a,#0dah movx dptr,a mov a,22h lcall Hbcd cjne a,#24h,loop22 ;时位不能超过24小时 mov 22h,#00h sjmp loop13loop22:mov dptr,#0fe04h movx dptr,a inc 22h sjmp loop13Ptreg: push dph ;拆字子程序

27、push dpl push acc push b mov b,a anl a,#0fh mov dptr,#LEDMAP movc a,a+dptr orl a,#80h mov r1,a inc r1 mov a,b swap a anl a,#0fh mov dptr,#LEDMAP movc a,a+dptr mov r1,a inc r1 pop b pop acc pop dpl pop dph retHbcd: mov b,#100;单字节十六进制整数转换成单字节BCD码子程序 div ab mov r3,a mov a,b mov b,#10 div ab swap a orl

28、a,b retEND八、调试: 1、将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源,连接号线路。2、进入KEIL软件界面,点击项目/打开项目在C:KEILUV23000TC51配套实验例程中选择实验十,内有ASM和C51两种程序,进入ASM文件夹打开LED项目文件进入如图所示界面点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管显示00:00:00输出结果:00:00:00第一次00:00:01当按下NEXT键后00:01:01当按下LAST键后01:01:

29、01当按下MON键后九、学习体会: 经过本次微机课题的设计与研究,我们深入的学习了除课本以外的很多微机附件的内容,掌握了很多实验室操作技,我们在实际设计中遇到很多问题, 开始的时候选择的题比较多不知该选哪题看着班上那么多人都选同一题我也犹豫过最后我还是选择扩展时钟系统实验这个题目。通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。我不只在乎结果,更在乎的是这个过程。单片机在日常生活中应用广泛,其实80C51只是我们所接触的一种简单的单片机,其实我对现行单片机的一次深入的了解,能够提升我们将来在学习工作遇到的单片机设计问题。 对于芯片的使用,我查找了它的全套资料,发现了理论资料与实践上的区别。在这次课题设计过程中,攻克了很多之前都没有想过的难关,真的受益匪浅。这对我的理论和实验都有很大的提升,这对于我们今后的学习生活有很重要的意义。这个过程中,我虽花费了大量的时间和精力,也学会了与他人合作。毕竟一个人的力量是有限的,只有不断向他人学习才能不断进步。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号