資源簡介
1.劃線的線段在 規定的圓內.
2.電子羅盤中指針斜率為東北天坐標系下 解算航向斜率slope

代碼片段和文件信息
#include?“oled.h“
#include?“stdlib.h“
#include?“oledfont.h“?? ?
#include?“init.h“
/*----------------------?Constant?/?Macro?Definitions?-----------------------*/ ???
#define?OLED_CS? PGout(8)??//未接入
#define?OLED_RST??PGout(10)
#define?OLED_RS? PGout(9)
//#define?OLED_WR? PAout(4) ? ??
//#define?OLED_RD? PDout(7)
?
//使用4線串行接口時使用?
#define?OLED_SCLK? PGout(12)????//D0
#define?OLED_SDIN? PGout(11)? ?//D1
?????
//OLED的顯存
//存放格式如下.
//[0]0?1?2?3?...?127
//[1]0?1?2?3?...?127
//[2]0?1?2?3?...?127
//[3]0?1?2?3?...?127
//[4]0?1?2?3?...?127
//[5]0?1?2?3?...?127
//[6]0?1?2?3?...?127
//[7]0?1?2?3?...?127? ???
u8?OLED_GRAM[128][8]; ?
//更新顯存到LCD ?
void?OLED_Refresh_Gram(void)
{
u8?in; ????
for(i=0;i<8;i++)??
{??
OLED_WR_Byte?(0xb0+iOLED_CMD);????//設置頁地址(0~7)
OLED_WR_Byte?(0x00OLED_CMD);??????//設置顯示位置—列低地址
OLED_WR_Byte?(0x10OLED_CMD);??????//設置顯示位置—列高地址???
for(n=0;n<128;n++)OLED_WR_Byte(OLED_GRAM[n][i]OLED_DATA);?
}???
}
#if?OLED_MODE==1 //8080并口
//通過拼湊的方法向OLED輸出一個8位數據
//data:要輸出的數據
void?OLED_Data_Out(u8?data)
{
u16?dat=data&0X0F;
GPIOC->ODR&=~(0XF<<6); //清空6~9
GPIOC->ODR|=dat<<6; //D[3:0]-->PC[9:6]
GPIO_Write(GPIOCdat<<6);
PCout(11)=(data>>4)&0X01; //D4
PBout(6)=(data>>5)&0X01; //D5
PEout(5)=(data>>6)&0X01; //D6
PEout(6)=(data>>7)&0X01; //D7?
}?
//向SSD1306寫入一個字節。
//dat:要寫入的數據/命令
//cmd:數據/命令標志?0表示命令;1表示數據;
void?OLED_WR_Byte(u8?datu8?cmd)
{
OLED_Data_Out(dat); ????
? OLED_RS=cmd;
OLED_CS=0; ???
OLED_WR=0; ?
OLED_WR=1;
OLED_CS=1; ??
OLED_RS=1; ?
}? ???? ????
#else
//向SSD1306寫入一個字節。
//dat:要寫入的數據/命令
//cmd:數據/命令標志?0表示命令;1表示數據;
void?OLED_WR_Byte(u8?datu8?cmd)
{
u8?i; ??
OLED_RS=cmd;?//寫命令?
OLED_CS=0; ??
for(i=0;i<8;i++)
{ ??
OLED_SCLK=0;
if(dat&0x80)OLED_SDIN=1;
else?OLED_SDIN=0;
OLED_SCLK=1;
dat<<=1;???
} ?
OLED_CS=1; ??
OLED_RS=1;??? ??
}?
#endif
?? ??
//開啟OLED顯示????
void?OLED_Display_On(void)
{
OLED_WR_Byte(0X8DOLED_CMD);??//SET?DCDC命令
OLED_WR_Byte(0X14OLED_CMD);??//DCDC?ON
OLED_WR_Byte(0XAFOLED_CMD);??//DISPLAY?ON‘
}
//關閉OLED顯示?????
void?OLED_Display_Off(void)
{
OLED_WR_Byte(0X8DOLED_CMD);??//SET?DCDC命令
OLED_WR_Byte(0X10OLED_CMD);??//DCDC?OFF
OLED_WR_Byte(0XAEOLED_CMD);??//DISPLAY?OFF
} ??? ?
//清屏函數清完屏整個屏幕是黑色的!和沒點亮一樣!!! ??
void?OLED_Clear(void)??
{??
u8?in;??
for(i=0;i<8;i++)for(n=0;n<128;n++)OLED_GRAM[n][i]=0X00;??
OLED_Refresh_Gram();//更新顯示
}
//清屏函數清完屏整個屏幕是黑色的!和沒點亮一樣!!!
void?Half_OLED_Clear(void)
{
u8?in;??
for(i=0;i<8;i++)
for(n=0;n<64;n++)
OLED_GRAM[n][i]=0X00;??
OLED_Refresh_Gram();//更新顯示
}
//畫點?
//x:0~127
//y:0~63
//t:1?填充?0清空 ???
void?OLED_DrawPoint(u8?xu8?yu8?t)
{
u8?posbxtemp=0;
if(x>127||y>63)return;//超出范圍了.
pos=7-y/8;
bx=y%8;
temp=1<<(7-bx);
if(t)OLED_GRAM[x][pos]|=temp;
else?OLED_GRAM[x][pos]&=~temp; ????
}
//x1y1x2y2?填充區域的對角坐標
//確保x1<=x2;y1<=y2?0<=x1<=127?0<=y1<=63 ? ?
//dot:
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9200??2019-03-22?17:29??oled.c
?????文件????????801??2019-03-03?15:21??oled.h
?????文件???????1421??2019-02-18?09:16??drv_oled.h
?????文件???????9398??2019-03-04?15:51??drv_oled.c
-----------?---------??----------?-----??----
????????????????20820????????????????????4
- 上一篇:pigz-2.3.1.tar.gz
- 下一篇:無名模塊絕版開源
評論
共有 條評論