摘 要
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,廣泛應(yīng)用于學(xué)校、醫(yī)院、廣場(chǎng)、銀行等公共場(chǎng)合。本設(shè)計(jì)采用AT89C51單片機(jī),制作數(shù)碼管顯示24小時(shí)的數(shù)字鐘,上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示,從初始值開(kāi)始計(jì)時(shí),可用4×4矩陣鍵盤(pán)調(diào)整時(shí)間。
【關(guān)鍵詞】數(shù)字鐘 單片機(jī) 數(shù)碼管 矩陣鍵盤(pán)
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,具有精度高、功耗低、運(yùn)行穩(wěn)定、攜帶方便等特點(diǎn)。數(shù)字顯示“時(shí)、分、秒”的數(shù)字鐘,廣泛應(yīng)用于諸多場(chǎng)合,也是單片機(jī)課程中重要的項(xiàng)目訓(xùn)練。AT89C51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),4k字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),具備兩個(gè)16位定時(shí)/計(jì)數(shù)器。本設(shè)計(jì)利用單片機(jī)STC89C52 的定時(shí)器實(shí)現(xiàn)時(shí)鐘的運(yùn)行,“時(shí)、分、秒”用數(shù)碼管顯示,利用4*4矩陣鍵盤(pán)外部修改時(shí)間。大多數(shù)的數(shù)字鐘采用獨(dú)立鍵盤(pán),遞增或遞減式調(diào)整時(shí)間。本文采用程序調(diào)整時(shí)部、分部、秒部,數(shù)字鍵0-9直接調(diào)節(jié)時(shí)間,使用起來(lái)十分方便。
1 硬件系統(tǒng)
本設(shè)計(jì)方案是利用單片機(jī)內(nèi)部16位的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí), 配合軟件程序?qū)崿F(xiàn)24小時(shí)制計(jì)時(shí)功能。上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示, 從初始值(由程序設(shè)定)開(kāi)始計(jì)時(shí),可以用4×4矩陣鍵盤(pán)設(shè)置初始值或修改時(shí)間。如圖1所示,數(shù)字鐘的硬件電路圖。
1.1 單片機(jī)最小系統(tǒng)
本次設(shè)計(jì)的數(shù)字鐘,采用AT89C51單片機(jī),XTAL1和XTAL2引腳之間接一個(gè)12MHz的晶振和兩個(gè)33pF的電容。第9引腳接復(fù)位電路,第20引腳接地,第31引腳、40引腳接電源,組成了單片機(jī)最小系統(tǒng)。
1.2 數(shù)碼管
數(shù)碼管是最常用的顯示器件,分為靜態(tài)顯示和動(dòng)態(tài)顯示。動(dòng)態(tài)顯示就是將所有數(shù)碼管的段選線并聯(lián)在一起,通過(guò)控制位選信號(hào)來(lái)控制數(shù)碼管的點(diǎn)亮。輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。在proteus仿真中選擇六個(gè)共陽(yáng)數(shù)碼管合一的模塊7SEG-MPX6-CA-BLUE,123456表示位選的管腳,接P2口;abcdefg dp是數(shù)碼管的段碼輸入,接P1口。
1.3 矩陣鍵盤(pán)
本設(shè)計(jì)采用4×4矩陣鍵盤(pán),P3口的低四位作行線,P3口的高四位作列線,按鍵設(shè)置在行列的交點(diǎn)上,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,可組成16個(gè)鍵的鍵盤(pán)。判斷有無(wú)按鍵按下的方法是:1、由軟件設(shè)置行線高電平,列線低電平,設(shè)置P3=0x0F,判斷是否有鍵按下;2、如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。按下星號(hào)鍵后,依次修改時(shí)、分、秒部時(shí)間,按下0-9鍵有效,其它鍵無(wú)效。
2 軟件
主程序:如圖2所示,主程序流程圖,主程序主要對(duì)中斷源和定時(shí)器初始化。選用定時(shí)器T0,定時(shí)時(shí)間為50ms,由于系統(tǒng)晶振采用是12MHz,設(shè)置TH0=0X3C,TL0=0XB0。設(shè)置四個(gè)全局變量con、 second、minute、hour和中斷函數(shù)完成24小時(shí)計(jì)數(shù)。T0定時(shí)50ms,con計(jì)到20時(shí),1秒到,second加1;second計(jì)到60,1分鐘到,minute加1,second清零;minute計(jì)到60,1小時(shí)到,hour加1,minute清零;hour計(jì)到24,hour清零。
顯示子程序:六個(gè)共陽(yáng)數(shù)碼管依次顯示時(shí)、分、秒,采用動(dòng)態(tài)掃描的方式,LED0至LED5為數(shù)碼管位選,P1為數(shù)碼管段選。
鍵盤(pán)子程序:4*4矩陣鍵盤(pán),可以顯示數(shù)字0-9、*鍵、#鍵、字母A、B、C、D鍵。首先判斷是否有鍵按下,如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。有鍵按下后,延時(shí)一段時(shí)間后再次判斷是否按下,進(jìn)行防抖處理。定義變量keyshu,矩陣鍵盤(pán)按下的鍵轉(zhuǎn)化為十六進(jìn)制賦值給keyshu,以備鍵盤(pán)調(diào)整時(shí)間子程序調(diào)用。
鍵盤(pán)調(diào)整時(shí)間子程序:如果按下*鍵,進(jìn)行4*4鍵盤(pán)調(diào)整顯示時(shí)間子程序。利用變量keyshe依次對(duì)時(shí)部、分部、秒部高位和低位進(jìn)行修改,此時(shí)只有數(shù)字0-9鍵有效,其它鍵無(wú)效。同時(shí)還要注意小時(shí)的高位范圍為0-2,分和秒的高位范圍為0-5,按鍵超出此范圍則為無(wú)效。
keyshezhi()
{if(keyshu==0x0E)
{keyshe=1;keyshu=0x10;}
while(keyshe==1)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x02)
{hour=hour-(hour/10*10),
hour=hour+(keyshu*10);
keyshu=0x10;
keyshe=2;}
else keyshu=0x10;}}
while(keyshe==2)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x09)
{hour=hour-(hour%10),
hour=hour+keyshu;
keyshu=0x10;
keyshe=3;}
else keyshu=0x10;}}
……
}
3 結(jié)語(yǔ)
本數(shù)字鐘的設(shè)計(jì)是以單片機(jī)AT89C51為核心控制部件, 通過(guò)軟件編程實(shí)現(xiàn)4×4矩陣鍵盤(pán)調(diào)整時(shí)間功能。此方案進(jìn)行Protues仿真,發(fā)現(xiàn)在按下*鍵調(diào)整時(shí)間時(shí),再按下數(shù)字鍵,時(shí)分秒六個(gè)數(shù)碼管一起改變成相同的數(shù)。經(jīng)反復(fù)調(diào)試后,在鍵盤(pán)子程序中一直調(diào)用顯示子程序,就可以正常運(yùn)行。結(jié)果表明, 此數(shù)字時(shí)鐘設(shè)計(jì)方案簡(jiǎn)單可行, 運(yùn)行可靠, 還可以擴(kuò)展成帶有年、月、日的萬(wàn)年歷設(shè)計(jì)。
參考文獻(xiàn)
[1]鄒顯圣.基于AT89C51單片機(jī)數(shù)字時(shí)鐘的研究[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2009(05).
[2]徐瑋,沈建良.單片機(jī)快速入門(mén)[M].北京:北京航空航天出版社,2009.
[3]杜力,肖學(xué)玲.使用proteus 仿真矩陣鍵盤(pán)時(shí)遇到的問(wèn)題和解決方案[J].科技經(jīng)濟(jì)市場(chǎng),2011(02).
[4]樊清海,劉培培,耿娟平.基于單片機(jī)的數(shù)字時(shí)鐘C語(yǔ)言設(shè)計(jì)[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2010(01).
作者簡(jiǎn)介
蘆寶娟(1980-),女,遼寧省撫順市人。碩士學(xué)位?,F(xiàn)為貴州工業(yè)職業(yè)技術(shù)學(xué)院講師,主要從事物理和電子類的教學(xué)和科研工作。
作者單位
貴州工業(yè)職業(yè)技術(shù)學(xué)院 貴州省貴陽(yáng)市 550008endprint
摘 要
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,廣泛應(yīng)用于學(xué)校、醫(yī)院、廣場(chǎng)、銀行等公共場(chǎng)合。本設(shè)計(jì)采用AT89C51單片機(jī),制作數(shù)碼管顯示24小時(shí)的數(shù)字鐘,上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示,從初始值開(kāi)始計(jì)時(shí),可用4×4矩陣鍵盤(pán)調(diào)整時(shí)間。
【關(guān)鍵詞】數(shù)字鐘 單片機(jī) 數(shù)碼管 矩陣鍵盤(pán)
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,具有精度高、功耗低、運(yùn)行穩(wěn)定、攜帶方便等特點(diǎn)。數(shù)字顯示“時(shí)、分、秒”的數(shù)字鐘,廣泛應(yīng)用于諸多場(chǎng)合,也是單片機(jī)課程中重要的項(xiàng)目訓(xùn)練。AT89C51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),4k字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),具備兩個(gè)16位定時(shí)/計(jì)數(shù)器。本設(shè)計(jì)利用單片機(jī)STC89C52 的定時(shí)器實(shí)現(xiàn)時(shí)鐘的運(yùn)行,“時(shí)、分、秒”用數(shù)碼管顯示,利用4*4矩陣鍵盤(pán)外部修改時(shí)間。大多數(shù)的數(shù)字鐘采用獨(dú)立鍵盤(pán),遞增或遞減式調(diào)整時(shí)間。本文采用程序調(diào)整時(shí)部、分部、秒部,數(shù)字鍵0-9直接調(diào)節(jié)時(shí)間,使用起來(lái)十分方便。
1 硬件系統(tǒng)
本設(shè)計(jì)方案是利用單片機(jī)內(nèi)部16位的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí), 配合軟件程序?qū)崿F(xiàn)24小時(shí)制計(jì)時(shí)功能。上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示, 從初始值(由程序設(shè)定)開(kāi)始計(jì)時(shí),可以用4×4矩陣鍵盤(pán)設(shè)置初始值或修改時(shí)間。如圖1所示,數(shù)字鐘的硬件電路圖。
1.1 單片機(jī)最小系統(tǒng)
本次設(shè)計(jì)的數(shù)字鐘,采用AT89C51單片機(jī),XTAL1和XTAL2引腳之間接一個(gè)12MHz的晶振和兩個(gè)33pF的電容。第9引腳接復(fù)位電路,第20引腳接地,第31引腳、40引腳接電源,組成了單片機(jī)最小系統(tǒng)。
1.2 數(shù)碼管
數(shù)碼管是最常用的顯示器件,分為靜態(tài)顯示和動(dòng)態(tài)顯示。動(dòng)態(tài)顯示就是將所有數(shù)碼管的段選線并聯(lián)在一起,通過(guò)控制位選信號(hào)來(lái)控制數(shù)碼管的點(diǎn)亮。輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。在proteus仿真中選擇六個(gè)共陽(yáng)數(shù)碼管合一的模塊7SEG-MPX6-CA-BLUE,123456表示位選的管腳,接P2口;abcdefg dp是數(shù)碼管的段碼輸入,接P1口。
1.3 矩陣鍵盤(pán)
本設(shè)計(jì)采用4×4矩陣鍵盤(pán),P3口的低四位作行線,P3口的高四位作列線,按鍵設(shè)置在行列的交點(diǎn)上,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,可組成16個(gè)鍵的鍵盤(pán)。判斷有無(wú)按鍵按下的方法是:1、由軟件設(shè)置行線高電平,列線低電平,設(shè)置P3=0x0F,判斷是否有鍵按下;2、如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。按下星號(hào)鍵后,依次修改時(shí)、分、秒部時(shí)間,按下0-9鍵有效,其它鍵無(wú)效。
2 軟件
主程序:如圖2所示,主程序流程圖,主程序主要對(duì)中斷源和定時(shí)器初始化。選用定時(shí)器T0,定時(shí)時(shí)間為50ms,由于系統(tǒng)晶振采用是12MHz,設(shè)置TH0=0X3C,TL0=0XB0。設(shè)置四個(gè)全局變量con、 second、minute、hour和中斷函數(shù)完成24小時(shí)計(jì)數(shù)。T0定時(shí)50ms,con計(jì)到20時(shí),1秒到,second加1;second計(jì)到60,1分鐘到,minute加1,second清零;minute計(jì)到60,1小時(shí)到,hour加1,minute清零;hour計(jì)到24,hour清零。
顯示子程序:六個(gè)共陽(yáng)數(shù)碼管依次顯示時(shí)、分、秒,采用動(dòng)態(tài)掃描的方式,LED0至LED5為數(shù)碼管位選,P1為數(shù)碼管段選。
鍵盤(pán)子程序:4*4矩陣鍵盤(pán),可以顯示數(shù)字0-9、*鍵、#鍵、字母A、B、C、D鍵。首先判斷是否有鍵按下,如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。有鍵按下后,延時(shí)一段時(shí)間后再次判斷是否按下,進(jìn)行防抖處理。定義變量keyshu,矩陣鍵盤(pán)按下的鍵轉(zhuǎn)化為十六進(jìn)制賦值給keyshu,以備鍵盤(pán)調(diào)整時(shí)間子程序調(diào)用。
鍵盤(pán)調(diào)整時(shí)間子程序:如果按下*鍵,進(jìn)行4*4鍵盤(pán)調(diào)整顯示時(shí)間子程序。利用變量keyshe依次對(duì)時(shí)部、分部、秒部高位和低位進(jìn)行修改,此時(shí)只有數(shù)字0-9鍵有效,其它鍵無(wú)效。同時(shí)還要注意小時(shí)的高位范圍為0-2,分和秒的高位范圍為0-5,按鍵超出此范圍則為無(wú)效。
keyshezhi()
{if(keyshu==0x0E)
{keyshe=1;keyshu=0x10;}
while(keyshe==1)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x02)
{hour=hour-(hour/10*10),
hour=hour+(keyshu*10);
keyshu=0x10;
keyshe=2;}
else keyshu=0x10;}}
while(keyshe==2)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x09)
{hour=hour-(hour%10),
hour=hour+keyshu;
keyshu=0x10;
keyshe=3;}
else keyshu=0x10;}}
……
}
3 結(jié)語(yǔ)
本數(shù)字鐘的設(shè)計(jì)是以單片機(jī)AT89C51為核心控制部件, 通過(guò)軟件編程實(shí)現(xiàn)4×4矩陣鍵盤(pán)調(diào)整時(shí)間功能。此方案進(jìn)行Protues仿真,發(fā)現(xiàn)在按下*鍵調(diào)整時(shí)間時(shí),再按下數(shù)字鍵,時(shí)分秒六個(gè)數(shù)碼管一起改變成相同的數(shù)。經(jīng)反復(fù)調(diào)試后,在鍵盤(pán)子程序中一直調(diào)用顯示子程序,就可以正常運(yùn)行。結(jié)果表明, 此數(shù)字時(shí)鐘設(shè)計(jì)方案簡(jiǎn)單可行, 運(yùn)行可靠, 還可以擴(kuò)展成帶有年、月、日的萬(wàn)年歷設(shè)計(jì)。
參考文獻(xiàn)
[1]鄒顯圣.基于AT89C51單片機(jī)數(shù)字時(shí)鐘的研究[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2009(05).
[2]徐瑋,沈建良.單片機(jī)快速入門(mén)[M].北京:北京航空航天出版社,2009.
[3]杜力,肖學(xué)玲.使用proteus 仿真矩陣鍵盤(pán)時(shí)遇到的問(wèn)題和解決方案[J].科技經(jīng)濟(jì)市場(chǎng),2011(02).
[4]樊清海,劉培培,耿娟平.基于單片機(jī)的數(shù)字時(shí)鐘C語(yǔ)言設(shè)計(jì)[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2010(01).
作者簡(jiǎn)介
蘆寶娟(1980-),女,遼寧省撫順市人。碩士學(xué)位?,F(xiàn)為貴州工業(yè)職業(yè)技術(shù)學(xué)院講師,主要從事物理和電子類的教學(xué)和科研工作。
作者單位
貴州工業(yè)職業(yè)技術(shù)學(xué)院 貴州省貴陽(yáng)市 550008endprint
摘 要
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,廣泛應(yīng)用于學(xué)校、醫(yī)院、廣場(chǎng)、銀行等公共場(chǎng)合。本設(shè)計(jì)采用AT89C51單片機(jī),制作數(shù)碼管顯示24小時(shí)的數(shù)字鐘,上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示,從初始值開(kāi)始計(jì)時(shí),可用4×4矩陣鍵盤(pán)調(diào)整時(shí)間。
【關(guān)鍵詞】數(shù)字鐘 單片機(jī) 數(shù)碼管 矩陣鍵盤(pán)
數(shù)字鐘是人們?nèi)粘I钪谐R?jiàn)的電子產(chǎn)品,具有精度高、功耗低、運(yùn)行穩(wěn)定、攜帶方便等特點(diǎn)。數(shù)字顯示“時(shí)、分、秒”的數(shù)字鐘,廣泛應(yīng)用于諸多場(chǎng)合,也是單片機(jī)課程中重要的項(xiàng)目訓(xùn)練。AT89C51單片機(jī)是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),4k字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),具備兩個(gè)16位定時(shí)/計(jì)數(shù)器。本設(shè)計(jì)利用單片機(jī)STC89C52 的定時(shí)器實(shí)現(xiàn)時(shí)鐘的運(yùn)行,“時(shí)、分、秒”用數(shù)碼管顯示,利用4*4矩陣鍵盤(pán)外部修改時(shí)間。大多數(shù)的數(shù)字鐘采用獨(dú)立鍵盤(pán),遞增或遞減式調(diào)整時(shí)間。本文采用程序調(diào)整時(shí)部、分部、秒部,數(shù)字鍵0-9直接調(diào)節(jié)時(shí)間,使用起來(lái)十分方便。
1 硬件系統(tǒng)
本設(shè)計(jì)方案是利用單片機(jī)內(nèi)部16位的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí), 配合軟件程序?qū)崿F(xiàn)24小時(shí)制計(jì)時(shí)功能。上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示, 從初始值(由程序設(shè)定)開(kāi)始計(jì)時(shí),可以用4×4矩陣鍵盤(pán)設(shè)置初始值或修改時(shí)間。如圖1所示,數(shù)字鐘的硬件電路圖。
1.1 單片機(jī)最小系統(tǒng)
本次設(shè)計(jì)的數(shù)字鐘,采用AT89C51單片機(jī),XTAL1和XTAL2引腳之間接一個(gè)12MHz的晶振和兩個(gè)33pF的電容。第9引腳接復(fù)位電路,第20引腳接地,第31引腳、40引腳接電源,組成了單片機(jī)最小系統(tǒng)。
1.2 數(shù)碼管
數(shù)碼管是最常用的顯示器件,分為靜態(tài)顯示和動(dòng)態(tài)顯示。動(dòng)態(tài)顯示就是將所有數(shù)碼管的段選線并聯(lián)在一起,通過(guò)控制位選信號(hào)來(lái)控制數(shù)碼管的點(diǎn)亮。輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。在proteus仿真中選擇六個(gè)共陽(yáng)數(shù)碼管合一的模塊7SEG-MPX6-CA-BLUE,123456表示位選的管腳,接P2口;abcdefg dp是數(shù)碼管的段碼輸入,接P1口。
1.3 矩陣鍵盤(pán)
本設(shè)計(jì)采用4×4矩陣鍵盤(pán),P3口的低四位作行線,P3口的高四位作列線,按鍵設(shè)置在行列的交點(diǎn)上,行、列線分別連接到按鍵開(kāi)關(guān)的兩端,可組成16個(gè)鍵的鍵盤(pán)。判斷有無(wú)按鍵按下的方法是:1、由軟件設(shè)置行線高電平,列線低電平,設(shè)置P3=0x0F,判斷是否有鍵按下;2、如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。按下星號(hào)鍵后,依次修改時(shí)、分、秒部時(shí)間,按下0-9鍵有效,其它鍵無(wú)效。
2 軟件
主程序:如圖2所示,主程序流程圖,主程序主要對(duì)中斷源和定時(shí)器初始化。選用定時(shí)器T0,定時(shí)時(shí)間為50ms,由于系統(tǒng)晶振采用是12MHz,設(shè)置TH0=0X3C,TL0=0XB0。設(shè)置四個(gè)全局變量con、 second、minute、hour和中斷函數(shù)完成24小時(shí)計(jì)數(shù)。T0定時(shí)50ms,con計(jì)到20時(shí),1秒到,second加1;second計(jì)到60,1分鐘到,minute加1,second清零;minute計(jì)到60,1小時(shí)到,hour加1,minute清零;hour計(jì)到24,hour清零。
顯示子程序:六個(gè)共陽(yáng)數(shù)碼管依次顯示時(shí)、分、秒,采用動(dòng)態(tài)掃描的方式,LED0至LED5為數(shù)碼管位選,P1為數(shù)碼管段選。
鍵盤(pán)子程序:4*4矩陣鍵盤(pán),可以顯示數(shù)字0-9、*鍵、#鍵、字母A、B、C、D鍵。首先判斷是否有鍵按下,如果有鍵按下,依次按列掃描,確定是哪個(gè)鍵按下。有鍵按下后,延時(shí)一段時(shí)間后再次判斷是否按下,進(jìn)行防抖處理。定義變量keyshu,矩陣鍵盤(pán)按下的鍵轉(zhuǎn)化為十六進(jìn)制賦值給keyshu,以備鍵盤(pán)調(diào)整時(shí)間子程序調(diào)用。
鍵盤(pán)調(diào)整時(shí)間子程序:如果按下*鍵,進(jìn)行4*4鍵盤(pán)調(diào)整顯示時(shí)間子程序。利用變量keyshe依次對(duì)時(shí)部、分部、秒部高位和低位進(jìn)行修改,此時(shí)只有數(shù)字0-9鍵有效,其它鍵無(wú)效。同時(shí)還要注意小時(shí)的高位范圍為0-2,分和秒的高位范圍為0-5,按鍵超出此范圍則為無(wú)效。
keyshezhi()
{if(keyshu==0x0E)
{keyshe=1;keyshu=0x10;}
while(keyshe==1)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x02)
{hour=hour-(hour/10*10),
hour=hour+(keyshu*10);
keyshu=0x10;
keyshe=2;}
else keyshu=0x10;}}
while(keyshe==2)
{keymain();
display();
if(keyshu!=0x10)
{if(keyshu==0x0F)
{keyshe=0;keyshu=0x10;}
if(keyshu<=0x09)
{hour=hour-(hour%10),
hour=hour+keyshu;
keyshu=0x10;
keyshe=3;}
else keyshu=0x10;}}
……
}
3 結(jié)語(yǔ)
本數(shù)字鐘的設(shè)計(jì)是以單片機(jī)AT89C51為核心控制部件, 通過(guò)軟件編程實(shí)現(xiàn)4×4矩陣鍵盤(pán)調(diào)整時(shí)間功能。此方案進(jìn)行Protues仿真,發(fā)現(xiàn)在按下*鍵調(diào)整時(shí)間時(shí),再按下數(shù)字鍵,時(shí)分秒六個(gè)數(shù)碼管一起改變成相同的數(shù)。經(jīng)反復(fù)調(diào)試后,在鍵盤(pán)子程序中一直調(diào)用顯示子程序,就可以正常運(yùn)行。結(jié)果表明, 此數(shù)字時(shí)鐘設(shè)計(jì)方案簡(jiǎn)單可行, 運(yùn)行可靠, 還可以擴(kuò)展成帶有年、月、日的萬(wàn)年歷設(shè)計(jì)。
參考文獻(xiàn)
[1]鄒顯圣.基于AT89C51單片機(jī)數(shù)字時(shí)鐘的研究[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2009(05).
[2]徐瑋,沈建良.單片機(jī)快速入門(mén)[M].北京:北京航空航天出版社,2009.
[3]杜力,肖學(xué)玲.使用proteus 仿真矩陣鍵盤(pán)時(shí)遇到的問(wèn)題和解決方案[J].科技經(jīng)濟(jì)市場(chǎng),2011(02).
[4]樊清海,劉培培,耿娟平.基于單片機(jī)的數(shù)字時(shí)鐘C語(yǔ)言設(shè)計(jì)[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2010(01).
作者簡(jiǎn)介
蘆寶娟(1980-),女,遼寧省撫順市人。碩士學(xué)位?,F(xiàn)為貴州工業(yè)職業(yè)技術(shù)學(xué)院講師,主要從事物理和電子類的教學(xué)和科研工作。
作者單位
貴州工業(yè)職業(yè)技術(shù)學(xué)院 貴州省貴陽(yáng)市 550008endprint