如何用微控制器來控制LCD顯示,如何用微控制器來控制LCD顯示

時間 2021-08-11 17:19:59

1樓:兆嵐經新榮

你不會說的是電腦用的彩色液晶顯示器吧...:)

我這兒有個,320*240的lcd微控制器控制程式....

2樓:光明的大道好

;………………………………………………

;16*16顯示一個漢字,向左移動

;只能顯示8個漢字,受8位控制

;………………………………………………

;資源分析

;………………………………………………

;r0指向資料快取地址,r1顯示地址指標,r2資料增加指向指標,r3顯示掃描次數

;r4、r5延時程式,r6掃描延時,50h作片選字,51h右片選字

;52h、53h、54h、55h、56h螢幕流動積存器,57h第二個字首地址

;30h~4fh顯示快取

;………………………………………………

;引腳定義

;………………………………………………

clk bit p2.0 ;74hc164清零,低電平清零

rck bit p2.1 ;74hc595移出脈衝,上升沿有效

srclr bit p2.2 ;74hc595清零,低電平清零

g bit p2.3 ;74hc595使能輸出,低電平輸出

;………………………………………………

;定義變數

;………………………………………………

d_list equ (8) ;單個資料顯示時間延時,即向右流動速度

;………………………………………………

;視訊記憶體初始化

;………………………………………………

chuli: mov r6,#d_list ;單個資料顯示時間延時

mov r2,#0 ;定義編碼資料指標,從0開始

mov r0,#30h ;首視訊記憶體地址送r0,定義視訊記憶體地址指標

loop3: mov a,r2 ;編碼資料指標送a

mov dptr,#tab ;表首地址送dptr

movc a,@a+dptr ;查表取顯示編碼

mov @r0,a ;顯示編碼送現視訊記憶體

inc r2 ;編碼資料指標+1

inc r0 ;指向下一地址

cjne r2,#32,loop3 ;判斷是否完成一次資料重新整理

loop6: acall start ;呼叫顯示程式作延時

djnz r6,loop6 ;判斷是否完成延時

mov r6,#d_list ;恢復延時時間

;………………………………………………

;顯示流動

;………………………………………………

mov 57h,#32 ;第二個字的編碼首地址

loop1: mov r2,#15 ;定義資料移動指標

mov r0,#30h ;視訊記憶體首地址送r0

loop5: mov 52h,r0 ;地址指標快取

inc r0 ;地址指標加1,指向下一地址

mov 53h,r0 ;地址指標快取

inc r0 ;指向下一地址

mov 55h,r0 ;地址指標快取

mov 54h,@r0 ;取指標地址裡的資料存54h

mov r0,52h ;取回地址指標

mov @r0,54h ;重新整理地址指標指向地址的資料

mov r0,55h ;取回地址指標

inc r0 ;地址指標+1,指向下一地址

mov 56h,@r0 ;取指標地址裡的資料存56h

mov r0,53h ;取回地址指標

mov @r0,56h ;重新整理地址指標指向地址的資料

mov r0,55h ;地址指標快取

djnz r2,loop5 ;完成15次重新整理地址

mov dptr,#tab ;表首地址送dptr

mov a,57h ;取回地址指標給a

movc a,@a+dptr ;查表取數

mov r0,#4eh ;送最後一列上地址指標

mov @r0,a ;a送給最後一列上地址

inc 57h ;編碼資料地址加1

mov a,57h ;取回地址指標給a

movc a,@a+dptr ;查表取數

mov r0,#4fh ;送最後一列下地址指標

mov @r0,a ;a送給最後一列下地址

inc 57h ;指向下一地址

loop4: acall start ;呼叫顯示程式作延時

djnz r6,loop4 ;判斷是否完成延時

mov r6,#d_list ;恢復延時時間

sjmp loop1 ;返回lop1,繼續重新整理地址裡的資料,使顯示右移

;………………………………………………

;顯示子程式

;………………………………………………

start: clr clk ;74hc164清零

setb clk

clr srclr ;74hc595清零

setb srclr

loop2: mov r3,#16 ;掃描次數送r3

mov r1,#30h ;視訊記憶體首地址送r1

clr c ;c置1

mov 50h,#0ffh ;左片選字

mov 51h,#0ffh ;右片選字

;………………………………………………

loop: clr rck ;74hc595移出脈衝準備

setb g ;置高74hc595使能端,使輸出呈高阻

mov a,@r1 ;取視訊記憶體首地址裡的是數

mov scon,#00h ;選串列埠以方式0工作

mov sbuf,a ;把a從串列埠傳送

jnb ti,$ ;等待傳送完一幀

clr ti ;清標誌位

inc r1 ;地址指標加1

mov a,@r1 ;取視訊記憶體r0所指向地址裡的是數

; mov scon,#00h ;選串列埠以方式0工作

mov sbuf,a ;把a從串列埠傳送

jnb ti,$ ;等待傳送完一幀

clr ti ;清標誌位

inc r1 ;地址指標加1

mov a,50h ;左片選字送a

rrc a ;帶進位位右移,選中第一列,低電平有效

; mov scon,#00h ;選串列埠以方式0工作

mov sbuf,a ;把a從串列埠傳送

jnb ti,$ ;等待傳送完一幀

