stm32並口驅動12864求大神看看我的程式錯在哪了

時間 2022-04-21 14:53:10

1樓:匿名使用者

我有51的程式,可供參考。

#include "lcd12864.h"

#include "ziku.h"

#include

static void delay(uint j) //延時

void busy(void)

void wdata(uchar wdata)

void wcode(uchar wcode)

void subinit()

//設定顯示位置

void setxy(uchar x,uchar y)

else //if (y<=127)

wcode(0x40|(y%64));

wcode(0xb8|x);

p0=0xff;

}void wdram(uchar x,uchar y,uchar dd)

//復位.

void lcd_rst(void)

//lcd初始化

void lcd_init(void)

void lcd_on(void)

//lcd 清顯示屏

void lcd_clear(uchar startline,uchar stopline,uchar startrow,uchar stoprow)

} }

//顯示數字.

void lcd_disp_onenum(uchar x,uchar y,uchar num,uchar disp_mode)

break;

case 1:break;

case 2:break;

case 3:break;

case 4:break;

case 5:break;

case 6:break;

case 7:break;

case 8:break;

case 9:break;

default: break;}}

//顯示二位數。

void disp_2num(uchar x,uchar y,uchar num,uchar disp_mode)

//顯示三位數。

void disp_3num(uchar x,uchar y,uint num,uchar disp_mode)

//顯示四位數。

void disp_4num(uchar x,uchar y,uint num,uchar disp_mode)

void lcd_dispico2(uchar x,uchar y,uchar *pico)//顯示老肯圖示}}

//顯示多位數。 disp_mode&0x10==1時,進行即每位都顯示,否則大於0的位置不顯示。

void disp_numgb16(uchar x,uchar y,ulong data,uchar num,uchar disp_mode)}

2樓:

你的電平輸出是對的麼?12864好像是5v電壓驅動的吧?

為什麼我把lcd12864在51上的程式移植到stm32後就不顯示或者亂碼?

3樓:匿名使用者

首先,你要確定lcd12864的電源是5v的,還是3.3v。你用在51微控制器上正常顯示,說明12864是5ⅴ的,而你用stm32上時,lcd的正極接3.

3v,是給lcd加3.3v的電源,那是不能工作的。

但是,給lcd加5v電源,與stm32引腳連線後,加到stm32引腳上有5v電壓,這是不行的。

所以,stm32要配3.3v的液晶屏,重買乙個吧。這個5v只能配51微控制器了。

stm32接12864液晶,用串列埠好,還是並口好?串列埠速度能有多快?能滿足哪些方面的需求?謝謝!

4樓:匿名使用者

12864液晶單bai屏資料是8k位元組

du,如每秒重新整理10次,zhi即80k位元組的資料量dao。

如果使用並口版,即每秒大概有80k組操作權;如果是模擬並口,大概是320k次操作

如果使用串列埠,操作次數是並口的8倍速左右,即每秒不會超過5m次。

而stm32的執行速度可以達到70mips,遠遠高於上述的5m次,所以無論是使用並口,還是模擬並口,還是串列埠,在速度上都是沒有問題的。

我有產品中用過stm32模擬並口和模擬串列埠來驅動12864,都沒有問題。

5樓:匿名使用者

如果用的是spi型別的串列埠,速度足夠了

stm32中,stm32中GPIOx BSRR和 GPIO xBRR寄存允許對任何GPIOx進行讀 更改的獨立訪問

比如我要讓gpioa變為高電平,可以有兩種做法 1 gpioa odr gpio pin 0 2 gpioa bsrr gpio pin 0 比如我要讓gpioa變為低電平,可以有兩種做法 1 gpioa odr gpio pin 0 2 gpioa brr gpio pin 0 總結和糾正一下前面...

stm32如何啟動串列埠中斷,stm32 關於串列埠中斷服務函式

看一下暫存器手冊,配置一下相關暫存器就ok。然後在初始化時或合適的地方啟動串列埠中斷就是了。1.首先配置串列埠1管腳 配置串列埠1引腳 gpio initstructure.gpio pin gpio pin 9 gpio initstructure.gpio speed gpio speed 50...

stm32怎樣存痊大靜態陣列,stm32怎樣訪問超大靜態陣列

你是否是遇到這樣問題 比如定義乙個陣列unsigned char arry num 因為想要這個陣列非常大,也就是說這個num非常大,超過了堆疊的大小,程式就會報錯而編譯不通過,然後你想換種方法解決是嗎?如果是的話有兩種方法可解決 1 擴大堆疊容量,如果是keil編寫 的話,那麼更改堆疊大小在相應的...

stm32微控制器的定時問題,STM32微控制器的定時問題。

是這樣的,看到你這個問題,我腦海裡第乙個反映是,你的初值和計數方式配合反了.因為很多從51過來的人都犯這個錯誤,他們認為,stm32向上計數是從初值 65535 向下是 初值 0,也就是說,他們把初值作為出發點.其實是錯的,初值是目標點,向上是 0 初值,向下是 65535 初值.那麼看一下,如果你...

stm32的晶振為什麼不起振,STM32板的晶振不起振,怎麼辦

是不是你自己做的stm32板子呢?如果是的話建議你檢查電路,一般一次未燒寫程式的stm32晶振是不起振的,如果已經燒寫了程式不起振的話檢查你程式是否已經執行了。檢測boot0與boot1引腳電壓 這個晶元的通病,廠家答覆是使用問題,晶振不合適。問題是其他廠商的單片怎麼就沒這問題呢?st以前生產的其它...