單片機雙機通信系統(tǒng)-畢業(yè)論文設計.doc
《單片機雙機通信系統(tǒng)-畢業(yè)論文設計.doc》由會員分享,可在線閱讀,更多相關《單片機雙機通信系統(tǒng)-畢業(yè)論文設計.doc(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 成都信息工程學院電子工程學院成都信息工程學院電子工程學院 電子技術綜合設計 總結報告總結報告 題題 目:目: 單片機雙機通信系統(tǒng)單片機雙機通信系統(tǒng) 專專 業(yè):業(yè): 生物醫(yī)學工程生物醫(yī)學工程 班班 級:級: 2012 級級 1 班班 姓姓 名:名: 指導教師:指導教師: 胡老師胡老師 評評 分:分: 2014 年 12 月 20 日 目錄目錄 1 1項目計劃項目計劃 1 1 1.1 項目背景 1 1.2 方案設計可行性分析 1 1.2.1 需求分析 .1 1.2.2 可行性分析 .1 1.3 項目執(zhí)行計劃 2 2 2設計說明設計說明 3 3 2.1 方案設計 3 2.2 硬件設計原理 4 2.
2、2.1 單片機系統(tǒng) .4 2.2.2 DS1302 時鐘模塊 5 2.2.3 MAX232 電平轉換 6 2.2.4 數(shù)碼管顯示.7 2.2.5 按鍵模塊 .7 2.3 各單元模塊設計流程圖 8 2.3.1 硬件總設計框圖 .8 2.3.2 DS1302 程序設計 9 2.3.3 按鍵程序設計.9 2.3.4 串口程序設計 11 3 3調試說明調試說明 1111 3.1 調試方法及步驟 .11 3.2 調試數(shù)據(jù) .12 3.3 故障分析 .14 3.4 設計注意事項: .14 4 4總結總結 1515 5 5參考文獻參考文獻 1515 6 6附錄附錄 1616 單片機雙機通信系統(tǒng) 第 0 頁
3、1項目計劃 1.1項目背景 單片機作為微型計算機的一個分支,其功能強、體積小、應用靈活等諸多 優(yōu)點,在工業(yè)控制、儀器儀表、通信、家用電器和國際科技等各個領域得到廣 泛的應用,隨著集成電路技術的不斷發(fā)展,單片機的性能也在不斷提高其應用 的范圍必將越來越寬廣。然而,隨著單片機在工業(yè)自動化控制、智能儀器中的 廣泛應用,單片機已經(jīng)逐漸滿足需要,多機協(xié)同工作已經(jīng)成為重要的發(fā)展趨勢, 多機應用的關鍵就在于多級之間的互相通信、互傳數(shù)據(jù)信息。單片機和計算機 的共同發(fā)展下,單片機的應用從獨立的單片機向網(wǎng)絡發(fā)展,由計算機和單片機 構成的多機網(wǎng)絡系統(tǒng)也是單片機技術發(fā)展的一個方向。 單片機多機通信是指由兩臺以上的單片
4、機組成的網(wǎng)絡結構,可以通過串行 通信方式共同實現(xiàn)對某一過程的最終控制。隨著計算機技術的發(fā)展,多機通信 技術也在不斷的發(fā)展,現(xiàn)在發(fā)展比較成熟的還有光纖通信等。由于計算機的飛 速發(fā)展和控制系統(tǒng)的復雜化,多機通信已經(jīng)越來越成為人們熱門話題之一。目 前,單片機多機通信的形式較多,但通??煞譃樾切?、環(huán)型、串行總線型和主 從式多機型四種。 1.2方案設計可行性分析 1.2.1 需求分析 1.設計任務 a.設計兩個單片機系統(tǒng); b.兩單片機之間可以進行遠距離通信; c.能夠通過數(shù)碼管顯示時間; d.能夠通過按鍵設置本機和對方的時間。 2.設計要求 a.基本要求:設計兩個小系統(tǒng),能實現(xiàn)有線互相通信(互設時間+
5、數(shù)據(jù)共享) 。 b.擴展要求:遠距離通信或無線通信,并能實現(xiàn)校驗。 1.2.2 可行性分析 單片機雙機通信系統(tǒng) 第 1 頁 a. 市場可行性分析 單片機作為微型計算機的一個分支,其功能強、體積小、應用靈活等諸多 優(yōu)點,在工業(yè)控制、儀器儀表、通信、家用電器和國際科技等各個領域得到廣 泛的應用。 b. 技術可行性分析 本項目在設計上思路簡單,已設計出合理的實際方案,可以實現(xiàn)基礎要求 和擴展要求,并達到比較好的效果。 c. 資源可行性分析 資源有人力資源和材料資源,已考慮到各個階段所需人才類型及數(shù)量,完 全可以保證項目實施的有條不紊。 d. 經(jīng)濟成本可行性分析 本項目設計結構簡單,材料在原理圖設計完
6、成后導師派發(fā)。材料易購,成 本還是較為合適。 e. 項目風險分析 從項目整體上來說考慮各方面較為全面,風險指數(shù)已經(jīng)降到最低,可以實 施。 1.3項目執(zhí)行計劃 下表為本項目進行的時間進度及人員分配情況: 表 1.1 工程進度 工程名稱 工期(天) 開始時間提交時間人員安排 原理圖設計32014.10.082014.10.11彭躍秒 PCB 布局32014.10.162014.10.19彭躍秒 程序設計32014.10.202014.10.23鈕麗媛 設計說明書22014.10.022014.10.04張惠琳 安裝、調試22014.11.022014.11.04鈕麗媛 安裝調試說明書12014.1
7、1.142014.11.15張惠琳 項目提交12014.12.032014.12.03鈕麗媛 表 1.2 材料清單 序號名稱型號規(guī)格號位數(shù)量 1 單片機STC89C52RC40C(PDIP40) U1 2 片 2 接口芯片 MAX232CPEU2 2 片 3 四聯(lián)數(shù)碼管 3461ASSEG1 2 個 4 時鐘芯片 DS1302NLY1 2 個 單片機雙機通信系統(tǒng) 第 2 頁 5 二極管 D1 2 個 5 按鍵立式 6*6*5(4 腳黑)S1、S2、S36 個 6 電池 LITIUM CELLCR1220 3V 2 個 7 晶振11.0592MHz、32.765MHzY1、A14 個 8 電阻
8、10KR1 2 個 9 電解電容10uF、100uFC3、C64 個 10 瓷片電容30pF、104C5、C714 個 11 連接線DB9 公頭 1.5m DB9 1 根 12 上拉電阻 1KP1 2 個 11 底座DIP40、DIP16、DIP8U1、U2、NLY13 個 12 指示燈LED 顯示燈、紅 LED 2 個 13 排針若干 2設計說明 2.1方案設計 通過兩個 STC89C52 單片機為核心設計通信系統(tǒng)。單片機都帶有串口,系 統(tǒng)要求遠距離通信,所以有對外連接的串口相互之間的數(shù)據(jù)共享。單片機的并 行端口也能相互連接來進行數(shù)據(jù)通信。要求互設時間,可以在 IO 口連接一時鐘 模塊,這里
9、選擇 DS1302 時鐘芯片實現(xiàn),需要用到按鍵對時間設置,顯示則各 自需要數(shù)碼管。 在本次設計中硬件部分:對于兩片 89C52 采用 RS232 進行雙機通信硬件的 連接方法如圖所示。電平轉換芯片采用 MAX232,其連接一般采用雙絞線。發(fā) 送方的數(shù)據(jù)由串行口 TXD 段輸出,經(jīng)過電平轉換芯片 MAX232 將 TTL 電平轉 換為 RS232 電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用 MAX232 芯片進行電平轉換后,信號到達接收方串行口的接收端。接受方接收 后在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光 耦合進行光電隔離。 軟件部分:通過通信協(xié)議進行發(fā)送和
10、接收。初始時兩個數(shù)碼管顯示初始值。 單片機 A 對 B 進行時間設置前要先對自己設置時間,此時顯示標志;設置之后 需對 B 設時間,再顯示標志開始。通過通信協(xié)議進行發(fā)送接收,A 機在設置時 可在 B 機上同時看到顯示。與主機發(fā)送來的檢驗和進行比較,若檢驗和相同則 發(fā)送字符給主機 TXD AT89C52 RXD T2INT2OUT MAX232 R2OUT R2IN R2INT2IN MAX232 T2OUTR2OUT TXD AT89C52 RXD 單片機雙機通信系統(tǒng) 第 3 頁 2.2硬件設計原理 2.2.1 單片機系統(tǒng) STC89C52 芯片:有 8k 字節(jié) Flash,512 字節(jié) RA
11、M, 32 位 I/O 口線,看門 狗定時器,內置 4KB EEPROM,MAX810 復位電路,3 個 16 位定時器/計數(shù)器, 4 個外部中斷,一個 7 向量 4 級中斷結構(兼容傳統(tǒng) 51 的 5 向量 2 級中斷結構) ,全雙工串行口??臻e模式下,CPU 停止工作,允許 RAM、定時器/計數(shù)器、 串口、中斷繼續(xù)工作。掉電保護方式下,RAM 內容被保存,振蕩器被凍結,單 片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率 35MHz,6T/12T 可選。單片機有 32 根輸入/輸出線,組成 4 個 8 位并行輸入/輸 出接口,分別稱為 P0 口、P1 口、P2 口、P3 口。每
12、個接口都由鎖存器、輸出驅 動器和輸入緩沖器組成。P0 口和 P2 口還可用于對外部存儲器訪問的地址和數(shù) 據(jù)總線。P0 口作為 I/O 接口使用時,輸出級屬于開漏電路,必須接上拉電阻才 有高電平輸出。在 TXD 和 RXD 處接一個下載口下載程序。 單片機最小系統(tǒng)或稱為最小應用系統(tǒng),是指利用單片機自身的資源,用最 少的輔助元件組成一個可以工作的系統(tǒng)。包括電源(地) 、晶振(一般使用 11.0592MHz 或者 12MHz)和復位電路。 圖 2.1 單片機最小系統(tǒng) 振蕩電路:如圖可見,由兩個 30pF 的電容與 11.0592MHz 的晶振構成穩(wěn)定 單片機雙機通信系統(tǒng) 第 4 頁 的自激振蕩器,屬
13、于內時鐘方式。這兩個電容對頻率有微調的作用,為減少寄 生電容,振蕩器和電容應盡可能安裝得與單片機芯片靠近。 復位電路:在 RST 復位輸入上接入 10uF 電容至 VCC 端,在接一個 10K 電阻接地,組成上電復位電路。上電原理是,在加電時,Vcc 通過電容提供給 RST 端一個短暫的高電平信號,此后該高電平信號隨 Vcc 對電容的充電過程而 逐漸回落,即 RST 高電平持續(xù)時間取決于電容的充電時間。上電時,vcc 的上 升時間約為 10ms,而振蕩器的起振時間取決于振蕩頻率。 2.2.2 DS1302 時鐘模塊 芯片簡介:實時時鐘電路 DS1302 是一種具有涓細電流充電能力的電路, 主要
14、特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并 且可以關閉充電功能。采用普通 32.768kHz 晶振。工作電壓為 2.5V5.5V。本 項目采用三線接口通過 5、6、7 腳與 CPU 進行同步通信。 DS1302 內部有一個 318 的用于臨時性存放數(shù)據(jù)的 RAM 寄存器。 DS1302 的引腳排列,其中 Vcc2 為主電源,VCC1 為后備電源。在主電源關 閉的情況下,也能保持時鐘的連續(xù)運行。DS1302 由 Vcc1 或 Vcc2 兩者中的較 大者供電。當 Vcc2 大于 Vcc1+0.2V 時,Vcc2 給 DS1302 供電。當 Vcc2 小于 Vcc1 時,DS1
15、302 由 Vcc1 供電。RST 是復位/片選線,通過把 RST 輸入驅動置 高電平來啟動所有的數(shù)據(jù)傳送。當 RST 為高電平時,所有的數(shù)據(jù)傳送被初始化, 允許對 DS1302 進行操作。如果在傳送過程中 RST 置為低電平,則會終止此次 數(shù)據(jù)傳送,I/O 引腳變?yōu)楦咦钁B(tài)。上電運行時,在 Vcc2.0V 之前,RST 必須保 持低電平。只有在 SCLK 為低電平時,才能將 RST 置為高電平。I/O 為串行數(shù) 圖 2.2DS1302 電路圖 據(jù)輸入輸出端(雙向)。 SCLK 為時鐘輸入端。 備用電源 Vcc1,可以用電池或者超級電容器(0.1F 以上)。如果要長時間保 證時鐘正常,選用小型充
16、電電池??梢杂美鲜诫娔X主板上的 3.6V 充電電池。如 果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。 單片機雙機通信系統(tǒng) 第 5 頁 100 F 就可以保證 1 小時的正常走時。DS1302 在第一次加電后,必須進行初始 化操作。初始化后就可以按正常方法調整時間。本項目有 100 F 電解電容,也 采用了在備用電源處使用 3V 的電池供電。二極管的作用是給 100uF 的電容充 放電。下圖是 DS1302 在本設計中的原理圖: 2.2.3 MAX232 電平轉換 用 8051 串行接口通信,如果兩臺 8051 單片機之間的距離很近(不超過 1.5m) ,可以采用直接
17、將兩臺 8051 單片機的串行接口直接相連,利用其自身的 TTL 電平(0-5V)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(超過 1.5m) ,由于 傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù) 或數(shù)據(jù)出錯。 RS-232C 對電器特性、邏輯電平和各種信號線功能都作了規(guī)定。 在 TxD 和 RxD 上:邏輯 1(MARK)=-3V-15V ,邏輯 0(SPACE)=+315V 。在 RTS、CTS、DSR、DTR 和 DCD 等控制線上:信號有效(接通,ON 狀態(tài),正 電壓)+3V+15V ,信號無效(斷開,OFF 狀態(tài),負電壓)=-3V-15V 。 為了能夠同計算機接口或終
18、端的 TTL 器件連接,必須在 EIA-RS-232C 與 TTL 電路之間進行電平和邏輯關系的變換。 圖 2.3MAX232 模塊原理圖 最大直接傳輸距離說明:RS-232C 標準規(guī)定,若不使用 MODEM,在碼元 畸變小于 4%的情況下,DTE 和 DCE 之間最大傳輸距離為 15m(50 英尺。 DB-9 連接器 : 用 RS-232 總線連接系統(tǒng)有近程通訊方式和遠程通訊方式兩種,近程通訊 是指傳輸距離小于 15 米的通訊,可以用 RS-232 電纜直接連接。15 米以上的長 單片機雙機通信系統(tǒng) 第 6 頁 距離通訊,需要采用調制調解器。 計算機和終端用 RS-232 連接的交叉“發(fā)送數(shù)
19、據(jù)”與“接收數(shù)據(jù)”是交 叉相連的,使得兩臺設備都能正常的發(fā)送和接收。 在于 DB9 相連時需要考慮 RS232 串口接線是公頭還是母頭,因為兩單片機的 TXD 與 RXD 必須交叉相連。 數(shù)據(jù)發(fā)送與接收線: 發(fā)送數(shù)據(jù)(TxD)通過 TxD 終端將串行數(shù)據(jù)發(fā)送到 MODEM。 接收數(shù)據(jù)(RxD)通過 RxD 線終端接收從 MODEM 發(fā)來的串行數(shù)據(jù)。 2.2.4 數(shù)碼管顯示 數(shù)碼管段選與位選接口如圖所示,設置強推挽輸出,使數(shù)碼管顯示亮度增 加。P0 口與數(shù)碼管段選之間接入 1k 的排阻限流,相比加上拉電阻會減少單片 機的功耗。 因為上拉電阻在 IO 口輸出低電平時也會有電流,如果接入限流電阻就會
20、避 免這種情況,從而減少功耗。 圖 2.4 數(shù)碼管顯示原理圖 2.2.5 按鍵模塊 本項目有六個按鍵,每個單片機三個。按鍵一端接地另一端接單片機的 I/O 口。S1、S2、S3 分別標志點移位鍵、加 1 鍵、菜單鍵。 單片機雙機通信系統(tǒng) 第 7 頁 圖 2.5 按鍵原理圖 2.3各單元模塊設計流程圖 2.3.1 硬件總設計框圖 兩個單片機通信,每個單片機由四個模塊組成。該項目原理圖及 PCB 圖是 在 Altium Deigner 軟件下設計的。設計框圖如下圖所示。 圖 2.6 總設計框圖 2.3.2 主程序設計 該項目軟件設計使用的是 Keil 編程軟件。 單片機雙機通信系統(tǒng) 第 8 頁 圖
21、 2.7 主程序流程圖 UartInit(); /串口初始化 Init_DS1302(5555); /初始化 1302 KeyScan(); /按鍵掃描 DisPlayKey(); /按鍵響應操作 GetTime( ); /獲取當前 ds1302 的時間 display(DisNum); /顯示當前調整的時間 display(SendNum); /顯示對目標單片機的調整的時間 SendString(UartNum); /發(fā)送調整時間到目標單片機 2.3.2 DS1302 程序設計 主要是對時間的設置函數(shù): Write_Data(0 x8e,0 x00); /寫保護關 Write_Data(0
22、x80,Sec); /初始秒值為 50 Write_Data(0 x82,Min);/初始分鐘值為 59 Write_Data(0 x90,0 x01); /充電 Write_Data(0 xc0,0 xf0); /初始化一次標示 Write_Data(0 x8e,0 x80); 2.3.3 按鍵程序設計 按鍵掃描: 單片機雙機通信系統(tǒng) 第 9 頁 圖 2.8 按鍵掃描框圖 if( (P1 /讀出鍵值 while( (P1 /等待按鍵松開 按鍵響應: 圖 2.9 按鍵響應框圖 void DisPlayKey(void) /按鍵響應 /如果是對自己設置時間就將自己的時間裝入調整數(shù)組 if (fl
23、ag = 1) temp0 = DisNum / 1000; temp1 = DisNum % 1000 / 100; temp2 = DisNum % 100 / 10; temp3 = DisNum % 10; /如果是對對方設置時間就將發(fā)送時間裝入調整數(shù)組 /根據(jù)鍵值調整 調整數(shù)組里的數(shù)字 /組合調整后的數(shù)字 /更改調整模式 單片機雙機通信系統(tǒng) 第 10 頁 2.3.4 串口程序設計 圖 2.10 串口中斷流程圖 SCON = 0X50;/串口工作方式 1 TMOD = 0 x20;/設定定時器 1 的工作方式為方式 2(8 位自動重裝) TH1 = -3;/設置串口波特率為 9600
24、TL1 = -3; TR1 = 1; /開啟定時器 ES = 1; /開串口中斷 /判斷數(shù)據(jù)是否結束,校驗 if (uart_datanum-1 = * uint8_t UartNum10; UartInit(); /串口初始化 Init_DS1302(5555);/初始化 1302 EA = 1;/開總中斷 while(1) KeyScan(); /按鍵掃描 DisPlayKey(); /按鍵響應操作 if (flag = 0) /菜單 0 GetTime( ); /獲取當前 ds1302 的時間 /轉換時間 秒 timenum = (DateTime04)*10+(DateTime0 /轉
25、換時間 分 timenum += (DateTime14)*1000+(DateTime1 display(timenum); /顯示當前時間 DisNum = 3333; /初始化標志位 3333 SendNum = 4444; /初始發(fā)送標志位 4444 if(flag = 1) /菜單 1 display(DisNum); /顯示當前調整的時間 Init_DS1302(DisNum); /用當前調整的時間初始化 ds1302 if (flag = 2) /菜單 2 display(SendNum); /顯示對目標單片機的調整的時間 /將調整的時間轉換成字符 UartNum0 = (Sen
26、dNum / 1000) + 0; UartNum1 = (SendNum % 1000 / 100) + 0; UartNum2 = (SendNum % 100 / 10) + 0; UartNum3 = (SendNum % 10) + 0; UartNum4 = *; /通信結束標志位 單片機雙機通信系統(tǒng) 第 19 頁 UartNum5 = *; UartNum6 = 0; SendString(UartNum); /發(fā)送調整時間到目標單片機 if (uart_flag = 1) /串口接收標志位 NewTime = 0; /接收到的設置時間 /將接收到的字符時間轉換成數(shù)字 NewTi
27、me = (uart_data0- 0)*1000 +(uart_data1- 0)*100 +(uart_data2- 0)*10 +(uart_data3- 0); Init_DS1302(NewTime); /用接收到的新時間初始化 1302 uart_flag = 0; /標志位置零 /*串口程序*/ #include “uart.h“ static uint8_t num = 0; bit busy = 0; uint8_t uart_flag; uint8_t uart_data20; void UartInit(void) SCON = 0X50; /串口工作方式 1 TMOD
28、= 0 x20; /設定定時器 1 的工作方式為方式 2(8 位自動重裝) TH1 = -3;/設置串口波特率為 9600 TL1 = -3; TR1 = 1; /開啟定時器 ES = 1; /開串口中斷 void SendData(uint8_t dat) while (busy); /等待當前字符發(fā)送結束 SBUF = dat; /發(fā)送數(shù)據(jù) busy = 1; 單片機雙機通信系統(tǒng) 第 20 頁 /* /*函數(shù)名稱:字符串發(fā)送函數(shù) /*函數(shù)功能:發(fā)送一串字符 /*入口參數(shù):字符串首地址 /*調用方式:SendString(“asdfghjk“); */ void SendString(uin
29、t8_t *s) while (*s != 0) SendData(*s+); /發(fā)送字符 void UART_SER(void) interrupt 4 /串口中斷 if (RI) /判斷若為收 RI = 0; uart_datanum = SBUF; /讀取 SBUF 到 uart_DATA 數(shù)組 num+; /判斷數(shù)據(jù)是否結束,校驗 if (uart_datanum-1 = * /將串口新數(shù)據(jù)標志位置 1 num = 0;/清零數(shù)組 num if (TI) /判斷若為發(fā) TI = 0; busy = 0; /*DS1302 */ #include “ds1302.h“ uint8_t D
30、ateTime7; void Write_A_Byte_TO_DS1302(uint8_t dat) 單片機雙機通信系統(tǒng) 第 21 頁 uint8_t i; SCLK=0;/初始時鐘線置為 0 _nop_(); _nop_(); _nop_(); /開始傳輸 8 個字節(jié)的數(shù)據(jù) for(i=0; i=1;/數(shù)據(jù)右移一位,準備傳輸下一位數(shù)據(jù) uint8_t Get_A_Byte_FROM_DS1302(void) uint8_t i, dat; _nop_(); _nop_(); _nop_(); for(i=0;i=1; /要返回的數(shù)據(jù)左移一位 if(IO=1) /當數(shù)據(jù)線為高時,證明該位數(shù)據(jù)為
31、 1 dat|=0 x80; /要傳輸數(shù)據(jù)的當前值置為 1,若不是,則為 0 SCLK=1; /拉高時鐘線 _nop_(); _nop_(); _nop_(); SCLK=0; /制造下降沿 單片機雙機通信系統(tǒng) 第 22 頁 _nop_(); _nop_(); _nop_(); return dat;/返回讀取出的數(shù)據(jù) uint8_t Read_Data(uint8_t addr) uint8_t dat; RST = 0; SCLK=0; RST=1; Write_A_Byte_TO_DS1302(addr); dat = Get_A_Byte_FROM_DS1302(); SCLK=1;
32、RST=0; return dat; void GetTime(void) uint8_t i,addr = 0 x81; for(i=0;i7;i+) DateTimei=Read_Data(addr); _nop_(); _nop_(); _nop_(); addr+=2; void Init_DS1302(uint16_t num) uint8_t temp4, Sec, Min; temp0 = num / 1000; temp1 = num % 1000 / 100; temp2 = num % 100 / 10; temp3 = num % 10; Min = temp0*16+t
33、emp1; 單片機雙機通信系統(tǒng) 第 23 頁 Sec = temp2*16+temp3; Write_Data(0 x8e,0 x00); /寫保護關 Write_Data(0 x80,Sec); /初始秒值為 50 Write_Data(0 x82,Min); /初始分鐘值為 59 /Write_Data(0 x84,0 x17); /初始為 24 小時模式 初始時間為 23 點 /Write_Data(0 x86,0 x19); /19 日 Write_Data(0 x90,0 x01); /充電 Write_Data(0 xc0,0 xf0); /初始化一次標示 Write_Data(0
34、 x8e,0 x80); void Write_Data(uint8_t cmd, uint8_t dat) RST=0; /初始 CE 線置為 0 SCLK=0; /初始時鐘線置為 0 RST=1; /初始 CE 置為 1,傳輸開始 /傳輸命令字,要寫入的時間/日歷地址 Write_A_Byte_TO_DS1302(cmd); /寫入要修改的時間/日期 Write_A_Byte_TO_DS1302(dat); SCLK=1; /時鐘線拉高 RST=0; /讀取結束,CE 置為 0,結束數(shù)據(jù)的傳輸 /*按鍵程序*/ #include “key.h“ uint8_t wei = 0; uint1
35、6_t DisNum = 0; uint16_t SendNum = 1234; uint8_t cKey = 7; uint8_t flag = 0; void KeyScan(void) /掃描按鍵管腳是否有電平變化 if( (P1 /讀出鍵值 while( (P1 /等待按鍵松開 if(cKey = 0 xc0) / P2.1 按下 - 單片機雙機通信系統(tǒng) 第 24 頁 wei+; if (wei = 4) wei = 0; if(cKey = 0 xa0) / P2.2 按下 + cKey = 3; if(cKey = 0 x60)/ P2.2 按下 + cKey = 5; void
36、DisPlayKey(void) /按鍵響應 uint8_t temp4; /如果是對自己設置時間就將自己的時間裝入調整數(shù)組 if (flag = 1) temp0 = DisNum / 1000; temp1 = DisNum % 1000 / 100; temp2 = DisNum % 100 / 10; temp3 = DisNum % 10; if (flag = 2) /如果是對對方設置時間就將發(fā)送時間裝入調整數(shù)組 temp0 = SendNum / 1000; temp1 = SendNum % 1000 / 100; temp2 = SendNum % 100 / 10; tem
37、p3 = SendNum % 10; /根據(jù)鍵值調整 調整數(shù)組里的數(shù)字 if (wei = 0) if (cKey = 3) 單片機雙機通信系統(tǒng) 第 25 頁 temp0 += 1; if (temp0 = 10) temp0 = 0; cKey = 7; if (wei = 1) if (cKey = 3) temp1 += 1; if (temp1 = 10) temp1 = 0; cKey = 7; if (wei = 2) if (cKey = 3) temp2 += 1; if (temp2 = 10) temp2 = 0; cKey = 7; if (wei = 3) if (cK
38、ey = 3) temp3 += 1; 單片機雙機通信系統(tǒng) 第 26 頁 if (temp3 = 10) temp3 = 0; cKey = 7; if (flag = 1) /組合調整后的數(shù)字 DisNum = temp0*1000 + temp1*100 + temp2*10 + temp3; if (flag = 2) SendNum = temp0*1000 + temp1*100 + temp2*10 + temp3; if (cKey = 5) /更改調整模式 flag+; if (flag = 3) flag = 0; cKey = 7; /*數(shù)碼管顯示*/ #include “
39、display.h“ uint8_t code acLEDCS4 = 0 xef, 0 xdf, 0 xbf, 0 x7f; uint8_t code acLedSegCode10 = 0 x5f, 0 x44, 0 x9d, 0 xd5, 0 xc6, 0 xd3, 0 xdb, 0 x45, 0 xdf, 0 xd7; void display(int16_t disnum) 單片機雙機通信系統(tǒng) 第 27 頁 uint8_t i, acLED4; acLED0 = acLedSegCodedisnum / 1000;/取出千位 acLED1 = acLedSegCodedisnum % 1
40、000 / 100;/取出百位 acLED2 = acLedSegCodedisnum % 100 / 10;/取出十位 acLED3 = acLedSegCodedisnum % 10;/取出個位 for (i=0; i4; i+) P0 = acLEDi;/顯示相應的數(shù)字 P2 |= 0 xf0; /前四位置 1 后四位不變 if (i = wei) P0 |= 0 x20;/表示小數(shù)點 P2 /位選 Delay(2); P2 = 0 xff; /消隱 /*延時*/ #include “delay.h“ void Delay(uint16_t time) uint16_t i, j; for(i=0; itime; i+) for(j=0; j100; j+) ;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案