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

正文內(nèi)容

設(shè)計(jì)——基于單片機(jī)的電子秤設(shè)計(jì)(編輯修改稿)

2025-01-10 18:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 程語(yǔ)言的選擇 對(duì)于 8051 單片機(jī),現(xiàn)有 4 種語(yǔ)言支持,即匯編、 PL/M、 C 和 BASIC。常用的編程語(yǔ)言有匯編語(yǔ)言和 C 語(yǔ)言?xún)煞N,每種語(yǔ)言都有各自的優(yōu)缺點(diǎn)。 匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器代碼的一種語(yǔ)言。匯編語(yǔ)言可以直接 有效地控制計(jì)算機(jī)各種操作,產(chǎn)生的目標(biāo)文件運(yùn)行速度快,執(zhí)行效率高,程序相對(duì)高級(jí)語(yǔ)言小。 華東交通大學(xué)畢業(yè)設(shè)計(jì) C 語(yǔ)言是一種編譯型程序設(shè)計(jì)語(yǔ)言,它兼顧了多種高級(jí)語(yǔ)言的特點(diǎn)。其本身不依賴(lài)于機(jī)器硬件系統(tǒng),基本上不做修改就可將程序在不同單片機(jī)間進(jìn)行移植。同時(shí) C 語(yǔ)言提供了很多數(shù)學(xué)函數(shù)并支持浮點(diǎn)運(yùn)算,開(kāi)發(fā)效率較高,可縮短開(kāi)發(fā)時(shí)間,增加程序可讀性和可維護(hù)性 [4]。 在 51 系列單片機(jī)下, C 語(yǔ)言( C51)和匯編語(yǔ)言( ASM51)相比,有如下優(yōu)點(diǎn): ( 1) 對(duì)單片機(jī)的指令系統(tǒng)不要求了解,僅需 對(duì) 51 系列單片機(jī)的存儲(chǔ)器結(jié)構(gòu)有 了解; ( 2)寄存器分配 、不同存儲(chǔ)器的尋址及數(shù)據(jù)類(lèi)型等細(xì)節(jié)可由編譯器管理; ( 3)程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),這種方式可使程序結(jié)構(gòu)化; ( 4)提供的庫(kù)包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力; ( 5)由于具有方便的模塊化編程技術(shù),使已編好程序可容易地移植。 綜上所述,本設(shè)計(jì)選用開(kāi)發(fā)效率高、程序可讀性、可維護(hù)性高的 C 語(yǔ)言,并且采用模塊化編程方式進(jìn)行編程。 開(kāi)發(fā)環(huán)境的選擇 單片機(jī)的開(kāi)發(fā)環(huán)境多種多樣,很多公司都研發(fā)了單片機(jī)開(kāi)發(fā)軟件,如 American Automationn、瑞典的 IAR、 Avocet 和 Keil 等。 開(kāi)發(fā)環(huán)境的優(yōu)劣直接影響單片機(jī)應(yīng)用產(chǎn)品的開(kāi)發(fā)效率 [5]。本設(shè)計(jì)基于 51 系列單片機(jī) AT89S52,而且選用 C 語(yǔ)言進(jìn)行編程,因此選用來(lái)自德國(guó)的主流開(kāi)發(fā)軟件 Keil 進(jìn)行編程。 Keil 在代碼生成方面較其它幾款軟件在代碼生成方面處于領(lǐng)先地位,可產(chǎn)生最少的代碼。支持浮點(diǎn)和長(zhǎng)整數(shù)、重入和遞歸。 Keil μVision3集成開(kāi)發(fā)環(huán)境是一個(gè)基于 Windows 的軟件開(kāi)發(fā)平臺(tái),有一個(gè)功能強(qiáng)大的編輯器、項(xiàng)目管理器和制作工具。 μVision3 支持 8051的所有 KEIL 工具,包括 C 編譯器、宏宏匯編器、鏈接器 /定位器和目標(biāo)文件至 HEX 格 式的轉(zhuǎn)換器。 本章小結(jié) 本章主要分析了電子秤的基本功能,根據(jù)基本功能提出實(shí)現(xiàn)思路最后得到總體方案,對(duì)于提到的各個(gè)單元進(jìn)行選型,單片機(jī)選擇了 MCS51 系列單片機(jī) 中的 AT89S52 系列 ,調(diào)節(jié)按鍵選擇獨(dú)立按鍵,顯示電路選擇 LCD1602 液晶顯示器,編程語(yǔ)言選擇功能性、結(jié)構(gòu)性、可維護(hù)性、可移植性強(qiáng)的 C 語(yǔ)言,開(kāi)發(fā)工具選擇適合 51 單片機(jī)的 Keil uVision。 胡娟:商用電子秤 的 設(shè)計(jì) 8 第 3 章 系統(tǒng) 軟件 設(shè)計(jì) 經(jīng)過(guò)前面詳細(xì)調(diào)研、方案論證后,就進(jìn)入了正式研制階段。從總體上來(lái)看,設(shè)計(jì)任務(wù)可以分為硬件設(shè)計(jì)和軟件設(shè)計(jì),這兩者互相結(jié)合, 不可分離。由于本次設(shè)計(jì)是直接購(gòu)買(mǎi) 開(kāi)發(fā)板 ,本章將在此基礎(chǔ)上重點(diǎn)進(jìn)行軟件設(shè)計(jì) 并最終實(shí)現(xiàn)其基本功能 ,在設(shè)計(jì)前應(yīng)熟悉單片機(jī)的內(nèi)部資源。 AT89S52的介紹 AT89S52 單片機(jī)是 ATMEL 公司新近推出的高檔型 AT89S 系列單片機(jī)中的增強(qiáng)型產(chǎn)品 。 ATMEL 公司是美國(guó) 20 世紀(jì) 80 年代中期成立并發(fā)展起來(lái)的半導(dǎo)體公司。該公司的技術(shù)優(yōu)勢(shì)在于推出 Flash存儲(chǔ)器技術(shù)和高質(zhì)量、高可靠性的生產(chǎn)技術(shù),它率先將獨(dú)特的 Flash存儲(chǔ)技術(shù)注入于單片機(jī)產(chǎn)品中。其推出的 AT89 系列單片機(jī),在世界電子技術(shù)行業(yè)中引起了極大的反響,在國(guó) 內(nèi)也受到廣大用戶(hù)歡迎 [6]。 AT89S52 具有如下特點(diǎn): 40 個(gè)引腳 , 8k Bytes Flash 片內(nèi)程序存儲(chǔ)器 , 256 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器( RAM) , 32 個(gè)外部雙向輸入 /輸出( I/O)口 , 5 個(gè)中斷優(yōu)先級(jí) 2 層中斷嵌套中斷 , 3 個(gè) 16 位可編程定時(shí)計(jì)數(shù)器 , 2 個(gè)全雙工串行通信口 , 看門(mén)狗( WDT)電路 ,片內(nèi)時(shí)鐘振蕩器 。 表 31 AT89S52功能 兼容 MCS51 指令系統(tǒng) 8k 可反復(fù)擦寫(xiě) ISP Flash ROM 32 個(gè)雙向 I/O 口 3 個(gè) 16 位可編程定時(shí) /計(jì)數(shù)器 時(shí)鐘頻率 033MHz 全雙工 UART 串行中斷口線(xiàn) 256x8bit 內(nèi)部 RAM 2 個(gè)外部中斷源 低功耗空閑和省電模式 中斷喚醒省電模式 3 級(jí)加密位 看門(mén)狗( WDT)電路 軟件設(shè)置空閑和省電功能 靈活的 ISP 字節(jié)和分頁(yè)編程 雙數(shù)據(jù)寄存器指針 華東交通大學(xué)畢業(yè)設(shè)計(jì) 圖 31 AT89S52的引腳圖 引腳功能說(shuō)明: VCC/GND:電源 /接地引腳; Port 0: P0 是一個(gè) 8 位漏極開(kāi)路型雙向 I/O 端口,端口置 1(對(duì)端口寫(xiě) 1)時(shí)作高阻抗輸入端; P0還可以用作總線(xiàn)方式下的地址數(shù)據(jù)復(fù)用管腳,用來(lái)操作外部存儲(chǔ)器。在這種工作模式 下,P0 口具有內(nèi)部上拉作用。對(duì)內(nèi)部 Flash程序存儲(chǔ)器編程時(shí),接收指令字節(jié)、校驗(yàn)程序、輸出指令字節(jié)時(shí),要求外接上拉電阻; Port 1: P1 是一個(gè)帶有內(nèi)部上拉電阻的 8 位雙向 I/0 端口,輸出時(shí)可驅(qū)動(dòng) 4 個(gè) TTL。端口置 1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用; 另外, 、 可以分別被用作定時(shí)器 /計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入 ()和觸發(fā)輸入 ();對(duì)內(nèi)部 Flash程序存儲(chǔ)器編程時(shí),接收低 8 位地址信息; Port 2: P2 是一個(gè)帶有內(nèi)部上拉電阻的 8 位雙向 I/0 端口;輸出時(shí)可 驅(qū)動(dòng) 4 個(gè) TTL。端口置 1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用; P2 口在存取外部存儲(chǔ)器時(shí),可作為高位地址輸出;內(nèi)部 Flash程序存儲(chǔ)器編程時(shí),接收高 8 位地址和控制信息; Port 3: P3 是一個(gè)帶有內(nèi)部上拉電阻的 8 位雙向 I/0 端口,輸出時(shí)可驅(qū)動(dòng) 4 個(gè) TTL。端口置 1 時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。 胡娟:商用電子秤 的 設(shè)計(jì) 10 表 32 P3引腳功能復(fù)用 串行通訊輸入 (RXD) 串行通訊輸出 (TXD) 外部中斷 0( INT0) 外部中斷 1(INT1) 定時(shí)器 0 輸入 (T0) 定時(shí)器 1 輸入 (T1) 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 WR 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 RD RST: 在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期 (24 個(gè)振蕩周期 )以上的高電平出現(xiàn)在此管腳時(shí),將使單片機(jī)復(fù)位。只要這個(gè)管腳保持高電平, 51 芯片便循環(huán)復(fù)位。復(fù)位后 P0— P3 口均置 1,管腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器 SFR 全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為 ROM 的 00H 處開(kāi)始運(yùn)行程序; XTAL XTAL2 : XTAL1 是 片內(nèi)振蕩器的反相放大器輸入端, XTAL2 則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到 XTAL1,而 XTAL2 懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為 12MHz,時(shí)鐘頻率就為 6MHz。晶振的頻率可以在 1MHz 至 24MHz 內(nèi)選擇,電容取 30PF 左右。 ALE/PROG: 訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí), ALE(地址鎖存允許 )的輸出用于鎖存地址的低位字節(jié),即使不訪(fǎng)問(wèn)外部存儲(chǔ)器, ALE 端仍以不變的頻率輸出脈沖信號(hào) (此頻率是振蕩器頻率的 1/6),在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),出現(xiàn)一個(gè) ALE 脈沖; PSEN: 該引 腳是外部程序存儲(chǔ)器的選通信號(hào)輸出端。當(dāng) AT89S52 由外部程序存儲(chǔ)器取指令或常數(shù)時(shí),每個(gè)機(jī)器周期輸出 2 個(gè)脈沖,即兩次有效。但訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將不會(huì)有脈沖輸出; EA/Vpp: 外部訪(fǎng)問(wèn)允許端。當(dāng)該引腳訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí),應(yīng)輸入低電平。要使 AT89S52 只訪(fǎng)問(wèn)外部程序存儲(chǔ)器 (地址為 0000HFFFFH), 這時(shí)該引腳必須保持低電平; 主程序設(shè)計(jì) 函數(shù)聲名以及變量定義 如前所述,本設(shè)計(jì)的主要功能是電子秤(物品重量、單價(jià)、總價(jià)的顯示及調(diào)整),顯華東交通大學(xué)畢業(yè)設(shè)計(jì) 示器采用 LCD1602 液晶,采用 5 個(gè)獨(dú) 立按鍵控制所有功能,采用蜂鳴器實(shí)現(xiàn)鬧鈴功能。因此,主函數(shù)執(zhí)行之前需要完成以下工作: ( 1)對(duì)使用的單片機(jī) I/O 口進(jìn)行位聲名: 、 、 口分別控制 LCD1602 液晶的讀寫(xiě)操作位、寄存器和使能端; ~ 四個(gè) I/O 口控制 4 個(gè)按鈕; 口連接清零鍵; 口連接蜂鳴器。 ( 2)定義各功能所需全局變量見(jiàn)表 33: 表 33 全局變量定義 功能 變量類(lèi)型 變量 意義 單價(jià) unsigned char djg、 djs、 djb 單價(jià)個(gè)位、十位、百位 重量 unsigned char zlg、 zls、 zlb 重量個(gè)位、十位、百位 價(jià)錢(qián) int jq 整形 unsigned char jqg、 jqs、 jqb、 jqq、 jq1 價(jià)錢(qián)個(gè)位,十位 .... 按鍵控制 int a k5 按鍵按下的改變調(diào)整 數(shù)值 ( 3) 聲名子函數(shù):本設(shè)計(jì)共需聲名多個(gè)子函數(shù),包括液晶驅(qū)動(dòng)子函數(shù)、單價(jià)顯示及其調(diào)整函數(shù)、重量顯示及其調(diào)整函數(shù)、價(jià)錢(qián)顯示函數(shù)、報(bào)警子程序等。詳細(xì)子函數(shù)聲名參見(jiàn)附錄 C。 主程序設(shè)計(jì)思想 電子秤的最基本功能為稱(chēng)重功能,程序設(shè)計(jì)的出發(fā)點(diǎn)必須是保證稱(chēng)重的準(zhǔn)確 性。但是由于沒(méi)有用壓力傳感器 無(wú)法測(cè)出物體實(shí)重,因此在本設(shè)計(jì)中 設(shè)定了一個(gè)重量初始值,再通過(guò)按鍵調(diào)整它的大小,并設(shè)定了一個(gè)上限值當(dāng)重量到達(dá)上限值時(shí)蜂鳴器就會(huì)發(fā)出響聲。通過(guò) k5 按鍵可以實(shí)現(xiàn)其加減 ( 1)的功能,同樣單價(jià)也是這樣調(diào)整的。通過(guò)切換鍵 k8 可以使顯示結(jié)果在單價(jià)、重量、總價(jià)錢(qián)之間切換,切換鍵的使用減少了按鍵的使用,節(jié)省了資源。顯示模塊采用的是 1602LCD 液晶顯示器,這種顯示器自帶字符發(fā)生器,因此可直接寫(xiě)要顯示的字符如“ dj”、“ zl”、“ jq”,或者寫(xiě)它們的 ASCII 值都會(huì)有正確的顯示,大大的簡(jiǎn)化了程序的編寫(xiě)。在編程時(shí),只需把字 符(數(shù)據(jù))寫(xiě)進(jìn) 1602 液晶,在指定的位置將結(jié)果顯示出來(lái)即可,再通過(guò)按鍵實(shí)現(xiàn)調(diào)整切換等功能。 胡娟:商用電子秤 的 設(shè)計(jì) 12 開(kāi) 始系 統(tǒng) 初 始 化w h i l e 大 循 環(huán)按 鍵 掃 描 界 面 顯 示 圖 32 主程序流程圖 按鍵處理程序 按鍵介紹 在單片機(jī)系統(tǒng)中,鍵盤(pán)按連接形式可分為獨(dú)立連接鍵盤(pán)、矩陣式鍵盤(pán)和薄膜開(kāi)關(guān)。本設(shè)計(jì)中用的是獨(dú)立連接式鍵盤(pán)。當(dāng)鍵沒(méi)有按下時(shí),所有的數(shù)據(jù)輸入線(xiàn)都為高電平;當(dāng)有一按鍵被按下時(shí),與之相連的數(shù)據(jù)輸入線(xiàn)將變?yōu)榈碗娖?;通過(guò)相應(yīng)指令,可以判斷是否有按鍵按下。按鍵要正確發(fā)揮作用必須消除抖動(dòng)。所謂抖動(dòng),是一種由于 按鍵是機(jī)械式的彈性開(kāi)關(guān),通常在按鍵按下和抬起的時(shí)候會(huì)出現(xiàn)多次閉合或者斷開(kāi)的現(xiàn)象,如圖 33 所示。通常抖動(dòng)時(shí)間為 5ms~10ms,穩(wěn)定閉合區(qū)的時(shí)間由按鍵動(dòng)作決定, CPU 往往會(huì)在閉合抖動(dòng)時(shí)檢測(cè)到多次電平的變化。消除硬件抖動(dòng)有硬件和軟件兩種方式。硬件消抖方法是在按鍵輸入通道上添加去抖動(dòng)電路,從根本上避免電壓抖動(dòng)的產(chǎn)生。軟件消抖方法則采用延遲5~10ms 時(shí)間,待電壓穩(wěn)定后,再進(jìn)行狀態(tài)輸入。在本設(shè)計(jì)中用延時(shí)的方法就足夠了。 華東交通大學(xué)畢業(yè)設(shè)計(jì) 理 想 波 形實(shí) 際 波 形閉 合 抖動(dòng)穩(wěn) 定 閉 合 區(qū)釋 放 抖 動(dòng) 圖 33 按鍵時(shí)波形 有 鍵 按 下 ?延 時(shí) 1 0 秒有 鍵 按 下 ?YNNY開(kāi) 始結(jié) 束 圖 34 按鍵去抖流程 當(dāng)抖動(dòng)的問(wèn)題消除以后,還必須判斷按鍵者是否將按鍵釋放。通常按鍵的穩(wěn)定閉合區(qū)的時(shí)間最少也有上百毫秒,是抖動(dòng)時(shí)間的數(shù)十倍,如果按鍵者持續(xù)按下按鍵不松手,那么按鍵一直處于閉合狀態(tài)。這種狀態(tài)會(huì)導(dǎo)致 CPU誤以為按鍵被按多次,為了避免這種錯(cuò)誤,程序需要判斷按鍵被松開(kāi),這樣才是一個(gè)完整的按鍵動(dòng)作。用等待查詢(xún)的方法就可以判斷了。例如判斷 S1 鍵松開(kāi)與否,只需在在避開(kāi)閉合抖動(dòng)以后執(zhí)行 while(!s1),當(dāng)按鍵一松開(kāi)CPU檢測(cè)到 s1=1,等待查 詢(xún)就結(jié)束,之后便可執(zhí)行該按鍵相應(yīng)的處理程序。 胡娟:商用電子秤 的 設(shè)計(jì) 14 按鍵設(shè)計(jì) 開(kāi) 始f l a g = = 0顯 示 界 面k 8 按 下 ?f l a g + +單 價(jià) 調(diào) 整f l a g = = 1 f l a g = = 2重 量 調(diào) 整YY NN返 回 顯 示 圖 35 按鍵 k8功能流程圖 本設(shè)計(jì)運(yùn)用 4 個(gè)獨(dú)立按鍵實(shí)現(xiàn)單價(jià)調(diào)節(jié)和狀態(tài)切換功能。四個(gè)獨(dú)立按鍵中, S S7是負(fù)責(zé)實(shí)現(xiàn)單價(jià)、重量的調(diào)整, S5 是設(shè)置調(diào)整數(shù)值大小的。 S8 則是功能切換鍵負(fù)責(zé)不同顯示結(jié)果的切換,另外一個(gè) k4 鍵則負(fù)責(zé)在重量超出范圍后清零功能。下面用流程圖簡(jiǎn)要說(shuō)明每個(gè)按鍵的作用。由于數(shù)字上調(diào)節(jié)大小和切換顯示的時(shí)候位數(shù)不變,所以接著把需要顯示的量的每個(gè)位通過(guò)取值表示出來(lái),例 如單價(jià)個(gè)位上的數(shù)值是單價(jià)的值乘以 10 去小數(shù)點(diǎn)之后再對(duì) 10 進(jìn)行除法運(yùn)算所得。 華東交通大學(xué)畢業(yè)設(shè)計(jì) S 5 是 否 按
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1