資源簡(jiǎn)介
設(shè)計(jì)一個(gè)定時(shí)器。要求:能夠輸入定時(shí)時(shí)間,定時(shí)最長(zhǎng)時(shí)間為99分59秒;按啟動(dòng)鍵后開(kāi)始倒計(jì)時(shí),數(shù)碼管顯示當(dāng)前剩余時(shí)間,每秒鐘刷新一次數(shù)碼管顯示的數(shù)值;定時(shí)時(shí)間到達(dá)后,用數(shù)碼管閃爍指示。

代碼片段和文件信息
/*---------------------------------------------------------------------------
實(shí)驗(yàn)四??SPI按鍵顯示接口設(shè)計(jì)??
by?周健力
(2)定時(shí)器的設(shè)計(jì)
按鍵0-9為數(shù)字鍵
按鍵10為左移
按鍵11為右移
按鍵12為時(shí)鐘用戶設(shè)置值重裝
按鍵13為定時(shí)器啟動(dòng)
按鍵14為定時(shí)器暫停
按鍵15為系統(tǒng)重置
---------------------------------------------------------------------------*/
#include
unsigned?char?counter=0;
unsigned?char?systemflag=1;?//系統(tǒng)重置標(biāo)志??
unsigned?char?time[4]={9959};////當(dāng)前倒數(shù)計(jì)時(shí)各個(gè)位值
unsigned?int?total=5999;?//當(dāng)前倒數(shù)計(jì)時(shí)
unsigned?int?totalset=5999;//用戶設(shè)定值?
unsigned?char?wei=0;?//當(dāng)前設(shè)定位
unsigned?char?key_num=20;//鍵值寄存變量
void?main()
{
unsigned?int?i;
????SysClkIn(); //配置系統(tǒng)時(shí)鐘頻率
dog_set(); //看門狗配置
Port_Init() ;?//端口初始化
DelayMs(300);?//延時(shí)300ms,等待ZLG7289?復(fù)位完畢
ZLG7289_Init(40);?//調(diào)用ZLG7289?的初始化函數(shù)
????for?(?i=0;i<=3;i++?)
{
ZLG7289_Download(1i0time[i]);//前四個(gè)數(shù)碼管初始化
}
ZLG7289_Hide(0x0f);//?后四個(gè)數(shù)碼管消隱
Timer1_Init();//定時(shí)器1初始化
interrupt_Init(); //中斷初始化
ZLG7289_Flash(~(0x01< while(systemflag);?//系統(tǒng)重置標(biāo)志?
}
void?keyinterrupt()?interrupt 0??//按鍵中斷產(chǎn)生的單片機(jī)外部中斷0
{???
????unsigned?int?i;
key_num=ZLG7289_Key();
if(key_num==10)//左移只有在未開(kāi)始倒計(jì)時(shí)時(shí)有效
{
if(TR1==0)
{
wei=(wei+1)%4;
ZLG7289_Flash(~(0x01< }
}
else?if(key_num==11)//右移只有在未開(kāi)始倒計(jì)時(shí)時(shí)有效
{
if(TR1==0)
{
wei=(wei+3)%4;
ZLG7289_Flash(~(0x01< }
}
else?if(key_num>=0&&key_num<=9)//當(dāng)前位設(shè)置值只有在未開(kāi)始倒計(jì)時(shí)時(shí)有效
{
if(TR1==0)
{
time[wei]=key_num;
totalset=(time[0]*10+time[1])*60+time[2]*10+time[3];//用戶設(shè)置總計(jì)時(shí)
total=totalset;
ZLG7289_Download(1wei0key_num);
}
}
else?if(key_num==13)//開(kāi)始倒計(jì)時(shí)
{
ZLG7289_Flash(0xff);//取消閃爍顯示
TR1=1;//定時(shí)器1開(kāi)始工作
wei=0;//當(dāng)前設(shè)定位清零
}
else?if(key_num==14)//暫停計(jì)時(shí)
{
if(TR1==1)
{
TR1=0;//定時(shí)器1暫停工作
ZLG7289_Flash(~(0x01< }
}
else?if(key_num==12)//設(shè)置值重裝
{
Timer1_Init();//定時(shí)器初始化
ZLG7289_Flash(~(0x01< total=totalset;//當(dāng)前時(shí)鐘還原為設(shè)置值
time[3]=(total%60)%10;?
time[2]=(total%60)/10;
time[1]=(total/60)%10;
time[0]=(total/60)/10;
for?(?i=0;i<=3;i++?)
{
ZLG7289_Download(1i0time[i]);//前四個(gè)數(shù)碼管初始化
}
}
else?if(key_num==15)//系統(tǒng)復(fù)位
{
systemflag=0;
}
else?;
}
void?timerinterrupt()?interrupt?3 ???//定時(shí)器1中斷
{
????unsigned?int?i;
counter++;
TH1=0x3c;
TL1=0xb0;
TF1=0;
if(counter==20)
{
counter=0;
total--;
time[3]=(total%60)%10;?
time[2]=(total%60)/10;
time[1]=(total/60)%10;
time[0]=(total/60)/10;
for?(?i=0;i<=3;i++?)
{
ZLG7289_Download(1i0time[i]);
}
if(total==0)?
{TR1=0;
ZLG7289_Flash(0x00);
}
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????18863??2011-04-24?22:15??shiyansi_2_\shiyansi
?????文件???????3009??2011-04-24?22:15??shiyansi_2_\shiyansi.c
?????文件???????4405??2011-04-24?22:15??shiyansi_2_\shiyansi.hex
?????文件???????7017??2011-04-24?22:15??shiyansi_2_\shiyansi.LST
?????文件??????23619??2011-04-24?22:15??shiyansi_2_\shiyansi.M51
?????文件???????9085??2011-04-24?22:16??shiyansi_2_\shiyansi.OBJ
?????文件???????2198??2011-04-24?22:16??shiyansi_2_\shiyansi.Opt
?????文件????????165??2011-04-24?22:16??shiyansi_2_\shiyansi.plg
?????文件???????2164??2011-04-24?22:16??shiyansi_2_\shiyansi.Uv2
?????文件???????2188??2011-04-24?22:16??shiyansi_2_\shiyansi_Opt.Bak
?????文件???????2283??2011-04-24?22:16??shiyansi_2_\shiyansi_Uv2.Bak
?????文件???????1206??2011-04-24?22:16??shiyansi_2_\systemset.c
?????文件????????276??2011-04-24?22:16??shiyansi_2_\systemset.h
?????文件???????3081??2011-04-24?22:16??shiyansi_2_\systemset.LST
?????文件???????4873??2011-04-24?22:16??shiyansi_2_\systemset.OBJ
?????文件???????3520??2011-04-24?22:16??shiyansi_2_\ZLG7289.C
?????文件???????2868??2011-04-24?22:16??shiyansi_2_\ZLG7289.h
?????文件???????7686??2011-04-24?22:16??shiyansi_2_\ZLG7289.LST
?????文件???????8732??2011-04-24?22:16??shiyansi_2_\ZLG7289.OBJ
?????目錄??????????0??2011-04-24?22:16??shiyansi_2_
-----------?---------??----------?-----??----
???????????????107238????????????????????20
- 上一篇:VL53L0X_STM32例程
- 下一篇:讀取EXCEL到JTABLE
評(píng)論
共有 條評(píng)論