C51微控制器如何用二維陣列讓88點陣顯示漢字

2023-03-05 04:05:21 字數 2729 閱讀 4813

1樓:一週逗比秀

也跟 那個數碼管一個原理的

把寫好的欄位碼 放陣列裡面

先去吧 顯示原理 搞明白 這個的話 看不懂 別來問!

然後 兩個for迴圈 大迴圈0~7自增 內嵌一個 段碼【0~7自增】 :這是8*8 單個的點陣了

你所說的 是要16*16才有能力顯示漢字的吧 是這樣的 你如果也像上面這樣的話一個字就用了整個 48個埠了 你 考慮用 兩個4-16 譯碼器來節省一下埠 方法嗎 你看懂上面一個下面這個方法看不懂的話 我就不說什麼了 也不要找我! 看不懂上面 一個 的話 可以找我!

我就 不懂了 一樓 明明不會 又沒有說 有多少分 樓主 一看 沒多少人回答 給個辛苦的這種

二是 你說 他是灌水 又不像這辛辛苦苦 的 偏偏要坐要坐這個沙發!

2樓:匿名使用者

微控制器我懂的不多,就跟不懂一樣。。。。 但就軟體程式設計這個角度我到可以提出我的想法

你不說有71個字是固定的,最後一個字從甲、乙、丙、丁裡面隨機選嗎

那你在定義好了前71個字的陣列後,可以定義一個二維陣列,這二維陣列裡存放甲、乙、丙、丁

就像這樣:

code unsigned char rndword[4][32]=,,,};

我寫點的地方你就寫那些十六進位制數字,這分別代表四個字

然後呢你可能是先用一個迴圈把前71個字輸出吧? 這我不管啥樣。

反正到第72個字時,你要單獨立出來來輸出這個了隨機數。

看**:

int irandom;

srand((unsigned)time(null)); // 這步是拿時間做隨機數的種子

irandom = rand()%4; //產生0到3的數,這個用來做二維陣列的下標

然後你可能就用迴圈來輸出了吧

for(j = 0 ; j < 32 ; j++)

主要還是說下rand函式吧, 這要求你先拿一個東西做種子,一般都拿時間,就是srand是種子生成器,這樣rand便能以時間做種子產生隨機數了,之所以rand%4就是讓它所產生的隨機數除4取餘,來得到0,1,2,3 來做陣列下標用。 就這樣

對了,忘了提醒,要載入

#include

#include

第一個標頭檔案是srand 和rand函式的宣告, 第二個是time函式的宣告

51微控制器點陣顯示一個漢字

3樓:匿名使用者

8x8的點陣太小,很難正常顯示一個漢字,通常,會使用4個8x8的點陣即16x16的點陣來顯示一個漢字。

微控制器在通過點陣顯示漢字的時候,需要用到如下技術手段:

1、漢字取模

漢字取模,即把漢字對應16x16點陣的圖形用16進位制數來描述,形成可以用於驅動顯示的資料。

例如下圖,的漢字「中」

該字的16x16點陣圖形中,每行有16個畫素,可以編碼為2個位元組,每8個畫素,對應一個位元組的高低位,則該字編碼的前2個位元組為0x01,0x80……,如此,可用32個位元組描述漢字的點陣圖形。

2、掃描顯示

通常,驅動點陣裝置時,為了節約微控制器的管腳資源,會使用鎖存器一類的期間,即鎖存器輸出端與點陣連線,而輸入段由微控制器控制,採用行、場掃描或分塊行、場掃描的方式驅動,具體你可以搜尋相關資料。

微控制器8*8點陣顯示漢字的程式

4樓:易爾通網路科技

1. org 0hstart:mov dptr,#data1 ;指向點陣**首址;

clr cdisp?這個應該是clr c(清除標誌位,因為下面要判斷是否移完8位)吧

2. mov r2,#80h ; 80h 使第7 列(最左一列)陰極為低電平(這個感覺也有問題)

3.disp:mov a,#0; 賦初值0,為了下面能從點陣**表中從零開始取**

movc a,@a+dptr ; 取第一列點陣**

mov p2,a ; 將第一列點陣**的值賦給p2口

mov p1,r2 ;使一列陰極為低電平?

call delay ; 呼叫延時

inc dptr ; 指向下一列點陣**

mov a,r2 ; r2的值賦給a

rrc a ; 右移一位,為下一列陰極輸出低電平作準備

mov r2,a ;右移一位後再把值儲存到r2,為了下一次右移

jnc disp ; 8 列未完跳回到disp繼續執行

4.ajmp start 跳轉到start

delay: mov r1,#0 ;//這個有問題,r1不是賦零,不然怎麼延時啊

dely0: djnz r1,dely0 ;延時(直到r1的值變為0)

5.ret 返回(這個子程式執行完了)

6.data1: db 24h,44h,dch,54h,7fh,54h,54h,44h; 點陣**表

5樓:匿名使用者

漢字至少16x16點陣。8x8點陣只能顯示極少數筆劃簡單的漢字,其它的就是糊成一片的。

51微控制器 組合語言 88點陣顯示英文字母 逐個顯示

6樓:匿名使用者

led點陣的核心原理跟4位led數碼管一樣,都是需要行列掃描的。仔細查一下點陣的管腳,不是順序排列,把字型做成陣列,直接把陣列一個一個位元組的傳送到埠上(你沒有說明p0和p2那個是行,那個是列,其中一個直接發,一個是按位發)。不斷的傳送會導致點陣重新整理,速度夠快的話,效果就出來了

微控制器c51怎樣才能學好

步驟 1.找本書大概瞭解一下微控制器結構,大概瞭解就行。不用都看懂,又不讓你出書的。三天 2.找學習板練習編寫程式,學微控制器就是練程式設計序,遇到不會的再問人或查書。二十天 3.自己網上找些小電路類的資料練習設計外圍電路。焊好後自己除錯,熟悉過程。十天 4.自己完全設計具有個人風格的電路,產品,你...

我想問問,我能否在微控制器C51中定義空陣列,然後向裡面寫值,改變值

完全可以而且必要的,比如說在非同步序列收發應用中,就是用一個陣列來做資料快取的。定址方便不易出錯。微控制器的記憶體少的可憐,定義陣列要根據需求來定義,數值不超過256,就要用unsigned char型的。比如unsigned char a 10 注意,後面的10是必要的。這是在做微控制器程式,必須...

C51微控制器中如何把float的變數取出它的整數存入

用c語言的強制型別轉換就可以吧!比如 float a unsigned char b b unsigned char int a 有些編譯copy器float直接轉換bai成duunsigned char 會有警告,所以先轉 zhi換成int型,再轉dao成unsigned char型。c51微控制...