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

正文內(nèi)容

基于單片機(jī)的led點陣顯示屏設(shè)計(編輯修改稿)

2025-07-24 19:25 本頁面
 

【文章內(nèi)容簡介】 步移位時鐘置為低電平,向數(shù)據(jù)位輸出1位數(shù)據(jù),接著同步移位時鐘置為高電平,對需要發(fā)送的字節(jié)作右移位處理。經(jīng)過8次移位過程,完成1字節(jié)的發(fā)送。本設(shè)計的LED點陣屏幕,可以對信息實現(xiàn)動態(tài)顯示,字符從右側(cè)往左側(cè)移動。移動算法分析: 顯示的定義為uchar display[][32],這里表示了要顯示一個完整的字符,需要32個字符型數(shù)據(jù)。為什么呢?因為顯示一個完整的字符需要四塊點陣,每個點陣有8行,每行八個點。就是說,一行的數(shù)據(jù)就占一個char,四塊當(dāng)然就是32個char型。這里變量i代表是第幾個漢字,變量j帶便的是該漢字的第幾個char數(shù)據(jù)。下面是四塊點陣的示意圖:第一個char第三個char。第二個char。第十七個char。第十八個char。第三十二個char移動前:1111000011110000。11110000。11110000。11110000。11110000。1111000011110000。11110000移動后:11XXX1110000111100001。11100001。1110000x。1XXXX111100001。11100001。111000011110000x。1110000x圖42 點陣屏移動分析示意圖奇數(shù)次移動顯示程序:for(j=0。j31。j+=2) //行顯示,一共16行,mov為移動次數(shù),smov為剩于移動次數(shù)SendByte((display[i+1][j+1]mov) | (display[i+2][j] smov))。SendByte((display[i+1][j]mov) | (display[i+1][j+1]smov))。SendByte((display[i][j+1]mov) | (display[i+1][j] smov))。SendByte(display[i][j]mov | (display[i][j+1]smov))。偶數(shù)次移動顯示程序:for(j=0。j31。j+=2) //行顯示,一共16行SendByte((display[i+2][j]mov)| (display[i+2][j+1]smov))。SendByte((display[i+1][j+1]mov ) | (display[i+2][j]smov))。SendByte((display[i+1][j]mov) | (display[i+1][j+1]smov))。SendByte((display[i][j+1]mov )| (display[i+1][j]smov))。無論奇數(shù)次或者是偶數(shù)次移動,每次都向74HC595寫入4字節(jié)數(shù)據(jù),之后再開個該行的顯示。經(jīng)過16次行循環(huán)顯示,則完成屏幕的一次顯示。點陣屏的顯示的方式的逐行掃描,從第一行開始顯示,之后是第二行,最后是第十六行。這樣的顯示方式,有些類似電視機(jī)的顯像管逐行掃描技術(shù),它是指顯示屏顯示圖像進(jìn)行掃描時,從屏幕左上角的第一行開始逐行進(jìn)行,整個圖像掃描一次完成。因此圖像顯示畫面閃爍小,顯示效果好。按照這個原理,在某一時刻只能有一行LED二極管被點亮,為何我們看見的整張屏幕在顯示信息呢?由于單片機(jī)通過對74系列的驅(qū)動芯片高速控制,點陣屏每行都處于高速掃描。因此,我們看到的是不會閃爍的顯示畫面。由于人眼的暫留效應(yīng)以及LED二極管余暉效應(yīng),當(dāng)屏幕的刷新頻率高于50Hz時,此時人眼就會“誤認(rèn)”為屏幕是連續(xù)顯示的。單片機(jī)使用串口通信,讓上位機(jī)軟件傳送顯示字模數(shù)據(jù),并存儲在單片機(jī)片內(nèi)SRAM作為屏幕顯示算法的調(diào)用。首先對串行通信作簡單的介紹,串行通信可以分為同步通信和異步通信兩類。同步通信是按照軟件識別同步字符來實現(xiàn)數(shù)據(jù)的發(fā)送和接收,異步通信是一種利用字符的再同步技術(shù)的通信方式。 l 同步通信 同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀有所不同,通常含有若干個數(shù)據(jù)字符。它們均由同步字符、數(shù)據(jù)字符和校驗字符(CRC)組成。其中同步字符位于幀開頭,用于確認(rèn)數(shù)據(jù)字符的開始。數(shù)據(jù)字符在同步字符之后,個數(shù)沒有限制,由所需傳輸?shù)臄?shù)據(jù)塊長度來決定;校驗字符有1到2個,用于接收端對接收到的字符序列進(jìn)行正確性的校驗。同步通信的缺點是要求發(fā)送時鐘和接收時鐘保持嚴(yán)格的同步。 l 異步通信 異步通信中,在異步通行中有兩個比較重要的指標(biāo):字符幀格式和波特率。數(shù)據(jù)通常以字符或者字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端逐幀發(fā)送,通過傳輸線被接收設(shè)備逐幀接收。發(fā)送端和接收端可以由各自的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步。 接收端檢測到傳輸線上發(fā)送過來的低電平邏輯0(即字符幀起始位)時,確定發(fā)送端已開始發(fā)送數(shù)據(jù),每當(dāng)接收端收到字符幀中的停止位時,就知道一幀字符已經(jīng)發(fā)送完畢。以工作方式劃分,又可以分為方式0、方式方式2及方式3,本設(shè)計主要使串行通信口工作在方式1。方式1為8位數(shù)據(jù)異步通信方式,一幀數(shù)據(jù)包含10位,即8未數(shù)據(jù)位、1個起始位和一個停止位。串口通信的工作方式通過SCON寄存器的第7位設(shè)置:位數(shù)76543210SCONSM0SM1SM2RENTB8RB8TIRI表41 SCON格式串口通信還需要借助定時器產(chǎn)生傳輸波特率,程序讓定時器1工作在方式2,產(chǎn)生19200bps的波特率。定時的工作方式則在TMOD寄存器設(shè)置:位數(shù)76543210TMODGATEC/TM1M0GATEC/TM1M0表42 TMOD格式工作方式M1 M0功能說明方式00 013位定時器/計數(shù)器方式10 116位定時器/計數(shù)器方式21 0自動重裝8位定時器/計數(shù)器方式31 1T0分為2個8位計數(shù)器,關(guān)閉T1表43 TMOD工作方式功能表 實現(xiàn)串口通信的程序流程如下:設(shè)置定時器1工作方式開始設(shè)置定時器寄存器值打開定時器結(jié)束設(shè)置串口工作方式設(shè)置波特率加倍開發(fā)全局中斷打開串口中斷清除串口接收中斷標(biāo)志位 圖43 串口通信程序流程圖控制函數(shù)主要任務(wù)是對上位機(jī)軟件發(fā)送的控制指令作出響應(yīng),屏幕滾動顯示加/減速,屏幕開始滾動顯示和屏幕停止?jié)L動等,每項功能對應(yīng)一個指令,這個指令和上位機(jī)程序是共同協(xié)議的。比如,上位機(jī)上用來控制開始滾動用指令0x11。單片機(jī)程序設(shè)計時用一判斷語句控制其功能。第五章 上位機(jī)軟件設(shè)計VB是由美國微軟公司于1991年開發(fā)的一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動方式的結(jié)構(gòu)化高級程序設(shè)計語言,可用于開發(fā) Windows 環(huán)境下的各類應(yīng)用程序。它簡單易學(xué)、效率高,且功能強(qiáng)大可以與 Windows 專業(yè)開發(fā)工具SDK相媲美。設(shè)計使用VB編寫上位機(jī)軟件,主要實現(xiàn)功能有:1) 將輸入漢字經(jīng)過本地字庫轉(zhuǎn)換為字模數(shù)據(jù)。2) 通過串口通信發(fā)送到目標(biāo)板上,刷新顯示信息。3) 控制屏幕的顯示效果。以UCDOS 中文宋體字庫為例,每一個字由16 行16 列的點陣組成,即國標(biāo)漢字庫中的每一個字均由256 個點陣來表示。我們可以把每一個點理解為一個像素,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256 像素范圍內(nèi)的任何圖形。編碼的時候,黑的地方為1 白的地方為0 ,依次從低到高,八位一組,從上到下的順序,進(jìn)行編碼。由圖51可見,“大”字的第一組和第二組編碼分別為04H 和00H。 圖51 漢字點陣字模示意圖依照這個方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32 個8 位,可以得出漢字“大”的掃描代碼為: 04H ,00H ,04H ,02H , 04H , 02H , 04H , 04H , 04H , 08H , 04H , 30H , 05H , 0C0H , 0FEH , 00H , 05H , 80H , 04H , 60H ,04H ,10H ,04H ,08H ,04H ,04H ,0CH ,06H ,04H ,04H ,00H ,00H由這個原理可以看出,無論顯示何種字體或圖像,都可以用這個方法來分析出它的掃描代碼,只要輸出掃描代碼就可以在屏幕上顯示出字體或圖像。知道漢字點陣的編碼原理后,就可以通過計算機(jī)程序?qū)h字進(jìn)行編碼處理了,下面以16 16 點陣字庫為例進(jìn)行介紹。16 16 點陣漢字字庫可以在中文操作軟件(UCDOS) 中找到現(xiàn)成的文件。一般漢字字庫均符合國家標(biāo)準(zhǔn)GB2312 80 的規(guī)定。在漢字系統(tǒng)中使用機(jī)內(nèi)碼形式存儲漢字,國標(biāo)碼最高位置1 作為漢字的機(jī)內(nèi)碼。而國標(biāo)碼由兩個字節(jié)組成,其中高字節(jié)表示區(qū),低字節(jié)表示位。國標(biāo)碼和區(qū)位碼都有94 個區(qū),每個區(qū)又都有94 個位。1~9 區(qū)為圖形區(qū),10~15 區(qū)未規(guī)定,16~87 區(qū)存放一、二級漢字庫(具體編碼可查看WINDOWS根目錄下的GB K. TXT 文件) 。國標(biāo)碼和區(qū)位碼的關(guān)系是:國標(biāo)碼高字節(jié)= 區(qū)碼+ 20H 。國標(biāo)碼低字節(jié)= 位碼+ 20H。所以,機(jī)內(nèi)碼與國標(biāo)碼和區(qū)位碼的關(guān)系是:機(jī)內(nèi)碼高字節(jié)= 國標(biāo)碼高字節(jié)+ 80H = 區(qū)碼+ A0H 。機(jī)內(nèi)碼低字節(jié)= 國標(biāo)碼低字節(jié)+ 80H = 位碼+ A0H。字模代碼按照區(qū)位碼的順序在字庫中以二進(jìn)制格式存儲,每個漢字占用32 個字節(jié)。因此只要找到漢字代碼的起始位置,就可正確提取漢字點陣信息。對于不同的字庫,漢字代碼起始位置的計算方法可能存在差異,例如HZK16 若以ADDRESS 表示首地址,Q 表示區(qū)碼,W 表示位碼,經(jīng)分析和實踐得出HZK16 中漢字首址計算公式為:ADDRESS = 32 [ (Q 1) 94 + (W 1) ] ( )在VB 中,獲取漢字區(qū)位碼必須用到ASC() 函數(shù)和HEX( ) 函數(shù),函數(shù)ASC( ) 返回一個IN TEGER 數(shù)據(jù),代表字符串中首字母的字符代碼。HEX() 函數(shù)返回代表十六進(jìn)制數(shù)值的字符串。當(dāng)漢字作為ASC() 函數(shù)的參數(shù)時,返回的是漢字機(jī)內(nèi)碼,經(jīng)HEX() 函數(shù)轉(zhuǎn)換即可得到漢字機(jī)內(nèi)碼的十六進(jìn)制數(shù),再通過上述的關(guān)系就可以得到漢字的首地址,有了漢字的首地址再從字庫中提取漢字代碼就容易了。軟件需要的一個漢字顯示輸入文本窗體,和一個字模轉(zhuǎn)換數(shù)據(jù)顯示窗體。需要幾個按鈕,分別控制字模轉(zhuǎn)換、發(fā)送、開始、停止、左移、右移、加速、減速。同時,還提供一個信息提示窗口,用于觀察軟件運(yùn)行的狀況。另外可以對串口的選擇,要實現(xiàn)串口通信,還需要增加Microsoft Comm Control 。界面設(shè)計效果圖如下: 圖52 VB 界面設(shè)計圖 VB程序編寫 字模轉(zhuǎn)換程序?qū)⒁粋€漢字轉(zhuǎn)換成32Byte的字模數(shù)據(jù),一般經(jīng)過如下過程:1) 用asc函數(shù)取得漢字的內(nèi)碼,并轉(zhuǎn)成16進(jìn)制AA。2) 取出內(nèi)碼高八位字節(jié),轉(zhuǎn)換為國標(biāo)碼bb。3) 打開漢字庫數(shù)據(jù)文件,根據(jù)上面保存的國標(biāo)碼bb查找到對應(yīng)的位置。4) 漢字的起始位置代碼,讀取32個字節(jié)。 由于單片機(jī)中的顯示緩存定義為每次顯示15個漢字,其大小為15*32Byte。因此,每次轉(zhuǎn)換字模需要為15*32個。如果輸入超過15個漢字,則提示不能轉(zhuǎn)換;如果輸入少于15個漢字,則使用00數(shù)值填充,以達(dá)到每次轉(zhuǎn)換后為15*32個字節(jié)。 串口傳輸程序VB的串口通信設(shè)置十分方便,直接對控件修改數(shù)據(jù),即可完成波特率、奇偶設(shè)置等。進(jìn)行串口傳輸前,需要檢測串口是否存在或者被占用。如果串口被占用,信息提示欄將會提示“COM1被占用或不存在!”。串口打開成功后,將字模數(shù)據(jù)以16進(jìn)制的形式發(fā)送到單片機(jī)上。 控制按鈕程序單片機(jī)程序在接收完15*32Byte的字模數(shù)據(jù)后,再接收1字節(jié)的控制指令。因此,VB程序的控制按鈕被激活后,需要從新對輸入漢字轉(zhuǎn)換字模后,在緊接著的數(shù)據(jù)添加控制指令。下面以“停止?jié)L動/開始滾動”按鈕為例,該按鈕是復(fù)合功能,可對屏幕滾動顯示狀態(tài)進(jìn)行開始/停止設(shè)置。通過Dim flag As Boolean定義布爾型的標(biāo)志變量。當(dāng)flag = True時,本次發(fā)送停止?jié)L動指令,按鈕則顯示“開始滾動”示意再次按后,會發(fā)送開始滾動指令;當(dāng)flag = False時,具有相反的功能。第六章 設(shè)計仿真通過Proteus軟件對系統(tǒng)硬件設(shè)計和軟件設(shè)計結(jié)合仿真,從仿真的效果檢查系統(tǒng)設(shè)計存在的錯誤或者缺陷,這樣可以比較有針對性地進(jìn)行系統(tǒng)硬件設(shè)計和軟件設(shè)計的修改。 Proteus仿真軟件簡介Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1