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口燒壞了...