freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì)正文-在線瀏覽

2025-01-13 15:40本頁(yè)面
  

【正文】 斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,但僅單片機(jī)方面的知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)、軟硬件結(jié)合,來(lái)加以完善??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算機(jī),基于這樣的理念,本次設(shè)計(jì)是用AT89S51 單片機(jī)、 LCD顯示器、控制按鍵為元件來(lái)設(shè)計(jì)的計(jì)算器。掌握 Microsoft Visual C++ 應(yīng)用程序開(kāi)發(fā)環(huán)境,常用的 LCD 顯示器的使用方法和一般鍵盤(pán)的使用方法。 CPU的生產(chǎn)制造技術(shù),也朝著綜合性、技術(shù)性、實(shí)用性發(fā)展。可以說(shuō)是日新月異的發(fā)展著。單片機(jī)控制系統(tǒng)是以單片機(jī)( CPU)為核心部件,擴(kuò)展一些外部接口和設(shè)備,組成單片機(jī)工業(yè)控制機(jī),主要用于工業(yè)過(guò)程控制。最后,還必須掌握生產(chǎn)過(guò)程的工藝性能及被測(cè)參數(shù)的測(cè)量方法,以及被控對(duì)象的動(dòng)、靜態(tài)特性,有時(shí)甚至要求給出被控對(duì)象的數(shù)學(xué)模型。此單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合。掉電方式保存 RAM 中的內(nèi)容,但振蕩器停止工作,并禁止其它所有部件工作直到 下一個(gè)硬件復(fù)位。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng) 8 個(gè) TTL 邏輯門(mén)電路,對(duì)端口寫(xiě) 1可作為高阻抗輸入端用。 在 FLASH 編程時(shí), P0口接受指 令字節(jié),而在程序效驗(yàn)時(shí),輸出指令字節(jié),效驗(yàn)時(shí),要求外接上拉電阻。對(duì)端口寫(xiě) 1,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。 FLASH 編程和程序效驗(yàn)期間, P1 接收低 8 位地址。對(duì)端口寫(xiě) 1,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。 在訪問(wèn)外部程序存儲(chǔ)器或 16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行 MOVXDPTR指令)時(shí),P2 口送出高 8 位地址數(shù)據(jù)。 FLASH 編程或效驗(yàn)時(shí), P2 亦接收高位地址和其它控制信號(hào)。對(duì)端口寫(xiě) 1,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。 P3口除了作為一般的 I/O 口線外,更重要的用途是他的第二個(gè)功能,如下表所示: 表 1 P3 口 AT89C2051 特殊功能 端口引腳 功能特性 RXD(串行口輸入) TXD(并行口輸入) INT0(外部中斷 0) INT1(外部中斷 1) T0(定 時(shí)計(jì)數(shù)外部輸入 0) T1(定時(shí)計(jì)數(shù)外部輸入 0) WR (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 ) RD (外部數(shù)據(jù)存儲(chǔ)器讀選通 ) P3口還接收一些用于 FLASH 閃速存儲(chǔ)器編程和程序效驗(yàn)的控制信號(hào)。其引腳一旦變成兩個(gè)機(jī)器周期以上的高電平,所有的 I/O 口都將復(fù)位到 1狀態(tài),當(dāng)振蕩器正在工作時(shí),持續(xù)兩個(gè)機(jī)器周期以上高電平便可完成復(fù)位,每個(gè)機(jī)器周期為12 個(gè)振蕩時(shí)鐘周期。 如 EA端為高電平(接 VCC 端), CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。 XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。通過(guò)不同的程序?qū)崿F(xiàn) 不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機(jī)作為計(jì)算器的主要功能部件,可以很快地實(shí)現(xiàn)運(yùn)算功能。用過(guò)匯編語(yǔ)言后再使用 C 來(lái)開(kāi)發(fā),體會(huì)更加深刻。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代單片機(jī)課程設(shè)計(jì) 4 碼,就能體會(huì)到 Keil C51 生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。下面詳細(xì)介紹 Keil C51 開(kāi)發(fā)系統(tǒng)各部分功能和使用。開(kāi)發(fā)人員可用 IDE 本身或其它編輯器編輯 C 或匯編源文件。目標(biāo)文件可由 LIB51 創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng) L51 連接定位生成絕對(duì)目標(biāo)文件 (.ABS)。 使用 Keil 軟件建立一個(gè)工程 Keil 是目前進(jìn)行 51 單片機(jī)開(kāi)發(fā) 最常用的編譯軟件。對(duì)于 Keil 更詳細(xì)的介紹,可以參考一些專門(mén)書(shū)籍資料。一個(gè)工程里可以有一個(gè)或多個(gè)*.c 文件和 *.h 文件,但只可以有一個(gè) main()函數(shù)。這樣,在編譯的時(shí)候,其他的文件會(huì)被自動(dòng)的導(dǎo)入到工程里來(lái)。當(dāng)然,如果 Keil 在上次關(guān)閉時(shí)有打開(kāi)的工程,再一次打開(kāi)時(shí)它會(huì)自動(dòng)加載上一次的工程文件。 圖 Keil 軟件打開(kāi)新工程界面 點(diǎn)開(kāi)后,在出現(xiàn)的對(duì)話框中選擇工程存在路徑,單擊“保存”后,出現(xiàn)(如圖 所示)界面。 單片機(jī)課程設(shè)計(jì) 6 圖 選擇電路板上所用的單片機(jī)型號(hào) 設(shè)置完成后,軟件會(huì)提示“是否將 8051 上電初始化程序添加入工程?”如圖 所示,這個(gè)一般選擇“否”。 接下來(lái)的事,就是在這個(gè)工程里面加入自己的程序代碼。現(xiàn)在,就可以開(kāi)始在里面輸入你的代碼了。 到目前為步,我們已經(jīng)建立了一個(gè)工程,也寫(xiě)了一個(gè)程序代碼。因?yàn)檫€沒(méi)有將程序代碼添加到工程里面去。在打開(kāi)的對(duì)話框中,選擇剛存的文件路徑和對(duì)應(yīng)的擴(kuò)展名。 圖 添加 文件到工程中 下一步,就開(kāi)始編譯剛輸入進(jìn)去的代碼。接著,Keil 會(huì)打出下面的提示: Build target 39。 assembling ... linking... Program Size: data= xdata=0 code=100 first 0 Error(s), 0 Warning(s). 其中“ first 0 Error(s), 0 Warning(s).”說(shuō)明現(xiàn)在的工程編譯通過(guò), 0 個(gè)錯(cuò)誤和 0 個(gè)警告。出現(xiàn)如圖 所示對(duì)話框,選擇“ Output”按圖示,將箭頭所指的多選框勾上,點(diǎn)“確定”。便會(huì)在工程所在文件夾里生成 HEX 文件。同樣的,在這里,只對(duì) Debug 進(jìn)行簡(jiǎn)單應(yīng)用介紹,更詳細(xì)的使用方法可以參看相關(guān)書(shū)籍資料。其他不用作修改。 圖 2..9 Keil 調(diào)試界面 單片機(jī)課程設(shè)計(jì) 10 10 點(diǎn)擊 中對(duì)應(yīng)的工具按鈕則可以開(kāi)始調(diào)試。 Call Stack Window”可以顯示程序中某一變量的值;“ Memory Window”可以顯示內(nèi)存中某一地址的值。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。 鍵盤(pán) : 另外鍵盤(pán)包括數(shù)字鍵( 0~ 9)、符號(hào)鍵( +、 、 、 247。 執(zhí)行過(guò)程: 開(kāi)機(jī)顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過(guò) LCD顯示出來(lái),當(dāng)鍵入 +、 、 *、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲(chǔ),并等待再次鍵入數(shù)值,當(dāng)再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號(hào)就會(huì)在 LCD上輸出運(yùn)算結(jié)果。 系統(tǒng)方案圖 單片機(jī)課程設(shè)計(jì) 11 計(jì)算器軟件程序要完成以下模塊的設(shè)計(jì) 鍵盤(pán)輸入檢測(cè)模塊 LCD顯示模塊; 算術(shù)運(yùn)算模塊 錯(cuò)誤處理及提示模塊。 static data LONG rvalue。 static data CHAR lasttoken。 static xdata CHAR outputbuffer[MAX_DISPLAY_CHAR]。 rvalue = 0。=39。039。 // 初始化 LCD calc_output(OK)。 } VOID calc_evaluate() { CHAR data key。 CHAR xdata number[MAX_DISPLAY_CHAR]。 // 使用前清緩沖器 . for (i = 0。 i++) { number[i] = 39。 } bufferptr = number。) { key = calc_getkey()。number[MAX_DISPLAY_CHAR 2]) { *bufferptr = key。 bufferptr++。039。} else { rvalue = calc_asciidec (number)。 for (i = 0。 i++) { number[i] = 39。 } //繼續(xù)運(yùn)行處理器 . currtoken = key。C39。 } else { calc_opfunctions(lasttoken)。i = MAX_DISPLAY_CHAR。 39。 // 暫時(shí)運(yùn)行等于程序 . if (currtoken != 0x3D) lasttoken = currtoken。 } } VOID calc_opfunctions (CHAR token) // Lvalue 保存著結(jié)果 檢測(cè)結(jié)果運(yùn)行 . { CHAR data result。+39。=39。amp。 result = calc_chkerror(lvalue)。 } break。39。=39。amp。 result = calc_chkerror(lvalue)。} break。*39。=39。amp。 result = calc_chkerror(lvalue)。} break。/39。=39。amp。 result = calc_chkerror(lvalue)。} } else { result = SLEEP。 // 清 . case 39。 : lvalue = 0。 currtoken = 39。 lasttoken = 39。 result = OK。 default : result = SLEEP。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦

基于單片機(jī)的簡(jiǎn)易計(jì)算器(終稿2)-在線瀏覽

【摘要】電》