想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一个按键
2个回答
展开全部
你这数码管的1、2口就这么悬着或者接dp一起了真的没问题吗……
全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。
然后一个全局变量代表秒
编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第三种状态则没反应(或者要重置什么随你)
然后定时器,举弯一直开着就好,比如定10ms,每10ms就给一个全局变量的信森值+1
这个变量到了100的时候就说明一秒过了,重设值,全局变量的秒减一。如果到0了,就恢复60,然后给分钟的个位减一。如果个位不够减,就把十位减一然后个位设9。如果十位和不够减,就正坦闷是时间到了,flag设置为第三种状态
主函数在初始化各种状态之后不断循环给数码管显示数字,就ok了。
全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。
然后一个全局变量代表秒
编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第三种状态则没反应(或者要重置什么随你)
然后定时器,举弯一直开着就好,比如定10ms,每10ms就给一个全局变量的信森值+1
这个变量到了100的时候就说明一秒过了,重设值,全局变量的秒减一。如果到0了,就恢复60,然后给分钟的个位减一。如果个位不够减,就把十位减一然后个位设9。如果十位和不够减,就正坦闷是时间到了,flag设置为第三种状态
主函数在初始化各种状态之后不断循环给数码管显示数字,就ok了。
展开全部
并用一个按键啥?
51单片机我没设计过电路,用的学习板是现成的,对着电路图。
那个学习板上没有锁存器啥的,只能靠扫描来显示2个数字(就是两个数码管轮流显示数字,因首派为轮流速度非常快人眼看不出来一次其实只有一个在显示)
思路的话,按者哪贺键和计时器都用中断控制会比较方便,
1个全局变量代表当前剩余秒数,一个全局变量代表当前剩余分钟数(或者你要一个16位变量代表秒数也行)
因为计时器无法定时1秒所以还要一个变量来辅助计时器实现每1秒引发一次事件的操作。
加上按键,这样就有2个事件:一个是1秒引发一次,一个是按钮引发
按钮作用是什么我不缓搏知道,你自己看着办
计时器就是全局变量的秒数减去1
这两个事件实现以后,主程序逻辑就是一开始启用中断、启用定时器、初始化全局变量,
然后就开始死循环,循环里的功能是把全局变量里的数字显示到数码管上,只管显示不管别的的话还是很容易的,别的(计时、按钮)全部交给中断去完成,即可。
51单片机我没设计过电路,用的学习板是现成的,对着电路图。
那个学习板上没有锁存器啥的,只能靠扫描来显示2个数字(就是两个数码管轮流显示数字,因首派为轮流速度非常快人眼看不出来一次其实只有一个在显示)
思路的话,按者哪贺键和计时器都用中断控制会比较方便,
1个全局变量代表当前剩余秒数,一个全局变量代表当前剩余分钟数(或者你要一个16位变量代表秒数也行)
因为计时器无法定时1秒所以还要一个变量来辅助计时器实现每1秒引发一次事件的操作。
加上按键,这样就有2个事件:一个是1秒引发一次,一个是按钮引发
按钮作用是什么我不缓搏知道,你自己看着办
计时器就是全局变量的秒数减去1
这两个事件实现以后,主程序逻辑就是一开始启用中断、启用定时器、初始化全局变量,
然后就开始死循环,循环里的功能是把全局变量里的数字显示到数码管上,只管显示不管别的的话还是很容易的,别的(计时、按钮)全部交给中断去完成,即可。
来自:求助得到的回答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |