欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    多功能万年历设计.docx

    • 资源ID:9320470       资源大小:502.46KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    多功能万年历设计.docx

    1、多功能万年历设计多功能万年历设计内容提要 2正文 2一、题目的意义. 2二、系统的功能. 3三、设计步骤. 31、硬件电路设计及描述 32、软件设计流程及描述 4四、注意事项 9五、心得与体会. 9六、参考文献 10内容提要:1、 任务实现1 硬件:数字钟设计要求是用单片机及8位LED数码管显示时、分、秒及其之间的间隔符,以24时计时方式运行,通过两个按键可实现时、分调整等功能;通过按键来改变频率以实现锋鸣器发出不同的响声;2 软件:利用RTX-51 Riny实时操作系统的多任务之间切换,实现在宏观上是多任务同时执行的。2、 技术指标显示方式:以扫描的方式通过八位数码管来显示;可用按键进行“时

    2、校”和“分校”以及“秒校”;时钟精度:30秒/天(未测试);程序应该模块化,即分成显示任务、校时任务、时间计时任务、改变响声任务;小函数构成大程序,让各模块相互充分独立、任务单一,并且每个任务都是在死循环内完成的;各任务完成必须是完成任务,然后自动放弃CPU,而不是使其他任务等待超时,因此各任务必须协调好,这是此次设计的难点,也是应该重点掌握的,否则就不需要用实时操作来设计了。3、 工作原理利用RTX-51 Riny操作系统的定时器T0进行定时产生最小时间片,各任务通过各自等待的时间片个数不同来实现在宏观上是多任务同时执行的。4、 系统设计框图:图1 硬件系统的总体设计框图正文:一、题目的意义

    3、: 本设计综合利用RTX-51 Riny知识完成一个单片机应用系统设计。该设计的主要任务是设计类似于电子手表,通过与无操作系统的对比可深入理解操作系统的优缺点;巩固和加深课程中所学的理论知识和实验能力,基本掌握单片机应用电路的一般设计方法,提高电子电路的设计和实验能力,加深对单片机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。二、系统的功能:利用单片机及8位LED数码管做成两位“时”显示,两位“分”显示,两位“秒”显示,以24时计时方式运行,并且可用按钮进行“时校”和“分校”以及“秒校”;通过按键可以改变频率来实现不同响声。三、设计步骤1、硬件电路设计及描述时钟计

    4、时器的硬件电路如下所示:图2 时钟计时器硬件原理图该电路采用AT89C52单片机最小化应用,采用共阴(1时此二极管亮)7段LED显示器,P2口作为位扫描输出,P0口输出段码数据,P1.0、P1.6口接2个按键来实现改变频率,P3.3、P3.4口接2个按钮开关,用于调整时间,采用12Mhz晶振,可提高秒计时的精确度。器件分析为了实现LED显示器的数字显示,系统采用动态扫描法实现LED的显示。共阴7段LED显示器显示原理: 管脚显示内容P0.7(DIP)P0.6(G)P0.5(F)P0.4(E)P0.3(D)P0.2(C)P0.1(B)P0.0(A)编码0001111113FH1000001100

    5、6H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH0100000040H10f电容作用:上电复位;7407作用:同相缓冲器,驱动数码管;12M晶振和两个电容组成晶体振荡器。2、软件设计流程及描述RTX-51 Riny操作系统的标准时间用定时器0产生一个中断,默认的是产生10,000脉冲,因此对于12Mhz晶振来说,最小时间片为10ms。每个任务的等待时间都是10ms整数倍。(一)各模块功能描述: (1)显示模块:功能说明:显示模块是以扫描方式实现八个

    6、数码同时显示的,在P2口每次选中一个数码,送去相应编码(位码),然后在P1口送去显示数字内容的编码(段码),设置时间时要调用显示模块;设置顺序为闹钟、时间、年月日、闹钟工作日,由于设置01H20H02H40H10H04H08H内容太多并且设置闹钟时间年月日时显示格式一样,这将导致无法区别所设置内容是什么,因此在设置时间时除了相应位置显示设置内容外,其他位均显示数码管中间的一横。还能在显示时间状态下通过菜单键跟加键的短按来实现显示闹钟时间及年月日星期,还有显示当前响声的频率大小,因此显示模块又分十四个部分:显示时间的时分秒、显示设置闹钟的时分秒(三部分)、显示设置时间的时分秒(三部分)、显示设置

    7、年月日(三部分)、显示设置闹钟的工作日、显示设置好的闹钟、显示设置好的年月日、显示响声频率。它们是相互独立的,不会相互干扰,每次循环都只执行其中某个部分。流程图:(2)时间计时模块:功能说明:采用24时式计时,此模块的时、分、秒,为了保证时分秒数字的有效性,都加入了判断,即使程序走乱了,也不会出现数字不对的情况;由于闹钟的工作是跟星期有关的,为了防止天数增加后和月份更替后以及年份更替后,导致闹钟失效,因为星期保留是更新前所设置的星期,因此为了闹钟能正常工作,应该在适当位置调用计算星期的任务。流程图:(3)按键模块:功能说明:通过两个按键设置年月日时间及闹钟,这两个都有短按及长按功能,按键都是应

    8、该有消抖的,但长按时就没有消抖了菜单键要在显示闹钟时长按进入设置状态,否则不能进入设置状态,以达到保护已经设置好的时间,在数码不停地闪烁时就表示已经进入设置状态,闪烁是因为程序不仅等着按键的松开,还要显示数码,而数码显示时间间隔正好稍微小于人眼对光暂留时,只要稍微耽误一会数码显示就会出现闪烁;短按两种情况:1、在设置状态下,短按则进入到设置下一位;2、在显示时间状态时短按则显示闹钟时间;加键只有在设置状态下长按才有效,长按能使设置位按相应数据不断加一直到松开按键才停止加一,加键短按也有有两种情况:1、在设置状态下,对相应位加一;2、在显示时间时短按则显示年月日星期。通过四个键来改变频率及退出声

    9、响,按三种递增方式改变频率,每次加5或10或20,这样就可以组合很多种频率了,从而可以发出更多不同的声音,通过显示模块可以得知正在发出多少频率的声响。为了使按键灵敏,此模块应该尽量少的程序,只为能及时检测出按键,每当检测到按键按下时就发送信号到按键状态来进行按键判断是何种按键状态,然后再将判断出按键状态发送到显示模块,那么按键信息就能及时反应出来。流程图:(此模块的流程图待修改,由于时间仓促,不能及时修改,见谅!)(4)响铃模块:功能说明:当本模块接收设置频率模块发来的信号后开始发出相应频率的响声,此模块应用了os_wait(K_IVL,ringx,0);函数,进一步了解到函数带参数后的方便性

    10、。流程图:(5)闹钟模块:功能说明:闹钟按工作日工作,即可设置成每周的周一到周五闹钟才会工作,当正常时分秒与闹钟时分秒相同时,ALARM闹钟模块就会发送信号到响铃模块,闹钟在响铃十秒钟后会自动关闭,也可以在通过按键关闭闹钟。流程图:(6)加数及设置闹钟的工作日模块:功能说明:当按键状态模块发来信号时,此模块对相应变量加数或者将相应星期设置为闹钟日,然后再将这些变化发送信号到显示模块。流程图:(7)按年月日计算星期模块:功能说明:本模块采用蔡勒(zeller)公式,(只适合于1582年10月15日之后的情形):星期年代+年代/4+世纪/4-2*世纪+13*(月份+1)/5+日-1然后再对上式所得

    11、星期求余,所得数即可表示为星期:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六其中的月份大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2005年1月1日要看作2004年的13月1日来计算)。流程图:(8)看门狗模块:功能说明:本模块在一定时间timeout内将部分模块中的变量赋于初值,如menu_num、add_num、menu_state、add_state,在使进入设置状态时,若停止按键的话就会使显示恢复到时间计时模块,以便继续显示时间;也可以在显示闹钟时间及年月日星期后返回显示时间计时模块。流程图:(二)

    12、各模块之间的关系:(三)、程序清单如下: (四)、调试及性能分析:硬件调试:可先检查应制板及焊接的质量情况在检查无误后可通电检查LED显示器的电亮状况。若亮度不理想,可调节P0口电阻的大小,一般情况先取200电阻可获得满意的亮度效果。软件调试:在LCA51编译器下进行程序编译及仿真调试应分段成以子程序为单位逐个进行,最后可结合硬件实时调试。性能分析:按设计程序分析,LED显示器动态到秒的频率约为167HZ,实际使用观察时完全没有闪烁,由于计时中断程序中加了中断延时误差处理,所以,实际设计时精度非常的高。四、注意事项1、 在焊接的时候要注意正确的焊接方法,以免虚焊、漏焊、短路、断路等错误的出现。

    13、2、 在编写程序的时候,注意指令的正确应用。3、 调试编译时,注意印质板与电源及仿真机的正确连接,避免答错线对电源仿真机造成的损坏。软件方面:4、 要注意RTX-51 Riny实时操作系统的某些函数的取值范围,如os_wait(K_IVL,ringx,0)中ringx的取值,它是8位的无符号数,那么它取值范围是0到255,超过的都以对256取余数为有效值;在计算星期时,由于年份不能用8位无符号(0到255)数表示了,只能用16位无符号数(0到65535),但这会增加存储负担,为节省空间应该在闰年与非闰年数组之间应该去掉一个,(在为计算星期的定义时很有可能会导致错误)。5、 在时间走动模块里,应

    14、当注意计算星期的插入,否则闹钟可能失效。6、 在显示模块要特别注意num的初值,一定要确定从哪位数码管开始显示,否则将出现乱码。7、 在闹钟模块里要注意c的初值,一定要在最后将c赋于0值,否则在闹钟下一次到来时就不会自动退出闹钟状态。8、 在按键扫描模块里要注意判断是否在设置状态,若已经进入设置状态就应该等待按键松开,否则可能发送多次菜单键短按下的信号,导致无法设置。9、在加数及设置闹钟的工作日的模块里,day的取值是与闰年和非闰年有差的;由于year无限制,并且year是16位无符号数(0到65535),因此得名万年历。10、在计算星期模块里,由于公式的关系要注意各变量的取值,注意算式能节省

    15、不少空间。五、心得与体会: 这个设计使用RTX-51 Tiny实时操作系统, C语言中主程序就是指main()函数。有人可能会认为RTX51 Tiny没有主程序,其实这是一种误解,因为这个操作系统的main()函数放在了配置文件中(RTX51 Tiny的主程序是以汇编代码的形式位于Rtx51tnyA51文件中)。这个操作系统要求每个任务都在死循环里实现,否则全局变量可能会被重复性地清零。实时操作系统使得对时间的控制方便简单,这很好地解决了用C语言编程时难于达到时间精确的问题,同时对各任务的执行时间及其顺序都不需要人为控制,只要调用RTX-51 Tiny中相应的函数就可以轻松达到要求了,各任务模

    16、块化,每个任务都是单一完成某件事,大大缩短了开发时间,到目前为止,RTX-51 Tiny的缺点是每个任务之间的切换需要一定的时间,对于小于1ms内要做出响应的任务无法完成(系统的任务轮转时间等于每次定时器溢出时间与TIMESHARING的乘积。定时器溢出时间由INT_CLOCK决定,它的范围是1000到65535个周期,而TIMESHARING的范围是1到5,0是单任务的,对于晶振为12MHz单片机来说,一个机器周期为1us,那么任务最小轮换时间为1ms),关于os_wait(K_TMO,3,0)函数CPU不会及时做出响应,因为在配置文件Conf_tny.A51中默认的最小任务轮换时间为50m

    17、s,但这个问题可以由os_wait(K_IVL,count,0)来解决,任务轮转时间片的长度设置得过大,则一些持续时间较短的事件无法响应。如果轮转时间设置得过小,则CPU的很大一部分功能被消耗在任务切换上了;如果任务多,处理时间长,无疑会无形中增加系统的负担。;个人感觉这个操作系统最难的就是os_wait()函数中时间片的取值,虽然是不用计算应该等待多久就是程序所需的时间,但这对初学者来说是无章可循的,只能是一步步地调试程序,并且要细心观察才能选择出较理想的时间片。时间片对各任务关系重大,时间片大了,就显示模块来说会出现闪烁的状况,对按键来说出现按键失灵的情况,等等。RTX-51Tiny操作系统小巧精悍,能极大地提高程序的可读性及可维护性,但也占用了一定的存储空间。这是一种以空间换取性能的办法。俗话说“好的开始是成功的一半”。为今后学习实时操作系统做了铺垫,在接下来的学习,要重视程序的模块化,锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。再次感谢老师的指导以及同学的帮助,是你们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。这个设计时间虽然很短,但我学习了很多的东西,感受颇深。六、参考文献:


    注意事项

    本文(多功能万年历设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开