|
|
題主做了一個(gè)練習(xí)題材,使用pc作為上位機(jī)來串口通信數(shù)據(jù),數(shù)據(jù)為二值化的圖像,用單色oled做到顯示logo的動(dòng)畫,但是遇到一個(gè)瓶頸,想不出是什么問題,就是用stc-isp自帶的串口助手來傳輸單一圖片的取模(bin文件或直接在輸入窗口寫入圖片的取模00、ff這類數(shù)據(jù)),oled能正常顯示,但是改成傳輸這一小段logo動(dòng)畫的bin文件就開始顯示完全的亂碼,看不出截取圖片的任何特征,想不明白是哪方面的問題,buf【i】以unsigned char存入xdata中,已經(jīng)驗(yàn)證可以正常傳輸靜態(tài)圖片的取模并顯示,bin文件的圖片大小沒問題,可以正常導(dǎo)入oled的顯示功能,就是沒法動(dòng)態(tài)顯示,另外請教一下有什么方法可以顯示傳輸?shù)臄?shù)據(jù)位,滿xx個(gè)位就停止一次,等待單片機(jī)返回應(yīng)答信號,然后繼續(xù)傳輸數(shù)據(jù)位
- #include<stc.h>
- #include "oled.h"
- #include "time.h"
- #define uch unsigned char
- #define uin unsigned int
- uin flag;
- uin i=0;
- char returnb='1';
- void send(void);
- void main()
- {
-
- SCON=0X50;//115200 bps
- PCON=0X80;
- TMOD=0X20;
- TL1=0XE8;
- TH1=0XFF;
- ET1=0;
- TR1=1;
- EA=1;
- ES=1;
- Initial_M096128x64_ssd1306();oled初始化
- Delay_1ms(5);
- fill_picture(0);//清屏
- while(1)
- {
- if(flag)
- {
- RI=1;
- ES=0;
- Picture();顯示oled
- ES=1;
-
- Delay_1ms(50);
- fill_picture(0);//清屏
- // send();
- flag=0;
- RI=0;
- // ES=1;
- // TI=0;
- }
- }
- }
- void serial() interrupt 4
- {
- // ES=0;
-
- if(RI)
- {
- P2=SBUF;
- buf[i]=SBUF;
- i++;
- if(i==704)
- {
- flag=1;
- send();
- i=0;
- ES=0;
- // RI=1;
- }
- }
- // ES=1;
- RI=0;
- }
- void send(void)
- {
- SBUF=returnb;
- while(!TI);
- TI=0;
-
- }
復(fù)制代碼
|
|