經(jīng)過兩天熬夜的艱苦奮戰(zhàn),在原程序基礎(chǔ)上進行升級,添加按鍵多功能操作
新增功能:1. K1模式轉(zhuǎn)換,可自由切換:主界面顯示,時間調(diào)整,鬧鐘設(shè)置,溫度上下限設(shè)定等; 2. K2選定需要調(diào)整的位數(shù)。
切換至?xí)r間調(diào)整時,通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
切換至鬧鐘設(shè)置時,通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
切換至溫度上下限設(shè)定時,通過K3-"加",K4-"減"按鍵調(diào)整數(shù)值。
準(zhǔn)備擴展的新功能:鬧鐘音樂,喇叭開啟和關(guān)閉,。
操作說明:
開機進入主界面,顯示時鐘和溫度。按下K1時,進入模式選擇,(有時間調(diào)整,鬧鐘設(shè)置,溫度上下限設(shè)定等),當(dāng)K1按下四次后,長響一聲,回到主界面。
當(dāng)K1(模式選擇鍵)按下第一次,選擇在時間調(diào)整時,按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數(shù)值的加減,當(dāng)K2按到五次時,返回時間調(diào)整界面。
再按下K1(模式選擇鍵)按下第二次,進入到下一個模式,鬧鐘設(shè)置。按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數(shù)值的加減,當(dāng)K2按到五次時,返回鬧鐘設(shè)置界面。
再按下K1(模式選擇鍵)按下第三次,進入到下一個模式,溫度上下限設(shè)定。按下K2,選定需要調(diào)整的位數(shù),選定的位數(shù)會一秒鐘不停的閃爍。然后按下K3 “加”或者K4 “減”按鍵,進行數(shù)值的加減,當(dāng)K2按到五次時,返回溫度上下限設(shè)定界面。
當(dāng)K1(模式選擇鍵)按下第四次,返回到時鐘和溫度主界面顯示。
采用的是stc89c51單片機,代碼:
#include"reg51.h" #define uchar unsigned char #define uint unsigned int /****溫度 端口定義******/ sbit wx5=P2^4; sbit wx6=P2^5; sbit wx7=P2^6; sbit wx8=P2^7; sbit DQ=P3^6; uint temp, temp1,temp2, xs,H1,H2,L1,L2; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0X9c,0xc6,0x91,0xfc,0XE3}; /******延時程序*******/ void delay1(uint m) { uint i,j; for(i=m;i>0;i--) for(j=110;j>0;j--); } void delay(unsigned int m) { while(m--); } void Init_DS18B20() { unsigned char x=0; DQ = 1; //DQ復(fù)位 ds18b20通信端口 delay(8); //稍做延時 DQ = 0; //單片機將DQ拉低 delay(80); //精確延時 大于 480us DQ = 1; //拉高總線 delay(4); x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(20); } /***********ds18b20讀一個字節(jié)**************/ uchar ReadOneChar() { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 高電平拉成低電平時讀周期開始 dat>>=1; DQ = 1; // 給脈沖信號 if(DQ) dat|=0x80; // delay(4); } return(dat); } /*************ds18b20寫一個字節(jié)****************/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; //從高電平拉至低電平時,寫周期的開始 DQ = dat&0x01; //數(shù)據(jù)的最低位先寫入 delay(5); //60us到120us延時 DQ = 1; dat>>=1; //從最低位到最高位傳入 } } /**************讀取ds18b20當(dāng)前溫度************/ void ReadTemperature() { unsigned char a=0; unsigned b=0; unsigned t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換 delay(1); // this message is wery important Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 delay(1); a=ReadOneChar(); //讀取溫度值低位 b=ReadOneChar(); //讀取溫度值高位 temp1=b<<4; ? ? ? ? ? //高8位中后三位數(shù)的值 ? ?temp1+=(a&0xf0)>>4; //低8位中的高4位值加上高8位中后三位數(shù)的值 temp1室溫整數(shù)值 temp2=a&0x0f; //小數(shù)的值 temp=((b*256+a)>>4); //當(dāng)前采集溫度值除16得 實際溫度值 zhenshu xs=temp2*0.0625*10; //小數(shù)位,若為0.5則算為5來顯示 xs小數(shù) xiaoshu } /////////////////////////////////////////////////////////////////////// /****時鐘 端口定義******/ sbit wx1=P2^0; sbit wx2=P2^1; sbit wx3=P2^2; sbit wx4=P2^3; uchar qian,bai,shi,ge,miao1,miao2,count1,count2; uchar n1,n2,z1,z2;//設(shè)置鬧鐘變量 uchar code table1[]={0xc0,0xcf,0xa4,0x86,0x8b, 0x92,0x90,0xc7,0x80,0x82}; //////////////////////////////////////////// /***************按鍵調(diào)時程序***************/ sbit K1=P3^0; sbit K2=P3^1; sbit K3=P3^2; sbit K4=P3^3; sbit BEEP=P3^7; //// 定義蜂鳴器口 uchar K1num,K2num,K3num,K4num,K5num,K6num,K7num; ////////////////////////////////////////// /**********報警聲音**************/ bi(uint t) { int c,n; for(c=0;c
-
電路圖
+關(guān)注
關(guān)注
10358文章
10725瀏覽量
533342 -
51單片機
+關(guān)注
關(guān)注
274文章
5705瀏覽量
124430 -
電子鐘
+關(guān)注
關(guān)注
7文章
189瀏覽量
37039
原文標(biāo)題:51單片機電子鐘制作
文章出處:【微信號:changxuemcu,微信公眾號:暢學(xué)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
單片機電子鐘源程序及電路圖資料
![<b class='flag-5'>單片機電子鐘</b>源<b class='flag-5'>程序</b>及<b class='flag-5'>電路圖</b><b class='flag-5'>資料</b>](https://file.elecfans.com/web2/M00/49/5C/pYYBAGKhtEiAfyhNAAAbMI33lFQ901.jpg)
使用51單片機設(shè)計計數(shù)器的程序和電路圖的詳細資料免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計計數(shù)器的<b class='flag-5'>程序</b>和<b class='flag-5'>電路圖</b>的詳細<b class='flag-5'>資料</b>免費下載](https://file.elecfans.com/web1/M00/5D/41/pIYBAFt6KLyAM3QiAAAyATJjJ9o007.png)
使用51單片機設(shè)計的電子鐘程序和資料合集免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計的<b class='flag-5'>電子鐘</b><b class='flag-5'>程序</b>和<b class='flag-5'>資料</b>合集免費下載](https://file.elecfans.com/web1/M00/82/7E/o4YBAFw-3_yAJkIVAAWLT9xLqq0396.png)
使用51單片機控制LED實現(xiàn)8X8點陣的電路圖和程序及資料說明
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>控制LED實現(xiàn)8X8點陣的<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>及<b class='flag-5'>資料</b><b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/8E/E9/pIYBAFy20L6ARyZJAAJgza8BLgk090.png)
使用51單片機設(shè)計4X4矩陣鍵盤電子琴的電路圖和程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計4X4矩陣鍵盤<b class='flag-5'>電子</b>琴的<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/A4/82/pIYBAF1ftomAIChDAAFcO-adacQ634.png)
使用51單片機設(shè)計的紅外解碼器電路圖和程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計的紅外解碼器<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/9B/F5/o4YBAF0m7q2AYJGRAAKa0nOabZQ487.png)
使用51單片機設(shè)計電子琴的電路圖和程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計<b class='flag-5'>電子</b>琴的<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/9B/3C/o4YBAF0kCJ6AePnEAABW5Idns4w326.png)
使用51單片機設(shè)計矩陣按鍵數(shù)碼管顯示的超簡潔程序和電路圖免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計矩陣按鍵數(shù)碼管顯示的超簡潔<b class='flag-5'>程序</b>和<b class='flag-5'>電路圖</b>免費下載](https://file.elecfans.com/web1/M00/9A/31/o4YBAF0ewXeATODzAAEwaxqV7FA090.png)
使用51單片機設(shè)計交通燈的電路圖和C語言程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計交通燈的<b class='flag-5'>電路圖</b>和C語言<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/9A/30/pIYBAF0cZ5qAfAonAAF2UA41DCw385.png)
使用51單片機設(shè)計99到00倒計時的秒表電路圖和程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計99到00倒計時的秒表<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/97/85/pIYBAF0LRKOAD3joAADkrvNatgs740.png)
使用51單片機設(shè)計簡易電子琴的電路圖和代碼免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機設(shè)</b>計簡易<b class='flag-5'>電子</b>琴的<b class='flag-5'>電路圖</b>和代碼免費下載](https://file.elecfans.com/web1/M00/96/9A/o4YBAF0IV-SAIMSvAAG2E1EnPS4376.png)
使用51單片機進行電子鐘設(shè)計的電路圖和程序免費下載
![使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行<b class='flag-5'>電子鐘</b>設(shè)計的<b class='flag-5'>電路圖</b>和<b class='flag-5'>程序</b>免費下載](https://file.elecfans.com/web1/M00/95/BE/pIYBAF0AmUCAVJ8PAAIudAxumts413.png)
評論