大學生電子設(shè)計競賽16元器件相關(guān)電子鐘_第1頁
大學生電子設(shè)計競賽16元器件相關(guān)電子鐘_第2頁
大學生電子設(shè)計競賽16元器件相關(guān)電子鐘_第3頁
大學生電子設(shè)計競賽16元器件相關(guān)電子鐘_第4頁
大學生電子設(shè)計競賽16元器件相關(guān)電子鐘_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、FDR制作資料:fdrstudio實驗二十四:基于 LCD12864 的實時時鐘1.實驗?zāi)康?學會綜合利用各個模塊,將模塊綜合起來做成一個完整的系統(tǒng)。2.實驗原理:12864連線圖各個模塊在之前的實驗中都有詳細的介紹,在此就不作介紹了?,F(xiàn)在先詳細介紹下這個系統(tǒng)的操作。(1).硬件連線: 12864連線:將p11排針連到單片機P1口,12864的幾個腳都是在這個排針上,依次是RS、RW、E、PSB、NC(在我們提供的12864用不到該引腳)、RST,依次連接到P10,P11,P12,P13,P14,P15;1302連線:1302的腳在P3口雙排針靠近1302的那一排上,排針另一邊標著INT0、F

2、DR制作資料:fdrstudioINT1、T0,對應(yīng)著1302的SCK、IO、RST TXD、INT0;鍵盤連線:腳。將這幾個引腳用飛線依次連接到RXD、鍵盤的兩條線在排針P7靠近紅外接收頭的兩根上,最后一根是時鐘線sclk,上邊一根是數(shù)據(jù)線dat,將數(shù)據(jù)線接到單片機標INT1上將時鐘線接到單片機T0 上。蜂鳴器:在單片機旁標著P37的雙排針插上針帽,以矩陣鍵盤跟數(shù)碼管:蜂鳴器。在單片機靠數(shù)碼管跟矩陣鍵盤一側(cè)的雙排陣都插上針帽。自此,連線完成。18B20:將ps2 接口附近的排針P7 最遠離 LCD12864 的那一根用飛線接到單片機 P17 上.(2).系統(tǒng)操作說明:FDR制作資料:fdrs

3、tudio,這就是我們的操作主界面,接上ps2鍵盤后就可以自由操作這個系統(tǒng)了。按鍵盤的方向建或矩陣鍵盤的14,12鍵可以選擇同的功能模塊,被選中的模塊會產(chǎn)生反白效果當按下鍵盤回車鍵或矩陣鍵盤的13鍵時,就進入功能模塊了.主系統(tǒng)共有四個主要功能模塊:鍵盤輸入顯示模塊、時鐘服務(wù)模塊、音樂鍵盤輸入顯示模塊:模塊、溫度計服務(wù)模塊??梢栽谄聊簧巷@示在鍵盤上輸入的符號(本來想 設(shè)計成可以保存文本到24c02上,以后就算斷電了,開機后也可以打開。但由于程序空間不足,所以開發(fā)出那個功能。)沒加上 ,讀者有可一裁剪掉一 些其他模塊,騰出空間當按下1,進入文本輸入功能后,就可以輸入并顯示字符了。若想或win建,之

4、后便返回主操作界面。時鐘服務(wù)模塊:該模塊共有四個功能:,可按下esc1、顯示時間 包括 年 月 日時 分 秒FDR制作資料:fdrstudio2、修改時間3、設(shè)定鬧鐘 包括開啟鬧鐘、關(guān)閉鬧鐘、修改鬧鐘時間。當進入時鐘服務(wù)之后,便能顯示時間,按下回車鍵后便能進入修改時間,鬧鐘 的界面。修改完成便會自動返回時間顯示模式。按下win或esc便能返回主操作界面。音樂模塊:進入音樂模塊后就利用蜂鳴器能音樂了,按下矩陣鍵盤任意鍵的話就。能返回主界面了,同時蜂鳴器會發(fā)出悅耳溫度計服務(wù)模塊:此模塊功能有: 1.顯示溫度2、開啟溫度器(當溫度低于溫度下限或高于溫度上限時,蜂鳴器便會)3、修改溫度上限,下限。進入

5、該模塊后就能顯示溫度,若按下回車鍵按esc或win建便能推出。進入溫度服務(wù)功能后便能進入溫度計的其他功能界面。便能看到當前溫度。三.硬件圖:連線圖四、程序代碼。#include <reg52.h> #include"ds18b20.h" #include"DS1302.h" #include"TG12864P.h" #include"beep.h"FDR制作資料:fdrstudio#include"key.h" #include"led.h" #include&q

6、uot;keyboard.h" #include"delay.h"unsigned char(* bmp4)256=&bmp0,&bmp1,&bmp2,&bmp3; /圖片指針/*操作系統(tǒng)主框架系統(tǒng)全局變量區(qū):系統(tǒng)菜單指針系統(tǒng)功能函數(shù)指針fun*/unsigned char unsigned char clock_flag=0;=0;fun1=0,fun2=0,/鬧鐘開關(guān)的標志位/tsstunsigned char test=0;unsigned char * print=0,0,0,0,0,0,0;extern unsigned

