历史上的今天

今天是:2024年10月10日(星期四)

正在发生

2020年10月10日 | 51单片机和OLED仿真 芯片SSD1306

发布者:石头12345 来源: 51hei关键字:51单片机  OLED  芯片SSD1306 手机看文章 扫描二维码
随时随地手机看文章

用的是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;                                                  

[1] [2]
关键字:51单片机  OLED  芯片SSD1306 引用地址:51单片机和OLED仿真 芯片SSD1306

上一篇:51单片机OLED12864 I2C接口使用教程
下一篇:51单片机自动售水机程序

推荐阅读

英国一项调查显示,虽然目前只有约10%的人认为机器人同事会比真人同事来得更好,但却有31%的上班族愿意接受机器人成为老板,甚至有53%的上班族会很乐意为机器人工作。云端会计软件公司FreeAgent针对1千名英国上班族进行调查后发现,31%的受访者愿意为机器人老板工作。11%的受访者认为机器人老板比人类老板有更高的效率,而10%的受访者表示,为机器人老板工...
超声传感技术利用超声波的飞行时间(TOF)与管段内介质流速相关,求得超声波顺流和逆流方向传播的时间差,最终来测量和计算流量。此技术在测量宽流速变化范围时非常出色,同时能够处理水和油等液体及空气与甲烷等气体。基于 TOF 的超声波测量方式是根据上游和下游方向超声信号传播时间的差异来测量流速。超声波在介质流动方向上的传播速度较快,而在逆流...
戴姆勒在与诺基亚、夏普等无线通信供应商的专利诉讼(以下统称“戴姆勒案”)中相继折戟。继博通向大众提出超10亿美元专利索赔后,通信巨头与车企的专利纷争再现人前。而随着戴姆勒的败诉,车联网行业标准必要专利许可究竟适用“整机收费”还是“最小可销售单元收费”似乎也有了定论。不少媒体甚至推而广之评论称,受到威胁的不仅是汽车专利的许可模式,还...
全球芯片市场战火一触即发,晶圆代工领域竞争尤为激烈。本周四,三星电子公布其代工业务技术路线图,誓言要提高代工产能及先进工艺领域的行业地位。据韩媒报道,在“Samsung Foundry Forum 2021(晶圆代工论坛)上,该公司表示将在2022 年上半年推出 3 nm GAA工艺,同时将在2025年商用生产2 nm GAA制程芯片。业界高层指出说,台积电尚未公布2 nm量产...

史海拾趣

问答坊 | AI 解惑

汽车电子面临的挑战

挑战一 新的传感需求 两项即将引入的传感器技术是雷达和摄像机系统。飞思卡尔对这两种技术的研究包括传感器和相应的计算机信号处理部分,目前的技术可以让成本减少4倍。没有哪种传感器是万能的,例如雷达可以精确测距,却无法进行物体识别,必 ...…

查看全部问答∨

这电路用单片机会画换做ARM不知道怎么接了

我想用ARM7的STR750接收一串数据,在单片机上时接到RXD引脚!换成750的话接什么引脚比较适合啊? 在画电路的时候实在觉得ARM和单片机区别不大! 大家说下两者明显的区别吧! 我是新手刚刚接触嵌入式!除了知道嵌入式可以跑操作系统外,还不知道 ...…

查看全部问答∨

比万用表还小的微型电子示波器

比万用表还小的微型电子示波器…

查看全部问答∨

在发个4AD的,原理图需要的请回帖我在上传

这个板子采用了STC的2052AD,可以支持8路8位分辨率的AD输入,我设计的这个用了其中4路,其他的IO口作为现实和驱动继电器用,支持1路继电器输出,4位数码管,1路报警蜂鸣器,所有单片机的引脚全部引出可以为外部扩展使用。…

查看全部问答∨

TD-SCDMA模块网速测试的疑问

    我想用中国移动的TD-SCDMA模块传输视频,开发板是ARM平台。ARM将视频采集压缩之后通过USB口传给TD模块,现在正确配置之后,能成功拨号并传输视频。     但是,目前传输效果很差,分辨率为352*288的CIF格式视频每秒只能传 ...…

查看全部问答∨

128x64液晶KS0108驱动程序

里面少几个 #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…

查看全部问答∨

evc模拟器恢复到最初的状态

不知道动了什么东东,我在模拟器的startup中加了些文件并保存了改变,然后在evc中重新编译程序,就发现再也连接不上模拟器了,不知道怎么恢复到先前的状态,重装模拟器问题依然存在,请各位英雄帮帮忙?谢谢…

查看全部问答∨

help!SQLite中操作blob类型的字段的问题

这是我查到的资料 http://www.cppprog.com/2009/0108/43.html 已经存进图片了,现在做到这一步了, “这时数据库当中已经有了一条包含BLOB字段的数据。接下来我们要读取这条数据:   1.  //选取该条数据    2. sq ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved