资源简介

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


评论

共有 条评论