7、char hour_so nd,minute_sound, zhengshu;/鬧鐘 時/鬧鐘 秒/*系統(tǒng)初始話函數(shù)包括全部模塊的初始化函數(shù)*/ void init_system()void Rese18B20(); LcmInit(); init_1302(); init_keyboard(); init_1302(); Time0_Init();/*接著是主函數(shù)與各個模塊的聯(lián)動函數(shù)*/FDR制作資料:fdrstudio/*12864與鍵盤聯(lián)動函數(shù)在12864上顯示鍵盤輸入的字符按下esc 或者win 建就要求操作者選擇是否保存輸入的文本。然后返回主界面*/ void screen()uch

8、ar t=0,temp=0,pos=0,/ cap=0,輸入光標位置,輸入一個字母或數(shù)字,光標加一flag=0;PutStr(0,2,"請選擇") /按下推出建: PutStr(1,0,"1 輸入文本");PutStr(2,0,"2 打開文本"); while(1)led_display(test); temp=sp2key_scan(); if(temp!=255)te t=temp; LcmClearTXT(); t=temp; temp=key_tablet; if(temp='1')flag=1; if(tem

9、p='2')flag=2;led_display(t); /數(shù)碼管顯示if(!flag)PutStr(1,1,"輸入錯誤!"); delayms(700); LcmClearTXT();esc或win后PutStr(0,2,"請選擇");/按下推出建: esc或win 后FDR制作資料:fdrstudioPutStr(1,0,"1 輸入文本");PutStr(2,0,"2 打開文本");if(flag)if(flag=1) break; else/ while(1)24c256中的文本temp=sp

10、2key_scan(); if(temp!=255) /按下任意建推出break; flag=3;if(flag=3)break;LcmClearTXT(); while(1)temp=sp2key_scan(); if(temp!=255)t= emp;if(t<48) /輸入為字母或其他符號if(pos=64)pos=0; LcmClearTXT();if(t=47) /刪除if(pos)Lcm_clear_char(pos);FDR制作資料:fdrstudioif(pos%2)pos-=1;if(pos)pos-;elsetemp=key_tablet; if(t>9&

11、;&t<36)temp-=cap*32;/根據(jù)cap令顯示為大寫或小寫input(temp,pos); pos+;if(t=48)/換行if(pos<48)pos+=16; Location_xy_12864(pos/16,(pos%16)/2);elseLcmClearTXT(); pos=0;if(t=49)cap=!cap;/cap:大小寫轉(zhuǎn)換if(t=51|t=52) /按下推出建: esc br ak;或win 后led_display(t);LcmClearTXT(); PutStr(0,2,"save ?");PutStr(1,0,&quo

12、t;y save");PutStr(2,0,"n no"); while(1)temp=sp2key_scan(); if(temp!=255)FDR制作資料:fdrstudioLcmClearTXT(); t=temp; temp=key_tablet;if(temp='y'|temp='Y')LcmClearTXT(); PutStr(1,2,"saving.");delayms(500); PutStr(2,2,"please wait.");/write_24c256(unsigned

13、 length,unsigned int add)delayms(1000); LcmClearTXT(); return;char*Data,unsignedcharif(temp='n'|temp='N')return;led_display(t); LcmClearTXT(); PutStr(1,1,"輸入錯誤!") delayms(800); LcmClearTXT(); PutStr(0,0,"save")PutStr(1 0,"y save");PutStr(2,0,"n no&q

14、uot;);/數(shù)碼管顯示/按下推出建:esc 或win 后/* *系統(tǒng)菜單選擇函數(shù)*/void_select()unsigned char key=0,temp1=0,temp2=0; temp1=getch();temp2=sp2key_scan(); if(temp1!=255)switch (temp1)/清除選中狀態(tài)case 12: PutBMP2(*4+1,0,5, 32,bmp,1);+;break;FDR制作資料:fdrstudiocase 功能函數(shù)case case=13: fun1=+1;break;/進入14:PutBMP2(15:PutBMP2(*4+1,0,5,*4+1

15、,0,5,32,bmp 32,bmp,1);,1);-;break;+=2;break;%4;PutBMP2(*4+1,0,5,32,bmp,0);/將選中的功能函數(shù)反白beeping(12,20);if(temp2!=255)switch(temp2)case 8:case 2:PutBMP2(*4+1,0,5, 32,bmp,1);,1);,1);+=2;break;+;break;-;break;case case case=6:PutBMP2(4:PutBMP2(48: fun1=*4+1,0,5,*4+1,0,5,+1;break;32,bmp 32,bmp%4;PutBMP2(*4

16、 1,0,5, 32,bmptest=temp2; beeping(12 20);,0) /將選中的功能函數(shù)反白led_display test);/* * 從鍵盤中獲取二位數(shù)* */ unsigned char get_num()unsigned char q=0,temp=0,key2=0; Location_xy_12864(2,2);while(1)key2=sp2key_scan(); if(key2<10)q+;if(q=1)temp+=key2*10; if(q=2)temp+=key2;FDR制作資料:fdrstudioinput(key_tablekey2,q); be

17、eping(12,20); delayms(100); if(q=2)break;return temp;/*時鐘服務(wù)函數(shù)包括:修改時間定鬧鐘開鬧鐘關(guān)鬧鐘*/ void clockser()unsignedchar key2=255,i=0,q=0,print7; LcmClearTXT();PutStr(0,2,"service:"); PutStr(1,0,"1.adjust timer"); PutStr(2,0,"2 set ring"); while(1)key2=sp2key_scan(); if(key2!=255)if

18、(key_tablekey2='1')LcmClearTXT(); PutStr(0,0,"hour"); doprint2=get_num();while(print2>24); LcmClearBMP(); LcmClearTXT(); PutStr(0,0,"min");doFDR制作資料:fdrstudioprint1=get_num();while(print1>60); LcmClearBMP(); LcmClearTXT(); PutStr(0,0,"month");doprint4=get_

19、num();while(print4>12); LcmClearBMP(); LcmClearTXT(); PutStr(0,0,"day");doprint3=get_num();while(print3>24); LcmClearBMP() LcmClearTXT(); PutStr(0,0,"year");doprint6=get_num );while(print7>99); LcmClearBMP(); LcmClearTXT(); v_BurstW1302T(print); LcmClearBMP()return;if(ke

20、y2=2)LcmClearTXT(); PutStr(0,0,"1.adjust ring"); PutStr(1,0,"2.open ring");PutStr(2,0,"3.close ring"); while(1)key2=sp2key_scan(); if(key2!=255)FDR制作資料:fdrstudioif(key_tablekey2='1')LcmClearTXT(); PutStr(0,0,"hour:"); doprint2=get_num();while(print2>

21、;24); LcmClearTXT(); PutStr(0,0,"min:");doprint1=get_num();while(print1>60); hour_sound=print2; minute_s und=print1; clock_flag=1; LcmClearTXT(); LcmClearBMP();return;if(key_tablekey2='2')clock_flag=1; LcmClearTXT();PutStr(1,0 "ring opened"); delayms(1600); LcmClearBMP

