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