版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)字指針式萬年歷設計摘要隨著科技的進步和人們對便捷生活的需求,傳統(tǒng)的紙質萬年歷已經無法滿足人們的需求。數(shù)字指針萬年歷的設計應運而生,結合了數(shù)字顯示和指針指示的形式,使得時間和日期的讀取更加直觀和方便。本文使用液晶模塊溫度傳感器、鬧鐘模塊、輸入模塊、紐扣電池、STC單片機、蜂鳴器為系統(tǒng)組成部分,設計了一款電子萬年歷。在設計過程中結合萬年歷的特點選擇合適的硬件,實現(xiàn)了集年、月、日、時、分、秒、農歷、星期、溫度、鬧鐘功能于一體的電子萬年歷。這種設計背后的研究目的在于提供一種簡單、易用且美觀的萬年歷解決方案,為人們的日常生活提供便利,并且適應現(xiàn)代化的數(shù)字化環(huán)境。通過數(shù)字指針萬年歷的研究,可以改善人們對時間和日期的感知,提高生活效率和時間管理能力。關鍵詞:物聯(lián)網(wǎng);傳感器;單片機
ABSTRACTWiththeprogressofscienceandtechnologyandpeople'sdemandforconvenientlife,thetraditionalpaperperpetualcalendarcannolongermeetpeople'sneeds.Thedesignofdigitalpointerperpetualcalendarcameintobeing,combiningtheformofdigitaldisplayandpointerindication,makingthereadingoftimeanddatemoreintuitiveandconvenient.Thispaperusesliquidcrystalmoduletemperaturesensor,alarmclockmodule,inputmodule,buttonbattery,STCmicrocontroller,buzzeraspartofthesystem,designedanelectronicperpetualcalendar.Inthedesignprocesscombinedwiththecharacteristicsofthecalendartochoosetheappropriatehardware,toachievetheyear,month,day,hour,minute,second,lunarcalendar,week,temperature,alarmclockfunctionsinoneelectroniccalendar.Theresearchbehindthisdesignaimstoprovideasimple,easy-to-useandaestheticallypleasingperpetualcalendarsolutionthatfacilitatesPeople'sDailylivesandADAPTStoamoderndigitalenvironment.Throughtheresearchofdigitalpointerperpetualcalendar,itcanimprovepeople'sperceptionoftimeanddate,improvelifeefficiencyandtimemanagementability.Keywords:InternetofThings;Sensor;Singlechipmicrocomputer目錄第1章緒論 第1章緒論1.1研究目的及意義該題目要求綜合運用單片機原理、低頻電子線路、數(shù)字電路與邏輯設計等相關知識,設計完成多功能電子萬年歷系統(tǒng)[1]。通過完成任務,掌握單片機設計開發(fā)的基本流程,增強動手實踐能力,培養(yǎng)分析和解決實際問題的能力,為后續(xù)的學習和工作打下良好基礎[2]。此題目可以良好的綜合應用所學知識,設計單片機系統(tǒng)能力,鍛煉軟件和硬件的設計能力,培養(yǎng)工程意識,團隊意識,開發(fā)創(chuàng)新思維。年來微電子技術發(fā)展迅速,以單片機為核心的智能電子產品層出不窮。人們在日常生活中對智能家居要求越來越高,而電子萬年歷恰是一種適用于各種場合的小型智能家居電子產品,為人們生活帶來便利。本文以STC單片機為總控元件設計了一款電子萬年歷,該電子萬年歷能夠顯示年、月、日、時、分、秒、農歷、星期、溫度和濕度,并具有鬧鐘功能,時間讀取方便、日期顯示直觀、溫濕度測量準確、功能多、成本低、市場前景廣闊[3]。隨著人類科技文明的發(fā)展,人們對于時鐘的要求在不斷地提高。時鐘已不僅僅被看成一種用來顯示時間的工具,在很多實際應用中它還需要能夠實現(xiàn)更多其它的功能。高精度、多功能、小體積、低功耗,是現(xiàn)代時鐘發(fā)展的趨勢[4]????。在這種趨勢下,時鐘的數(shù)字化、多功能化已經成為現(xiàn)代時鐘生產研究的主導設計方向。1.2國內外研究現(xiàn)狀20年來,內外很多研究機構在這個領域做了諸多努力。美DALLAS公司推出的DS12C887時鐘芯片將晶體振蕩、振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片上[5]。DS12C887時鐘芯片采用石英晶體的振蕩器和鋰離子電池,即使在停電狀態(tài)下,也可以保持有關信息和狀態(tài)不丟失,并利用后備的電池供電,因此它在沒電源供電的情況下仍可繼續(xù)工作10年。時標可選擇二進制或BCD碼表示,計時更準確;采用24小時制計時,有時鐘、鬧鐘和日歷(至2100年),有星期,閏年自動補償功能;工作電壓4.5~5.5V,電流范圍7~15mA,溫度0~70℃;14個時鐘控制寄存器,其內部含有專用接口電路,簡化了對外部電路的時序要求[6]。飛思卡爾公司的數(shù)字控制器芯片MC56F8013,提出了在Boost拓撲中基于平均電流CCM模式下PFC功率因數(shù)校正電路的數(shù)字化設計方案,分析了其硬件結構設計及軟件程序流程,在此基礎上利用Matlab進行了系統(tǒng)仿真并搭建了實驗樣機,仿真及實驗結果均表明該數(shù)字系統(tǒng)具有良好的功率因數(shù)校正效果[7]。美國德克薩斯儀表公司研制出一種全電子化模擬手表。該豐表平印“個液晶元件,用類似于長短針的方式來顯示時、分、秒、日期和星期。這種手表采用一種新奇的雙向多路復用法來進行復雜的多功能顯示,結染僅需要個觸點來激勵所有個液晶元件。電沉是一個長效高能最的鉀二氧化錳電池,每個電池可使用二年[8]。安會;蒲禹辰;李紀榕;馬紅靜;李莉在2022年的《基于單片機的電子時鐘設計與制作》中以單片機與數(shù)字電路的相關知識為基礎,對硬件的功能和軟件的編寫流程以及時鐘的制作進行詳細的介紹,并且提出了制作過程中出現(xiàn)的問題和解決辦法[9]。張云;曹劍俠;李景景在2022年的《基于單片機的多功能萬年歷設計》提出萬年歷一直是人們生活中記錄日期的主要工具,隨著現(xiàn)代人類社會科技水平的發(fā)展,萬年歷也從原來的紙質化轉變?yōu)楝F(xiàn)在的數(shù)字化,且廣泛應用于各種場所[10]????。因此,本文設計了基于單片機的多功能萬年歷,首先,以AT89C51單片機為核心控制模塊,搭配時鐘模塊和溫度感應模塊用于記錄日期時間和測量環(huán)境的溫度變化;其次,結合顯示模塊顯示測量的數(shù)值;最后,配備一個蜂鳴器用作提醒鬧鐘。該萬年歷的數(shù)據(jù)讀取直觀方便,成本與功耗低,可以實現(xiàn)萬年歷多功能化[11]。劉秀娟;李朋龍;邵娟;王雪娜;梁莉莉在2022年的《多功能電子萬年歷設計》利用Proteus仿真軟件和Keil編譯軟件進行仿真,實現(xiàn)了集年、月、日、時、分、秒、農歷、星期、溫度、濕度、鬧鐘功能于一體的電子萬年歷[12]。SchalmGregor;BrunsKristina;DrachenbergNina;GeyerNathalie;FoulkesNicholasS;BertolucciCristiano;GerlachGabriele在2021年的《FindingNemo'sclockrevealsswitchfromnocturnaltodiurnalactivity》中設計了一個時間機制用來研究魚類、檸檬和它們的動物鐘內共生體的多層次相互作用提供了第一個基礎[13]。TuomasSavolainen;DanielKeithWhiter;NooraPartamies在2016年的《Automaticsegmentationandclassificationofseven-segmentdisplaydigitsonauroralimages》中述了一種新的和全自動的方法來分割和分類數(shù)字在七段顯示。該方法適用于一個數(shù)據(jù)集,該數(shù)據(jù)集包括1973-1997年期間在芬蘭北部Sodankyl?observatory周圍的攝站拍攝的大約700萬張極光全天空圖像[14]。在每幅圖像中有一個時鐘顯示的日期和時間,連同反射整個夜空通過一個球面鏡。夜空的數(shù)字電影圖像包含有寶貴的科學信息,但如果沒有從顯示器中提取日期-時間的自動方法,就不可能使用。本文詳細描述了這種方法的實現(xiàn)和結果。1.3主要研究內容主要研究內容包括以下幾個方面:(1)選芯片時,應重點考慮功能實在、使用方便、單片存儲、低功耗、抗斷電的器件。(2)根據(jù)選用芯片設計外圍電路和單片機的接口電路。(3)在硬件設計時,結構要盡量簡單實用、易于實現(xiàn),使系統(tǒng)電路盡量簡單。(4)根據(jù)硬件電路圖,在開發(fā)板上完成器件的焊接。(5)根據(jù)設計的硬件電路,編寫控制芯片的單片機程序。(6)通過編程、編譯、調試,把程序下載到單片機上運行,并實現(xiàn)本設計的功能。(7)在硬件電路和軟件程序設計時,主要考慮提高人機界面的友好性,方便用戶操作等因素。(8)實現(xiàn)集年、月、日、時、分、秒、農歷、星期、溫度、鬧鐘功能于一體的電子萬年歷。
第2章系統(tǒng)的總體結構2.1設計方案使用液晶模塊溫度傳感器、鬧鐘模塊、輸入模塊、紐扣電池、STC單片機、蜂鳴器為系統(tǒng)組成部分,設計了一款電子萬年歷。在設計過程中結合萬年歷的特點選擇合適的硬件,實現(xiàn)了集年、月、日、時、分、秒、農歷、星期、溫度、鬧鐘功能于一體的電子萬年歷。2.2功能需求分析2.2.1技術路線(1)硬件部分需要液晶模塊溫度傳感器、鬧鐘模塊、輸入模塊、紐扣電池、STC單片機、蜂鳴器;(2)軟件平臺程序用keil5;(3)畫原理圖用AD;(4)編程語言用C語言;2.2.2預期結果數(shù)字指針式萬年歷硬件部分需要液晶模塊、溫度傳感器、鬧鐘模塊、輸入模塊、紐扣電池、STC單片機、蜂鳴器。液晶模塊可以顯示年月日、時分秒、星期、陽歷、溫度值和鬧鐘設定。溫度傳感器能夠檢測溫度,并將信息傳遞給單片機。鬧鈴模塊:系統(tǒng)采用蜂鳴器電路產生時鐘鬧鈴,通過頻率的不同可發(fā)出不同的音調,還可通過電位器控制蜂鳴器發(fā)出聲音的響度。常用的系統(tǒng)供電方式有電池盒供電,USB供電或電源接口供電,當系統(tǒng)掉電后,紐扣電池供電給時鐘芯片繼續(xù)工作??赏ㄟ^輸入模塊修改年月日、時分秒、星期、陽歷、溫度值和鬧鐘設定。總體結構框圖如下。圖2-1系統(tǒng)總體結構框圖2.3總體方案設計第一:理論知識準備??階段,??理解設??計課題??,認真??研究課??題所涉??及到的??內容,??能夠較??好的掌??握有關??題目的知識;第二:確定系統(tǒng)各??個模塊??,理清??各個模??塊之間??的關系??,收集??相關得??到軟硬件資料;第三:規(guī)劃課題,??確定系??統(tǒng)組成??結構,??勾畫出??大體系??統(tǒng)框架??并在結??構框架??的基礎??上提出??原理框圖;第四:利用軟件完成??硬件電??路部分??設計并??畫出各??部分電??路圖,??將系統(tǒng)??部件通??過接口??電路集??合在一??起,并??畫出電路圖;第五:根據(jù)系統(tǒng)控??制過程??完成軟??件設計??部分,??繪制出??主流程圖;第六:進行模擬??仿真,??檢查系??統(tǒng)是否??能夠按??照要求??實現(xiàn)控??制功能??,整理論文。2.4單片機型號選擇主控制芯片選擇STC89C52單片機,STC89C52是STC公司生產的一種低功耗、高性能8位微控制器。這種單片機其內部有8KB的FlashROM和512B的RAM,并且可以通過串口進行ISP程序下載,不需要反復插拔芯片,非常適合用于實驗。采用此片作為硬件核心,采用FlashROM,能以3V的超低電壓工作。且具有在線編程可擦除技術,當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞。最小系統(tǒng)原理圖如圖所示。圖2-2STC89C52單片機最小系統(tǒng)原理圖
第3章系統(tǒng)的硬件部分設計3.1系統(tǒng)總體設計本文使用液晶模塊溫度傳感器、鬧鐘模塊、輸入模塊、紐扣電池、STC單片機、蜂鳴器為系統(tǒng)組成部分,設計了一款電子萬年歷。在設計過程中結合萬年歷的特點選擇合適的硬件,實現(xiàn)了集年、月、日、時、分、秒、農歷、星期、溫度、鬧鐘功能于一體的電子萬年歷。并且該設計能實現(xiàn)的功能如下:1.溫度傳感器能夠檢測溫度,并將信息傳遞給單片機;2.當系統(tǒng)掉電后,紐扣電池供電給時鐘芯片繼續(xù)工作;3.可通過鬧鈴模塊:系統(tǒng)采用蜂鳴器電路產生時鐘鬧鈴;4.液晶模塊可以顯示年月日、時分秒、星期、陽歷、溫度值和鬧鐘設定;5.輸入模塊修改年月日、時分秒、星期、陽歷、溫度值和鬧鐘設定。如下圖為總體原理圖:圖3-1系統(tǒng)的總體原理圖3.2系統(tǒng)的主要功能模塊設計3.2.1蜂鳴器報警電路模塊設計蜂鳴器是一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發(fā)聲器件。結構一般為:1、蜂鳴器:發(fā)聲元件,在其兩端施加直流電壓(有源蜂鳴器)或者方波(無源蜂鳴器)就可以發(fā)聲,其主要參數(shù)是外形尺寸、發(fā)聲方向、工作電壓、工作頻率、工作電流、驅動方式(直流方波)等。這些都需要根據(jù)需要進行選擇。2、續(xù)流二極管:蜂鳴器本質上是一個感性元件,其電流不能瞬變,因此必須有一個續(xù)流二極管提供續(xù)流。否則,在蜂鳴器兩端會產生幾十伏的尖峰電壓,可能損壞三極管,并干擾整個電路系統(tǒng)的其他部分。3、濾波電容:作用是濾波,濾除蜂鳴器電流對其他部分的影響,也可以改善電源的交流阻抗,如果可能,最好是再并聯(lián)一個220uF的電解電容。4、三極管:起開關作用,其基極的高電平使三極管飽和導通,使蜂鳴器發(fā)聲;而基極低電平則使三極管關閉,蜂鳴器停止發(fā)聲。其原理圖為:圖3-2蜂鳴器報警電路原理圖3.2.2溫度傳感器模塊設計DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9-12位的數(shù)字值讀數(shù)方式?,F(xiàn)場溫度直接以"一線總線"的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類消費電子產品等。與前一代產品不同,新的產品支持3V~5.5V的電壓范圍,使系統(tǒng)設計更靈活、方便。DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同。其原理圖如下所示。圖3-318b20溫度傳感器3.2.3液晶顯示模塊設計12864LCD液晶顯示模塊是一款4位/8位并行、2線或3線接口方式,內部含有國際一級、二級簡體中文字庫的圖形點陣液晶模塊。顯示分辨率為128*64,內置8198個16*16點漢字,和128個16*8點ASCII字符集。該型號液晶模塊具有接口方式簡單,指令操作便捷的特點,可構成全中文人機交互圖形界面??娠@示8*4行16*16點陣的行字,也可完成圖形顯示。LCD12864分為帶中文字庫和不帶中文字庫兩種,有并行傳輸和串行傳輸兩種方式通常并行速度快。從電源地開始引腳依次為:電源地、電源正。其原理圖如下所示。圖3-4LCD12864液晶顯示屏原理圖3.2.4按鍵電路模塊設計本系統(tǒng)用到了5個按鍵,其中一個用作系統(tǒng)手動復位,另外4個采用獨立按鍵,該種接法查詢簡單,程序處理簡單,可節(jié)省CPU資源,4個獨立按鍵分別與AT89S52的P3.0、P3.1、P3.2、P3.3接口相連。原理圖如下所示。圖3-5按鍵電路原理圖3.2.5時鐘模塊設計DS1302是Dallas公司生產的一種實時時鐘芯片。它通過串行方式與單片機進行數(shù)據(jù)傳送,能夠向單片機提供包括秒、分、時、日、月、年等在內的實時時間信息,并可對月末日期、閏年天數(shù)自動進行調整;它還擁有用于主電源和備份電源的雙電源引腳,在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。另外,它還能提供31字節(jié)的用于高速數(shù)據(jù)暫存的RAM。DS1302時鐘芯片內主要包括移位寄存器、控制邏輯電路、振蕩器。DS1302與單片機系統(tǒng)的數(shù)據(jù)傳送依靠RST,I/O,SCLK三根端線即可完成。其工作過程可概括為:首先系統(tǒng)RST引腳驅動至高電平,然后在SCLK時鐘脈沖的作用下,通過I/O引腳向DS1302輸入地址/命令字節(jié),隨后再在SCLK時鐘脈沖的配合下,從I/O引腳寫入或讀出相應的數(shù)據(jù)字節(jié)。因此,其與單片機之間的數(shù)據(jù)傳送是十分容易實現(xiàn)的。其原理圖如下。圖3-6DS1302時鐘模塊原理圖第4章系統(tǒng)的軟件設計4.1軟件的主要流程系統(tǒng)的軟件部分主要要進行公歷計算程序設計,溫度測量程序設計,按鍵的掃描輸入等。程序開始運行后首先要進行初始化,把單片機的各引腳的狀態(tài)按程序里面的初始化命令進行初始化,初始化完成后運行溫度測量程序,讀取出溫度傳感器測量出來的溫度,然后運行公歷計算程序,得到公歷的時間、日期信息,再運行按鍵掃描程序,檢測有無按鍵按下,如果沒有按鍵按下則直接調用節(jié)日計算程序,根據(jù)得到的公歷日期信息計算出節(jié)日,如果有按鍵按下則更新按鍵修改后的變量后送給節(jié)日計算程序,由節(jié)日計算程序根據(jù)修改后的變量計算出對應的節(jié)假日,計算完成后運行顯示程序,顯示程序將得到的溫度數(shù)據(jù)、公歷信息、節(jié)假日信息送給對應的數(shù)碼管讓其顯示。系統(tǒng)的主程序流程圖如下所示。圖4-1主程序流程圖4.2蜂鳴器報警電路模塊軟件設計當系統(tǒng)運行到上位機設置的時間后,系統(tǒng)使蜂鳴器工作起到報警作用。流程圖如下所示。圖4-2蜂鳴器工作流程圖4.3溫度傳感器模塊軟件設計當單片機初始化完畢時,溫度傳感器開始工作,將采集周圍的溫度信息并發(fā)送到顯示屏上顯示出來。工作流程圖如下所示。圖4-3溫度傳感器工作流程圖
4.4液晶顯示屏模塊軟件設計當單片機初始化完成后,液晶顯示器將獲取來自于溫度傳感器和時鐘電路的數(shù)據(jù)并顯示出來。工作的流程圖如下所示。圖4-4液晶顯示屏工作流程圖
4.5按鍵模塊的軟件設計當單片機初始化完成后,通過觸摸按鍵傳感器,系統(tǒng)可正常開始工作。其中4號鍵可進行時間校準,3號鍵可進行加操作,2號鍵可進行減操作,5號鍵可退出校準功能。流程圖如下。圖4-5按鍵模塊工作的流程圖
4.6時鐘模塊的軟件設計當單片機初始化完成后,時鐘模塊開始采集年月日星期時分秒信息,并發(fā)送數(shù)據(jù)至液晶屏上顯示出來。工作流程圖如下所示。圖4-6時鐘模塊的工作流程圖
第5章系統(tǒng)測試5.1系統(tǒng)實物圖圖5-1元件擺放位置圖
5.2測試原理將元器件位置擺放好并引腳焊接完成后,導入程序。開始運行后,溫度傳感器和時鐘模塊將獲取溫度數(shù)據(jù)以及時間信息并逐一顯示在液晶顯示屏上,隨后可以通過對四個按鍵的控制來改變時間進行校準。也可以在程序中設定一個時間,當該時間到了之后蜂鳴器正常工作實現(xiàn)報警功能。實驗成功。實物圖如下所示。
第6章總結與展望6.1總結在整個設計過程中,硬件方面主要設計了STC89C52單片機的最小系統(tǒng)、DS1302接口電路、DS18B20接口電路、鬧鐘及LCD顯示;軟件方面借助各個渠道的資料,主要設計了陽歷數(shù)據(jù)讀取程序、陽歷轉陰歷程序、溫度采集程序、鬧鈴程序以及LCD顯示程序;系統(tǒng)的調試主要是通過一塊STC89C52開發(fā)板,再借助于Keil、STC以及少許自己搭建的外圍電路實現(xiàn)的;再此過程中,分步調試時顯示出了陽歷的日期及時間,還有實時溫度,集中調試時沒有達到預期效果。此萬年歷具有讀顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。6.2展望在整個設計過程中學到了許多沒學到的知識,在電路焊接時雖然沒什么大問題,但從中也知道了焊接在整個作品中的重要性,電路工程量大,不能心急,一個個慢慢來不能急于求成。反而達到事半功倍的效果。對電路的設計、布局要先有一個好的構思,才顯得電路板美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題,經過靜下心來思考,理清了思路,反而得心應手。在此次設計中,知道了做事要有一顆平靜的心,不要想著走捷徑,一步一腳印。也練就了我的耐心,做什么事都要有耐心。在本次設計中學到了很多很多東西,這是最重要的。總之,此次畢業(yè)設計使我的能力得到了全方位的提高。
參考文獻[1]張云,曹劍俠,李景景.基于單片機的多功能萬年歷設計[J].信息與電腦(理論版),2022,34(12):137-139.[2]劉秀娟,李朋龍,邵娟,王雪娜,梁莉莉,逯玉蘭.多功能電子萬年歷設計[J].計算機時代,2022(05):73-75.DOI:10.16644/33-1094/tp.2022.05.018.[3]連麗紅,蔡劍文.基于樹莓派的智能萬年歷[J].物聯(lián)網(wǎng)技術,2021,11(03):97-99+103.DOI:10.16667/j.issn.2095-1302.2021.03.029.[4]劉波.基于ETM8812K4的段碼液晶屏萬年歷的設計[J].電子制作,2021(01):9-12+60.DOI:10.16589/11-3571/tn.2021.01.003.[5]李景景,陳攀攀,尹光花.基于單片機的可檢測危害氣體的電子萬年歷設計[J].電子世界,2020(14):116-117.DOI:10.19353/ki.dzsj.2020.14.063.[6]安會,蒲禹辰,李紀榕,馬紅靜,李莉,張靜.基于單片機的電子時鐘設計與制作[J].電子制作,2022,30(01):71-74+100.DOI:10.16589/11-3571/tn.2022.01.020.[7]馬瑞,高美蓉.基于Proteus和8086的電子時鐘設計與仿真[J].辦公自動化,2021,26(19):46-47+21.[8]肖海玲.74HC595在單片機電子時鐘拓展IO口設計中的應用[J].電子技術與軟件工程,2021(13):101-102.[9]周彥明,梁偉鄯,李旺昆.基于MAX7219顯示驅動芯片的電子鐘的設計[J].電子世界,2021(09):110-113.DOI:10.19353/ki.dzsj.2021.09.045.[10]譚銘明,姚玲英,阮煜琴,梁俊焱,鐘楚洪.基于52單片機智能貼心時鐘的研究與設[J].電子制作,2021(09):16-19.DOI:10.16589/11-3571/tn.2021.09.005.[11]楊潔,葉晶晶.基于51單片機的多功能電子時鐘設計[J].電子測試,2021(07):20-21+31.DOI:10.16520/ki.1000-8519.2021.07.006.[12]李昊旻,王穎.基于VerilogHDL的簡易電子鐘設計[J].信息與電腦(理論版),2021,33(02):107-109.[13]郭辛.基于STM32的電子時鐘設計[J].綿陽師范學院學報,2020,39(11):28-31.DOI:10.16276/51-1670/g.2020.11.005.[14]程永茂,龔靖博,李湉雨.基于Multisim10.0的電子時鐘系統(tǒng)優(yōu)化設計[J].儀表技術,2020(12):28-32.DOI:10.19432/ki.issn1006-2394.2020.12.010.[15]沈康,楊俊婷,王穎.基于AT89C51單片機的電子時鐘[J].數(shù)碼世界,2020(11):65-66.[16]高偉元,楊棟,李盼亮,高晗,丁鵬.簡易數(shù)字電子時鐘的設計[J].甘肅科技,2020,36(11):13-14.[17]母應東.基于FPGA的多功能電子時鐘設計[J].信息記錄材料,2020,21(06):132-134.DOI:10.16009/13-1295/tq.2020.06.079.[18]劉文光,張銘銘.基于Proteus的電子時鐘仿真設計調試[J].濟南職業(yè)學院學報,2020(02):122-124.[19]高志偉.基于單片機的電子時鐘設計、仿真與制作[J].電子測試,2020(05):13-15.DOI:10.16520/ki.1000-8519.2020.05.003.[20]RomanovSA,KharkovchukNA,SinelnikovMR,etal.Developmentofannon-speechaudioeventdetectionsystem[A].2020IEEEConferenceofRussianYoungResearchersinElectricalandElectronicEngineering(EIConRus)[C].IEEE,2020:1421-1423.[21]RongC,LiuG,PingZ,etal.Fusionofinfraredandvisibleimagesbasedoninfraredobj[22]AirehrourD,CherringtonM,RajagopalK.Odourdetectionsystemforallergysufferers[A].202011thIEEEAnnualInformationTechnology,ElectronicsandMobileCommunicationConference(IEMCON)[C].IEEE,2020:193-200.[23]DepnerRoniseF.R.,PontinKarineP.,OtutumiLucianaK.,WestenhofenMoisés,BorgesKarenA.,FurianThalesQ.,doNascimentoVladimirP.,LovatoMaristela.Antimicrobialactivityofpoultryhatchbasketscontainingcopperinserts[J].JournalofAppliedPoultryResearch,2021(prepublish).注釋電路圖源代碼#include<reg52.h> //調用單片機頭文件#defineucharunsignedchar//無符號字符型宏定義 變量范圍0~255#defineuintunsignedint //無符號整型宏定義 變量范圍0~65535#include"math.h"#include"stdio.h"#include"string.h"#include"stdlib.h"ucharcodeshuzi[]="0123456789ABCDEF";sbitrs=P2^5; //寄存器選擇信號H:數(shù)據(jù)寄存器 L:指令寄存器sbitrw=P2^6; //寄存器選擇信號H:數(shù)據(jù)寄存器 L:指令寄存器sbite=P2^7; //片選信號下降沿觸發(fā)sbitbeep=P3^7; //蜂鳴器IO口sbitdq=P3^2; //18b20IO口的定義uinttemperature;//溫度變量ucharidatatime_beifen[3];ucharidatatime_shijian[3]={0,10,1}; //秒分時ucharcodetime_leng[3]={23,18,12};ucharcodetable1[][2]={{"零"}, {"一"}, {"二"}, {"三"}, {"四"}, {"五"}, {"六"}, {"七"}, {"八"}, {"九"}, {"十"}, {"初"} };bitflag_200ms=1;ucharmenu_1;ucharflag_clock_en; //鬧鐘標志位ucharopen1; //鬧鐘開標志位ucharflag_c_en;bitflag_100ms;voidhua_zizhong();//畫指針圖/*********************************************************************名稱:delay_1ms()*功能:延時1ms函數(shù)*輸入:q*輸出:無***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<115;j++);}#include"ds1302.h"/*********************定時器0、定時器1初始化******************/voidtime0_init() { EA=1; //開總中斷 TMOD=0X11; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時} /************延時函數(shù)*****************/voiddelay_uint(uintz){while(z--);}/************寫命令函數(shù)*****************/voidwrite_com(ucharcom){rw=0;rs=0;delay_uint(10);e=1;P0=com;delay_uint(20);e=0;}/************寫數(shù)據(jù)函數(shù)*****************/voidwrite_dat(uchardat){rw=0;rs=1;delay_uint(10);e=1;P0=dat;;delay_uint(20);e=0;}/***********************************************************函數(shù)名:addr_12864*功能:寫地址*說明:寫漢字時要寫個地址*輸入:無*返回:無**********************************************************/voidaddr_12864(ucharhang,ucharlie) //地址轉換{ ucharaddress; switch(hang) { case1:address=0x80+lie; break; case2:address=0x90+lie; break; case3:address=0x88+lie; break; case4:address=0x98+lie; break; default: break; } write_com(address);}/***********************************************************函數(shù)名:write_shu16*功能:在12864上顯示16進制數(shù)據(jù)*說明:*輸入:無*返回:無**********************************************************/voidwrite_shu16(ucharhang,ucharlie,uchardat){ addr_12864(hang,lie); //地址轉換 write_dat(shuzi[dat/16]); write_dat(shuzi[dat%16]); }/***********************************************************函數(shù)名:write_string*功能:在12864上顯示字符數(shù)據(jù)*說明:*輸入:無*返回:無**********************************************************/voidwrite_string(ucharhang,ucharlie,uchar*p){ addr_12864(hang,lie); //地址轉換 while(*p!='\0') { write_dat(*p); p++; delay_uint(50); }}/*****************控制光標函數(shù)********************/voidwrite_guanbiao(ucharhang,ucharlie,uchardate){ addr_12864(hang,lie); if(date==1) write_com(0x0f);//顯示光標并且閃爍 else write_com(0xc0);//關閉光標} /************12864液晶初始化函數(shù)*****************/voidinit_12864(){ delay_uint(200); write_com(0x30); delay_uint(200); write_com(0x30); delay_uint(200); write_com(0x0c); //開顯示光標的 delay_uint(200); write_com(0x01); delay_uint(2000); write_com(0x06); delay_uint(100);delay_uint(10000);}/*清除12864*/voidclear_12864(){ write_string(1,0,""); //1行 write_string(2,0,""); //2行 write_string(3,0,""); //3行 write_string(4,0,""); //4行 }/************初始化顯示*****************/voidinit_12864_dis(){ write_string(1,4,"00/00/00"); write_string(2,4,"月初"); write_string(3,4,"星期"); write_string(4,4,"00.0℃"); write_guanbiao(1,1,0);}/************初始化設置顯示*****************/voidinit_12864_set1(){ clear_12864(); write_string(1,0,"2013年00月00日"); write_string(2,0,"00時00分00秒"); write_string(3,0,"設置星期01"); write_string(4,0,"鬧鐘開00時00分"); if(open1==1) write_string(4,2,"開"); else write_string(4,2,"關"); write_guanbiao(1,1,1);}/***********************18b20初始化函數(shù)*****************************/voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(10); //15us dq=0; //給復位脈沖 delay_uint(200); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(100); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(20); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內的數(shù)據(jù)***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把總線拿低讀時間隙開始 value>>=1; //讀數(shù)據(jù)是低位開始 dq=1; //釋放總線 if(dq==1) //開始讀寫數(shù)據(jù) value|=0x80; delay_uint(20); //60us 讀一個時間隙最少要保持60us的時間 } returnvalue; //返回數(shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp(){ uintvalue; ucharlow; //在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序 init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉換命令 delay_uint(50); //500us init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 EA=0; low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}/******************16進制轉10進制函數(shù)**********************/ ucharHtoi16_10(uchardat){ ucharvalue; uchara[3]; a[2]=''; a[0]=shuzi[dat/16]; a[1]=shuzi[dat%16];//value=atoi(a); returnvalue;}/******************顯示漢字數(shù)字函數(shù)**********************/ voidshuzi_hz(ucharhang,ucharlie,uchardat){ if(dat==1) write_string(hang,lie,"一"); if(dat==2) write_string(hang,lie,"二"); if(dat==3) write_string(hang,lie,"三"); if(dat==4) write_string(hang,lie,"四"); if(dat==5) write_string(hang,lie,"五"); if(dat==6) write_string(hang,lie,"六"); if(dat==7) write_string(hang,lie,"七"); if(dat==8) write_string(hang,lie,"八"); if(dat==9) write_string(hang,lie,"九"); if(dat==0x10) write_string(hang,lie,"十"); if(dat==0x11) write_string(hang,lie,"11"); if(dat==0x12) write_string(hang,lie,"12"); }/******************時間芯片顯示函數(shù)**********************/ voidds1302_dis(){ ucharmiao_1; if(menu_1==0) { read_time(); if(miao_1!=miao) { miao_1=miao; shuzi_hz(3,7,week); //顯示星期 addr_12864(1,4); //地址轉換 write_dat(shuzi[yue/16]); //顯示月 write_dat(shuzi[yue%16]); write_dat('/'); write_dat(shuzi[nian/16]); //顯示年 write_dat(shuzi[nian%16]); write_dat('/'); write_dat(shuzi[ri/16]); //顯示日 write_dat(shuzi[ri%16]); addr_12864(4,5); //地址轉換 write_dat(shuzi[temperature/100%10]); write_dat(shuzi[temperature/10%10]); write_dat('.'); write_dat(shuzi[temperature%10]); } }}#include"LCD12864.H"/********************獨立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨立按鍵程序{ staticucharkey_new; key_can=20;//按鍵值還原 P3|=0x78;//對應的按鍵IO口輸出為1 if((P3&0x78)!=0x78) //按鍵按下 { delay_1ms(1); //按鍵消抖動 if(((P3&0x78)!=0x78)&&(key_new==1)) { //確認是按鍵按下 key_new=0; switch(P3&0x78) { case0x70:key_can=4;break; //得到按鍵值 case0x68:key_can=3;break; //得到按鍵值 case0x58:key_can=2;break; //得到按鍵值 case0x38:key_can=1;break; //得到按鍵值 }// write_sfm2(1,0,key_can); //顯示按鍵值 } } else key_new=1; }/**********************設置函數(shù)************************/voidkey_with(){ if(key_can==4)//退出鍵 { init_12864(); init_12864_dis(); hua_zizhong();//畫指針圖 flag_200ms=1; menu_1=0; } if(key_can==1) //設置鍵 { GUI_Fill_GDRAM(0x00); menu_1++; flag_200ms=1; if(menu_1==1) init_12864_set1(); if(menu_1>10) menu_1=1; } if(menu_1!=0) { if(menu_1==1) //設置年 { if(key_can==2) //加 set_ds1302time(1,&nian,0x99); if(key_can==3) //減 set_ds1302time(0,&nian,0x99); } if(menu_1==2) //設置月 { if(key_can==2) //加 set_ds1302time(1,&yue,0x13); if(key_can==3) //減 set_ds1302time(0,&yue,0x13); } if(menu_1==3) //設置日 { if(key_can==2) //加 set_ds1302time(1,&ri,0x32); if(key_can==3) //減 set_ds1302time(0,&ri,0x32); } if(menu_1==4) //設置時 { if(key_can==2) //加 set_ds1302time(1,&shi,0x24); if(key_can==3) //減 set_ds1302time(0,&shi,0x24); } if(menu_1==5) //設置分 { if(key_can==2) //加 set_ds1302time(1,&fen,0x60); if(key_can==3) //減 set_ds1302time(0,&fen,0x60); } if(menu_1==6) //設置秒 { if(key_can==2) //加 set_ds1302time(1,&miao,0x60); if(key_can==3) //減 set_ds1302time(0,&miao,0x60); } if(menu_1==7) //設置星期 { if(key_can==2) //加 set_ds1302time(1,&week,0x8); if(key_can==3) //減 set_ds1302time(0,&week,0x8); } if(menu_1==8) //設置鬧鐘時 { if(key_can==2) //加 set_ds1302time(1,&shi1,0x24); if(key_can==3) //減 set_ds1302time(0,&shi1,0x24); clock1_save(); } if(menu_1==9) //設置鬧鐘分 { if(key_can==2) //加 set_ds1302time(1,&fen1,0x60); if(key_can==3) //減 set_ds1302time(0,&fen1,0x60); clock1_save(); } if(menu_1==10) //設置鬧鐘分 { if((key_can==2)||(key_can==3)) //加 open1++; if(open1>=2) open1=0; if(open1==1) write_string(4,2,"開"); else write_string(4,2,"關"); clock1_save(); } write_shu16(1,1,nian); //顯示年 write_shu16(1,3,yue); //顯示月 write_shu16(1,5,ri); //顯示日 write_shu16(2,1,shi); //顯示時 write_shu16(2,3,fen); //顯示分 write_shu16(2,5,miao); //顯示秒 write_shu16(3,5,week); //顯示星期 write_shu16(4,4,shi1); //顯示時鐘 write_shu16(4,6,fen1); //顯示分鐘 switch(menu_1) //光標顯示 { case1:write_guanbiao(1,1,1);break; case2:write_guanbiao(1,3,1);break; case3:write_guanbiao(1,5,1);break; case4:write_guanbiao(2,1,1);break; case5:write_guanbiao(4,4,1);break; case6:write_guanbiao(2,3,1);break; case7:write_guanbiao(2,5,1);break; case8:write_guanbiao(3,5,1);break; case9:write_guanbiao(4,6,1);break; case10:write_guanbiao(4,2,1);break; } write_time(); //把時間寫進去 } }/*************鬧鐘報警函數(shù)***************/voidmenu_dis(){ if(menu_1==0) if(open1==1) //如果鬧鐘打開 { if((fen==fen1)&&(shi==shi1)&&(miao==0)) { flag_clock_en=1; //有報警打開蜂鳴器響的標志位 } if(flag_clock_en==1) //鬧鐘以被打開 { beep=~beep; //蜂鳴器叫3秒 } } }/***************畫秒分時************************** 參數(shù)n:0,1,2,代表秒分時******************************************************/voidline_miao_fen_shi(ucharn){ floatr,m; uintx,y; m=((n==0||n==1)?60.0:12.0); //擦除上一次的時鐘 x=time_leng[n]*cos(r); y=time_leng[n]*sin(r); GUI_line(33,33,33+y,33+x,0); //畫時鐘 x=time_leng[n]*cos(r); y=time_leng[n]*sin(r); GUI_line(33,33,33+y,33+x,1); //時間備份 time_beifen[n]=time_shijian[n]; }ucharvalue=15;/************畫指針圖*************/voidhua_zizhong(){ GUI_Cycle(33,33,30,1,1); //圓 GUI_Cycle(33,33,28,1,30); //12個點 GUI_Cycle(33,33,26,1,90); //4個點 GUI_Cycle(33,33,25,1,90); //4個點 Fa_Point(33,33,1); //點 Fa_Point(33,32,1); //點 Fa_Point(32,32,1); //點}/************主函數(shù)**************/voidmain(){ beep=0; //開機叫一聲 delay_1ms(150); P0=P1=P2=P3=0xff; //單片機IO口初始化為1 init_12864(); //lcd12864初始化 init_12864_dis();//lcd12864初始化顯示 time0_init(); //初始化定時器 temperature=read_temp(); //先讀出溫度的值 hua_zizhong();//畫指針圖 while(1) { key(); if(key_can<10) { if(flag_clock_en==0)//只有鬧鐘關了的時候才能進入設置 key_with(); else { beep=1; flag_clock_en=0; //按下任意鍵可關閉鬧鐘 } } if(flag_200ms==1) { flag_200ms=0; if(menu_1==0) { ds1302_dis();//時鐘顯示函數(shù) line_miao_fen_shi(0); line_miao_fen_shi(1); line_miao_fen_shi(2); } temperature=read_temp(); //先讀出溫度的值 } if(flag_100ms==1) { menu_dis(); //鬧鐘報警函數(shù) flag_100ms=0; } delay_1ms(1); }}/*********************定時器0中斷服務程序************************/voidtime0_int()interrupt1{ staticucharvalue; //定時10ms中斷一次 TH0=0x3c; TL0=0xb0;//50ms value++; if(value%2==0) { flag_100ms=1; } if(value%20==0) { flag_200ms=1; }}#ifndef_LCD12864_H_#define_LCD12864_H_ucharxdatadat_12864[64][16]=0;//********************************************************//填充GDRAM數(shù)據(jù)://參數(shù):dat為填充的數(shù)據(jù)//********************************************************voidGUI_Fill_GDRAM(unsignedchardat) { unsignedchari; unsignedcharj; unsignedchark; unsignedcharbGDRAMAddrX=0x80;//GDRAM水平地址 unsignedcharbGDRAMAddrY=0x80;//GDRAM垂直地址 for(i=0;i<2;i++) { for(j=0;j<32;j++) { for(k=0;k<8;k++) { write_com(0x34);//設置為8位MPU接口,擴充指令集,繪圖模式關 write_com(bGDRAMAddrY+j);//垂直地址Y write_com(bGDRAMAddrX+k);//水平地址X write_dat(dat); } } bGDRAMAddrX=0x88; } write_com(0x36);//打開繪圖模式 write_com(0x30);//恢復基本指令集,關閉繪圖模式}/* 寫點函數(shù) y:0-63; 要聲明 ucharxdatadat_12864[64][16]; x:0-127; color:1為寫10為清除*/voidFa_Point(unsignedchary,unsignedcharx,unsignedcharcolor){ unsignedcharx_Dyte,x_byte;//定義列地址的字節(jié)位,及在字節(jié)中的哪1位 unsignedchary_Dyte,y_byte;//定義為上下兩個屏(取值為0,1),行地址(取值為0~31) /***X,Y坐標互換,即普通的X,Y坐標***/ x_Dyte=x/16;//計算在16個字節(jié)中的哪一個 x_byte=x&0x0f;//計算在該字節(jié)中的哪一位 y_Dyte=y/32;//0為上半屏,1為下半屏 y_byte=y&0x1f;//計算在0~31當中的哪一行 write_com(0x80+y_byte);//設定行地址(y坐標) write_com(0x80+x_Dyte+8*y_Dyte);//設定列地址(x坐標),并通過8*y_Dyte選定上下屏 if(x_byte<8)//判斷其在高8位,還是在低8位 { if(color==1) { dat_12864[y][x_Dyte*2]|=(0x01<<(7-x_byte)); write_dat(dat_12864[y][x_Dyte*2]);//置位GDRAM區(qū)高8位數(shù)據(jù)中相應的點 } else { dat_12864[y][x_Dyte*2]&=(~(0x01<<(7-x_byte))); write_dat(dat_12864[y][x_Dyte*2]);//清除GDRAM區(qū)高8位數(shù)據(jù)中相應的點 } write_dat(dat_12864[y][x_Dyte*2+1]);//顯示GDRAM區(qū)低8位數(shù)據(jù) } else { if(color==1) { dat_12864[y][x_Dyte*2+1]|=(0x01<<(15-x_byte)); write_dat(dat_12864[y][x_Dyte*2+1]);//置位GDRAM區(qū)高8位數(shù)據(jù)中相應的點 } else { dat_12864[y][x_Dyte*2+1]&=(~(0x01<<(15-x_byte))); write_dat(dat_12864[y][x_Dyte*2+1]);//清除GDRAM區(qū)高8位數(shù)據(jù)中相應的點 } }}/*畫直線*/ voidexchange(uchar*a,uchar*b){ uchartemp; temp=*a; *a=*b; *b=temp;} /*當終點坐標大于起點坐標時不能畫*/voidGUI_line(uchary1,ucharx1,uchary2,ucharx2,ucharclock){ ucharx,y; //繪點坐標 floatk,b; //斜率,偏移 if(abs(y1-y2)<=abs(x1-x2)) { k=((float)y2-y1)/((float)x2-x1); //判斷斜率 b=y1-k*x1; for(x=x1;x<=x2;x++) { y=(uchar)(k*x+b); Fa_Point(y,x,clock); } } else { k=((float)x2-x1)/((float)y2-y1); b=y1-k*x1; for(y=y1;y<=y2;y++) { x=(uchar)(k*y+b); Fa_Point(y,x,clock); } } }#definePI3.1415voidGUI_Cycle(ucharxin_y0,ucharxin_x0,ucharradius,ucharclock,floatbujin){ floatsta,x,y; for(sta=0;sta<=360;sta+=bujin) { x=(uchar)(xin_x0+radius*sin(sta*3.14/180));//角度轉為弧度 y=(uchar)(xin_y0+radius*cos(sta*3.14/180));//角度轉為弧度 Fa_Point(y,x,clock); }}#endif#ifndef_DS1302_H_#define_DS1302_H_/****************** ds1302內部RAMRAM01100000R/W1讀0寫 RAM11100001R/W RAM301111110R/W********************/sbitclk=P1^3; //ds1302時鐘線定義sbitio=P1^4; //數(shù)據(jù)線sbitrst=P1^5; //復位線 //秒分時日月年星期
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年超低頻傳感器標定系統(tǒng)項目申請報告模板
- 2025年鎳壓延加工材項目提案報告模范
- 2025專利申請專項資金使用償還的合同書范本
- 建筑工程協(xié)作與溝通
- 文章閱讀心得體會15篇
- 建筑工程中的綠色建筑概念
- 春節(jié)安全通知范文匯編9篇
- 市場營銷活動方案
- 2025紀檢監(jiān)察業(yè)務知識測試題及參考答案
- 電廠街道虛擬敬老院建設實施方案
- 2024年江西省南昌市中考一模數(shù)學試題(含答案)
- 48貴州省貴陽市2023-2024學年五年級上學期期末數(shù)學試卷
- 《采暖空調節(jié)能技術》課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 游戲綜合YY頻道設計模板
- arcgis軟件操作解析課件
- 中興ZCTP 5GC高級工程師認證考試題庫匯總(含答案)
- 大學生創(chuàng)新創(chuàng)業(yè)教程PPT全套完整教學課件
- 小學科學項目化作業(yè)的設計與實施研究
- 2020年中考生物試卷及答案
- MCNP-5A程序使用說明書
評論
0/150
提交評論