22、(); LcmClearTXT();return;if(key_tablekey2='3')clock_flag=0; LcmClearTXT(); PutStr(1,0,"ring closed"); delayms(1500); LcmClearBMP(); LcmClearTXT();return;FDR制作資料:fdrstudio/*ring鬧鐘檢測*/ void ring()if(clock_flag)if(reach_time()Play_Song(); clock_flag=0;/*溫度函數(shù)*/void warning()Read_18B20(

23、) ; if(zhengshu>temp_h|zhengshu<temp_l)while(1)beep=!beep; delayms(500); if(getch()!=255)break;play_respond();FDR制作資料:fdrstudio/*溫度服務(wù)函數(shù)查看溫度設(shè)置溫度上限設(shè)置溫度下限激活溫度功能*/ void temp_serve()unsigned char key2=255; LcmClearTXT(); PutStr(0,2,"service:"); PutStr(1,0,"1.open warner"); PutSt

24、r(2,0,"2.close warner"); PutStr(3,0,"3.set temperate") while(1)key2=sp2key_scan(); if(key2!=255)if(key2=1)LcmClearTXT(); PutStr(1,0,"warner delayms(1600); LcmClearTXT(); return;opened");if(key2=2)PutStr(1,0,"warner delayms(1600); LcmClearTXT(); return;if(key2=3)Lcm

25、ClearTXT();closed");PutStr(0,0,"the highesst"); temp_h=get_num();FDR制作資料:fdrstudioLcmClearTXT(); PutStr(0,0,"the highesst:"); put_num(2,3,temp_h); delayms(1500); LcmClearTXT(); PutStr(0,0,"the lowest"); temp_h=get_num(); LcmClearTXT(); PutStr(0,0,"the lowest&q

26、uot;); put_num(2,3,temp_l); delayms(1500); LcmClearTXT();return;void main()unsigned char i=0,key1=255, key2=255, emp2=1,2;unsigned int dela=0; init_system(); delayms(100); PutStr(1,2,"load ng ."); delayms(10000); LcmClearTXT();for(i=0;i<4;i+)PutBMP2(1+i*4,0,5,while(1)_select();32,bmpi,1);ring(); warning(); if(!fun2)/鬧鐘/溫度LcmClearBMP(); LcmClearTXT();for(i=0;i<4;i+)PutBMP2(1+i*4,0,5, 32,bmpi,1);fun2=255;FDR制作資料:fdrstudioswitch(fun1)case 1:case 2:LcmClearBMP();fun2=fun1;fun1=0;break;LcmClearBM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論