




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、摘 要 單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。本設(shè)計(jì)是通過單片機(jī)設(shè)計(jì)一個(gè)多功能電子表,要求不僅具有電子時(shí)鐘的功能還具有鬧鈴、設(shè)定鬧鈴時(shí)間、整點(diǎn)報(bào)時(shí)、生日提醒功能,而且能夠預(yù)置生日時(shí)間關(guān)鍵字:單片機(jī);多功能電子表;跑表;數(shù)碼管顯示。ABSTRACTSingle chip computer is the single chip computer. By
2、RAM, ROM, CPU constitute, time, count and multiple interface in the integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent industry and industrial automation. And 51 series microcontroller is the most typical and various microcontroller most rep
3、resentative one. This curriculum design through to its study, application, thus achieved the study, design, development, soft and hard ability. This is designed by SCM design a multi-functional electronic watch, requirement not only has the function of electronic clock still has alarm, set alarm tim
4、e, integral point to announce, birthday reminds function, and can preset birthday time Key word: SCM, Multi-function digital watches, PaoBiao; Digital pipe display. 目 錄摘 要0ABSTRACT0目 錄1引言21、 AT89S52單片機(jī)介紹32、設(shè)計(jì)功能及說明63、整體設(shè)計(jì)方案84、單模塊流程設(shè)計(jì)及程序設(shè)計(jì)84.1初始化模塊84.2 開關(guān)檢測模塊94.3顯示主程序94.4鬧鈴及整點(diǎn)報(bào)時(shí)判斷程序(EIGHT)114.5中斷(TO)計(jì)
5、時(shí)程序114.6中斷(T1)預(yù)置程序114.7中斷(INT0)設(shè)定程序125、單模塊軟件測試125.1編碼中常用的程序結(jié)構(gòu)說明125.2 單模塊軟件測試中的問題及解決146、軟件部分燒寫調(diào)試145、總結(jié)16致謝17參考文獻(xiàn):18附錄A19附錄B:19引言 1957年,Ventura發(fā)明了世界上第一個(gè)電子表,從而奠定了電子表的基礎(chǔ),電子表開始迅速發(fā)展起來?,F(xiàn)代的電子表是基于單片機(jī)的一種計(jì)時(shí)工具,采用延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于一秒的定義,通過計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零。從而達(dá)到計(jì)時(shí)的功能,是人民日常生活不可缺少的工具。 現(xiàn)在高精度的計(jì)時(shí)工具大多數(shù)都使
6、用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動,用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí)、分、秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對,片選的靈活性好。1、 AT89S52單片機(jī)介紹 AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié) Flash,256 字節(jié) RAM,32 位 I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè) 16 位定時(shí)器/計(jì)數(shù)器,一個(gè) 6 向量 2 級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至 0Hz 靜
7、態(tài)邏輯操作,支持 2 種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許 RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。 圖 1.1 單片機(jī)引腳圖VCC : 電源 GND: 地P0 口:P0 口是一個(gè) 8 位漏極開路的雙向 I/O 口。作為輸出口,每位能驅(qū)動 8 個(gè) TTL 邏輯電平。對 P0 端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0 口也被作為低 8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。在 flash 編程時(shí),P0 口也用來接收指令字節(jié);在程
8、序校驗(yàn)時(shí),輸出指令字節(jié)。程序校時(shí),需要外部上拉電阻。P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和 P1.2 分別作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器 2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。表1.1 AT89S52 P1口第二功能表腳號第二功能P1.0T2(定時(shí)器/計(jì)數(shù)器 T2 的外部計(jì)數(shù)輸入),時(shí)鐘輸出P1.1T2
9、EX(定時(shí)器/計(jì)數(shù)器 T2 的捕捉/重載觸發(fā)信號和方向控制)P1.5MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用)P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)在訪問外部程序存儲器或用 16 位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX DPTR)時(shí),P2 口送出高八位地址P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的 8 位雙向 I/O 口,p
10、2 輸出緩沖器能驅(qū)動 4 個(gè)TTL 邏輯電平。對 P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89S52 特殊功能(第二功能)使用,如下表所示。表1.2 AT89S52 P3口第二功能表腳號第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(外部中斷 0)P3.3INT0(外部中斷 0)P3.4T0(定時(shí)器 0 外部輸入)P3.5T1(定時(shí)器 1 外部輸入)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器寫選通)RST: 復(fù)位輸入。晶
11、振工作時(shí),RST 腳持續(xù) 2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時(shí)完成后,RST 腳輸出 96 個(gè)晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能無效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低 8 位地址的輸出脈沖。在 flash 編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時(shí),ALE 脈沖將會跳過。PSEN:外部程序存儲器選通信號(PSEN)是
12、外部程序存儲器選通信號。當(dāng) AT89S52 從外部程序存儲器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時(shí),PSEN 將不被激活。EA/VPP:訪問外部程序存儲器控制信號。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令,EA 必須接 GND。為了執(zhí)行內(nèi)部程序指令,EA 應(yīng)該接 VCC。在 flash 編程期間,EA 也接收 12 伏 VPP 電壓。XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。2、設(shè)計(jì)功能及說明電子數(shù)字鐘實(shí)現(xiàn)的主要功能: 實(shí)現(xiàn)正常走時(shí)(秒分時(shí)日月年進(jìn)位) 能夠預(yù)置時(shí)間和日期 能夠自動區(qū)
13、分平閏年和大小月 具有鬧鈴及設(shè)定鬧鈴時(shí)間功能 具有整點(diǎn)報(bào)時(shí)功能 具有生日提醒功能,能夠預(yù)置生日時(shí)間 在任何一種預(yù)置狀態(tài)下,預(yù)置項(xiàng)目會閃爍顯示其它設(shè)計(jì)說明: 優(yōu)先級:預(yù)置>鬧鈴>報(bào)時(shí)>生日提醒>正常顯示,即預(yù)置狀態(tài)下鬧鈴、報(bào)時(shí)功能及生日提醒功能都無效 生日時(shí)間到五個(gè)數(shù)碼管顯示“HAPPY” 生日顯示狀態(tài)下,按下中斷INT0恢復(fù)正常顯示且此后只有在下更改生日日期或第二年生日顯示才有效。 正常顯示狀態(tài)下按下中斷INT0進(jìn)入預(yù)置狀態(tài),再按一次恢復(fù)。 用數(shù)碼管(K0,K1)控制顯示狀態(tài):00:時(shí)間,01:鬧鈴時(shí)間,10:日期,11。生日時(shí)間且顯示樣板如下圖所示:生日:6 月1 日
14、生日,最 鬧鈴:于早晨6 點(diǎn)10 分響,最后后兩位bd 為birthday 的縮寫 一位為一表示使能有效。日期:08 年2 月29 日 時(shí)間:12 點(diǎn)39 分45 秒 預(yù)置由撥碼開關(guān)K2/K3/K4分別控制數(shù)碼管12/34/56顯示值,預(yù)置優(yōu)先級:LED34>LED12>LED56(相應(yīng)數(shù)碼管顯示的項(xiàng)目,顯示狀態(tài)下才能預(yù)置) 整點(diǎn)報(bào)時(shí)聲音為59分51、53、55、57秒的后半秒報(bào)四聲低音, 59秒的后半秒報(bào)一聲高音 鬧鈴每次響一分鐘 不論是預(yù)置狀態(tài)還是正常走時(shí)狀態(tài)均能夠自動區(qū)分平閏年和大小月 鬧鈴使能由撥碼開關(guān)K5控制并實(shí)時(shí)顯示3、整體設(shè)計(jì)方案系統(tǒng)硬件電路根據(jù)系統(tǒng)功能可知,需要六個(gè)
15、數(shù)碼管,一個(gè)外部中斷INT0,一個(gè)揚(yáng)聲器,由此結(jié)合單片機(jī)課程學(xué)習(xí)中對實(shí)驗(yàn)面板的了解,做出如下電路:圖 3.1系統(tǒng)硬件電路圖如圖,晶振頻率12MHz,撥碼開關(guān)數(shù)值由P0口讀入;P2口的輸出作為控制數(shù)碼管的段控信號,經(jīng)74LS573即8位數(shù)據(jù)鎖存器接到數(shù)碼管中。數(shù)碼管采用共陰接法(圖中未標(biāo)示);P1.0-P1.5作為數(shù)碼管的位控信號出端;開關(guān)W2經(jīng)一個(gè)基本RS鎖存器接入INT0,每按一次開關(guān)INTO取反次,按兩次輸入一個(gè)下降沿;揚(yáng)聲器由P1.6口控制。4、單模塊流程設(shè)計(jì)及程序設(shè)計(jì)在完成了系統(tǒng)總流程設(shè)計(jì)后,便進(jìn)入到了系統(tǒng)設(shè)計(jì)中工作量最大的模塊流程設(shè)計(jì)。由于系統(tǒng)模塊劃分雖然是系統(tǒng)設(shè)計(jì)的基礎(chǔ),但比較簡單
16、而且模塊劃分有多種方法,因此單模塊的設(shè)計(jì)可以認(rèn)為是本程序中最關(guān)鍵的部分。單模塊設(shè)計(jì)的好壞與否決定了系統(tǒng)功能能否被穩(wěn)定地實(shí)現(xiàn)以及下一階段調(diào)試程序的難度。鑒于單模塊設(shè)計(jì)的重要性,我在設(shè)計(jì)中并不急于對模塊進(jìn)行編碼,而是反復(fù)論證模塊的可行性和流程圖,為下一階段的工作做好準(zhǔn)備,同時(shí)也能夠盡早發(fā)現(xiàn)系統(tǒng)模塊劃分的錯(cuò)誤,加以解決。4.1初始化模塊初始化模塊包含了各中斷的跳轉(zhuǎn)語句、存儲資源的分配、各存儲器和寄存器的賦值以及中斷及計(jì)時(shí)器的狀態(tài)設(shè)置。源程序中共使用了17字節(jié)的內(nèi)部數(shù)據(jù)存儲地址,其中包含3字節(jié)位尋址地址以便于進(jìn)行位判斷。三字節(jié)的位尋址地址分配如下:22H秒的存儲地址,方便對整點(diǎn)報(bào)時(shí)條件進(jìn)行判斷23H月
17、的存儲地址,方便對大小月平閏年進(jìn)行判斷另外一個(gè)位尋址字節(jié)00H地址拆開用做程序狀態(tài)標(biāo)志位00H(bit,BS)生日標(biāo)志位,到生日那天為 1 使程序轉(zhuǎn)入生日顯示段01H(bit,SS)預(yù)置標(biāo)志,以INT0控制其值,控制預(yù)置閃爍的實(shí)現(xiàn)02H(bit,GS)閃爍標(biāo)志,在預(yù)置標(biāo)志有效時(shí)控制閃爍項(xiàng)目的亮和滅兩狀態(tài)03H(bit,F(xiàn)C)頻率控制,在整點(diǎn)報(bào)時(shí)時(shí)控制產(chǎn)生低音還是高音04H(bit,NB)忽略生日標(biāo)志,控制預(yù)置及報(bào)時(shí)的優(yōu)先級高于生日顯示05H(bit)控制生日信號的有效與否,其使用目的參見調(diào)試過程源程序中使用了兩個(gè)寄存器R1、R0,R1用于控制閃爍的間隔時(shí)間, R0用于顯示延時(shí)。在初始化模塊中設(shè)
18、定了中斷的優(yōu)先級、定時(shí)計(jì)數(shù)器的工作模式、并打開了定時(shí)計(jì)數(shù)器TO開始計(jì)時(shí)其他資源分配項(xiàng)目參見源程序集合及注釋。初始化模塊指令很大一部分都是偽指令,方便了后面程序的編寫。4.2 開關(guān)檢測模塊開關(guān)檢測模塊主要執(zhí)行兩個(gè)任務(wù):讀取鬧鈴使能控制撥碼開關(guān)K5的值并賦予鬧鈴使能相應(yīng)值;讀取顯示選擇開關(guān)(K0,K1)的值并將要顯示的項(xiàng)目值送入顯示緩存LED12、LED34、LED56當(dāng)k5為1時(shí)將A1H送入RE反之送入A1H,其中A為“”的字型碼查表偏移量。當(dāng)顯示生日日期時(shí),將生日Birthday的縮寫“bd”的字型碼送入顯示緩存 LED56。圖 4.1開關(guān)檢測流程圖4.3顯示主程序顯示主程序是程序中最復(fù)雜的模
19、塊,實(shí)現(xiàn)的功能也最多,占用了程序運(yùn)行過程當(dāng)中90%以上的執(zhí)行時(shí)間。流程圖中由判斷SS(預(yù)置信號)開始分成兩個(gè)分支,當(dāng)SS=1,即預(yù)置狀態(tài)下程序進(jìn)入預(yù)置閃爍部分。圖 4.2 顯示主程序流程圖預(yù)置閃爍的優(yōu)先級是:LED34>LED12>LED56即同預(yù)置優(yōu)先級相同(參見調(diào)試部分的詳細(xì)說明)閃爍首先判斷是否對LED34進(jìn)行判斷閃爍,如果是則另外兩個(gè)顯示值直接顯示,否則判斷是否對LED12進(jìn)行閃爍,如果是則直接顯示LED56的值,只有當(dāng)前兩個(gè)顯示值都不閃爍的時(shí)候,才判斷是否對LED56進(jìn)行閃爍,這樣就確保了每次只有一個(gè)顯示值閃爍。預(yù)置通過GS標(biāo)志位判斷預(yù)置的亮/滅,由R1控制每50輪顯示對
20、GS取反一次。當(dāng)SS=0時(shí)進(jìn)入判斷鬧鈴/報(bào)時(shí)及正常顯示模塊,模塊EIGHT(參見其說明)對鬧鈴及報(bào)時(shí)條件進(jìn)行判斷,符合條件則對P1.6取反一次并使NB(忽略生日)有效,此時(shí)行對BS(生日標(biāo)志)的判斷,即使響鈴優(yōu)先級高于生日顯示(其實(shí)也可以對程序進(jìn)行修改使響鈴和生日顯示不發(fā)生沖突,修改方法參見程序優(yōu)化)。當(dāng)不響鈴并且生日標(biāo)志BS有效時(shí)顯示HAPPY其單列開來。本程序由生日標(biāo)志BS控制,當(dāng)?shù)竭_(dá)生日時(shí)間時(shí),T0中斷程序會將BS置1使之有效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊標(biāo)志BS有效時(shí)顯示HAPPY其單列開來。本程序由生日標(biāo)志BS控制,當(dāng)?shù)竭_(dá)生日時(shí)間時(shí),T0中斷程序會將BS置1使之有
21、效在顯示主程序中通過判斷BS的置來控制是否執(zhí)行本模塊4.4鬧鈴及整點(diǎn)報(bào)時(shí)判斷程序(EIGHT)在顯示主程序中每隔一段時(shí)間調(diào)用一次本程序來實(shí)現(xiàn)鬧鈴及報(bào)時(shí)功能。符合鬧鈴條件時(shí),每調(diào)用一次本程序?qū)1.6取反一次,調(diào)節(jié)調(diào)用的時(shí)間間隔便可以調(diào)節(jié)報(bào)時(shí)的輸出頻率。在主程序中設(shè)置每完成對一個(gè)數(shù)碼管的顯示變調(diào)用一次本程序,顯示一個(gè)數(shù)碼管的時(shí)間大約為1ms,因此響鈴頻率高音約為500Hz,低音約為250Hz。程序判斷鬧鈴使能RE后分成兩個(gè)分支,當(dāng)RE=A1時(shí)判斷鬧鈴條件是否滿足,滿足則對P1.6取反一次,否則跳轉(zhuǎn)判斷整點(diǎn)報(bào)時(shí)條件是否滿足。當(dāng)RE=0時(shí),直接怕暖整點(diǎn)報(bào)時(shí)條件是否滿足。判斷整點(diǎn)報(bào)時(shí)條件時(shí)當(dāng)當(dāng)前時(shí)間滿
22、足:(MIN=59)(SECOND=59) (COUNT>10)時(shí)報(bào)高音;當(dāng)滿足:(MIN=59)(SECOND=51/53/55/57) (COUNT>10)時(shí)報(bào)低音。利用位尋址區(qū)來存儲SECOND的方法,(SECOND>50)(SECOND.0=1)時(shí)便滿足報(bào)低音的秒條件。利用TO中斷次數(shù)存儲器COUNT的大小可以判斷是否到了后半秒(T0每50ms中斷一次,中斷20次到達(dá)一秒)。通過增加一個(gè)標(biāo)志位FC來時(shí)下對高低音的區(qū)分,高音不受FC的影響,低音只有當(dāng)FC=0的時(shí)候才對P1.6取反一次。并且每調(diào)用一次本程序便對FC取反一次,便達(dá)到每調(diào)用兩次取反一次P1.6的效果。本程序的
23、執(zhí)行時(shí)間小于40us,因此多次調(diào)用不過分影響執(zhí)行。4.5中斷(TO)計(jì)時(shí)程序中斷計(jì)時(shí)程序的流程比較簡單。程序除實(shí)現(xiàn)正常走時(shí)外還需要判斷是否到達(dá)生日時(shí)間置生日標(biāo)志位有效。程序的輸出均為BCD碼,方便了顯示程序?qū)Ω叩臀坏姆蛛x并查表顯示。程序比較復(fù)雜的地方在于對平閏年及大小月的判斷。把月MONTH存儲在位尋址區(qū),當(dāng)MONTH=02H時(shí)判斷是否是平閏年,先將年由BCD碼轉(zhuǎn)化為二進(jìn)制碼,此時(shí)當(dāng)年的后兩位為全零的時(shí)候?yàn)殚c年(由于只顯示年的個(gè)位和十位,由2000年開始,00年、04年為閏年,其共同特點(diǎn)就是二進(jìn)制后兩位為零),否則為平年。當(dāng)MONTH2時(shí)判斷是否為大小月,MOUTH<7時(shí)單月(即MONT
24、H.0=1的月)為大月,否則為小月;當(dāng)MONTH>7時(shí)雙月為大月。4.6中斷(T1)預(yù)置程序T1通過中斷INT0控制開啟或關(guān)閉,每次定時(shí)50毫秒,存儲地址COUNTS計(jì)數(shù)15次執(zhí)行一次中斷程序。由開關(guān)(K0,K1)控制預(yù)置項(xiàng)目,通過開關(guān)K2/K3/K4來分別控制LED12/LED34/LED56的預(yù)置,當(dāng)兩個(gè)開關(guān)都是有效時(shí),具有優(yōu)先級的區(qū)分,確保無論按幾個(gè)開關(guān)都最多只有一個(gè)項(xiàng)目被預(yù)置。判斷預(yù)置的優(yōu)先級順序是:LED34>LED12>LED56這樣安排的原因是由于根據(jù)生活經(jīng)驗(yàn)LED34所對應(yīng)的4個(gè)項(xiàng)目(小時(shí)、鬧鈴分、月、生日日)被預(yù)置的可能性最大。在預(yù)置日期和生日是要注意對大小
25、月及平閏年進(jìn)行判斷(判斷方法與中斷計(jì)時(shí)程序中說明的方法類似,但不需要考慮進(jìn)位)且月和日在溢出后應(yīng)置一而不是歸零。4.7中斷(INT0)設(shè)定程序中斷INT0設(shè)置是否進(jìn)行預(yù)置以及對生日標(biāo)志的清除。且有如下設(shè)置順序:清除預(yù)置信號并關(guān)T1>清除生日標(biāo)志>設(shè)定預(yù)置信號并開T1。每按一次中斷都只執(zhí)行其中一個(gè)項(xiàng)目5、單模塊軟件測試5.1編碼中常用的程序結(jié)構(gòu)說明 JNB SS,THREEB;SJMP THREEATHREEB:LJMPTHREE11;THREEA:JNBP0.3,THREE1由于使用JNB等跳轉(zhuǎn)指令的時(shí)候,跳轉(zhuǎn)長度比較短,故需要跳轉(zhuǎn)到比較遠(yuǎn)的地方時(shí)需要用這個(gè)結(jié)構(gòu)。相當(dāng)于:JNB S
26、S,THREE11JNB P0.3,THREE1 THREE1:MOV A,LED34ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE13:SETB P1.3NOPDJNZ R0,THREE13CLR P1.3MOV A,LED34SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE14:SETB P1.2NOPDJNZ R0,THREE14CLR P1.2顯示主程序中常用的語句段,分離LED34中的高半位和低半位作為字形碼段控信號查表偏移量,通過R0延時(shí),延時(shí)時(shí)間大約為每個(gè)數(shù)碼管1ms。 TEN6A:MOV A,MONTHCJNE A,
27、#08H,TEN7ATEN7A:JC TEN9A判斷MONTH是否大于08H,由于CJNE指令不能對直接地址進(jìn)行比較只能通過A來判斷。MOV A,YEARADD A,#01DA AMOV YEAR,A對T0及T1中斷程序中常用的對某項(xiàng)目進(jìn)行加一并進(jìn)行BCD碼調(diào)整的的程序段,由于“INC A”指令不影響標(biāo)志位,故不能和“DA A”指令結(jié)合使用。5.2 單模塊軟件測試中的問題及解決由于此前花費(fèi)大量的經(jīng)歷在模塊的流程圖設(shè)計(jì)當(dāng)中,因此在模塊調(diào)試的過程中并沒有出現(xiàn)太多的問題。主要問題在于語法錯(cuò)誤,比如前述程序結(jié)果說明中的、語句和一些輸入的誤。并且由于程序過于長,難以進(jìn)行完整的軟件調(diào)試,調(diào)試過程中發(fā)現(xiàn)的問
28、題主要出現(xiàn)在燒寫調(diào)試過程中。6、軟件部分燒寫調(diào)試我一共進(jìn)行了三次軟件部分燒寫調(diào)試,糾正了許多程序錯(cuò)誤,主要修改部分如下:第一次調(diào)試:中斷預(yù)置程序無法進(jìn)行正常的加一程序計(jì)時(shí)進(jìn)位有誤,無法正常進(jìn)位日期無法正常顯示閃爍有錯(cuò)誤,無法正常閃爍顯示的數(shù)字不穩(wěn)定,有許多干擾從第一次調(diào)試的結(jié)果上看,幾乎所有的功能都無法正常顯示。事實(shí)上,在第一次調(diào)試后對程序進(jìn)行檢查后發(fā)現(xiàn),造成這些問題的主要原因是程序有十幾處的輸入有誤,并不是程序流程上的問題。因此這里不做過多的敘述。第二次調(diào)試:經(jīng)過第一次調(diào)試以后的修改,解決了第一次調(diào)試中出現(xiàn)的前四個(gè)問題,但第五個(gè)問題“顯示的數(shù)字不穩(wěn)定,有許多干擾”仍然無法發(fā)現(xiàn)問題的所在,在機(jī)
29、房進(jìn)行了多次修改都不成功。經(jīng)過思考和對跟其他同學(xué)的顯示語句進(jìn)行比對,我判斷問題的原因可能是我在過去編程時(shí)養(yǎng)成的一個(gè)不好的習(xí)慣,我經(jīng)常使用的一個(gè)延時(shí)辦法,容易把干擾放大。對于數(shù)碼管的顯示及延時(shí)我經(jīng)常使用以下語句:“AAA:MOV P1,#位控MOV P2,#段控DJNZ R0,AAA ”這個(gè)語句段比較簡單,不需要另外編寫一個(gè)延時(shí)程序,延時(shí)時(shí)間大約1.3ms,用在干擾語句比較少的地方很方便。但卻可能出現(xiàn)一個(gè)隱患,假如P1或者P2在賦值過程中會出現(xiàn)干擾,那么對其重復(fù)的賦值便會放大干擾。并且由于常常只需要給其中一個(gè)數(shù)碼管賦值,而這個(gè)語句卻一次性給所有的數(shù)碼管賦位控信號,可能將單個(gè)數(shù)碼管段控信號中出現(xiàn)的
30、干擾傳遞到其他管中。因此我對以上程序做了修改如下:MOV P2,#段控THREE13:SETB P1.3NOPDJNZ R0,THREE13CLR P1.3這樣便解決了以上提出的問題。實(shí)際上,通過調(diào)用延時(shí)程序的方法進(jìn)行延時(shí)同樣也不會出現(xiàn)以上問題,由此可見,在軟件設(shè)計(jì)中養(yǎng)成一個(gè)規(guī)范的設(shè)計(jì)習(xí)慣極為重要。在第二天調(diào)試的時(shí)候發(fā)現(xiàn)這個(gè)語句的確能夠避免干擾的出現(xiàn)。第三次調(diào)試:第三次調(diào)試基本解決了上述出現(xiàn)的問題,但又發(fā)現(xiàn)了兩個(gè)新問題:在程序執(zhí)行的過程中,一旦進(jìn)入生日顯示狀態(tài)便無法通過INT0跳出,除非日期走過一天。在同時(shí)撥下兩個(gè)以上的預(yù)置開關(guān)時(shí),預(yù)置和閃爍可能出現(xiàn)不同步的情況。比如預(yù)置時(shí)間時(shí)可能出現(xiàn)小時(shí)在閃
31、爍,但改變的確實(shí)分鐘的值。由于對程序的流程比較熟悉,產(chǎn)生這兩個(gè)問題原因很快就被我發(fā)現(xiàn)。第一個(gè)問題產(chǎn)生原因主要是雖然每次按下INT0都將清除生日標(biāo)志,但生日標(biāo)志的設(shè)定卻是每秒進(jìn)行一次,因此生日標(biāo)志被清除后馬上就又會出現(xiàn),所以無法跳出生日顯示。為了解決這個(gè)問題,我增加了一個(gè)標(biāo)志位05H(bit)來控制生日標(biāo)志的設(shè)定,只有在05H(bit)有效的情況下,生日顯示才有效,在按INT0清除生日表示的時(shí)候同時(shí)清除05H(bit),而05H(bit)只有在重新預(yù)置生日時(shí)間以后或是過了新的一年才會有效,其設(shè)定不受外界控制。第二個(gè)問題產(chǎn)生的原因主要是比較簡單,預(yù)置時(shí)間時(shí),判斷哪個(gè)項(xiàng)目閃爍的優(yōu)先級,和判斷哪個(gè)項(xiàng)目
32、數(shù)值改變的優(yōu)先級不一致,由于是中斷程序和顯示主程序同時(shí)控制這個(gè)功能,因此這兩個(gè)優(yōu)先級必須一樣,否則當(dāng)同時(shí)按下兩個(gè)項(xiàng)目的預(yù)置開關(guān)的時(shí)候,中斷程序首先判斷一個(gè)開關(guān)有效,改變其對應(yīng)值,而顯示主程序卻首先判斷第二個(gè)開關(guān)有效,對第二個(gè)開關(guān)的顯示值進(jìn)行閃爍。因此只要修改其優(yōu)先級一致即可解決這個(gè)問題。程序中設(shè)置的優(yōu)先級是K3>K2>K4。5、總結(jié)在汪普林老師耐心的指導(dǎo)下,我順利完成了這次單片機(jī)課程設(shè)計(jì)課題中的多功能電子表的設(shè)計(jì),通過這次的設(shè)計(jì)使我認(rèn)識到本人對單片機(jī)方面的知識知道的太少了,對于書本上的很多知識還不能靈活運(yùn)用,尤其是對程序設(shè)計(jì)語句的理解和運(yùn)用,不能夠充分理解每個(gè)語句的具體含義,導(dǎo)致編
33、程的程序過于復(fù)雜,使得需要的存儲空間增大。損耗了過多的內(nèi)存資源。本次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識,而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的多功能電子版表設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競爭,同時(shí)在查找資料的過程中我也學(xué)到了許多新的知識,在和同學(xué)協(xié)作過程中增進(jìn)同學(xué)間的友誼,使我對團(tuán)隊(duì)精神的積極性和重要性有了更加充分的理解。致謝最后,感謝汪普林老師對我的細(xì)心的指導(dǎo),正是由于汪老師的細(xì)心的輔導(dǎo)和他提供給我們的參考資料,使得
34、我的課程設(shè)計(jì)能夠順利的完成,同時(shí)感謝所以在課程設(shè)計(jì)過程中給于我?guī)椭^的老師和同學(xué),非常感謝。 參考文獻(xiàn):1 謝自美電子線路設(shè)計(jì)·實(shí)驗(yàn)·測試M武漢:華中理工大學(xué)出版社,1992.2 何立民單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M北京:北京航空航天大學(xué)出版社,1993.3 樓然笛單片機(jī)開發(fā)M北京:人民郵電出版社,1994.4 付家才單片機(jī)控制工程實(shí)踐技術(shù)M北京:化學(xué)工業(yè)出版社 2004.3.5 李光才單片機(jī)課程設(shè)計(jì) 實(shí)例指導(dǎo)M 北京:北京航空航天大學(xué)出版社 2004.6 朱定華單片機(jī)原理及接口技術(shù)實(shí)驗(yàn)M北京:北方交通大學(xué)出版社2002.11.7 劉湘濤江世明單片機(jī)原理與應(yīng)用M. 北京:電子工業(yè)出版
35、社,2006.附錄A附錄B:;*ONE初始化ORG 0HSJMP ONEORG 0003HLJMP ELEVENORG 000BHLJMP NINEORG 001BHLJMP TENONE:LED12 EQU 30H ;數(shù)碼管12顯示緩存LED34 EQU 31H ;數(shù)碼管34顯示緩存LED56 EQU 32H ;數(shù)碼管56顯示緩存COUNT EQU 33H ;定時(shí)器T0(用來走時(shí))計(jì)數(shù)值存儲器(計(jì)數(shù)中斷20次到1秒)COUNTS EQU 34H ;定時(shí)器T1(用來預(yù)置)計(jì)數(shù)值存儲器(計(jì)數(shù)中斷15次到預(yù)置值加1)HOUR EQU 40H ;以下為時(shí)間,日期,鬧鈴時(shí)間,生日的存儲地址MIN EQ
36、U 41HSECOND EQU 22HYEAR EQU 50HMONTH EQU 23HDAY EQU 52HRH EQU 60H ;鬧鈴小時(shí)RM EQU 61H ;鬧鈴分RE EQU 62H ;鬧鈴使能BM EQU 71H ;生日月份BD EQU 72H ;生日天MOV LED12,#0MOV LED34,#0MOV LED56,#0MOV COUNT,#0MOV COUNTS,#0MOV HOUR,#0MOV MIN,#0MOV SECOND,#0MOV YEAR,#0MOV MONTH,#1MOV DAY,#1MOV RH,#0MOV RM,#0MOV RE,#0MOV BM,#6MOV
37、 BD,#1BS BIT 00H ;birthday symbol生日標(biāo)志(到生日那天就為1)SS BIT 01H ;set symbol預(yù)置信號(按下中斷預(yù)置為1,便開始閃爍和預(yù)置)GS BIT 02H ;glisten symbol閃爍標(biāo)志FC BIT 03H ;frequency control頻率控制NB BIT 04H ;neglect bitrhday symbol 忽略生日標(biāo)志CLR BSCLR SSCLR GSCLR FCCLR NBSETB 05H ;生日顯示有效標(biāo)志位MOV IP,#02H;中斷優(yōu)先級:T0>INT0>T1MOV TMOD,#11HMOV IE,
38、#8BHSETB IT0MOV TH0,#3CH ;50msMOV TL0,#0B0HSETB TR0MOV R1,#50 ;顯示延時(shí)用MOV R0,#0 ;顯示延時(shí)用;* TWO檢測開關(guān)號TWO:MOV P0,#0FFHJB P0.5,TWO1MOV RE,#0A0H ;0A0表示鬧鈴無效,送0A0是為了方便將使能查表顯示,表中第A項(xiàng)為"-"SJMP TWO2TWO1:MOV RE,#0A1HTWO2:JB P0.0,TWO4JB P0.1,TWO3MOV LED12,HOURMOV LED34,MINMOV LED56,SECONDSJMP THREETWO3:MOV
39、LED12,YEARMOV LED34,MONTHMOV LED56,DAYSJMP THREETWO4:JB P0.1,TWO5MOV LED12,RHMOV LED34,RMMOV LED56,RESJMP THREETWO5:MOV LED12,BMMOV LED34,BDMOV LED56,#0BCHSJMP THREE;* THREE顯示主程序(同時(shí)包含了鬧鈴,預(yù)置閃爍,鬧鈴功能)THREE:MOV P1,#0MOV P0,#0FFHMOV DPTR,#TAB3JNB SS,THREEB ;判斷預(yù)置信號是否有效,預(yù)置有效則轉(zhuǎn)入判斷閃爍顯示模塊,否則轉(zhuǎn)入正常顯示模塊SJMP THREE
40、ATHREEB:LJMP THREE11 ;THREE11是正常顯示并判斷整點(diǎn)報(bào)時(shí)及鬧鈴模塊THREEA:JNB P0.3,THREE1 ;開始是判斷閃爍顯示,這句判斷是否預(yù)置分/月/生日的日/鬧鈴分JNB GS,THREE1 ;是否閃爍?LCALL TWELVE ;閃爍則調(diào)用延時(shí)不顯示LED34SJMP THREE4THREE1:MOV A,LED34ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE2:SETB P1.3NOPDJNZ R0,THREE2CLR P1.3MOV A,LED34SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATH
41、REE3:SETB P1.2NOPDJNZ R0,THREE3CLR P1.2JNB P0.2,THREE4 ;判斷是否預(yù)置小時(shí)/年/生日月/鬧鈴的小時(shí)JNB GS,THREE4 ;是否顯示小時(shí)/年/生日月/鬧鈴的小時(shí)LCALL TWELVESJMP THREE7THREE4:MOV A,LED12ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE5:SETB P1.1NOPDJNZ R0,THREE5CLR P1.1MOV A,LED12SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE6:SETB P1.0NOPDJNZ R0,THR
42、EE6CLR P1.0JB P0.0,THREE7 ;數(shù)碼管56只有在顯示日期的天時(shí)才有預(yù)置閃爍功能,其余三項(xiàng)都不需要判斷閃爍JNB P0.1,THREE7JB P0.3,THREE7JNB P0.4,THREE7JNB GS,THREE7LCALL TWELVESJMP THREE10THREE7:MOV A,LED56ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE8:SETB P1.5NOPDJNZ R0,THREE8CLR P1.5MOV A,LED56SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE9:SETB P1.4NO
43、PDJNZ R0,THREE9CLR P1.4THREE10:DJNZ R1,TWOASJMP TWOBTWOA:LJMP TWOTWOB:MOV R1,#50 ;判斷閃爍一次是否完成CPL GS ;取反閃爍標(biāo)志,用于控制閃爍的亮和滅LJMP TWO ;一輪顯示完后再判斷開關(guān)號;*正常顯示THREE11:LCALL EIGHT ;判斷是否取反P1.6即輸出鬧鈴或整點(diǎn)報(bào)時(shí),以下每次顯示都要調(diào)用一次JB NB,THREE12 ;如果是在整點(diǎn)報(bào)時(shí)狀態(tài)就不顯示生日提醒,報(bào)時(shí)過后顯示提醒JNB BS,THREE12SJMP SEVEN ;跳到生日提醒程序THREE12:CLR NB ;開始正常顯示時(shí)間及
44、判斷鬧鈴輸出MOV A,LED34ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE13:SETB P1.3NOPDJNZ R0,THREE13CLR P1.3MOV A,LED34SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE14:SETB P1.2NOPDJNZ R0,THREE14CLR P1.2LCALL EIGHTMOV A,LED12ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE15:SETB P1.1NOPDJNZ R0,THREE15CLR P1.1MOV A,LED12SWAP AANL A
45、,#0FHMOVC A,A+DPTRMOV P2,ATHREE16:SETB P1.0NOPDJNZ R0,THREE16CLR P1.0LCALL EIGHTMOV A,LED56ANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE17:SETB P1.5NOPDJNZ R0,THREE17CLR P1.5MOV A,LED56SWAP AANL A,#0FHMOVC A,A+DPTRMOV P2,ATHREE18:SETB P1.4NOPDJNZ R0,THREE18CLR P1.4LJMP TWO ;一輪顯示完后判開關(guān)TAB3:DB 3FH,06H,5BH,4FH,6
46、6H,6DH,7DH,07H 7FH,6FH,40H,7CH,5EH;.3.4.5.6.7.8.9.-.b.d,的字形表"bd"在顯示生日時(shí)間時(shí)顯示在LED56;*SEVEN生日時(shí)顯示生日祝福語”HAPPY”SEVEN:MOV P1,#01HMOV P2,#76HDJNZ R0,SEVENSEVEN1:MOV P1,#02HMOV P2,#77HDJNZ R0,SEVEN1SEVEN2:MOV P1,#04HMOV P2,#73HDJNZ R0,SEVEN2SEVEN3:MOV P1,#08HMOV P2,#73HDJNZ R0,SEVEN3SEVEN4:MOV P1,#1
47、0HMOV P2,#6EHDJNZ R0,SEVEN4LJMP TWO;*EIGHT判斷是否鬧鈴子程序EIGHT:MOV A,RECJNE A,#0A1H,EIGHT1MOV A,MINCJNE A,RM,EIGHT1MOV A,HOURCJNE A,RH,EIGHT1SJMP EIGHT4 ;鬧鈴時(shí)間到則CPLP1.6一次并忽略生日標(biāo)志(即NB有效)EIGHT1:MOV A,MINCJNE A,#59H,EIGHT7MOV A,SECONDCJNE A,#59H,EIGHT5 ;是否等于59分59秒EIGHT2:MOV A,COUNT ;是否到達(dá)后半秒CJNE A,#10,EIGHT3EIG
48、HT3:JC EIGHT7EIGHT4:CPL P1.6SETB NBSJMP EIGHT7EIGHT5:MOV A,SECONDCJNE A,#51H,EIGHT6 ;是否大于51秒EIGHT6:JC EIGHT7JNB 10H,EIGHT7 ;判斷是否報(bào)低音JB FC,EIGHT7 ; 只有FC有效時(shí)才輸出SJMP EIGHT2EIGHT7:CPL FC ;用來控制報(bào)低音和高音,滿足報(bào)低音條件時(shí),調(diào)用兩次本程序?qū)1.6取反一次,高音時(shí)調(diào)用一次取反一次RET;* NINE中斷(T0)計(jì)時(shí)程序(包含了秒分時(shí)日月年間的進(jìn)位及判斷大小月,平閏年)NINE:MOV TH0,#3CH ;開定時(shí)器MO
49、V TL0,#0B0HSETB TR0INC COUNTMOV A,COUNTCJNE A,#20,INEAASJMP AAAINEAA:LJMP NINE1AAA:MOV COUNT,#0 ; 計(jì)時(shí)MOV A,SECONDADD A,#01DA A ;換成bcd碼以方便顯示MOV SECOND,ACJNE A,#60H,INEAAMOV SECOND,#0MOV A,MINADD A,#01DA AMOV MIN,ACJNE A,#60H,INEAAMOV MIN,#0MOV A,HOURADD A,#01DA AMOV HOUR,ACJNE A,#24H,INEAAMOV HOUR,#0M
50、OV A,DAYADD A,#01DA AMOV DAY,A;*判斷平閏年及大小月MOV A,MONTHCJNE A,#02H,TEN6AMOV A,YEAR ;把年由BCD碼換成二進(jìn)制碼ANL A,#0F0HSWAP AMOV B,#10MUL ABMOV 24H,AMOV A,YEARANL A,#0FHADD A,24HJB ACC.0,TEN5A ;二進(jìn)制碼后兩位為00表示為閏年JB ACC.1,TEN5AMOV 24H,#01MOV A,DAYCJNE A,#30H,NINE1MOV DAY,#1SJMP NINE0TEN5A:MOV A,DAYCJNE A,#29H,NINE1MO
51、V DAY,#1SJMP NINE0;*判斷大小月;大于等于8月時(shí)雙月為大月,小于8月時(shí)單月為大月TEN6A:MOV A,MONTHCJNE A,#08H,TEN7ATEN7A:JC TEN9AJB 18H,TEN8AMOV A,DAYCJNE A,#32H,NINE1MOV DAY,#1SJMP NINE0TEN8A:MOV A,DAYCJNE A,#31H,NINE1MOV DAY,#1SJMP NINE0TEN9A:JNB 18H,TEN10AMOV A,DAYCJNE A,#32H,NINE1MOV DAY,#1SJMP NINE0TEN10A:MOV A,DAYCJNE A,#31H,NINE1MOV DAY,#1;*NINE0:MOV A,MONTHADD A,#01DA AMOV MONTH,ASETB 05HCJNE A,#13H,NINE1MOV MONTH,#1MOV A,YEARADD A,#01DA AMOV YEAR,ANINE1:MOV A,MONTHCJNE A,BM,NINE2MOV A,DAYCJNE A,BD,NINE2JNB 05H,NINE2SETB BSN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部分?jǐn)嗝嫦锏谰蜻M(jìn)機(jī)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 鋼鐵鏈零件行業(yè)直播電商戰(zhàn)略研究報(bào)告
- 輔助測量器具企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 足球場設(shè)施行業(yè)直播電商戰(zhàn)略研究報(bào)告
- 高電阻電熱鋼和合金(粗鋼)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025年綢扇項(xiàng)目可行性研究報(bào)告
- 金屬顏料行業(yè)直播電商戰(zhàn)略研究報(bào)告
- 2025年紅外感應(yīng)開關(guān)項(xiàng)目可行性研究報(bào)告
- 2025年祛痘套裝項(xiàng)目可行性研究報(bào)告
- 2025年磁片自動計(jì)數(shù)器項(xiàng)目可行性研究報(bào)告
- (2023年度)中央廚房、集體供餐配送單位食品安全全項(xiàng)目自查記錄表
- 土的滲透性完整版本
- 強(qiáng)化業(yè)務(wù)運(yùn)營管理優(yōu)化業(yè)務(wù)流程的工作總結(jié)及計(jì)劃
- 獼猴桃果醬制作方法
- 逆變器行業(yè)營銷策略方案
- 國民經(jīng)濟(jì)行業(yè)分類與代碼
- 網(wǎng)絡(luò)互連技術(shù)-管控IP數(shù)據(jù)通信ACL(訪問控制列表)
- 幼兒園故事課件:《狼來了》
- 小學(xué)英語公開課The-Hug課件
- 第十章 思想政治教育的方法和藝術(shù)
- 堿柜治超大隊(duì)檢測站應(yīng)急預(yù)案
評論
0/150
提交評論