clr ti ;清標誌位

mov 50h,a ;左片選字送回暫存器

mov a,51h ;右片選字送a

rrc a ;帶進位位右移,選中第九列,低電平有效

; mov scon,#00h ;選串列埠以方式0工作

mov sbuf,a ;把a從串列埠傳送

jnb ti,$ ;等待傳送完一幀

clr ti ;清標誌位

mov 51h,a ;右片選字送回暫存器

setb rck ;74hc595移出脈衝呈上升沿,資料移出

clr g ;使能輸出

acall delay ;調延時子程式,是顯示定格1ms

djnz r3,loop

ret;………………………………………………

;1ms延時子程式

;………………………………………………

delay : mov r4,#1 ;延時毫秒數送r4

d2: mov r5,#250 ;1ms延時值

d1: nop

nopdjnz r5,d1 ;1ms延時迴圈

djnz r4,d2 ;毫秒數減1,不等於0則繼續迴圈,等於結束

ret;………………………………………………

;顯示編碼資料

;………………………………………………

tab: db 01h,00h,01h,00h,01h,00h,01h,00h,0ffh,0ffh,05h,02h,05h,84h,09h,48h;

db 09h,20h,11h,10h,21h,08h,41h,0ch,01h,06h,01h,04h,01h,00h,00h,00h;"長",0

db 08h,20h,08h,30h,0ffh,0e0h,08h,42h,08h,4ch,1fh,0f0h,12h,10h,12h,1ah;

db 13h,0f2h,10h,04h,0ffh,0c8h,10h,30h,50h,0cch,37h,02h,12h,1ch,00h,00h;"城",1

db 00h,00h,00h,00h,1fh,0f0h,12h,20h,12h,20h,12h,20h,12h,20h,0ffh,0fch;

db 12h,22h,12h,22h,12h,22h,12h,22h,1fh,0f2h,00h,02h,00h,0eh,00h,00h;"電",2

db 10h,40h,11h,80h,16h,00h,0ffh,0ffh,14h,00h,02h,04h,13h,0c8h,92h,50h;

db 72h,60h,1fh,0ffh,32h,40h,52h,40h,92h,48h,1eh,44h,00h,78h,00h,00h;"梯",3

db 00h,40h,20h,80h,21h,00h,22h,00h,27h,0ffh,2ch,90h,34h,90h,0e4h,90h;

db 24h,94h,24h,92h,24h,93h,27h,0feh,20h,00h,20h,00h,20h,00h,00h,00h;"有",4

db 7fh,0ffh,40h,00h,4ch,40h,72h,20h,41h,0c0h,00h,00h,7fh,0ffh,52h,02h;

db 53h,04h,52h,0c0h,52h,30h,52h,48h,7eh,84h,00h,06h,00h,04h,00h,00h;"限",5

db 00h,00h,00h,80h,01h,04h,02h,0eh,0ch,14h,70h,24h,21h,0c4h,00h,8ch;

db 00h,08h,70h,08h,08h,28h,06h,1eh,03h,0ch,01h,80h,01h,00h,00h,00h;"公",6

db 00h,00h,08h,00h,49h,0f8h,49h,20h,49h,20h,49h,20h,49h,20h,49h,20h;

db 49h,20h,49h,0f0h,48h,00h,40h,04h,40h,02h,7fh,0fch,00h,00h,00h,00h;"司",7

怎麼用微控制器讓lcd顯示呢?

3樓:匿名使用者

用微控制器讓lcd顯示,一要保證電路正確,二是程式必須與電路相符,程式中的lcd的控制腳必須與實物相符。否則,液晶屏只亮並不顯示字元。你主程式中的液晶屏初始化語句應放在第一行。

你現在是放在最後了,假如前面語句顯示了,可初始化後就全沒了。

用微控制器怎麼控制電壓,如何用微控制器的電壓訊號來控制220電壓大小

理論上任何微控制器都可以實現,在微控制器的輸出端輸出pwm 脈衝調寬 波,再加簡單的阻容低通濾波器,就可以實現電壓的連續調節。控制頻率的方法不能調節電壓,因為不論頻率多高,其高低半波都是對稱的,平均電壓不變。至於你說的led燈和無刷風扇的控制,先說led燈,其亮度是靠調節電流實現的,嚴格說來調節電壓...

微控制器如何控制鎖,微控制器如何控制一個鎖?

不一定要用繼電器,你等於控制一個電磁鐵而已,用三極體去驅動就可以,你可以用兩級驅動,微控制器驅動一個小三極體,再用這個小 管驅動一個功率管比如mos管來驅動繼電器。 可以用微控制器 ds18b20晶片實現溫度計的功能,再增加一個繼電器,當溫度高於40度,控制繼電器吸合,鎖釦脫離。鎖釦最好做成單方向的...

請問如何用微控制器的IO口直接控制繼電器

io口輸出在多數情況下只能看做訊號,沒有驅動力,除非是像發光二級管這樣的小功率器件。 不可以的,微控制器io口電流太小,沒什麼驅動能力 你的電路接法是否錯誤呢?檢視一下,微控制器從理論上講是不能直接驅動繼電器的,不管你的接法如何,直接連線可能會燒壞微控制器i o口,你的原因可能是已經把i o口燒壞了...