用的是7Pin的OLED,就那个宝买的那种。用的是不是中景园的程序我就不知道了。芯片应该是用SSD1306,但是用仿真里面的SSD1306总是不对。我随便试了试SSD1308到时对了!
单片机源程序如下
#include "xianshispi.h"
#include "oledfont.h"
void delay_ms(unsigned int ms)
{
unsigned int a;
while(ms)
{
a=1800;
while(a--);
ms--;
}
return;
}
void OLED_WR_Byte(unsigned char dat,unsigned char cmd) //写数据 或 指令
{ // 数据 指令
unsigned char i;
if(cmd) {OLED_DC(1);}
else {OLED_DC(0); }
OLED_CS(0);
for(i=0;i<8;i++)
{
OLED_SCL(0);
if(dat&0x80)
{
OLED_SDIN(1);
}
else
OLED_SDIN(0);
OLED_SCL(1);
dat<<=1;
}
OLED_CS(1);
OLED_DC(1);
}
void OLED_Set_Pos(unsigned char x, unsigned char y) // 定位 —(轴)
{
OLED_WR_Byte(0xb0+y,OLED_CMD);
OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);
}
void OLED_Display_On(void)
{
OLED_WR_Byte(0X8D,OLED_CMD); //SET DCDC??
OLED_WR_Byte(0X14,OLED_CMD); //DCDC ON
OLED_WR_Byte(0XAF,OLED_CMD); //DISPLAY ON
}
void OLED_Display_Off(void)
{
OLED_WR_Byte(0X8D,OLED_CMD); //SET DCDC??
OLED_WR_Byte(0X10,OLED_CMD); //DCDC OFF
OLED_WR_Byte(0XAE,OLED_CMD); //DISPLAY OFF
}
void OLED_Clear(void) //清屏(全)
{
unsigned char i,n;
for(i=0;i<8;i++)
{
OLED_WR_Byte (0xb0+i,OLED_CMD);
OLED_WR_Byte (0x02,OLED_CMD);
OLED_WR_Byte (0x10,OLED_CMD);
for(n=0;n<128;n++)OLED_WR_Byte(0x00,OLED_DATA);
}
}
void OLED_Clear2(void) //清屏(一般)
{
unsigned char i,n;
for(i=0;i<2;i++)
{
OLED_WR_Byte (0xb0+i,OLED_CMD);
OLED_WR_Byte (0x02,OLED_CMD);
OLED_WR_Byte (0x10,OLED_CMD);
for(n=0;n<128;n++)OLED_WR_Byte(0xff,OLED_DATA);
}
}
void OLED_ShowChar(unsigned char x,unsigned char y,unsigned int chr) //字符取反 (背景和数据)
{
unsigned int c=0,i=0;
c=chr-' ';
if(x>Max_Column-1){x=0;y=y+2;}
if(SIZE==16)
{
OLED_Set_Pos(x,y);
for(i=0;i<8;i++)
OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
OLED_Set_Pos(x,y+1);
for(i=0;i<8;i++)
OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
}
else
{
OLED_Set_Pos(x,y+1);
for(i=0;i<6;i++)
{
OLED_WR_Byte(F6x8[c][i],OLED_DATA);
}
}
}
void OLED_ShowChar111(unsigned char x,unsigned char y,unsigned int chr) //字符取反 (背景和数据)
{
unsigned int c=0,i=0;
c=chr-' ';
if(x>Max_Column-1){x=0;y=y+2;}
if(SIZE==16)
{
OLED_Set_Pos(x,y);
for(i=0;i<8;i++)
OLED_WR_Byte(~F8X16[c*16+i],OLED_DATA);
OLED_Set_Pos(x,y+1);
for(i=0;i<8;i++)
OLED_WR_Byte(~F8X16[c*16+i+8],OLED_DATA);
}
else
{
OLED_Set_Pos(x,y+1);
for(i=0;i<6;i++)
{
OLED_WR_Byte(~F6x8[c][i],OLED_DATA);
}
}
}
unsigned int oled_pow(unsigned char m,unsigned char n)
{
unsigned int result=1;
while(n--)result*=m;
return result;
}
void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len,unsigned char size)
{
unsigned char t,temp;
unsigned char enshow=0;
上一篇:51单片机OLED12864 I2C接口使用教程
下一篇:51单片机自动售水机程序
推荐阅读
史海拾趣
在半导体市场竞争日益激烈的背景下,ASI也面临着巨大的市场压力和挑战。为了应对市场波动和竞争压力,ASI不断调整战略方向,加大在研发和创新方面的投入。公司不断推出新产品、新技术,以满足市场的不断变化和客户需求。同时,ASI也注重提升产品质量和服务水平,赢得了客户的信任和好评。
在成立后的几年里,BB公司逐渐在国内市场站稳了脚跟。然而,创始人并没有满足于此,他看到了更广阔的国际市场。1961年,BB公司首次进入国际市场,凭借其高品质的产品和专业的服务,迅速赢得了国际客户的青睐。此后,BB公司不断加快国际化步伐,先后在英国和日本设立子公司,进一步扩大了市场份额。这一系列的国际化举措,不仅提升了BB公司的知名度,也为其带来了丰厚的回报。
2000年,冠西电子在台湾证券交易所成功上市,标志着公司进入了一个新的发展阶段。上市不仅为冠西电子提供了更多的资金支持,也提升了其品牌知名度和市场影响力。冠西电子借此机会进一步加大在研发、生产、销售等方面的投入,推动公司业务的全面发展。
博众电气始终坚信,品质是企业生存和发展的根本。因此,公司始终将品质管理放在首位,并严格执行ISO9001等国际质量管理体系标准。
为了进一步提升产品品质和管理水平,博众电气还积极申请并通过了多项国际认证。这些认证不仅证明了博众电气的产品品质和管理水平达到了国际先进水平,还为公司的国际化发展提供了有力保障。
随着市场需求的不断增长,博众电气意识到传统的生产方式已经无法满足客户的需求。为了提高生产效率和产品质量,公司决定引进自动化生产线。
在自动化生产线的建设过程中,博众电气投入了大量的人力和物力资源。公司引进了先进的自动化组装设备和检测设备,实现了产线90%以上的自动化生产。这不仅大大提高了生产效率,还降低了人力成本,使得博众电气在市场竞争中更具优势。
随着业务的逐步扩展,德尔创意识到品质对于品牌的重要性。因此,公司投入大量资金用于提升生产设备的精度和稳定性,同时加强了对原材料采购和质量控制的管理。这些措施使得德尔创的产品质量得到了显著提升,客户满意度也大幅提高。此外,公司还积极开展品牌宣传活动,通过参加行业展会、举办技术交流会等方式提升品牌知名度和影响力。
我想用ARM7的STR750接收一串数据,在单片机上时接到RXD引脚!换成750的话接什么引脚比较适合啊? 在画电路的时候实在觉得ARM和单片机区别不大! 大家说下两者明显的区别吧! 我是新手刚刚接触嵌入式!除了知道嵌入式可以跑操作系统外,还不知道 ...… 查看全部问答∨ |
|
这个板子采用了STC的2052AD,可以支持8路8位分辨率的AD输入,我设计的这个用了其中4路,其他的IO口作为现实和驱动继电器用,支持1路继电器输出,4位数码管,1路报警蜂鸣器,所有单片机的引脚全部引出可以为外部扩展使用。… 查看全部问答∨ |
|
我想用中国移动的TD-SCDMA模块传输视频,开发板是ARM平台。ARM将视频采集压缩之后通过USB口传给TD模块,现在正确配置之后,能成功拨号并传输视频。 但是,目前传输效果很差,分辨率为352*288的CIF格式视频每秒只能传 ...… 查看全部问答∨ |
里面少几个 #include ".\\inc\\ASCII816.h" //标准ASCII库 #include ".\\inc\\HZTable.h" //汉字点阵库(自做) #include ".\\inc\\Menu.h" //菜单库(自做) 这些文件我去那里找,怎么做请高手回答… 查看全部问答∨ |
请教大虾。。。基于s3c2440的wince下的GPS接收系统 小弟目前正在做毕业设计,题目rt。 ============================================================ 目前硬件已经搭建了,rs232 gps模块+mini2440开发板,在wince 5.0下用串口调试助手和GPSViewer等软件调试过,可以收到6颗星左右,功能还行。 = ...… 查看全部问答∨ |
(公司项目笔记及源码) QTOpia最新版本及Linux内核的arm移植 http://item.taobao.com/auction/item_detail.jhtml?x_id=0db2&item_id=fc0e4ae6d2507c66f0782f153aa43d4e… 查看全部问答∨ |
不知道动了什么东东,我在模拟器的startup中加了些文件并保存了改变,然后在evc中重新编译程序,就发现再也连接不上模拟器了,不知道怎么恢复到先前的状态,重装模拟器问题依然存在,请各位英雄帮帮忙?谢谢… 查看全部问答∨ |
这是我查到的资料 http://www.cppprog.com/2009/0108/43.html 已经存进图片了,现在做到这一步了, “这时数据库当中已经有了一条包含BLOB字段的数据。接下来我们要读取这条数据: 1. //选取该条数据 2. sq ...… 查看全部问答∨ |