一、项目描述
本次项目是在上次用单片机做的计算器在有一定改进的基础上新加了时钟显示的
功能。之前所做的计算器只能实现简单的加减乘除运算,经后期改进,使其可以连续运算更符合我们心中的计算器的形象。加入时钟功能后,在使用单片机计算器功能时,如果一直不按键持续十秒,则进入时钟显示模式。进入时钟模式后,数码管前面两位显示时,中间两位显示分钟,后两位显示秒数。当之后任意键按下时,单片机恢复计算器模式,且根据按下键对进入时钟模式之前状态的数值进行处理。
二、 关键技术
在计算器功能上加入时钟模式,主要使用了时钟中断。
时钟中断:
void timer0_INT_SRV(void) interrupt 1
{
TL0 = (65536-46080)%256;//(65536-50000*11.0592/12)%256;
TH0 = (65536-46080)/256;
FOUT = !FOUT;
if(++count1s>=20) //计时1秒
{ time++;
count1s=0;
counter_key++;
if(counter_key>=60)
{counter_key=0;
fen++;
if(fen>=60)
{ fen=0;
shi++;
if(shi>=24)
{
shi=0;
}
}
}
}
}
可以看到在单片机的时钟中断程序里,每二十次中断,秒数变量counter_key自加一次,