




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、皖 西 學(xué) 院 課 程 設(shè) 計(jì) 系 別: 機(jī)械與電子工程系 專 業(yè): 電子信息科學(xué)與技術(shù) 學(xué) 生 姓 名: 學(xué) 號(hào): 課程設(shè)計(jì)題目: 簡易計(jì)算器的設(shè)計(jì) 起 迄
2、0; 日 期: 6月22日7月4日課程設(shè)計(jì)地點(diǎn): 指 導(dǎo) 教 師: 目錄第一章 緒論·························
3、83;·························11.1 課程設(shè)計(jì)的目的······················
4、83;·························11.2 課程設(shè)計(jì)的要求······················
5、83;·························1 1.2.1 總體設(shè)計(jì)······················
6、83;·························1 1.2.2 硬件設(shè)計(jì)······················
7、83;·························1 1.2.3 軟件設(shè)計(jì)······················
8、83;·························2 1.2.4 軟、硬件聯(lián)調(diào)······················&
9、#183;·····················2第二章 系統(tǒng)電路設(shè)計(jì)··························
10、183;·················22.1 計(jì)算器系統(tǒng)設(shè)計(jì)框架······························
11、···············22.2 計(jì)算器基本設(shè)計(jì)思路································
12、3;············32.3 STC12C5A60S2單片機(jī)最小系統(tǒng)板簡介·····························3 2.3.1 STC12C5A60S2功能介紹&
13、#183;·································3 2.3.2 CH452功能介紹·············
14、183;····························6第三章 系統(tǒng)軟件設(shè)計(jì)···················
15、83;························73.1 程序設(shè)計(jì)流程圖·······················
16、83;·························73.2 算數(shù)運(yùn)算·······················
17、································73.3 系統(tǒng)主程序················
18、183;····································8第四章 實(shí)驗(yàn)結(jié)果分析···········
19、83;································84.1 實(shí)驗(yàn)使用的儀器···············
20、83;·································84.2 測(cè)試結(jié)果分析··············
21、3;····································8結(jié)束語·············
22、···············································10參考文獻(xiàn)··
23、··················································
24、······10附錄···········································
25、183;···················1017第一章 緒論 1.1 課程設(shè)計(jì)的目的 課程設(shè)計(jì)是培養(yǎng)和鍛煉學(xué)生在學(xué)習(xí)完本門課后綜合應(yīng)用所學(xué)理論知識(shí),解決實(shí)際工程設(shè)計(jì)和應(yīng)用問題的能力的重要教學(xué)環(huán)節(jié)。它具有動(dòng)手、動(dòng)腦和理論聯(lián)系實(shí)際的特點(diǎn),是培養(yǎng)在校工科大學(xué)生理論聯(lián)系實(shí)際、敢于動(dòng)手、善于動(dòng)手和獨(dú)立自主解決設(shè)計(jì)實(shí)踐中遇到的各種問題能力
26、的一個(gè)重要教學(xué)環(huán)節(jié)。 通過課程設(shè)計(jì),要求學(xué)生熟悉和掌握微機(jī)系統(tǒng)的軟件、硬件設(shè)計(jì)的方法、設(shè)計(jì)步驟,使學(xué)生得到微機(jī)開發(fā)應(yīng)用方面的初步訓(xùn)練。讓學(xué)生獨(dú)立或集體討論設(shè)計(jì)題目的總體設(shè)計(jì)方案、編程、軟件硬件調(diào)試、編寫設(shè)計(jì)報(bào)告等問題,真正做到理論聯(lián)系實(shí)際,提高動(dòng)手能力和分析問題、解決問題的能力,實(shí)現(xiàn)由學(xué)習(xí)知識(shí)到應(yīng)用知識(shí)的初步過渡。通過本次課程設(shè)計(jì)使學(xué)生熟練掌握微機(jī)系統(tǒng)與接口擴(kuò)展電路的設(shè)計(jì)方法。 而本次的課程設(shè)計(jì)是圍繞單片機(jī)實(shí)現(xiàn)的,是基于STC12C5A60S2單片機(jī)的最小系統(tǒng)板搭建的課程設(shè)計(jì)電路。 1.2 課程設(shè)計(jì)的要求 設(shè)計(jì)一計(jì)算器,要求至少能完
27、成2位數(shù)的加減乘除運(yùn)算。 1.2.1、總體設(shè)計(jì) 本階段的任務(wù)是通過調(diào)查研究,查閱資料來初步確定系統(tǒng)結(jié)構(gòu)的總體方案,其中主要涉及到硬件和軟件的功能劃分。 應(yīng)用系統(tǒng)中硬件和軟件具有一定的互換性,即某些功能既可以用硬件實(shí)現(xiàn)也可以用軟件實(shí)現(xiàn)。一般說來,用硬件實(shí)現(xiàn)的優(yōu)點(diǎn)是可以提高系統(tǒng)的工作速度,但會(huì)增加電路的復(fù)雜性和硬件成本;而用軟件代替某些硬件的功能可以使電路簡化,便于修改設(shè)計(jì),降低硬件成本,但軟件工作量增大。 總體設(shè)計(jì)時(shí),必須在硬件和軟件之間權(quán)衡,分工明確,然后分頭開始設(shè)計(jì)。 &
28、#160; 1.2.2、硬件設(shè)計(jì) 在Proteus環(huán)境下,結(jié)合課程設(shè)計(jì)題目,設(shè)計(jì)硬件原理圖,搭建硬件電路。 1.2.3、軟件設(shè)計(jì) 1、采用模塊化程序結(jié)構(gòu)設(shè)計(jì)軟件,可將整個(gè)軟件分成若干功能模塊。 2、畫出程序流程圖。3、根據(jù)流程圖,編寫源程序。 1.2.4、軟、硬件聯(lián)調(diào) 在Proteus環(huán)境下,仿真調(diào)試程序。 第二章
29、;系統(tǒng)電路設(shè)計(jì) 2.1 計(jì)算器系統(tǒng)設(shè)計(jì)框架 由于本次試驗(yàn)中用到的最小系統(tǒng)板中的STC12C5A60S2單片機(jī)和CH452A芯片在proteus中沒有,所以在proteus仿真中都以at89c51單片機(jī)仿真。而硬件電路已經(jīng)搭好,所以選擇合適的C語言程序。 51單片機(jī)系統(tǒng): 控制中心和運(yùn)算中心,將鍵盤輸入的數(shù)據(jù)進(jìn)行緩存和處理,最后是將運(yùn)算的結(jié)果送到數(shù)碼管顯示。 4*4鍵盤: 數(shù)值和一些功能鍵的輸入。 復(fù)位電路:將單片機(jī)系統(tǒng)內(nèi)的數(shù)據(jù)清除,以免干擾下一次單片機(jī)的操作過程。
30、 晶振電路:為單片機(jī)提供工作的時(shí)鐘脈沖。 2.2計(jì)算器基本設(shè)計(jì)思路 (1)可以進(jìn)行簡單的四則運(yùn)算,計(jì)算結(jié)果由數(shù)碼管顯示。 (2)矩陣鍵盤的16個(gè)按鍵用作數(shù)字鍵(0-9)、功能鍵(+、- 、*、/)、清除鍵和等號(hào)鍵。 (3)執(zhí)行程序:開機(jī)顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過數(shù)碼管顯示出來,當(dāng)鍵入+、-、*、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲(chǔ),并等待再次 鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號(hào)就會(huì)在數(shù)碼管上輸出運(yùn)算結(jié)果。 (4)錯(cuò)誤提示:當(dāng)單片機(jī)執(zhí)行程序中有錯(cuò)誤時(shí),會(huì)在數(shù)碼管上顯示相應(yīng)的提示
31、,如:當(dāng)輸入的數(shù)值或計(jì)算器得到的結(jié)果大于計(jì)算器的顯示范圍時(shí),計(jì)算器會(huì)在數(shù)碼管上提示溢出;當(dāng)除數(shù)為0時(shí),計(jì)算器會(huì)在數(shù)碼管上提示錯(cuò)誤,顯示255。 基于單片機(jī)AT89C51的proteus仿真圖: 2.3 STC12C5A60S2單片機(jī)的最小系統(tǒng)板的簡介 1、STC12C5A60S2單片機(jī)功能介紹: STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位
32、電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對(duì)電機(jī)控制,強(qiáng)干擾場合。 1. 增強(qiáng)型8051CPU,1T,單時(shí)鐘/機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051; 2. 工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機(jī))STC12LE5A60S2 系列工作電壓:3.6V-2.2V(3V單片機(jī)); 3. 工作頻率范圍:0-35MHz,相當(dāng)于普通8051的0420MHz; 4. 用戶應(yīng)用程序空間8K /16K / 20K / 32K
33、160;/ 40K / 48K / 52K / 60K / 62K字節(jié); 5. 片上集成1280字節(jié)RAM; 6. 通用I/O口(36/40/44個(gè)),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口),可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,僅為輸入/高阻,開漏,每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不要超過55Ma; 7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器可通過串口(P3.0
34、/P3.1)直接下載用戶程序,數(shù)秒即可完成一片; 8. 有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM); 9. 看門狗; 10. 內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時(shí),復(fù)位腳可直接1K電阻到地); 11. 外部掉電檢測(cè)電路:在P4.6口有一個(gè)低壓門檻比較器,5V單片機(jī)為1.32V,誤差為+/-5%,3.3V單片機(jī)為1.30V,誤差為+/-3%; 12. 時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi))
35、 1用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時(shí)鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz15.5MHz,3.3V 單片機(jī)為:8MHz12MHz,精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測(cè)試為準(zhǔn); 13. 共4個(gè)16位定時(shí)器兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定時(shí)器T0和T1,沒有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率發(fā)生器再加上2路PCA模塊可再實(shí)現(xiàn)2個(gè)16位定時(shí)器; 14. 2個(gè)時(shí)鐘輸出口,可由T0的溢出在P3.4/T0輸出時(shí)鐘,可由T1的溢出在P3
36、.5/T1輸出時(shí)鐘; 15. 外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊,PowerDown模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通過寄存器設(shè)置到P4.2 ),CCP1/P1.4(也可通過寄存器設(shè)置到P4.3); 16. PWM(2路)/PCA(可編程計(jì)數(shù)器陣列,2路):也可用來當(dāng)2路D/A使用也可用來再實(shí)現(xiàn)2個(gè)定時(shí)器也可用來再實(shí)現(xiàn)2個(gè)外部中斷(上升沿中斷/下降沿中斷均可分別或同時(shí)支持);
37、;17. A/D轉(zhuǎn)換,10位精度ADC共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘25萬次) 18. 通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時(shí)器或PCA軟件實(shí)現(xiàn)多串口; 19. STC12C5A60S2系列有雙串口,后綴有S2標(biāo)志的才有雙串口,RxD2/P1.2(可通過寄存器設(shè)置到P4.2),TxD2/P1.3(可通過寄存器設(shè)置到P4.3); 20. 工作溫度范圍:-40-+85(工業(yè)級(jí))/0-75(商業(yè)級(jí))21.封裝:PDIP-40,LQFP-44,LQFP-48I/O
38、口不夠時(shí),可用2到3根普通I/O口線外接74HC164/165/595(均可級(jí)聯(lián))來擴(kuò)展I/O口,還可用A/D做按鍵掃描來節(jié)省I/O口,或用雙CPU,三線通信,還多了串口。 2、CH452功能介紹: CH452是數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制芯片。CH452內(nèi)置時(shí)鐘振蕩電路,可以動(dòng)態(tài)驅(qū)動(dòng)8位數(shù)碼管或者64位LED,具有BCD譯碼、閃爍、移位、段位尋址、光柱譯碼等功能;同時(shí)還可以進(jìn)行64鍵的鍵盤掃描;CH452通過可以級(jí)聯(lián)的4線串行接口或者2線串行接口與單片機(jī)等交換數(shù)據(jù);并且可以對(duì)單片機(jī)提供上電復(fù)位信號(hào)。 顯示驅(qū)動(dòng)
39、60; 1. 內(nèi)置電流驅(qū)動(dòng)級(jí),段電流不小于15mA,字電流不小于80mA。 2. 動(dòng)態(tài)顯示掃描控制,直接驅(qū)動(dòng)8位數(shù)碼管、64位發(fā)光管LED或者64級(jí)光柱。 3. 可選數(shù)碼管的段與數(shù)據(jù)位相對(duì)應(yīng)的不譯碼方式或者BCD譯碼方式。 4. BCD譯碼支持一個(gè)自定義的BCD碼,用于顯示一個(gè)特殊字符。 5 .數(shù)碼管的字?jǐn)?shù)據(jù)左移、右移、左循環(huán)、右循環(huán)。 6. 各數(shù)碼管的數(shù)字獨(dú)立閃爍控制,可選快慢兩種閃爍速度。 7. 任意段位尋址,獨(dú)立控制各個(gè)LED或者各數(shù)碼管的各個(gè)段的亮與滅。
40、160; 8. 64級(jí)光柱譯碼,通過64個(gè)LED組成的光柱顯示光柱值。 9. 掃描極限控制,支持1到8個(gè)數(shù)碼管,只為有效數(shù)碼管分配掃描時(shí)間。 10. 可以選擇字驅(qū)動(dòng)輸出極性,便于外部擴(kuò)展驅(qū)動(dòng)電壓和電流。 鍵盤控制 1. 內(nèi)置64鍵鍵盤控制器,基于8×8矩陣鍵盤掃描。 2. 內(nèi)置按鍵狀態(tài)輸入的下拉電阻,內(nèi)置去抖動(dòng)電路。 3. 鍵盤中斷,可以選擇低電平有效輸出或者低電平脈沖輸出。 4. 提供按鍵釋放標(biāo)志位,可供查詢按鍵按下與釋放。
41、0;5. 支持按鍵喚醒,處于低功耗節(jié)電狀態(tài)中的CH452可以被部分按鍵喚醒 外部接口 1. 同一芯片,可選高速的4線串行接口或者經(jīng)濟(jì)的2線串行接口。 2. 4線串行接口:支持多個(gè)芯片級(jí)聯(lián),時(shí)鐘速度從0到2MHz,兼容CH451芯片。 3. 4線串行接口:DIN和DCLK信號(hào)線可以與其它接口電路共用,節(jié)約引腳。 4. 2線串行接口:支持兩個(gè)CH452芯片并聯(lián)(由ADDR引腳電平設(shè)定各自地址)。 5. 2線串行接口:時(shí)鐘速度從500Hz到200KHz,兼容兩線I2C總線,節(jié)約引腳
42、。 6. 內(nèi)置上電復(fù)位,可以為單片機(jī)提供高電平有效和低電平有效復(fù)位輸出。 第三章 系統(tǒng)軟件設(shè)計(jì) 3.1程序設(shè)計(jì)流程圖: 3.2程序設(shè)計(jì)的核心部分算術(shù)運(yùn)算 算術(shù)運(yùn)算程序的過程為:在進(jìn)行計(jì)算之前,先判斷輸入的運(yùn)算符是+、-、*、/中的哪一個(gè),若是+或*,則要判斷運(yùn)算結(jié)果是否溢出,溢出則顯示錯(cuò)誤信息,沒溢出就顯示運(yùn)算結(jié)果;若是/,則要先判斷除數(shù)是否為零,如果除數(shù)為零就提示錯(cuò)誤信息,不為零則顯示運(yùn)算結(jié)果;若是-,則直接顯示運(yùn)算結(jié)果,如果結(jié)果為負(fù)數(shù), 顯示溢出結(jié)果
43、。 3.3 系統(tǒng)主程序 main() EA = 1; EX0=1; /開啟外部中斷0的中斷允許,開啟全局中斷允許 CH452_Write(CH452_RESET); /CH452復(fù)位命令 CH452_Write(CH452_SYSON2); /開顯示鍵盤 CH452_Write( CH452
44、_BCD | 0X0F ); /BCD直接譯碼,0x05顯示占空比5/16,為0則為16/16 CH452_Write( CH452_DIG0 | 0 ); while(1) /等待CH452產(chǎn)生按鍵中斷 display();第四章 實(shí)驗(yàn)結(jié)果分析4.1實(shí)驗(yàn)使用的儀器設(shè)備
45、 最小系統(tǒng)板:一塊單片機(jī)STC12C5A60S2、一塊CH452芯片、2個(gè)4位數(shù)碼管、17個(gè)按鍵(09數(shù)字鍵、4個(gè)功能鍵(+、-、*、/)、清零鍵AC、等號(hào)鍵=、復(fù)位鍵)、一個(gè)石英晶振、兩個(gè)30pf的電容。 4.2測(cè)試結(jié)果分析 在本次課程設(shè)計(jì)過程中,我們運(yùn)用的是STC12C5A60S2單片機(jī)的最小系統(tǒng)板,在設(shè)計(jì)過程中,有好多問題沒有考慮到。例如:計(jì)算加法時(shí)未考慮到結(jié)果超出范圍,在計(jì)算除法時(shí)未考慮到除數(shù)是否為零等。所以,在老師的指導(dǎo)下,我們重新回來修改C語言程序,將調(diào)試中出現(xiàn)的問題一一解決。
46、 基于STC12C5A60S2單片機(jī)的最小系統(tǒng)板的計(jì)算器實(shí)物圖:結(jié)束語 通過對(duì)這程序的制作,使我對(duì)匯編語言的基本知識(shí)的使用更加熟練,同時(shí)也增加了我對(duì)匯編語言的一些認(rèn)識(shí),在設(shè)計(jì)完成過程中通過和同學(xué)的交流,也增加了合作的技巧。通過查閱以下資料也學(xué)到了一些課本上沒有的東西,拓寬了自己的知識(shí)面,增加了學(xué)好單片機(jī)C語言的信心。 在簡易計(jì)算器設(shè)計(jì)過中,有些子程序的設(shè)計(jì)是固定的,因此可以直接從指導(dǎo)資料中調(diào)用,大多只需要修改幾個(gè)參數(shù)就可以,這大大方便了我們的設(shè)計(jì),為我們節(jié)省了很多的時(shí)間。
47、0; 在這次課程設(shè)計(jì)中,我真正體會(huì)到了合作的重要性,遇到很多問題時(shí),當(dāng)我看書查資料不能解決時(shí),這是去找同學(xué)討論一下,收獲很大,可以使很多問題迎刃而解,直到問題最終解決。 不可否認(rèn),本程序存在不少缺點(diǎn)和不足,但通過這次課程設(shè)計(jì)的卻找出了自己在學(xué)習(xí)上的不足,對(duì)以后的工作也有指導(dǎo)作用。我相信在以后的學(xué)習(xí)中會(huì)克服這些不足,達(dá)到熟練掌握匯編語言的目的! 總之,這次課程設(shè)計(jì)對(duì)于我們有很大的幫助,通過課程設(shè)計(jì),我更加深入地理解了,微機(jī)原理課程上講到的各種芯片的功能,以及引腳的作用,同時(shí)加深了對(duì)于主要芯片的應(yīng)用的認(rèn)識(shí),同時(shí)在試驗(yàn)室的環(huán)境里熟悉了匯編程序的編
48、寫過程和運(yùn)行過程,最后還提高了自己的動(dòng)手能力。感謝老師的悉心指導(dǎo)。參考文獻(xiàn) 1 謝維成、楊加國.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì) 第二版 清華大學(xué)出版社 2013.12 2 康光華.電子技術(shù)基礎(chǔ) 數(shù)字部分(第五版) 高等教育出版社 2005.7 3張毅剛. 單片微機(jī)原理及應(yīng)用 高等教育出版社 2003.124徐建民,匯編語言程序設(shè)計(jì),電子工業(yè)出版社5余錫存、曹國華.單片機(jī)原理及接口技術(shù)M.陜西:西安電子科技大學(xué) 6周明德.微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用.北京:清
49、華大學(xué)出版社7戴梅萼,史嘉權(quán).微型計(jì)算機(jī)技術(shù)及應(yīng)用.北京:清華大學(xué)出版社附錄:#include <reg52.h> #include "intrins.h" typedef unsigned char uint8;typedef unsigned int uint16; uint16 temp ,number = 0,count1 = 0; uint8
50、;key,temp1,temp2,j = 0; bit flag =1; sbit CH452_SCL = P17; sbit CH452_SDA = P16; sbit CH452_INT = P32; #define CH452_NOP 0x0000 / 空操作 #de
51、fine CH452_RESET 0x0201 / 復(fù)位 #define CH452_LEVEL 0x0100 / 加載光柱值,需另加7位數(shù)據(jù) #define CH452_CLR_BIT 0x0180 / 段位清0,需另加6位數(shù)據(jù) #define CH452_SET_BIT 0x01C0
52、; / 段位置1,需另加6位數(shù)據(jù) #define CH452_SLEEP 0x0202 / 進(jìn)入睡眠狀態(tài) #define CH452_LEFTMOV 0x0300 / 設(shè)置移動(dòng)方式-左移 #define CH452_LEFTCYC 0x0301 / 設(shè)置移動(dòng)方式-左循環(huán) #define CH452_RIGHTMO
53、V 0x0302 / 設(shè)置移動(dòng)方式-右移 #define CH452_RIGHTCYC 0x0303 / 設(shè)置移動(dòng)方式-右循環(huán) #define CH452_SELF_BCD 0x0380 / 自定義BCD碼,需另加7位數(shù)據(jù) #define CH452_SYSOFF 0x0400 / 關(guān)閉顯示、關(guān)閉鍵
54、盤 #define CH452_SYSON1 0x0401 / 開啟顯示 #define CH452_SYSON2 0x0403 / 開啟顯示、鍵盤 #define CH452_SYSON2W 0x0423 / 開啟顯示、鍵盤, 真正2線接口 #define CH452_NO_BCD
55、160; 0x0500 / 設(shè)置默認(rèn)顯示方式,可另加3位掃描極限 #define CH452_BCD 0x0580 / 設(shè)置BCD譯碼方式,4位掃描占空比(默認(rèn)0為16/16) #define CH452_TWINKLE 0x0600 / 設(shè)置閃爍控制,需另加8位數(shù)據(jù) #define CH45
56、2_GET_KEY 0x0700 / 獲取按鍵,返回按鍵代碼 #define CH452_DIG0 0x0800 / 數(shù)碼管位0顯示,需另加8位數(shù)據(jù) #define CH452_DIG1 0x0900 / 數(shù)碼管位1顯示,需另加8位數(shù)據(jù) #define CH452_DIG2
57、0; 0x0a00 / 數(shù)碼管位2顯示,需另加8位數(shù)據(jù) #define CH452_DIG3 0x0b00 / 數(shù)碼管位3顯示,需另加8位數(shù)據(jù) #define CH452_DIG4 0x0c00 / 數(shù)碼管位4顯示,需另加8位數(shù)據(jù) #define CH452
58、_DIG5 0x0d00 / 數(shù)碼管位5顯示,需另加8位數(shù)據(jù) #define CH452_DIG6 0x0e00 / 數(shù)碼管位6顯示,需另加8位數(shù)據(jù) #define CH452_DIG7 0x0f00 / 數(shù)碼管位7顯示,需另加8位數(shù)據(jù) /#d
59、efine CH452_0 0X0510 /*CH452在BCD譯碼方式下的特殊字符*/ #define CH452_BCD_SPACE 0x10 #define CH452_BCD_PLUS 0x11 #define CH452_BCD_MINUS 0x12 #define CH452_BCD_EQU 0x13
60、 #define CH452_BCD_LEFT 0x14 #define CH452_BCD_RIGHT 0x15 #define CH452_BCD_UNDER 0x16 #define CH452_BCD_CH_H 0x17 #define CH452_BCD_CH_L 0x18 #define CH452_BCD_CH_P 0
61、x19 #define CH452_BCD_DOT 0x1A #define CH452_BCD_SELF 0x1E #define CH452_BCD_TEST 0x88 #define CH452_BCD_DOT_X 0x80 /*2線接口的CH452定義*/ #define CH452_I2C_ADDR0 0x40 /
62、 CH452的ADDR=0時(shí)的地址 #define CH452_I2C_ADDR1 0x60 / CH452的ADDR=1時(shí)的地址,默認(rèn)值 #define CH452_I2C_MASK 0x3E / CH452的2線接口高字節(jié)命令掩碼 #define DELAY_IO _nop_();_nop_();nop_();_nop_(); /IO操作需延時(shí),S
63、TC單片機(jī)12MHz下2個(gè)即可 /*函數(shù)說明:模擬I2C 啟動(dòng) */ void CH452_I2c_Start( void ) CH452_SDA=1; DELAY_IO; /發(fā)送起始條件的數(shù)據(jù)信號(hào) CH452_SCL=1; DELAY_IO; CH452_SDA=0; DELAY_IO;
64、 /發(fā)送起始信號(hào) CH452_SCL=0; DELAY_IO; /鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) /* 函數(shù)說明:模擬I2C 結(jié)束 */ void CH452_I2c_Stop( void ) CH452_SDA=0; DELAY_IO; CH452_SCL=1; DELAY_IO; CH4
65、52_SDA=1; DELAY_IO; /發(fā)送I2C總線結(jié)束信號(hào) /* 函數(shù)說明:模擬I2C 寫一個(gè)字節(jié)數(shù)據(jù)入口參數(shù):dat=要寫入的數(shù)據(jù)或者命令 */ void CH452_I2c_WrByte( unsigned char dat ) unsigned char i; for( i = 0; i !=
66、8; i+ ) / 輸出8位數(shù)據(jù) If ( dat&0x80 ) CH452_SDA=1; else CH452_SDA=0; DELAY_IO; CH452_SCL=1; dat <<=&
67、#160;1; DELAY_IO; CH452_SCL=0; DELAY_IO; CH452_SDA=1; DELAY_IO; CH452_SCL=1; DELAY_IO; /接收應(yīng)答 CH452_SCL=0; DELAY_IO; /* 函數(shù)說明:模擬I2C 讀取一個(gè)字節(jié)數(shù)據(jù)
68、0;出口參數(shù):dat=要讀取的數(shù)據(jù),一般為按鍵值 */ unsigned char CH452_I2c_RdByte( void ) unsigned char dat; unsigned char i; CH452_SDA=1; DELAY_IO; dat = 0; for( i = 0;
69、 i != 8; i+ )/ 輸入8位數(shù)據(jù) CH452_SCL=1; DELAY_IO; dat <<= 1; if( CH452_SDA ) dat+;/輸入1位 CH452_SCL=0; DELAY_IO; CH452_SDA=1;
70、;DELAY_IO; CH452_SCL=1; DELAY_IO; /發(fā)出無效應(yīng)答 CH452_SCL=0; DELAY_IO; return dat; /* 函數(shù)說明:模擬I2C 寫入指令 入口參數(shù):cmd=要寫入的指令代碼 */ void CH452_Write( unsigned int cmd )
71、160;CH452_I2c_Start(); /啟動(dòng)總線 CH452_I2c_WrByte(unsigned char)(cmd>>7)&CH452_I2C_MASK|CH452_I2C_ADDR1); CH452_I2c_WrByte(unsigned char)cmd); /發(fā)送數(shù)據(jù) CH452_I2c_Stop();
72、160; /結(jié)束總線 /* 函數(shù)說明:模擬I2C讀取CH452按鍵值 入口參數(shù):read_cmd=讀取指令代碼 出口參數(shù):按鍵值0x000x3F */ unsigned char CH452_Read( unsigned int read_cmd ) unsigned char te
73、mp; CH452_I2c_Start(); /啟動(dòng)總線 CH452_I2c_WrByte(unsigned char)(read_cmd>>7)&CH452_I2C_MASK|CH452_I2C_ADDR1|0x01); temp = CH452_I2c_RdByte(); /讀取數(shù)據(jù) CH452_I2c_Stop(); /結(jié)束總線
74、return temp; /* 函數(shù)說明:讀取CH452按鍵值 */ unsigned char CH452_Read_Key() unsigned char temp , keyboard = 0; temp=CH452_Read(CH452_GET_KEY); switch(temp & 0x3f)
75、0; case 0x1b: keyboard = 15; break; case 0x1a: keyboard = 14; break; case 0x19: keyboard = 13; break; case 0x18:
76、160;keyboard = 12; break; case 0x13: keyboard = 11; break; case 0x12: keyboard = 10; break; case 0x11: keyboard = 9; break; case 0x10:
77、60;keyboard = 8; break; case 0x0b: keyboard = 7; break; case 0x0a: keyboard = 6; break; case 0x09: keyboard = 5; break;
78、0;case 0x08: keyboard = 4; break; case 0x03: keyboard = 3; break; case 0x02: keyboard = 2; break; case 0x01: keyboard = 1; break;
79、160; case 0x00: keyboard = 0; break; return keyboard; void display() if(temp < 1000) CH452_Write( CH452_DIG3 | CH452_BCD_SPACE); else CH452_Write( CH452_DIG3 | temp/1000); if (temp < 100) CH452_Write( CH452_DIG2 | CH452_BCD_SPACE ); else CH452_Write( CH452_DIG2 | (temp%1000)/100 )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅建筑工程合同范本
- 加盟入股協(xié)議合同范本
- 租賃攤位合同范本
- 出售大米合同范本
- 醫(yī)美合作合同范本
- 農(nóng)村房租建設(shè)合同范例
- 兼職簽定勞動(dòng)合同范本
- 出售附近廠房合同范本
- 農(nóng)戶房屋流轉(zhuǎn)合同范本
- 個(gè)人欠款合同范本模板
- 北師大版 四年級(jí)下冊(cè)心理健康教育 失敗不可怕 |教案
- 中建企業(yè)建筑工程項(xiàng)目管理目標(biāo)責(zé)任書(范本)
- 醫(yī)師定期考核人文醫(yī)學(xué)考試題庫500題(含參考答案)
- 三年級(jí)全一冊(cè)《勞動(dòng)與技術(shù)》第二單元 活動(dòng)1《包書皮》課件
- 讀書分享課件:《一句頂一萬句》
- 2024-2025學(xué)年湖南省長沙市雅禮教育集團(tuán)八年級(jí)(上)創(chuàng)新素養(yǎng)數(shù)學(xué)試卷(含答案)
- 中醫(yī)藥膳專題講座培訓(xùn)課件
- 辦公樓建筑結(jié)構(gòu)設(shè)計(jì)(畢業(yè)設(shè)計(jì))
- 物業(yè)消防安全管理培訓(xùn)【共54張課件】
- 空心杯電機(jī)基礎(chǔ)知識(shí)
- DL-T+5839-2021土石壩安全監(jiān)測(cè)系統(tǒng)施工技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論