当前位置:首页 > 单片机 > 单片机
[导读]oled.c文件内容如下:#include"oled.h"#include"lpc11xx.h"#include"w25q16.h"//OLED////[0]0123...127//[1]0123...127//[2]0123...127//[3]0123...127uint8_tOLED_GRAM[128][4];constunsignedcharmenu_op[3][16]={{

oled.c文件内容如下:

#include"oled.h"#include"lpc11xx.h"#include"w25q16.h"//OLED////[0]0123...127//[1]0123...127//[2]0123...127//[3]0123...127uint8_tOLED_GRAM[128][4];constunsignedcharmenu_op[3][16]={{0x08,0x08,0x1C,0x1C,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*向上的箭头*/{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x1C,0x1C,0x08,0x08},/*向下的箭头*/{0x08,0x08,0x1C,0x1C,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x1C,0x1C,0x08,0x08},/*双向的箭头*/};voiddelay_ms(uint16_tms){uint16_ti,j;for(i=0;i<5000;i++)for(j=0;jDATA|=(1<<4);//DB7elseLPC_GPIO0->DATA&=~(1<<4);if((dat&0x40)==0x40)LPC_GPIO2->DATA|=(1<<1);//DB6elseLPC_GPIO2->DATA&=~(1<<1);if((dat&0x20)==0x20)LPC_GPIO2->DATA|=(1<<8);//DB5elseLPC_GPIO2->DATA&=~(1<<8);if((dat&0x10)==0x10)LPC_GPIO2->DATA|=(1<<7);//DB4elseLPC_GPIO2->DATA&=~(1<<7);if((dat&0x08)==0x08)LPC_GPIO2->DATA|=(1<<9);//DB3elseLPC_GPIO2->DATA&=~(1<<9);if((dat&0x04)==0x04)LPC_GPIO0->DATA|=(1<<7);//DB2elseLPC_GPIO0->DATA&=~(1<<7);if((dat&0x02)==0x02)LPC_GPIO3->DATA|=(1<<5);//DB1elseLPC_GPIO3->DATA&=~(1<<5);if((dat&0x01)==0x01)LPC_GPIO2->DATA|=(1<<5);//DB0elseLPC_GPIO2->DATA&=~(1<<5);}voidOLED_WR_Byte(uint8_tdat,uint8_tcmd){DATAOUT(dat);if(cmd==1)OLED_DC_H;elseOLED_DC_L;OLED_CS_L;OLED_WR_L;OLED_WR_H;OLED_CS_H;OLED_DC_H;}voidOLED_Clear(void){uint8_ti,n;for(i=0;i<4;i++)for(n=0;n<128;n++)OLED_GRAM[n][i]=0X00;OLED_Refresh_Gram();//}voidOLED_Init(void){LPC_GPIO2->DIR|=(1<<4);//OLED_RESETLPC_GPIO2->DATA|=(1<<4);LPC_GPIO1->DIR|=(1<<9);//OLED_CSLPC_GPIO1->DATA|=(1<<9);LPC_GPIO0->DIR|=(1<<3);//OLED_DCLPC_GPIO0->DATA|=(1<<3);LPC_GPIO3->DIR|=(1<<4);//OLED_RDLPC_GPIO3->DATA|=(1<<4);LPC_GPIO0->DIR|=(1<<5);//OLED_WRLPC_GPIO0->DATA|=(1<<5);LPC_GPIO0->DIR|=(1<<4);//DB7LPC_GPIO0->DATA|=(1<<4);LPC_GPIO2->DIR|=(1<<1);//DB6LPC_GPIO2->DATA|=(1<<1);LPC_GPIO2->DIR|=(1<<8);//DB5LPC_GPIO2->DATA|=(1<<8);LPC_GPIO2->DIR|=(1<<7);//DB4LPC_GPIO2->DATA|=(1<<7);LPC_GPIO2->DIR|=(1<<9);//DB3LPC_GPIO2->DATA|=(1<<9);LPC_GPIO0->DIR|=(1<<7);//DB2LPC_GPIO0->DATA|=(1<<7);LPC_GPIO3->DIR|=(1<<5);//DB1LPC_GPIO3->DATA|=(1<<5);LPC_GPIO2->DIR|=(1<<5);//DB0LPC_GPIO2->DATA|=(1<<5);OLED_RST_L;delay_ms(100);OLED_RST_H;OLED_WR_Byte(0xAE,OLED_CMD);//OLED_WR_Byte(0x00,OLED_CMD);//OLED_WR_Byte(0x10,OLED_CMD);//OLED_WR_Byte(0x40,OLED_CMD);//OLED_WR_Byte(0X2E,OLED_CMD);//OLED_WR_Byte(0x81,OLED_CMD);//OLED_WR_Byte(0X32,OLED_CMD);//OLED_WR_Byte(0x82,OLED_CMD);//OLED_WR_Byte(0x80,OLED_CMD);//OLED_WR_Byte(0xA1,OLED_CMD);//OLED_WR_Byte(0xA6,OLED_CMD);//OLED_WR_Byte(0xA8,OLED_CMD);//OLED_WR_Byte(0x3F,OLED_CMD);//OLED_WR_Byte(0xAD,OLED_CMD);//OLED_WR_Byte(0x8E,OLED_CMD);//OLED_WR_Byte(0xC8,OLED_CMD);//OLED_WR_Byte(0xD3,OLED_CMD);//OLED_WR_Byte(0x40,OLED_CMD);//OLED_WR_Byte(0xD5,OLED_CMD);//OLED_WR_Byte(0xf0,OLED_CMD);//OLED_WR_Byte(0xD8,OLED_CMD);//OLED_WR_Byte(0x05,OLED_CMD);//OLED_WR_Byte(0xD9,OLED_CMD);//OLED_WR_Byte(0xF1,OLED_CMD);//OLED_WR_Byte(0xDA,OLED_CMD);//OLED_WR_Byte(0x12,OLED_CMD);OLED_WR_Byte(0x91,OLED_CMD);OLED_WR_Byte(0x3F,OLED_CMD);OLED_WR_Byte(0x3F,OLED_CMD);OLED_WR_Byte(0x3F,OLED_CMD);OLED_WR_Byte(0x3F,OLED_CMD);OLED_WR_Byte(0xAF,OLED_CMD);OLED_Clear();}voidOLED_DrawPoint(uint8_tx,uint8_ty,uint8_tt){uint8_tpos,bx,temp=0;if(x>127||y>31)return;//pos=y/8;bx=y%8;temp=1<0XFE||GBKH<0X81)return;GBKH-=0x81;GBKL-=0x40;offset=((uint32_t)192*GBKH+GBKL)*32;//得到字库中的字节偏移量W25Q16_Read(dz_data,offset+0x100,32);return;}/**********************************************//*函数功能:显示16*16点阵中文*//*入口参数:x,y:起点坐标*//**hz:汉字*//*mode:1,正常2,反白*//**********************************************/voidOLED_Show_hz(uint8_tx,uint8_ty,uint8_t*hz,uint8_tmode){uint8_ti,j,temp,xtemp;uint8_tdz_data[32];xtemp=x;Get_GBK_DZK(hz,dz_data);for(i=0;i<32;i++){temp=dz_data[i];for(j=0;j<8;j++){if(temp&0x80)OLED_DrawPoint(x,y,mode);elseOLED_DrawPoint(x,y,!mode);temp<<=1;x++;if(x-xtemp>15){x=xtemp;y++;}}}//OLED_Refresh_Gram();return;}/**********************************************//*函数功能;从W25X16中提取点阵码*//*入口参数:code:ASCII*//*dz_data:存放点阵码的数组*//**********************************************/voidGet_ASCII_DZK(uint8_tcode,uint8_t*buf){uint32_toffset;//点阵偏移量offset=code-0x20;//得到字库中的字节偏移量W25Q16_Read(buf,offset*16+0x0E0000,16);return;}/**********************************************//*函数功能:显示8*16点阵英文字符*//*入口参数:x,y:起点坐标*//*num:字母或符号*//*注意:x,y的取值要在240到320范围内*//**********************************************/voidOLED_ShowChar(uint8_tx,uint8_ty,uint8_tasc,uint8_tmode){uint8_ti,j,temp,xtemp;uint8_tasc_buf[16];xtemp=x;Get_ASCII_DZK(asc,asc_buf);for(i=0;i<16;i++){temp=asc_buf[i];for(j=0;j<8;j++){if(temp&0x80)OLED_DrawPoint(x,y,mode);elseOLED_DrawPoint(x,y,!mode);temp<<=1;x++;if(x-xtemp>7){x=xtemp;y++;}}}//OLED_Refresh_Gram();return;}/*********************************************//*函数功能:显示字符串(中文和英文)*//*入口参数:x,y:坐标*//**p:字符串*//*********************************************/voidOLED_ShowString(uint8_tx,uint8_ty,uint8_t*p,uint8_tmode){while(*p!='')//如果没有结束{if(*p>0x80)//如果是中文{if((*p=='n')||(x>224))//换段和换行{y=y+16;//字体高16x=0;//}OLED_Show_hz(x,y,p,mode);x+=16;p+=2;}else//如果是英文{if((*p=='n')||(x>224))//换段和换行{y=y+16;//字体高16x=0;//}OLED_ShowChar(x,y,*p,mode);x+=8;p++;}}}//opar=0表示画向上的箭头//=1表示画向下的箭头//=2表示画双向的箭头//=3表示清空箭头//hang=0表示在第一行画箭头//=1表示在第二行画箭头voidOLED_SMenuOP(uint8_topra,uint8_thang){uint8_ttemp,i,j;uint8_tx,y;if(hang==0)y=0;elsey=16;x=120;if(opra==3){for(i=0;i<16;i++){for(j=0;j<8;j++){OLED_DrawPoint(x,y,0);temp<<=1;x++;if(x>127){x=120;y++;}}}}else{for(i=0;i<16;i++){temp=menu_op[opra][i];for(j=0;j<8;j++){if(temp&0x80)OLED_DrawPoint(x,y,1);elseOLED_DrawPoint(x,y,0);temp<<=1;x++;if(x>127){x=120;y++;}}}}}/**********************************************//*函数功能;求m的n次方*//**********************************************/uint32_tmypow(uint8_tm,uint8_tn){uint32_tresult=1;while(n--)result*=m;returnresult;}/**********************************************//*函数功能:显示数字*//*入口参数:x,y:起点坐标*//*len:数字的位数*//*num:数值(0~4294967295);*//**********************************************/voidOLED_ShowNum(uint16_tx,uint16_ty,uint32_tnum,uint8_tlen,uint8_tmode){uint8_tt,temp;uint8_tenshow=0;//此变量用来去掉最高位的0for(t=0;t

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