久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
OLED花樣顯示之畫圓矩形直線STM32源程序
[打印本頁]
作者:
837877663
時間:
2019-6-9 21:58
標題:
OLED花樣顯示之畫圓矩形直線STM32源程序
用STM32F103C8T6控制0.96寸OLED顯示屏顯示矩形,直線和圓,動態(tài)生成,是移植的正點原子TFT顯示屏的程序
制作出來的實物圖如下:
IMG_20190609_215354.jpg
(3.75 MB, 下載次數(shù): 78)
下載附件
2019-6-9 21:56 上傳
單片機源程序如下:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "usmart.h"
#include "OLED_I2C.h"
extern unsigned char BMP1[];
unsigned char BMP2[8192];
//將128*8的數(shù)組轉(zhuǎn)為128*64
void Change_to_12864(unsigned char BMP[])
{
unsigned int j=0;
unsigned char x,y,n,BMP3[1024];
for(y=0;y<64;y=y+8)
{
for(x=0;x<128;x++)
{
BMP3[j]=BMP[j];
for(n=0;n<8;n++)
{
if(BMP3[j]&0x01)
BMP2[x+(y+n)*128]=1;
BMP3[j]=BMP3[j]>>1;
}
j++;
}
}
}
//將128*64的數(shù)組轉(zhuǎn)為128*8
void Change_to_1288(unsigned char BMP4[])
{
unsigned int j=0;
unsigned char x,y,n,temp;
for(y=0;y<64;y=y+8)
{
for(x=0;x<128;x++)
{
for(n=0;n<8;n++)
{
temp|=BMP4[x+(y+n)*128]<<7;
if(n<7)
temp=temp>>1;
}
BMP1[j]=temp;
temp=0;
j++;
}
}
}
//畫線
//x1,y1:起點坐標
//x2,y2:終點坐標
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)
{
u16 t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //計算坐標增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //設(shè)置單步方向
else if(delta_x==0)incx=0;//垂直線
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平線
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //選取基本增量坐標軸
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//畫線輸出
{
BMP2[uRow+uCol*128]=1;//畫點
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
}
//畫矩形
//(x1,y1),(x2,y2):矩形的對角坐標
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)
{
LCD_DrawLine(x1,y1,x2,y1);
LCD_DrawLine(x1,y1,x1,y2);
LCD_DrawLine(x1,y2,x2,y2);
LCD_DrawLine(x2,y1,x2,y2);
}
//在指定位置畫一個指定大小的圓
//(x,y):中心點
//r :半徑
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r)
{
int a,b,x,y;
int di;
a=0;b=r;
di=3-(r<<1); //判斷下個點位置的標志
while(a<=b)
{
BMP2[x0+a+(y0-b)*128]=1; //5
BMP2[x0+b+(y0-a)*128]=1; //0
BMP2[x0+b+(y0+a)*128]=1; //4
BMP2[x0+a+(y0+b)*128]=1; //6
BMP2[x0-a+(y0+b)*128]=1; //1
BMP2[x0-b+(y0+a)*128]=1;
BMP2[x0-a+(y0-b)*128]=1; //2
BMP2[x0-b+(y0-a)*128]=1; //7
a++;
//使用Bresenham算法畫圓
if(di<0)di +=4*a+6;
else
{
di+=10+4*(a-b);
b--;
}
}
}
//顯示全屏
void OLED_Fast(unsigned char BMP[])
{
unsigned int j=0;
unsigned char x,y;
for(y=0;y<8;y++)
{
OLED_SetPos(0,y);
for(x=0;x<128;x++)
{
WriteDat(BMP[j]);
j++;
}
}
}
//LED狀態(tài)設(shè)置函數(shù)
void led_set(u8 sta)
{
LED1=sta;
}
//函數(shù)參數(shù)調(diào)用測試函數(shù)
void test_fun()
{
OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP1);
}
int main(void)
{
u8 h,y,x,z;
delay_init(); //延時函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
uart_init(115200); //串口初始化為115200
LED_Init(); //LED端口初始化
I2C_Configuration();
OLED_Init();
usmart_dev.init(SystemCoreClock/1000000); //初始化USMART
OLED_CLS();
h=12;
while(1)
{
for(y=0;y<64;y++)
{
for(x=0;x<128;x++)
{
BMP2[x+y*128]=0;
}
}
LCD_Draw_Circle(32+z,32,12);
LCD_Draw_Circle(96-z,32,h);
LCD_DrawRectangle(56,48,72,56);
Change_to_1288((unsigned char *)BMP2);
OLED_Fast((unsigned char *)BMP1);
if(z<8)
z=z+1;
else
z=z-1;
if(z==8)z=16;
if(z==10)z=0;
}
}
復制代碼
所有資料51hei提供下載:
OLED-畫圓矩形直線.7z
(209.67 KB, 下載次數(shù): 204)
2019-6-10 00:24 上傳
點擊文件名下載附件
畫圓矩形直線
下載積分: 黑幣 -5
作者:
guangyong_xia
時間:
2019-10-15 20:36
看似有幫助,明天放到STC90單片機中試試。
作者:
xjx51
時間:
2021-7-30 16:01
請問可以兼容51嗎?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美精品福利
|
国产h视频在线观看
|
亚洲一区二区三区视频
|
国产一区二区不卡
|
四虎影视最新网址
|
成人午夜
|
激情另类小说
|
91精品久久久久久
|
一区二区三区日韩
|
91片黄在线观看
|
成人在线小视频
|
一级片国产
|
亚洲精品911
|
99久久婷婷国产综合精品草原
|
欧洲精品一区二区
|
久久久久久91
|
精品日韩在线观看
|
亚洲精品一区二区三区在线观看
|
国产一区精品在线观看
|
久久视频免费在线观看
|
亚洲在线视频观看
|
欧美一级片在线观看
|
中文字幕在线免费播放
|
亚洲高清免费
|
欧美1级片
|
日韩色在线
|
中文字幕一区二区三区视频
|
国产蜜臀av
|
一级黄色片在线观看
|
亚洲欧美中文字幕
|
日韩成人在线播放
|
国产成人精品在线观看
|
欧美日韩免费在线观看
|
综合av
|
青青国产视频
|
91亚洲精品在线
|
日韩在线视频免费观看
|
欧美草草
|
亚洲成人欧美
|
亚洲免费观看视频
|
国产色婷婷
|