




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、電子產(chǎn)品設計與制作實訓報告電子產(chǎn)品設計與制作綜合實訓報告課 題 名 稱基于單片機的實時時鐘顯示裝置分 院/專 業(yè) */*班 級*學 號*學 生 姓 名* *指導教師:*20*年*月*日目錄1.課題背景及意義12.課題的基本內(nèi)容及關(guān)鍵問題23.課題調(diào)研情況綜述24.課題的方案論證25.電路設計35.1 電路系統(tǒng)框圖35.2 單片機最小系統(tǒng)電路35.3 聲光報警電路45.4 LCD1602電路45.5 DS1302模塊接口電路45.6 芯片選擇電路55.7 按鍵電路56.軟件(下位機)調(diào)試56.1 系統(tǒng)初始化函數(shù)56.2 定時器0中斷服務函數(shù)76.3 模式顯示函數(shù)76.4 串口判斷函數(shù)86.5 設
2、置時間日期函數(shù)96.6 聲光報警函數(shù)106.7 按鍵設置函數(shù)107.軟件(上位機)調(diào)試107.1 初始化函數(shù)107.2 讀計算機時間函數(shù)117.3 掃描可用串口函數(shù)117.4 自定義設置日期函數(shù)127.5 同步日期函數(shù)128.總結(jié)139.致謝13參考文獻14附錄一.系統(tǒng)(下位機)原理圖15附錄二.系統(tǒng)(下位機)實物圖16附錄三.系統(tǒng)(上位機)實物圖17附錄四.系統(tǒng)(下位機)程序18附錄五.系統(tǒng)(上位機)程序38441.課題背景及意義近年來,隨著電子產(chǎn)品的發(fā)展,隨著社會競爭的激烈,人們對數(shù)字時鐘的要求越來越高。時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間,忘記了要做的事
3、情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。因此從人們的日常生活到工廠的自動控制,從民用時鐘到科學發(fā)展所需的時鐘,現(xiàn)代人對時間的精度和觀察時間的方便有了越來越多的需求。人們要求隨時隨地都能快速準確的知道時間,并且要求時鐘能夠更直觀、更可靠、價格更便宜。這種要求催生了新型時鐘的產(chǎn)生。除此之外,由于對社會責任的更多承擔,人們要求所設計的產(chǎn)品能夠產(chǎn)生盡量少的垃圾、能夠消耗盡量少的能量。因此人們對時鐘的又有了體積小、功耗低的要求。傳統(tǒng)的機械表由于做工的高精細要求,造價的昂貴,材料的限制,時間指示精度的限制,使用壽命方面,以及其它方面的限制,已不能滿足人們的
4、需求。另外,近些年隨著科技的發(fā)展和社會的進步,人們對時鐘的要求也越來越高,而使得新型電子鐘表成了大勢所趨。20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下微機開始向社會各個領域滲透同時大規(guī)模集成電路獲得了高速發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應用對象特點的軟件結(jié)合,以作完善。另外單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)
5、設計思想和設計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。這正符合了現(xiàn)代時鐘的設計要求。另一方面,電子技術(shù)的告訴發(fā)展,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,這些使時間顯得更加寶貴,從時間就是生命,時間就是效率這些名言警句中就能看出。數(shù)字鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝
6、置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎的。因此,研究數(shù)字時鐘及擴大其應用,有著非常現(xiàn)實的意義。因此本文所做的數(shù)字時鐘采用了以單片機(STC89C52RC)為核心,結(jié)合相關(guān)的外圍元器件例如液晶顯示、按鍵電路、復位電路、鬧鐘
7、電路,再配以相應的軟件,達到制作簡易數(shù)字鐘的目的,能實現(xiàn)實時時鐘顯示的功能,能進行年、月、日、時、分、秒的顯示功能。其硬件部分難點在于元器件的選擇、布局及焊接。2.課題的基本內(nèi)容及關(guān)鍵問題本文是以實時時鐘芯片和STC單片機為主要研究對象,著重進行51單片機控制系統(tǒng)的設計研究和如何讀取實時時鐘芯片內(nèi)部時鐘信息的研究。主要內(nèi)容包括:1、 時間顯示系統(tǒng)的設計;2、 調(diào)整時間系統(tǒng)的設計;3、 年、月、日顯示系統(tǒng)的設計;4、 年、月、日調(diào)整系統(tǒng)的設計;5、 鬧鐘定時系統(tǒng)的設計;6、 鬧鐘定時響應系統(tǒng)的設計;7、 如何用定時器制作時鐘;8、 如何讀取時鐘芯片內(nèi)部時鐘信息;3.課題調(diào)研情況綜述與傳統(tǒng)的機械鐘
8、先比,電子鐘具有更優(yōu)異的優(yōu)點。由于電子鐘采用數(shù)字集成電路的發(fā)展和采用了先進的石英技術(shù),使電子鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點,電子鐘用于定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播及自動控制等各個領域。4.課題的方案論證方案一:采用STC89系列單片機,使用DS1302時鐘芯片,數(shù)碼管顯示,跳帽使單片機上電選擇是那種工作模式(有無時鐘芯片工作模式),按鍵調(diào)整時間、日期、鬧鐘,使用一個蜂鳴器報警。方案二:采用STC89系列單片機,使用DS12C887時鐘芯片,LCD1602顯示,跳帽使單片機上電選擇是那種工作模式(有無時鐘芯片工作模式),串口調(diào)整時間、日期、鬧鐘,使用一個蜂鳴器
9、、一個報警燈實現(xiàn)聲光報警。方案三:采用STC89系列單片機,使用DS1302時鐘芯片,LCD1602顯示,跳帽使單片機上電選擇是那種工作模式(有無時鐘芯片工作模式),串口和按鍵共存的方式調(diào)整時間、日期、鬧鐘,使用一個蜂鳴器、一個報警燈實現(xiàn)聲光報警。選用:經(jīng)過分析采用方案三,因為STC89系列單片機是;DS1302在生活中應用廣泛常見,網(wǎng)上售價為0.38元左右,而數(shù)碼管顯示內(nèi)容不夠,所以我們采用LCD1602,這款液晶屏在生活中也是常見,網(wǎng)上售價為5.3元左右。5.電路設計5.1 電路系統(tǒng)框圖設計并制作一個基于STC89C51 的系統(tǒng),根據(jù)所選方案四,設計系統(tǒng)框圖如下圖所示:5.2 單片機最小系
10、統(tǒng)電路單片機最小系統(tǒng)包括電源、單片機、時鐘電路、復位電路四個部分組成,所選用的MCU(單片機)為STC89C52RC,選用DIP40封裝,MCU的VCC帶有濾高頻及脈沖干擾的無極性電容C1(0.1uF)。相關(guān)電路圖如下圖所示:5.3 聲光報警電路5.4 LCD1602電路相關(guān)電路圖如下圖所示: 5.5 DS1302模塊接口電路 5.6 芯片選擇電路相關(guān)電路圖如下圖所示: 5.7 按鍵電路按鍵選用輕觸開關(guān),低電平觸發(fā),延時消抖的方式。相關(guān)電路圖如下: 6.軟件(下位機)調(diào)試6.1 系統(tǒng)初始化函數(shù)void Init()LcdInit();if(xz=0)/低電平 ChipFlag = 0;/沒有e
11、lseChipFlag = 1;if(ChipFlag = 0)Timer0Configuration();else Ds1302ReadTime();UsartConfiguration();UpdateTimeDisplay();UpdateDateDisplay();beep = 1;led = 0;這段程序為整個系統(tǒng)初始化程序,先初始化液晶屏,在判斷選用的是時鐘芯片模式還是自身定時器模式。如果是自身定時器的模式,則初始化定時器0,否則讀DS1302時鐘數(shù)據(jù)。LCD1602初始化函數(shù)為:void LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); /開顯示Lc
12、dWriteCom(0x0c); /開顯示不顯示光標LcdWriteCom(0x06); /寫一個指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設置數(shù)據(jù)指針起點若沒有選用使用時鐘芯片,則需要初始化定時器0,選用的晶振是11.0592MHz,所以會產(chǎn)生一定的誤差,相關(guān)的定時器0初始化函數(shù)為:void Timer0Configuration() TMOD = 0x01; /選擇工作方式1 TH0 = 0x3C; /設置初始值,定時50MS TL0 = 0xB0; EA = 1; /打開總中斷 ET0 = 1; /打開定時器0中斷 TR0 = 1; /啟
13、動定時器06.2 定時器0中斷服務函數(shù)void Timer0() interrupt 1 TH0 = 0x3C; /設置初始值 TL0 = 0xB0; Time+;我們設置的定時器0的初值大約為50ms,這樣進入20次中斷服務函數(shù)就是1秒。6.3 模式顯示函數(shù)void ModeDisplay()if(Mode = 0)if(ChipFlag=1)/如果有芯片就讀時鐘芯片,如果沒有就走定時器Ds1302ReadTime();UpdateDateDisplay();UpdateTimeDisplay();elseGoTime();else if(Mode = 1)UpdateDateDisplay
14、();UpdateTimeDisplay();else if(Mode = 2)UpdateClockDisplay(); 如果我們是模式0(走時模式),則判斷是否有時鐘芯片,如果沒有就走定時器,如果是模式1(調(diào)時模式),則顯示對應的內(nèi)容,模式3為設置鬧鐘模式。6.4 串口判斷函數(shù)void SerialPort()if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x0F)/setdata AA550F 0102100455設置日期state = 2;if(Data0=0xAA)&&(Data7=0x55)&
15、;&(Car_Data2=0xF0)/settime AA55F0 0102100455設置時間state = 1;if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x55)/setdata AA5555 0102100455設置鬧鈴state = 3;if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x30)&&(Car_Data3=0x30)&&(Car_Data4=0x30)&&(Car_Data5=0
16、x30)/AA XX 30 30 30 30 XX 55 led亮state = 4;if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x31)&&(Car_Data3=0x30)&&(Car_Data4=0x30)&&(Car_Data5=0x30)/滅state = 5;if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x32)&&(Car_Data3=0x30)&&(Car_Da
17、ta4=0x30)&&(Car_Data5=0x30)/鬧鈴開state = 6;if(Data0=0xAA)&&(Data7=0x55)&&(Car_Data2=0x33)&&(Car_Data3=0x30)&&(Car_Data4=0x30)&&(Car_Data5=0x30)/鬧鈴關(guān)state = 7;switch(state)case 1:SetTime();Data7=0X00;state=0;break;case 2:SetDate();Data7=0X00;state=0;break;
18、case 3:SetClock();Data7=0X00;state=0;break;case 4:LedToBright();Data7=0X00;state=0;break;case 5:LedToDestroy();Data7=0X00;state=0;break;case 6:BeepToSound();Data7=0X00;state=0;break;case 7:BeepToNoSound();Data7=0X00;state=0;break;default:break;6.5 設置時間日期函數(shù)void SetDate()nian = Car_Data3;yue = Car_Dat
19、a4;ri = Car_Data5;UpdateDateDisplay();if(ChipFlag=1)/如果有芯片就寫入時鐘芯片nian = nian /10 *16 + nian % 10 * 1;yue = yue /10 *16 + yue % 10 * 1;ri = ri /10 *16 + ri % 10 * 1;Ds1302SetDate();void SetTime()shi = Car_Data3;fen = Car_Data4;miao = Car_Data5;UpdateTimeDisplay();if(ChipFlag=1)/如果有芯片就寫入時鐘芯片shi = shi
20、/10 *16 + shi % 10 * 1;fen = fen /10 *16 + fen % 10 * 1;miao = miao /10 *16 + miao % 10 * 1;Ds1302SetTime();如果有時鐘芯片,設置的數(shù)據(jù)還要寫入時鐘芯片中,寫入之前要轉(zhuǎn)化為16進制,相對應的轉(zhuǎn)化計算方法為十進制的十位乘以十六的一次方加上十進制的各位乘以十六的零次方,例如設置為10,十六進制為16,1*161+0*160=16。6.6 聲光報警函數(shù)#define LedToBright(); led = 1;#define LedToDestroy(); led = 0;#define Be
21、epToSound(); beep = 0;#define BeepToNoSound(); beep = 1;由于此部分簡單,我們直接使用了宏定義的方式6.7 按鍵設置函數(shù)按鍵1為模式切換按鍵,一共有3種模式:1.走時模式2.調(diào)節(jié)時鐘模式3.設置鬧鐘模式按鍵2為位置移動按鍵,例如設置時鐘模式包括年、月、日、時、分、秒,按鍵3為加,例如時期時鐘加。按鍵4為減,例如時期時鐘減。7.軟件(上位機)調(diào)試7.1 初始化函數(shù)加載上位機界面時,會執(zhí)行一段初始化函數(shù)。public void Init()ReadDate();ReadTime();timer1.Enabled = true;SearchAnd
22、AddSerialToComBox(SPData, cboxCOM);cboxBaudRate.Text = "4800" btnEnable(false);/禁止某些打開串口才能用的按鍵首先我們讀計算機的日期(ReadDate();),時間(ReadTime();),然后使能定時器1(timer1.Enabled = true;),軟件打開會掃描們可用的串口設備(SearchAndAddSerialToComBox(SPData, cboxCOM);),將掃描出的串口號添加進comboBox,波特率默認為4800,同時我們禁止一些我們要打開串口才能用到的按鍵功能(btnE
23、nable(false);)。7.2 讀計算機時間函數(shù)相關(guān)代碼如下所示: public void ReadTime() string dateTime = DateTime.Now.ToLongTimeString(); labTime.Text = string.Format("0 ", dateTime); 7.3 掃描可用串口函數(shù)所謂的掃描可用的串口函數(shù),也就是利用try-catch和for語句逐個打開,如果出錯就繼續(xù)打開下一個。我們默認掃描20個。(個數(shù)過多會造成軟件速度過慢)private void SearchAndAddSerialToComBox(Seria
24、lPort Myport, ComboBox MyBox) bool find = false; String MyString = new string20; string Buffer; MyBox.Items.Clear(); int count = 0; for (int i = 0; i <= 20; i+) try Buffer = "COM" + i.ToString(); Myport.PortName = Buffer; Myport.Open(); MyStringcount+ = Buffer; MyBox.Items.Add(Buffer);
25、find = true; Myport.Close(); catch MyBox.Text = MyString0; if (!find) MessageBox.Show("沒有發(fā)現(xiàn)串口設備", "警告",MessageBoxButtons.OK,MessageBoxIcon.Error); return; 7.4 自定義設置日期函數(shù)用戶可能會根據(jù)自己的當?shù)貢r間來進行自定義設置。相關(guān)代碼如下所示:/設置日期 private void btnSetD_Click(object sender, EventArgs e) /3 4 5 nian yue ri
26、byte DATE = 0xAA, 0x44, 0x0F, 0x11, 0x22, 0x33, 0x30, 0x55 ; DATE3 = Convert.ToByte(cboxYear.Text.Substring(2,2); DATE4 = Convert.ToByte(cboxMonth.Text.Substring(0, 2); DATE5 = Convert.ToByte(cboxDay.Text.Substring(0, 2); SPData.Write(DATE, 0, 8); 其他設置函數(shù)如附件所示。7.5 同步日期函數(shù)用戶可能為了便利,設置為北京時間。同步網(wǎng)絡日期的相關(guān)代碼如下
27、所示:/同步網(wǎng)絡日期 private void btnSD_Click(object sender, EventArgs e) ReadDate(); byte DATE = 0xAA, 0x44, 0x0F, 0x11, 0x22, 0x33, 0x30, 0x55 ; DATE3 = Convert.ToByte(labDate.Text.Substring(2, 2); int j = labDate.Text.IndexOf('月');/6 如果6 取一位 如果7 取兩位 if (j = 6) DATE4 = Convert.ToByte(labDate.Text.Su
28、bstring(5, 1); j = labDate.Text.IndexOf('日');/如果8 取一位 如果9 取兩位 if (j = 8) DATE5 = Convert.ToByte(labDate.Text.Substring(7, 1); else if (j = 9) DATE5 = Convert.ToByte(labDate.Text.Substring(7, 2); else if (j = 7) DATE4 = Convert.ToByte(labDate.Text.Substring(5, 1); if (j = 9) DATE5 = Convert.T
29、oByte(labDate.Text.Substring(8, 1); else if (j = 10) DATE5 = Convert.ToByte(labDate.Text.Substring(8, 2); SPData.Write(DATE, 0, 8); 8.總結(jié)通過這次系統(tǒng)的實訓,使我受益匪淺,將這個學年所學過的知識整合起來,一起運行,如電子CAD、單片機,加深了對電子CAD和單片機的印象與理解,將理論知識更好的運用到現(xiàn)實的產(chǎn)品上,并且讓我們知道,仿真和實物是不一樣的,仿真可能是對的,但是下載到我們手上的實物,就不一定是對的了,而在實物中調(diào)試好的程序,仿真不定正確,讓我明白,模擬和現(xiàn)
30、實還是有區(qū)別的,如果需要學的更好,就必須要做實物,而不用仿真。在做實物的過程中,涉及到了元器件的選型,怎樣才能選擇到一塊適合做這個實物的CPU,選擇什么樣的傳感器就可以滿足我的這個功能,還要考慮到性價比,繪制電路板的過程中,應該非常嚴謹細心,因為板子畫出來是可以變成實物的,封裝出了偏差,是用不了的,我們在繪制電路板時,應該考慮信號的走向,板子的大小,地阻抗的干擾,以及雜波的干擾,發(fā)熱源的干擾、磁性元件的干擾等等。 在編程的過程中,原理圖是很重要的,在編寫程序出錯的情況下,首先查原理圖,看定義等是否有錯;在焊接的過程中,零件裝配圖也是很重要的,它可以快速幫你找到器件放那個位置,元件可以先擺在零件
31、裝配圖上,然后。根據(jù)一定的順序從裝配圖拿元器件一一往電路圖上焊接。這樣的做法可以快速提高自己的效率。通過這次實訓,使我能將理論知識應用到實際中,培養(yǎng)了我的動手能力,也更好的認識到自身不足的地方。使我再一次提升對單片機和電子CAD的興趣。同時應該將所學的理論知識更好的運用到現(xiàn)實生活中。9.致謝為期三周的實訓和理論學習結(jié)束了。這也預示著在*三年的學習生涯已過一半,再此,我要感謝*、*老師,在設計電路中,*給我提供了很多種方案,并且?guī)臀覀兯鸭恍╆P(guān)于這方面的資料,使我學習到了一款新的單片機,并且告訴我STC公司的單片機的一些慣性。使我基本掌握STC公司單片機的一些操作手法。感謝*老師,在程序上進行指
32、導,并多次優(yōu)化程序,使我的程序在資源上占用大大減小,這次的實訓,充分發(fā)揮了學校的*的教學宗旨,使我受益匪淺。參考文獻 1祝瑞花, 張欣. SMT設備的運行與維護M. 天津大學出版社, 2009.2郭勇. SMT設備的操作與維護J. 都市家教月刊, 2013(9):172-172.3陳慧. 提高SMT設備的使用效率探討C/ 第四屆SMT/SMD學術(shù)研討會. 1997.4朱三妹, 程利. 高職精品資源共享課建設的探索與實踐-以SMT設備操作與維護精品資源共享課建設為例J. 科教導刊, 2014(6).5范祖佑, 孟巖. 壓縮空氣凈化技術(shù)在SMT生產(chǎn)中的實際應用C/ 北京電子學會表面安裝技術(shù)委員會第
33、二屆學術(shù)年會. 1999.6王逸風. SMT設備編程連載系列之一:SMTT程應用精講一一編程實作篇之FujiFlexa系統(tǒng)的安裝J. 現(xiàn)代表面貼裝資訊, 2010(2):55-58.7楊同興. SMT生產(chǎn)線設備管理技術(shù)J. 世界產(chǎn)品與技術(shù), 1999(05).8陳學軍. SMT設備管理探討J. 電子工藝技術(shù), 1999, 20(02):49-51.9官偉, 陸小軍. 國外設備在SMT,THT生產(chǎn)線中所使用的接口標準J. 通信與廣播電視, 1998(3):63-66.10皇甫素翔, 官偉, 陸小軍. 國外設備在SMT、THT生產(chǎn)線中所使用的接口標準J. 通信與廣播電視, 1998(3):63-6
34、6.11呂小明, 張金芳. SMT高速貼片機CM82C的操作性能及維護J. 電子質(zhì)量, 1996(10):31-33.12魏斌, 張善忠. SMT生產(chǎn)線輸送帶控制系統(tǒng)的設計J. 中小企業(yè)管理與科技, 2014(6):320-321.13譚浩強.C語言程序設計(第二版)M.北京:清華大學出版社,1999:23-53.14張鑫. 單片機原理及應用M.2版.北京:電子工業(yè)出版社,2010:35-67.附錄一.系統(tǒng)(下位機)原理圖附錄二.系統(tǒng)(下位機)實物圖 附錄三.系統(tǒng)(上位機)實物圖附錄四.系統(tǒng)(下位機)程序/Main.c程序如下#include<reg51.h>#include<
35、;lcd.h>#include<Timer0.h>#include<ds1302.h>/-定義全局變量-/#define uchar unsigned char #define uint unsigned int sbit led = P10;sbit xz = P12;/低電平不用時鐘芯片sbit beep = P13; sbit K1 = P14;sbit K2 = P15;sbit K3 = P16;sbit K4 = P17;void UpdateDateDisplay();void UpdateTimeDisplay();bit ChipFlag = 0
36、;uchar state = 0;uchar receiveData;uchar Counter = 0;uchar Data8;uchar Car_Data8;uchar nz_s = 0,nz_f= 0,nz_m = 0;uchar shi = 1,fen = 2,miao = 3;uchar nian = 16,yue = 5,ri = 27;uchar Mode = 0;uchar Mode_sz_set = 0;/Mode = 0 正常走時/Mode = 1 設置時間/Mode = 2 設置鬧鐘void Keyscanf()char i;if(K1=0)/檢測按鍵K1是否按下Dela
37、y1ms(10);if(K1=0)Mode +;Mode_sz_set = 0;if(Mode = 1)/設置時間if(!ChipFlag)TR0 = 0;LcdWriteCom(0x80+0x0f);LcdWriteData(0+'0');else if(Mode = 2)/設置鬧鐘LcdWriteCom(0x01);Display(0,4,"Set Clolk");else if(Mode = 3)/正常走時Mode = 0;if(!ChipFlag)TR0 = 1;LcdWriteCom(0x01);UpdateDateDisplay();Update
38、TimeDisplay();while(!K1);if(Mode!=0)if(K2=0)/移動Delay1ms(10);if(K2=0)if(Mode = 1)Mode_sz_set +;if(Mode_sz_set = 6)Mode_sz_set = 0;if(Mode = 2)Mode_sz_set +;if(Mode_sz_set = 3)Mode_sz_set = 0;LcdWriteCom(0x80+0x0f);LcdWriteData('0'+Mode_sz_set);while(!K2);if(K3=0)/+Delay1ms(10);if(K3=0)if(Mode
39、 = 1)if(Mode_sz_set = 0)miao+;if(miao=60)miao=0;elseif(Mode_sz_set = 1)fen+;if(fen=60)fen=0;elseif(Mode_sz_set = 2)shi+;if(shi=24)shi=0;elseif(Mode_sz_set = 3)ri+;if(ri>31)ri=1;elseif(Mode_sz_set = 4)yue+;if(yue>12)yue=1;elseif(Mode_sz_set = 5)nian+;if(Mode = 2)if(Mode_sz_set = 0)nz_m+;if(nz_m
40、=60)nz_m=0;elseif(Mode_sz_set = 1)nz_f+;if(nz_f=60)nz_f=0;elseif(Mode_sz_set = 2)nz_s+;if(nz_s=24)nz_s=0;while(i<50)&&(K3=0) /檢測按鍵是否松開Delay1ms(10);i+;i=0;if(K4=0)/-Delay1ms(10);/消除抖動if(K4=0)if(Mode = 1)if(Mode_sz_set = 0)if(miao=0)miao = 59+1;miao-;elseif(Mode_sz_set = 1)if(fen=0)fen = 59
41、+1;fen-;elseif(Mode_sz_set = 2)if(shi=0)shi = 23+1;shi-;elseif(Mode_sz_set = 3)if(ri=1)ri = 31+1;ri-;elseif(Mode_sz_set = 4)if(yue=1)yue = 12+1;yue-;elseif(Mode_sz_set = 5)if(nian!=1)nian-;if(Mode = 2)if(Mode_sz_set = 0)if(nz_m=0)nz_m = 60;nz_m-;elseif(Mode_sz_set = 1)if(nz_f=0)nz_f = 60;nz_f-;elsei
42、f(Mode_sz_set = 2)if(nz_s=0)nz_s = 24;nz_s-;while(i<50)&&(K4=0) /檢測按鍵是否松開Delay1ms(10);i+;i=0;void UsartConfiguration()PCON |= 0x80;/使能波特率倍速位SMODSCON = 0x50;/8位數(shù)據(jù),可變波特率TMOD &= 0x0F;/清除定時器1模式位TMOD |= 0x20;/設定定時器1為8位自動重裝方式TL1 = 0xF4;/設定定時初值TH1 = 0xF4;/設定定時器重裝值ET1 = 0;/禁止定時器1中斷TR1 = 1;/啟動
43、定時器1EA = 1;ES = 1;void SendByte(unsigned char receiveData)SBUF=receiveData;/將接收到的數(shù)據(jù)放入到發(fā)送寄存器while(!TI); /等待發(fā)送數(shù)據(jù)完成TI=0; /清除發(fā)送完成標志位void Usart() interrupt 4receiveData = SBUF;/出去接收到的數(shù)據(jù)DataCounter+ = receiveData;if(Counter>7)Counter=0;if(Data0=0xAA)&&(Data7=0x55)Car_Data0=Data0;Car_Data1=Data1
44、;Car_Data2=Data2;Car_Data3=Data3;Car_Data4=Data4;Car_Data5=Data5;Car_Data6=Data6;Car_Data7=Data7;SendByte(Car_Data0);SendByte(Car_Data1);SendByte(Car_Data2);SendByte(Car_Data3);SendByte(Car_Data4);SendByte(Car_Data5);SendByte(Car_Data6);SendByte(Car_Data7);RI = 0;/清除接收中斷標志位void UpdateTimeDisplay()in
45、t _chushu = 0;if(ChipFlag=0)/如果沒有芯片_chushu = 10;else_chushu = 16;LcdWriteCom(0x80+0x44);LcdWriteData(shi/_chushu+'0'); LcdWriteData(shi%_chushu+'0');LcdWriteData(':');LcdWriteData(fen/_chushu+'0');LcdWriteData(fen%_chushu+'0');LcdWriteData(':');LcdWrit
46、eData(miao/_chushu+'0');LcdWriteData(miao%_chushu+'0');void UpdateClockDisplay()LcdWriteCom(0x80+0x44);LcdWriteData(nz_s/10+'0'); LcdWriteData(nz_s%10+'0');LcdWriteData(':');LcdWriteData(nz_f/10+'0');LcdWriteData(nz_f%10+'0');LcdWriteData('
47、:');LcdWriteData(nz_m/10+'0');LcdWriteData(nz_m%10+'0');void UpdateDateDisplay()int _chushu = 0;if(ChipFlag=0)/如果沒有芯片_chushu = 10;else_chushu = 16;LcdWriteCom(0x83);LcdWriteData('2');LcdWriteData('0');LcdWriteData(nian/_chushu+'0');LcdWriteData(nian%_chushu+'0');LcdWriteData('-');LcdWriteData(yue/_chushu+'0');LcdWriteData(yue%_chushu+'0');LcdWriteData('-');LcdWriteData(ri/_chushu+'0');Lcd
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)廢水處理與環(huán)境保護
- 工業(yè)廢水處理技術(shù)與策略
- 工業(yè)控制系統(tǒng)信息安全防護策略與實踐
- 工業(yè)建筑節(jié)能與環(huán)保技術(shù)
- 工業(yè)污染控制與治理技術(shù)進展
- 工業(yè)機器人技術(shù)發(fā)展現(xiàn)狀及趨勢分析匯報材料
- 工業(yè)自動化中的變電站設計與配置策略
- 工業(yè)污染防治措施分析
- 工業(yè)設計中的新材料技術(shù)及其優(yōu)勢分析
- 工業(yè)生產(chǎn)環(huán)境監(jiān)控技術(shù)及優(yōu)化策略
- 防火門維護與保養(yǎng)流程
- 《中國聯(lián)通IPv6培訓》課件
- 【MOOC】《Python語言程序設計》(東北大學)中國大學慕課答案
- 2024年黑龍江省《輔警招聘考試必刷500題》考試題庫附答案(滿分必刷)
- 2025年廣西宏桂集團招聘筆試參考題庫含答案解析
- 管道工程圖畫法基礎入門
- 電網(wǎng)智能化運維管理平臺建設
- 無處不在-傳染病知到智慧樹章節(jié)測試課后答案2024年秋南昌大學
- 2025年煤礦從業(yè)人員安全培訓考試題庫
- 公司人事管理制度范文(2篇)
- 國家開放大學電大22270資源與運營管理(統(tǒng)設課)期末終考題庫參考答案
評論
0/150
提交評論