课程设计实验报告-扩展时钟系统实验原理及分析报告.doc_第1页
课程设计实验报告-扩展时钟系统实验原理及分析报告.doc_第2页
课程设计实验报告-扩展时钟系统实验原理及分析报告.doc_第3页
课程设计实验报告-扩展时钟系统实验原理及分析报告.doc_第4页
课程设计实验报告-扩展时钟系统实验原理及分析报告.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

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扩展时钟系统实验原理及分析一、实验题目: 扩展时钟系统实验、实验目的及内容:掌握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台工作原理:在很多应用场合要求单片机系统不仅能够准确地采集数据,而且还需要了解产生这些数据的时刻,为单片机系统增加日历时钟是一项非常有用的技术,掌握这项技术便是本实验的目的。实验中使用dallas公司生产的日历、时钟加ram芯片ds12887。它具有接口简单,使用方便等特点,曾被用在586计算机中。其引脚分布如图所示,内部有128字节的非易失sram,具体分配也如图所示。14byte000dff00seconds01secodes alarm02minutes114byte03minutes alarm04hours05hours alarm06day of the week07day of the month08month09year0aregister 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、64hz、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时允许夏时制发生。寄存器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位写入010以打开晶振,然后读寄存器d以检查内部锂电池是否有效;接着根据需要对寄存器a、b进行设置。当需要修改日历时钟时,需要先使set位置1,当需要读日历时钟数据时,必须先查询寄存器a中的uip位,只有当其为0时,才能进行读取数据。 3、 接线方案: 图中使用了8051单片机和ds12887芯片并且讲数据送往74ls164芯片74ls138ys7 09in0四、程序框图: 开 始8155初始化ds12887初始化读秒、分、时拆字后送显示缓冲器调用显示子程序调用键扫子程序有键按下吗?是next键?是last键?是mon键?调整秒位调整分位调整时位nnynynynynnnnnnn五、实验步骤:1、设定仿真模式程序空间在仿真器上,数据空间在用户板上。2、从“接线图案”中看出,ds12887的/cs脚已连接u17译码器的ys7脚,于是可知ds12887的地址空间为0fe00h-0ffffh。3、硬件调试:因为ds12887内部有114个内部ram,在系统中的地址空间为:0fe0eh-0fe7fh,所以,可通过查看这一区域的数据读写来判断硬件是否有故障。超想-3000tc+keil仿真器,在windows调试环境下打开数据存贮器区,在0fe10h开始的地址上写入一串55h,然后按右键,弹出一窗口,点击“刷新”,如写入的的一串55h未被修改,则硬件无故障。4、设计程序并进行调试。六、所用芯片说明: ds12887芯片: 芯片作用简要说明:ds12887为dallas公司生产的实时时钟芯片,除具有实时钟功能外,它还具有114字节的通用ram。内藏锂电池,并与广泛应用的ds1287、mc146818b脚对脚兼容。(1)内含一个锂电池,断电情况运行十年以上不丢失数据。 (2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。 (3)二进制数码或bcd码表示时间、日历和定闹。 (4)12小时或24小时制,12小时时钟模式带有pwm和am指导,有夏令时功能。 (5)motorola5和inatael总线时序选择。 (6)有128个ram单元与软件音响器,其中14个作为字节时钟和控制寄存器,114字节为通用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级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器a编程改变。 ad0ad7(双向地址/数据复用线):总线接口,可与motorola微机系列和intel微机系列接口。 as(地址选通输入):用于实现信号分离,在ad/ale的下降沿把地址锁入ds12887。 ds(数据选通或读输入):ds/rd客脚有两种操作模式,取决于mot管脚的电平,当使用motorola时序时,ds是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,ds指示ds12887驱动双向总的时刻,在写周期,ds的后沿使ds12887锁存写数据。选择intel时序时,ds称作(rd),rd与典型存贮器的允许信号(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(复位输出):当该脚保持低电平时间大于200ms,保证ds12887有效复位。 ds12887模块: ds12887的内部逻辑结构图: 74ls164芯片:芯片作用简要说明:74ls164是一个串行输入并行输出的移位寄存器(串行输入,并行输出),在此实验的作用是用于数据送往164中使其按要求显示。74ls164与数码管连接图:164 为 8 位移位寄存器,其主要电特性的典值如下:号 fm pn54/74164 36mhz 185mw54/74ls164 36 mhz 80mw当清除端(clear)为低电平时,输出端(qaqh)为低电平。串行数据输入端(a,b)可控制数据。当 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 ; 段控制口(接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, #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 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 ; 高四位不用 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 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,acc 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 调用检测键盘是否有键按下 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 20h,#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,#00hretun0: 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 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: 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,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 ;拆字子程序 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;单字节十六

温馨提示

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

评论

0/150

提交评论