初级会员
- 积分
- 113
- 金钱
- 113
- 注册时间
- 2022-6-7
- 在线时间
- 17 小时
|
发表于 2022-7-18 16:22:34
|
显示全部楼层
你好,请问你的能正常显示波形吗;我想请教一下,我在做一个oled显示温度曲线的;adc采集后的数据作为参数放在画线或画点函数里面显示;但是不知道为什么只显示在oled的第0页,能否探讨交流一下吗
- u8 OLED_GRAM[128][8];
- //更新显存到LCD
- void OLED_Refresh_Gram(void)
- {
- u8 i,n;
- for(i=0;i<8;i++)
- {
- OLED_WriteCommand (0xb0); //设置页地址(0~7)
- OLED_WriteCommand (0x00); //设置显示位置—列低地址
- OLED_WriteCommand (0x10); //设置显示位置—列高地址
- for(n=0;n<128;n++)
- {
- OLED_WriteData(OLED_GRAM[n][i]);
- }
- }
- }
- void OLED_DrawPoint(u8 x,u8 y,u8 t) //画点函数
- {
- u8 pos,bx,temp=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;
- }
- OLED_Refresh_Gram();
- }
- /*
- 连线函数
- 入口参数:
- x1:起点的x坐标;
- y1:起点的y坐标;
- x2:终点的x坐标;
- y2:终点的y坐标;
- */
- void OLED_DrawLine(unsigned int x1, unsigned int y1, unsigned int x2,unsigned int y2)
- {
- unsigned int 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; //设置单步方向
- 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++ )//画线输出
- {
- OLED_DrawPoint(uRow,uCol,1);//画点
- xerr+=delta_x;
- yerr+=delta_y;
- if(xerr>distance)
- {
- xerr-=distance;
- uRow+=incx;
- }
- if(yerr>distance)
- {
- yerr-=distance;
- uCol+=incy;
- }
- }
- }
复制代码
|
|