【编者按】网学网电气工程与自动化类别频道为大家收集整理了“定时报时控制系统“提供大家参考,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn | ||||||||||||||||||||||||||||||||||||||||||||
三.软件设计 系统资源分配 为方便阅读程序,先对系统的资源分配加以说明。 1) 定时器。定时器0用作时钟定时,按方式1工作,每隔100MS溢出中断1次。 2) 片内RAM及标志位的分配与定义见表1
(2)软件流程。根据上述工作流程,软件设计可分为以下几个功能模块: 1) 主程序:初始化与键盘监控。 2) 计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。 3) 时间设置与报时设置:由键盘输入设置当前时间与定时启闭时间。 4) 显示:完成5位LED动态显示。 5) 键盘扫描:判断是否有键按下,并求取键号。 6) 定时比较:判断报时时间到否,如时间到,则启动报时处理程序。 7) 其他辅助功能程序,如键盘设置、拆字、合字、冬季或夏季时间表选择及假日停止报时等。 下面分模块进行软件设计: 1) 计时程序模块。如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0每隔100MS溢出中断1次,则循环中断10次延时时间为1S,上述过程重复60次为1MIN,分计时60次为1H,小时计时24次则时间重新回到00:00:00,同时星期计数加1,如加至7则回复得到0。 设系统使用6MHZ的晶振,定时器0工作在方式1,则100MS定时对应的定时器初值可由下式计算得到 定时时间=(2-定时器0初值)*(12/FOSC) 如果定时器0初值为30CBH,则TH0=3CH,TL0=0B0H 当系统使用其他频率的晶振时,可以由上式计算相应的定时器0初值,也可以改变定时时间。例如当系统晶振为12MHZ时,同样的初值对应的定时时间为50MS,则循环中断次数为20次时,延时时间为1S。 这里有两个问题需要特别重视。 第一,定时器溢出产生中断请求,CPU并不一定立即响应中煌,而可能需要延迟一定的中断响应时间之后才能响应中断,中断响应时间大约为3~8个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器0初值的方法来减少定时器0定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器0重装初值设为3CB7H~3CBFH。可以满足精度要求。 第二,时间是按十进制递增,而MCS-51系列单片机只有二进制加法指令,因此用加法指令计时必须进行二一十进制转换。 | ||||||||||||||||||||||||||||||||||||||||||||
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT | ||||||||||||||||||||||||||||||||||||||||||||
本文选自计算机毕业设计http://myeducs.cn |