【正文】
始 化檢 測 是 否 有 鍵 按 下延 時 5 m s執(zhí) 行 相 應 代 碼檢 測 是 否 有 鍵 按 下檢 測 是 否 有 鍵 釋 放 圖 36 按鍵檢測子程序流程圖 洛陽理工學院畢業(yè)設(shè)計(論文) 21 第 4章 調(diào)試改進過程及運行結(jié)果分析 動態(tài)掃描的調(diào)試和分析 動態(tài)掃描是單片機編程中最基本的知識,雖對其原理有比較清晰的掌握,也曾用匯編語言寫過程序 ,但此次用 C 語言編寫還是出現(xiàn)了錯誤。首先是一定要對 I2C 總線時序有較深刻了解后再嘗試編程,第二就是要注意向 AT24C02 寫一個字和讀一個字的區(qū)別,當從 AT24C02 讀數(shù)據(jù)時一定要注意,當讀完時從機 AT24C02 一定要發(fā)送一個非應答信號表示數(shù)據(jù)讀完。按鍵去抖可通過以下語句實現(xiàn): if(key==0) { delay(5)。 { 按鍵處理程序 } } } 計算程序的分析與設(shè)計 由于里程和單價都精確的小數(shù)點后一位,而顯示時仍按整數(shù)顯示,只不過人為的加入 amp。 可以改進的地方可能有很多;就我現(xiàn)在所思考的可從 以下兩個方面加以考慮: 1. 嘗試著把兩個鎖存器 74HC573 去掉,當然不能影響整個計價器的功能,這樣會使硬件電路更簡潔,成本也會更低,符合實際中的最大利潤空間定理。 調(diào)試完成后在 Proteus 上仿真結(jié)果如圖 41, 42, 43, 44 所示。 通過對基于 Proteus 的仿真和實際電路的測試結(jié)果分析,表明用此方法設(shè)計的計價器。 2. PCB 板中如果把鍵盤和顯示器放在芯片和其它電路的反面,這樣封裝成實際產(chǎn)品時可把人機接口留在外面,更人性化,也符合人們的習慣。謹祝老師們工作順利,萬事如意,桃李滿天下;同學們學業(yè)有成,前程似錦!洛陽理工學院畢業(yè)設(shè)計(論文) 28 參考文獻 [1] 李朝青 . 單片機原理及接口技術(shù) (第三版 ). 北京 : 北京航空航天大學出版社 , 20xx [2] 郭天祥 . 51 單片機 C 語言教程 . 北京 :電子工業(yè)出版社 , 20xx [3] 單成祥 , 牛彥文 . 傳感器設(shè)計基礎(chǔ) . 北京 : 國防工業(yè)出版社 , 20xx [4] 竇振中 . 單片機外圍部件實用手冊輸出通道器件分冊 . 北京 :北京航空航天大學出版社 .20xx. [5] 楊素行 .模擬電子技術(shù)基礎(chǔ)簡明教程 .(第三版 ).北京 :高等 教育出版社 , 20xx [6] 閻石 .數(shù)字電子技術(shù) .(第五版 ).北京:高等 教育出版社 , 20xx [7] 張一斌 , 余建坤 .單片機原理課程設(shè)計 .長沙 :中南大學出版社 , 20xx [8] 萬隆 , 巴奉麗 . 單片機原理及應用技術(shù) .北京 :清華大學出版社 , 20xx [9] 馬淑華 , 王鳳文 , 張美金 . 單片機原理與接口技術(shù) (第二版 ). 北京 :北京郵電大學出版社 , 20xx [10] 陳威 . 基于單片機的電子密碼鎖的設(shè)計: [畢業(yè)論文 ] .浙江 :浙江科技學院 , 20xx [11] 高炎萃 , 武一 . 基于單片機的電機保護裝置設(shè)計 . 四川理工學院學報 , 20xx,第 23 卷第 1 期 [12] 譚浩強 . C 程序設(shè)計 (第三版 ). 北京 : 清華大學出版社 , 20xx [13] 劉宏 ,余勤科 . Protel 電路設(shè)計使用指南 . 西安 : 西安電子科技大學出版社 , 20xx [14] 趙偉軍 . Protel99E 教程 . 北京 : 人民郵電出版社 , 20xx [15] 龍脈工作室 . Protel99S 入門與典型實例 . 北京 : 人民郵電出版社 , 20xx [16] 譚浩強著 . C 程序設(shè)計 [M]. 北京 : 清華大學出版社 , 20xx [17] 張友德 , 趙志英 ,涂時亮著 . 單片微型機原理 應用與實驗 [M]. 上海 : 復旦大學出版社 , [18] 吳戈李 , 玉峰編著 . 案例學單片機 C 語言開發(fā) [M]. 北京 : 人民郵電出版社 , 洛陽理工學院畢業(yè)設(shè)計(論文) 29 [19] 孫余凱 . 傳感器應用電路 300 例 [M]. 北京 : 電子工業(yè)出版社 ,20xx. [20] 田立 . 51 單片機 C 語言程序設(shè)計快速 入門 [M]. 北京 : 人民郵電出版社 , 20xx [21] Chirs J. Geopoulos. Interface Fundamentals In Microprocessor- Controlled System[M]. Publishing Company, 1985 洛陽理工學院畢業(yè)設(shè)計(論文) 30 附 錄 A 系統(tǒng)原理圖 洛陽理工學院畢業(yè)設(shè)計(論文) 31 OE11D22D33D44D55D66D77D88D9GND10LE118Q127Q136Q145Q154Q163Q172Q181Q19V C C20U274 H C 5 73OE11D22D33D44D55D66D77D88D9GND10LE118Q127Q136Q145Q154Q163Q172Q181Q19VCC20U374 H C 5 73A01A12A23GND4V C C8WP7S C L6S D A5U4A T 24 C 02V C C40P 0. 039P 0. 138P 0. 237P 0. 336P 0. 435P 0. 534P 0. 633P 0. 732EA31A L E30P S E N29P 2. 021P 2. 122P 2. 223P 2. 324P 2. 425P 2. 526P 2. 627P 2. 728P 1. 01P 1. 12P 1. 23P 1. 34P 1. 45P 1. 56P 1. 67P 1. 78R S T9P 3. 0/ R X D10P 3. 1/ T X D11P 3. 2/ I N T 012P 3. 3/ I N T 113P 3. 4/ T 014P 3. 5/ T 115P 3. 6/ W R16P 3. 7/ R D17X T A L 218X T A L 119GND20U1S T C 89 C 5211 7 4 2 1 10 5 3129 8 6a b c d e f g d pc om 1 c om 2 c om 3 c om 4L E D ?7S E G ( 0 . 36 ) X 411 7 4 2 1 10 5 3129 8 6a b c d e f g d pc om 1 c om 2 c om 3 c om 4L E D ?7S E G ( 0 . 36 ) X 412345678161514131211109排阻R E S P A C K 4排阻R E S 8AS0S W P BS?S W P BS?S W P BS3S W P BS?S4GNDV C CGNDGNDGNDGND40 V C CV C CS 0 清零S 1 遞增S 2 遞減S 3 功能S 4 切換R3R6V C CP 1. 5P 1. 6GNDGNDV C CV C CC430pC530pY111 . 05 92 M162738495J?D B 9R81KS?S W P BR5510R7200 C322 U FV C CGND按鍵電平復位電路內(nèi)部時鐘電路C?LED掉電存儲單元V C C1GND2OUT3U 11A 44 EV C CGND霍爾傳感器R R I N 28R R I N 113R T O U T 27R T O U T 114C A P 25C A P 2+4C A P 6GND15V C C16C A P +2C A P 1+1C A P 13T I N 111T I N 210R O U T 112R O U T 29U8C0. 1U FC70. 1U FC0. 1U FC0. 1U FC0. 1U FV C CGND洛陽理工學院畢業(yè)設(shè)計(論文) 32 附 錄 B 仿真圖 PCB 板 洛陽理工學院畢業(yè)設(shè)計(論文) 33 洛陽理工學院畢業(yè)設(shè)計(論文) 34 附 錄 C 系統(tǒng)源程序 include include define uchar unsigned char define uint unsigned int uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}。 sbit key0=P1^0。 // 功能鍵 sbit key4=P1^4。 sbit dula=P1^5。 洛陽理工學院畢業(yè)設(shè)計(論文) 35 //sbit WP=P3^5。 //uchar danjia1=11,danjia2=22,danjia3=33,qibu=44,danjiazc。 void delay(uint x) { int i,j。j0。 _nop_()。 _nop_()。 } 洛陽理工學院畢業(yè)設(shè)計(論文) 36 void I2C _init() { Sda=1。 delayNOP( ) 。 delayNOP( ) 。 delayNOP( ) 。 delayNOP( ) 。 delayNOP( )。 delayNOP( )。 delayNOP( )。 Scl=0。 洛陽理工學院畢業(yè)設(shè)計(論文) 38 else Sda=0。 BitCounter。 uchar temp1=0。 delayNOP( )。 temp=temp|0x01。 temp=temp1。 return(temp)。 Send(Addresss)。 stop()。 Send(0xa0)。 start()。 NoAck()。 I2C _init()。 P3=0x10。 } } */ void display( uint zongjine0,uint dengdai0,uint licheng0,uint danjia0) //數(shù)碼管 //顯示 { uint jshi,jge,jjiao,dengd,lshi,lge,dge,djiao。 jjiao=zongjine0%100%10。 dge=danjia0/10。 wela=0。 delay(4)。 dula=1。 delay(4)。 dula=1。 wela=1。 P0=table[dengd]。 P2=0x10。0x7f。 P2=0x20。 dula=0。 洛陽理工學院畢業(yè)設(shè)計(論文) 43 wela=0。 dula=0。 wela=0。 delay(4)。 while(!key3)。 if(key1==0) { 。 while(!key3)。