能详细讲解一下程序的功能和怎么实现的吗?从延时函数开始不懂了。在做课设,真的急

黄焕宁 2019-12-22 00:00:00

推荐回答

写程序之前一定要先从系统的级别构建一下程序的结构。你的程序中,有数码管扫描显示、按键扫描、RTC三部分。在构建程序结构的时候,考虑到几个部分的特点,一般情况如下:1、如果时间显示到秒,应在100ms左右读一次RTC。2、为了保证显示不删,应在20ms以内完成一次显示刷新,假设你用了20个数码管显示日期和时间。3、按键是随机的,需要检测,一般按键按下的时间不小于50ms,可以考虑在10ms检测一次按键。程序可以定义一个1ms的定时器,设置几个变量对定时器进行计数。每个1ms定时到时,自加对定时器的计数,并更新数码管显示,20ms更新完20个数码管。每到10ms检测一次按键,记录状态,与上次状态进行比较,如果连续两次或三次检测到按键按下,设置按键动作的标记,并确定如何更改显示,改变显存。如果不在设置状态,每100ms读一次RTC的值,将值更新到显存。如果数码管需要调整亮度,可以将1ms定时器改为100us,分给每个数码管的1ms内,改变其点亮的时间,就可以调出十种亮度。用这种架构做这个程序,处理器负担很轻,对所有的外设的响应一样迅速。你会感到51单片机还是能干很多活的。
连仲月2019-12-22 00:37:03

提示您:回答为网友贡献,仅供参考。

其他回答

  • 人眼的视觉暂留时间大概在二十四分之一秒左右所以一般电视电影至少是24帧以上,才会看起来是连续的动作,延时的时间设置小于40ms即可。延时太短会加重cpu的负担,所以具体数值要自己权衡。写延时函数有两个方法:1.如果有用到实时操作系统,可以用OS的API,比如:sleep202.没有用RTOS时,一般用循环语句来实现延时。具体循环次数需要通过系统的主频来计算。代码例子循环次数100x500=50000次,延时时间=单次循环的时间x50000:inti=0,j=0;fori=0;i<100;i++{forj=0;j<500;j++{;}。
    龚孝雄2019-12-22 00:19:23
  • 实话是,没有固定的参数,原因是,首先51的主频是不一定的,然后一般延时看的是对应的汇编语言代码,也就是对应的一条汇编指令执行的时间而定的。因此,从C语言里面不容易实现精确的延时处理。一般的处理方式是,使用keil或者其他软件的调试,在延时函数的前后加上断点,查看前后执行的时间,然后逐渐的修改for循环里面的数值,使之比较接近想要的延时时间。由于使用延时的不精确性,建议使用定时器实现类似的功能即可。
    齐方杰2019-12-22 00:07:07

相关问答

上海金改龙头股有哪些?
1、中国平安股票601318,最新股价69.33元,市盈率8.48。2015年三季报披露,平安信托业务保持稳健增长,积极推进战略转型落地实施。以“零售,对公,同业和PE”四大核心业务为基础,通过建立全新的风控体系与拨备机制和打造配套的IT与运营支持平台等措施,确保战略成功转型。
2、海通证券股票600837,最新股价12.90元,市盈率15.58。公司2014年年报中披露,公司初始投资成本2.03亿元,持有申万宏源6076.45万股股份,占比0.9%,报告期损益607.65万元,初始投资985.06万元持有交通银行0.04%股权,期末账面值1394.73万元,报告期损益597.87万元。
3、绿地控股股票600606,最新股价5.47元,市盈率4.48。金融产业是绿地集团重点发展的产业板块之一,近年来积极打造金融全产业链,组建绿地金融投资控股集团,入股上海农村商业银行,锦州银行,东方证券等多家金融机构,并发起成立了中国注册资本额最大的小额贷款公司-上海奉贤绿地小额贷款股份有限公司,及上海绿地融资担保有限公司,上海绿地典当有限公司等。
4、陆家嘴股票600663,最新股价11.18元,市盈率12.27。2014年1月份,公司全资子公司海通国际控股完成以7.15亿美元收购恒信金融集团100%股份事宜。恒信金融集团是中国租赁业内一家市场领先企业,客户数量超过3000名,拥有3家全资子公司,其中,恒信注册资本2.025亿美元,是中国最大的外资控股的租赁公司之一。