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

正文內(nèi)容

利用單片機(jī)分時(shí)電價(jià)系統(tǒng)設(shè)計(jì)-文庫吧

2025-04-22 16:18 本頁面


【正文】 量計(jì)費(fèi)的標(biāo)準(zhǔn)。鍵盤模塊有修改這些變量的功能,以使智能電表系統(tǒng)可以適應(yīng)不同環(huán)境。 initset 結(jié)構(gòu)定義的全局變量為 Set, Set 將 initset 結(jié)構(gòu)中的變量實(shí)例化。 coulometer 結(jié)構(gòu)定義電能表在高峰時(shí)段使用的電量、低谷時(shí)段使用的電量和使用的總電量。 coulometer 結(jié)構(gòu)定義的全局變量為 Coulo。 fee 結(jié)構(gòu)記錄當(dāng)前使用的電費(fèi),包括高峰時(shí)段使用電量的電費(fèi),低谷時(shí)段使用電量的電費(fèi)和使用的總電費(fèi)。fee 結(jié)構(gòu)定義的全局變量為 Fee。 在程序中由于要用到外部存儲(chǔ)器或者 IO 端口的直接地址,所以利用 Keil C51 中絕對(duì)定址關(guān)鍵字 _at_定義了各種外部端口和 IO 端口的地址。其中 RAM6264 定義為外部 RAM 中存儲(chǔ)的時(shí)刻的地址。 CommandPortOf8279 為鍵盤控制芯片 8279的命令口地址, DataOf8279 定義為 8279 數(shù)據(jù)口的地址。 CommandPortOf8255 定義為 LCD 接口芯片 8255 的控制口地址, APortOf8255 定義為 8255 的 A 口地址,CPortOf8255 定義為 8255 的 C 口地址,但是在程序中沒有直接使用 C 口地址,而是通過 8255 的命令口使 C 口的各位分別置位來控制 C 口的。 全局函數(shù) Init_CPU() 和 Init_8255andLCD()用來對(duì) CPU和液晶顯示模塊進(jìn)行初始化。 Init_CPU()用于開放必要的中斷允許,將 T1 口配置為計(jì)數(shù)器,用來檢測電脈沖信號(hào)。 Init_8255andLCD()將 8255 的 A、 B、 C 口配置成方式 0 輸出 模式。打開 LCD 顯示并清屏。 鍵盤模塊程序的設(shè)計(jì):鍵盤模塊包含兩個(gè)中斷函數(shù), KeyBoard 和 DogSniffer,KeyBoard 函數(shù)用于處理鍵盤按鍵事件,每次鍵盤按鍵中斷, KeyBoad 函數(shù)會(huì)檢查按鍵的鍵值,根據(jù)不同的鍵值調(diào)用不同的功能函數(shù)。 DogSniffer 函數(shù)為偵探狗技術(shù)的實(shí)現(xiàn)函數(shù),當(dāng)在鍵盤上按下功能鍵時(shí) KeyBoard函數(shù)調(diào)用 WakeupDog 函數(shù),喚醒偵探狗,其實(shí)質(zhì)是向 T0 定時(shí)器送入定時(shí)初值,并使 T0 開始計(jì)時(shí)。當(dāng) T0 每 65ms 定時(shí)中斷一次。每次中斷后系統(tǒng)調(diào)用中斷處理函數(shù) DogSniffer, DogSniffer 函數(shù)判斷功能鍵標(biāo)志是否被標(biāo)記,如果功能鍵標(biāo)志被標(biāo)記,而且按鍵時(shí)間超過 T0 的 100 次計(jì)數(shù),即 。則 DogSniffer 使功能鍵標(biāo)志復(fù)位。如果功能鍵標(biāo)志沒有被標(biāo)記,則 DogSniffer 使 T0 中斷計(jì)數(shù)復(fù)位。并且不在向 T0 送入定時(shí)初值。如果功能鍵標(biāo)志被標(biāo)記,但是 T0 中斷計(jì)數(shù)未達(dá) 100次,則將 T0 中斷計(jì)數(shù)加 1,并向 T0 送入定時(shí)初值,開始下次定時(shí)。 以下是鍵盤模塊程序中使用的函數(shù)列表,其中 NumsToArray 等四個(gè)輔助算法函數(shù)在第二部分,系統(tǒng)整體設(shè)計(jì)中已經(jīng)詳細(xì)描述,這里不在說明。鍵盤 模塊各函數(shù)間的調(diào)用關(guān)系圖如圖所示。 void DogSniffer(void) interrupt 1 using 0。 void KeyBoard(void) interrupt 2 using 0。 void ShowHighCoulometer(void)。 void ShowLowCoulometer(void)。 void ShowAllCoulometer(void)。 void ShowHighFee(void)。 void ShowLowFee(void)。 void ShowAllFee(void)。 void Clear(void)。 void WakeupDog(void)。 void SetHighFee(uchar key)。 void SetLowFee(uchar key)。 void SetRotateSpeed(uchar key)。 void SetHighStart(uchar key)。 void SetHighEnd(uchar key)。 void SetLowStart(uchar key)。 void SetLowEnd(uchar key)。 uchar NumsToArray(int number,uchar Array[8]) 。 void ArrayToCharacters(uchar message[8],uchar display[8][32],uchar length)。 int ArrayToDigitalI(uchar Array[8],uchar length)。 float ArrayToDigitalF(uchar Array[8],uchar length)。 KeyBoard 中斷處理函數(shù)首先將按鍵的鍵碼讀入一個(gè)變量中,然后判斷功能鍵標(biāo)志 WhichFunctionKey 是否被作標(biāo)記,如果已做標(biāo)記,則進(jìn)入一個(gè) switch 語句,根據(jù)不同的鍵碼,調(diào)用不同設(shè)置函數(shù)。如果 WhichFunctionKey 未被標(biāo)記,則進(jìn)入標(biāo)準(zhǔn)狀態(tài)的按鍵處理過程,此過程通過一個(gè) switch 語句決定不同的執(zhí)行方式。按下 0~ 5 鍵時(shí),為顯示相關(guān)信息的操作,則直接調(diào)用相關(guān)函數(shù)。按下 C 鍵時(shí)為復(fù)位語句,直接調(diào)用 Clear()函數(shù)。當(dāng)按下功能鍵 6~D 時(shí),首先將功能鍵標(biāo)志W(wǎng)hichFunctionKey 設(shè)置為相 同的鍵碼,然后喚醒偵探狗,進(jìn)行設(shè)置超時(shí)探測。當(dāng)下次按下按鍵時(shí),由于 WhichFunctionKey 已被標(biāo)記,會(huì)轉(zhuǎn)到相應(yīng)的設(shè)置函數(shù)執(zhí)行。如果長時(shí)間未按下任何鍵,當(dāng)超過偵探狗的超時(shí)時(shí)間后,偵探狗會(huì)將WhichFunctionKey 標(biāo)志的標(biāo)記取消。 ShowHighCoulometer, ShowLowCoulometer, ShowAllCoulometer 和 ShowHighFee、ShowLowFee、 ShowAllFee 兩組函數(shù)用于顯示 coulometer 和 fee 結(jié)構(gòu)的變量中保存的高峰用電量、低谷用電量、總用電 量和高峰電費(fèi)、低谷電費(fèi)、總電費(fèi)的數(shù)值。這兩組函數(shù)將內(nèi)存中保存的數(shù)值轉(zhuǎn)化為一個(gè)只存放單個(gè)位數(shù)字的數(shù)組,然后通過查字庫 NumCharacters,將單個(gè)數(shù)字的字型碼送到要顯示的字符緩存區(qū)里。ShowHighFee 一組函數(shù)在顯示時(shí),由于內(nèi)部變量為 float 型,在 LCD 上顯示時(shí)比較困難,而且在計(jì)算電費(fèi)時(shí)按照整數(shù)結(jié)算也是比較容易接受的選擇,所以在實(shí)現(xiàn)時(shí)首先利用標(biāo)準(zhǔn)庫中的 ceil()函數(shù)將 float 取整,然后再轉(zhuǎn)化為整型數(shù)字顯示 SetHighFee、 SetLowFee、 SetRotateSpeed、 SetHighStart、和 SetHighEnd、SetLowStart、 SetLowEnd 函數(shù)用于設(shè)置 initset 結(jié)構(gòu)定義的電價(jià)、轉(zhuǎn)數(shù)、高峰時(shí)段、低谷時(shí)段等變量。這些函數(shù)被調(diào)用時(shí)一般將按鍵信息存儲(chǔ)在一個(gè)輸入緩沖區(qū)里面。輸入小數(shù)點(diǎn)用按鍵 D 代替,輸入結(jié)束用按鍵 E 代替。當(dāng)這些函數(shù)檢測到一個(gè)輸入結(jié)束按鍵時(shí),它們將輸入緩沖區(qū)的數(shù)據(jù)傳遞給 ArrayToDigitalI 或者時(shí)ArrayToDigitalF,由他們完成輸入到數(shù)值的轉(zhuǎn)化。然后將轉(zhuǎn)化后的數(shù)值設(shè)為相應(yīng)變量的當(dāng)前值。做完這些工作后,這些函數(shù)將輸入緩存區(qū)、緩存位置計(jì)數(shù)和WhichFunctionKey 標(biāo)志復(fù)位。以備下一次設(shè)置。 LCD 顯示模塊程序設(shè)計(jì): LCD 模塊部分包含下列幾個(gè)函數(shù): void SendCommandToLCD(uchar mand)。 void Display_Left(uchar mdata)。 void Display_Right(uchar mdata)。 void Display_All(uchar mdata)。 void DisplaySelected(uchar pagenum,uchar column,uchar mdata[16])。 void DisplayAtRow(uchar row,uchar column,uchar mdata[32])。 void DisplayALine(uchar line,uchar mdata[8][32])。 Display_All 函數(shù)用于系統(tǒng)啟動(dòng)時(shí)清屏,不用作其他用途,其他任何函數(shù)都不應(yīng)該調(diào)用。 LCD 模塊的設(shè)計(jì)思想是盡力提供一個(gè)較為容易使用的、與硬件隔離的接口給其他調(diào)用函數(shù)。這一部分的編程模型如下圖所示: LCD 部分的實(shí)現(xiàn)與此模型相對(duì)應(yīng)、 SendCommandToLCD、 Display_Left 和Display_Right 函數(shù)位于此模型中的 “LCD驅(qū)動(dòng)層 ”中,這 3 個(gè)函數(shù)直接接觸硬件,所有有關(guān)顯示的調(diào)用都是基于這 3 個(gè)函數(shù)之上。 SendCommandToLCD 函數(shù)的功能是向 LCD 的驅(qū)動(dòng)芯片發(fā)送命令字。其參數(shù)為要發(fā)送的命令字。 Display_Left函數(shù)的功能是向 LCD 的第一塊驅(qū)動(dòng)芯片內(nèi)寫入一個(gè)字節(jié)的顯示數(shù)據(jù),其直接表現(xiàn)為在 LCD 的左半部分上顯示字符。 Display_Right 函數(shù)能向 LCD 的第二塊驅(qū)動(dòng)芯片內(nèi)寫入一個(gè)字節(jié)的顯示數(shù)據(jù),表現(xiàn)為在 LCD 的右半部分顯示字符。這 3 個(gè)函數(shù)都是利用作為全局變量 定義的 CommandPortOf8255 和 APortOf8255,命令或者數(shù)據(jù)端口直接讀寫的。 本系統(tǒng)的 LCD 顯示時(shí)一個(gè)字符占用 1616 個(gè)象素的顯示單元,即其一個(gè)字符的顯示數(shù)據(jù)為 32 個(gè)字節(jié)。 DisplaySelected 函數(shù)和 DisplayAtRow 函數(shù)位于此編程模型之 “編程抽象層 ”,是對(duì) SendCommandToLCD、 Display_Left、 Display_Right 函數(shù)的低層封裝。它們使用低層的 SendCommandToLCD 等 3 個(gè)函數(shù)完成顯示數(shù)據(jù)的功能。 DisplaySelected 函數(shù)在指定的 頁和列開始送入 16 個(gè)字節(jié)的顯示數(shù)據(jù),即半個(gè)字符。 LCD 顯示屏共 32 行,分為 4 頁,每頁 8 行,由于一個(gè)字高為 16個(gè)像素,所以這個(gè)性質(zhì)限制了 DisplaySelected 函數(shù)只能顯示半個(gè)字。此函數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1