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

正文內(nèi)容

紅外抄表電度表——抄表器(編輯修改稿)

2024-07-27 23:59 本頁面
 

【文章內(nèi)容簡介】 端 12 D5 Data I/O5 R/W 讀/寫選擇端 13 D6 Data I/O6 E 使能信號 14 D7 Data I/O7 D0 Data I/O 15 BLA 背光源正極8 D1 Data I/O 16 BLK 背光源負(fù)極圖 211 模擬接線圖15圖 212 讀操作時序的控制器接口圖163 系統(tǒng)軟件設(shè)計程序的編寫就要涉及到程序語言的選擇,下面先看看匯編語言和 C 語言的特性,再進(jìn)行語言的選擇。(1)C 語言:C 語言是國內(nèi)外廣泛使用的計算機(jī)語言,是計算機(jī)應(yīng)用人員應(yīng)掌握的一種程序設(shè)計工具。C 語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點。因此,C 語言特別適合編寫系統(tǒng)軟件。除了這些特點外,C 語言還具有以下優(yōu)越性:在不需要完全了解單片機(jī)系統(tǒng)具體硬件的情況下,也能夠編出符合硬件實際的專業(yè)水平的程序;以適應(yīng)片上存儲器的大小;中斷服務(wù)程序的現(xiàn)場保護(hù)和恢復(fù),中斷向量表的填寫,是直接與單片機(jī)相關(guān)的,都由 C 編譯器代辦;提供常用的標(biāo)準(zhǔn)函數(shù)庫,以供用戶直接使用; 頭文件中定義宏、說明復(fù)雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機(jī)的系列化產(chǎn)品的開發(fā);有嚴(yán)格的句法檢查,錯誤很少,可容易地在高級語言的水平上迅速地被排除掉;可方便地接受多種實用程序的服務(wù):如片上資源的初始化有專門的實用程序自動生成;再如,有實時多任務(wù)操作系統(tǒng)可調(diào)度多道任務(wù),簡化用戶編程,提高運(yùn)行的安全性等等。(2)匯編語言:匯編語言是計算機(jī)能提供給用戶的最快而又最有效的語言,也是能夠利用計算機(jī)所有硬件特性并能直接控制硬件的唯一語言,因而在對于程序的空間和時間要求很高的場合,匯編語言是必不可少的,至于對于很多需要直接控制硬件的應(yīng)用場合,更是非用匯編語言不可。除了這些特性,匯編語言還具有下列特性:① 占用的內(nèi)存單元和 CPU 資源少,能直接對硬件進(jìn)行控制;② 程序簡短執(zhí)行速度快;③ 可直接調(diào)用單片機(jī)的全部資源,并可有效地利用單片機(jī)的專有特性;④ 能準(zhǔn)確地掌握指令的執(zhí)行時間,適用于實時控制系統(tǒng)。紅外抄表系統(tǒng)的軟件程序設(shè)計主要由主程序、發(fā)射程序、顯示程序、接收程序組成。通過對以上兩種語言的分析,由于 C 語言程序有利于實現(xiàn)較復(fù)雜的算法,同時該程序也比較復(fù)雜,要控制多個部件模塊。為了能簡單有條理的編輯程序。兩種語言都17有其獨(dú)有的特性,結(jié)合自身的情況,對 C 語言比匯編語言要熟悉,并且應(yīng)用 C 的時間比匯編長,所以我最終選擇了以 C 語言來編寫系統(tǒng)的程序。如圖 31 所示為紅外抄表系統(tǒng)的整體程序流程圖,系統(tǒng)開始工作時進(jìn)行初始化操作。由按鍵控制數(shù)據(jù)是否發(fā)送。 圖 31 系統(tǒng)軟件流程圖 38kHz 頻率的產(chǎn)生及發(fā)射程序設(shè)計38kHz 頻率可以有效防止日光和燈光的干擾,使得通信距離更遠(yuǎn)。現(xiàn)討論產(chǎn)生38kHz 頻率的兩種方案。方案一:分頻電路產(chǎn)生初始化子程序數(shù)值按鍵掃描數(shù)碼管顯示是運(yùn)行接收程序LCD 顯示后續(xù)處理接收按鍵掃描開始運(yùn)行發(fā)送程序否18圖 32 分頻電路圖如圖 32 所示 455kHz 晶振經(jīng) 12 分頻得到 38kHz。由 455kHz 的晶振 CRY,反相器74HC04 及電阻、電容構(gòu)成的振蕩器產(chǎn)生 455kHz 的方波信號。經(jīng)脈沖分頻器 74LS92,六分頻成為 的脈沖信號。再經(jīng)過 D 觸發(fā)器構(gòu)成的 2 分頻/整形電路變成 38kHz的方波信號。本方案的振蕩器采用了晶振,因晶振頻率十分穩(wěn)定。RC 振蕩器的穩(wěn)定性差,往往由于偏差很大而縮短控制距離。方案二:軟件生成 38kHz 頻率f=38kHz T=1/f 計算得 T≈ 如圖 35 所示發(fā)射管接在單片機(jī)的 引腳上,所以只要控制單片機(jī) 引腳的高、低電平周期為 。程序如下:for(a=aa。a0。a) out=1。i=7。while(i0)i。out=0。如下程序首先發(fā)送 頻率,再停止發(fā)送 。這兩個段是為了讓接收模塊識別防止其他信號的干擾。接著開始發(fā)送數(shù)據(jù),kHz(40)(發(fā)送時間為 1ms)后判斷數(shù)據(jù)的最后一位是“1”還是“0” 。如果數(shù)據(jù)是“1”則停止發(fā)送 delayms(93),否則停止發(fā)送 delayms(65)(1ms) 。一個數(shù)據(jù)為發(fā)送完畢,num=num1 數(shù)據(jù)位右移一位后判斷發(fā)送。如此循環(huán) 8 次數(shù)據(jù)就發(fā)送完畢。發(fā)送完畢指令 kHz(20),后停止發(fā)送。如圖 33 所示發(fā)射和接收波形圖。19 a=2ms b=1ms c=圖 33 發(fā)射接收波形圖khz(116)。delayms(125)。for(num1=8。num10。num1) khz(40)。if(numamp。0x001)delayms(93)。//delay elsedelayms(65)。//delay 1msnum=num1。如圖 34 所示為 38kHz 的載波頻率:低電平 17us、高電平 9us,17+9=26us 比 快一點點。高、低電平時間不是固定值,只要相加等于 26us 就是發(fā)送 38khz 的頻率。 圖 34 計算得出的載波頻率 數(shù)據(jù)計算程序本系統(tǒng)用發(fā)射板的三個按鍵來設(shè)置需要發(fā)送的數(shù)據(jù),三個按鍵分別是個、十、百位控制鍵,數(shù)值計算規(guī)則如下:每按一個按鍵對應(yīng)位加一。利用軟件編程對各位進(jìn)行相加計算。每位最大只能按20到 9,當(dāng)超過 9,則返回到 0 并且蜂鳴器響一聲,如此反復(fù)循環(huán)計算。如個、十、百位各按一下,則得數(shù)據(jù) 111。計算規(guī)則十分簡單,如下程序為百位控制:key1 為百位控制鍵,首先進(jìn)行按鍵掃描,當(dāng)按鍵引腳為低電平時說明按鍵沒有按下,繼續(xù)等待;當(dāng)引腳為高電平時說明按鍵已按下,則蜂鳴器響一聲,百位加一。百位計算部分程序如下:if(key1==0)delay_ms(10)。if(key1==0)while(!key1)。bai++。if(bai==10) bai=0。beer=1。delay_ms(100)。beer=0。上述為百位計算程序,同理十位和個位也是一樣。掃描一遍按鍵后進(jìn)行總和計算程序,并由數(shù)碼管顯示。總和計算公式為:zong=bai*100+shi*10+ge。 顯示模塊程序設(shè)計 數(shù)碼管顯示數(shù)碼管動態(tài)顯示程序中,各個位的延時時間長短非常重要,如果延時時間長,則會出現(xiàn)閃爍現(xiàn)象;如果延時時間太短,則會出現(xiàn)顯示暗且有重影。所有數(shù)碼管的段選全部連接在一起,動態(tài)顯示是多個數(shù)碼管,交替顯示,利用人的視覺暫留作用使人看到多個數(shù)碼管同時顯示。在編程時,需要輸出段選和位選信號,位選信號選中其中一個數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需要的內(nèi)容,延時一段時間后,再選中另一個數(shù)碼管,再輸出對應(yīng)的段碼,高速交替。 例如需要顯示數(shù)字“12”時,先輸出位選信號選中第一個數(shù)碼管,輸出 1 的段碼延時一段時間后選中第二個數(shù)碼管,輸出 2 的段碼。把上面的流程以一定的速度循環(huán)執(zhí)行就可以顯示出“12” ,由于交替的速度非???,人眼看到的就是連續(xù)的“12” 。先顯示百位,延時一段時間后顯示十位,最后顯示各位。一直按照設(shè)置時間循環(huán)顯示。交替顯示,利用人的視覺暫留作用使人看到多個數(shù)碼管同時顯示。使得看到連續(xù)的 3 位數(shù)。部分程序如下:P2=dispcode[bai]。21P0=dispbitcode[0]。delay_ms(10)。P0=dispbitcode[3]。P2=dispcode[shi]。P0=dispbitcode[1]。delay_ms(10)。P0=dispbitcode[3]。 LCD 液晶顯示程序液晶顯示屏的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(Static)、單純矩陣驅(qū)動(Simple Matrix)和主動矩陣驅(qū)動(Active Matrix)三種。(1)線段的顯示點陣圖形式液晶由 MN 個顯示單元組成,假設(shè) LCD 顯示屏有 64 行,每行有 128列,每 8 列對應(yīng) 1 字節(jié)的 8 位,即每行由 16 字節(jié),共 168=128 個點組成,屏上6416 個顯示單元與顯示 RAM 區(qū) 1024 字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由 RAM 區(qū)的 000H~00FH 的 16 字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH 時,則屏幕的左上角顯示一條短亮線,長度為 8 個點;當(dāng)(3FFH)=FFH 時,則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H 時,則在屏幕的頂部顯示一條由 8 段亮線和 8 條暗線組成的虛線。這就是 LCD 顯示的基本原理。(2)字符的顯示用 LCD 顯示一個字符時比較復(fù)雜,因為一個字符由 68 或 88 點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示 RAM 區(qū)的 8 字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,可以讓控制器工作在文本方式,根據(jù)在 LCD 上開始顯示的行列號及每行的列數(shù)找出顯示 RAM 對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。(3)漢字的顯示漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占 32B,分左右兩半,各占 16B,左邊為 5……右邊為 6……根據(jù)在 LCD 上開始顯示的行列號及每行的列數(shù)可找出顯示 RAM 對22應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加 1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)……直到 32B 顯示完就可以 LCD 上得到一個完整漢字。如表 31 所示為 1602 液晶模塊內(nèi)部控制器的控制指令。如圖 35 所示為 LCD 液晶顯示流程圖。 表 31 1602 液晶模塊內(nèi)部控制器指令序號 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清顯示 0 0 0 0 0 0 0 0 0 12 光標(biāo)返回 0 0 0 0 0 0 0 0 1 *3 置輸入模式 0 0 0 0 0 0 0 1 I/D S4 顯示開/關(guān)控制 0 0 0 0 0 0 1 D C B5 光標(biāo)或字符移位 0 0 0 0 0 1 S/C R/L * *6 置功能 0 0 0 0 1 DL N F * *7置字符發(fā)生存貯器地址0 0 0 1字符發(fā)生存貯器地址8 置數(shù)據(jù)存貯器地址 0 0 1 顯示數(shù)據(jù)存貯器地址9 讀忙標(biāo)志或地址 0 1 BF 計數(shù)器地址10寫數(shù)到 CGRAM 或DDRAM)1 0要寫的數(shù)據(jù)內(nèi)容11從 CGRAM 或 DDRAM讀數(shù)1 1讀出的數(shù)據(jù)內(nèi)容1602 液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1 為高電平、0 為低電平)指令 1:清顯示,指令碼 01H,光標(biāo)復(fù)位到地址 00H 位置指令 2:光標(biāo)復(fù)位,光標(biāo)返回到地址 00H23指令 3:光標(biāo)和顯示模式設(shè)置指令 4:顯示開關(guān)控制指令 5:光標(biāo)或顯示移位指令 6:功能設(shè)置命令指令 7:字符發(fā)生器 RAM 地址設(shè)置指令 8:DDRAM 地址設(shè)置指令 9:讀忙信號和光標(biāo)地址指令 10:寫數(shù)據(jù)指令 11:讀數(shù)據(jù) 圖 35 液晶顯示流程圖液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖 36 為 LCD1602 液晶屏的內(nèi)部顯示地址。開始LCD 初始化延時設(shè)第一行顯示位置顯示第一行內(nèi)容設(shè)第二行并顯示位置顯示第二行內(nèi)容24圖 36 LCD1602 液晶屏內(nèi)部顯示地址例如第二行第一個字符的地址是 40H,那么是否直接寫入 40H 就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位 D7 恒定為高電平 1 所以實際寫入的數(shù)據(jù)應(yīng)該是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。LCD1602 液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了 160 個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址 41H 中的點陣字符圖形顯示出來,我們就能看到字母“A”。部分程序如下:void adr_write(unsigned char adr) delay(20)。e=0。 rs=0。 rw=0。 e=1。 lcd_data=adr。 e=0。 使用時都要進(jìn)行初始化操作,如兩行顯示、清顯示、是否需光標(biāo),從哪里開
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1