搜索
bottom↓
回复: 6

C8051F005驱动OLED显示的问题

[复制链接]

出0入0汤圆

发表于 2010-5-18 15:04:25 | 显示全部楼层 |阅读模式
小弟在一家小公司实习,公司要我用新华龙的C8051F005编写OLED的驱动程序。可我现在连点亮都难。求各位大侠帮忙看看!小弟不胜感激
贴上程序---》
#include<C8051F000.H>
#define uchar unsigned char
#define uint unsigned int
sbit CS = P1^1;                        //OLED液晶片选
sbit DC = P1^3;                        //输入数据类型选择(命令or数据)
sbit SCLK=P2^0;                        //时钟输出端口
sbit OUT=P2^1;                        //数据输出端口
sbit LED=P3^3;                        //测试用小灯管脚
void ini_dis(void);                 //OLED液晶初始化---全亮
void write_dat(uchar);         //写数据
void write_com(uchar);         //写指令
void dison(void);                 //液晶显示打开
void delay(uint f)                  //延时“n“ms
{
        uint i,k;
        for(k=f;k>0;k--)
        {

        for(i=0;i<1000;i++);
        }                  
}                          
/**********主函数*************/
void  main()
{
        uchar k;
        WDTCN=0xDE;                           //关闭看门狗
        WDTCN=0xAD;

        PRT1CF|=0x02;
        PRT1CF|=0x08;
        PRT2CF|=0x01;
        PRT2CF|=0x02;
        OUT=0;
        SCLK=0;
        CS=0;
        DC=0;
                  
        ini_dis();
        dison();
                          
        for(;;);  
}
void write_dat(uchar dat)
{
        uchar i;
        PRT1CF|=0x08;
        CS=0;
        DC=1;
        DC=1;
       
        for(i=8;i>0;i--)
        {
                SCLK=0;
                if((dat&0x80)==0x80)
                        OUT=1;
                else
                        OUT=0;
                SCLK=1;
                SCLK=1;
                SCLK=1;
                dat<<=1;
        }
        CS=1;
}
void write_com(uchar com)
{
        uchar i;
        PRT1CF&=~0x08;
        CS=0;
        DC=0;
        DC=0;
        for(i=0;i<8;i++)
        {
                SCLK=0;
                if((com&0x80)==0x80)
                        OUT=1;
                else
                        OUT=0;
                SCLK=1;
                SCLK=1;
                SCLK=1;
                com<<=1;
                               
        }
        CS=1;
}
void ini_dis(void)
{
        unsigned char i,j;
        for(i=0;i<8;i++)
        {
                write_com (0xb0+i);    //设置显示位置—行
                write_com (0x00);      //设置显示位置—列低地址
                write_com (0x10);      //设置显示位置—列高地址
                write_com (0xaf);
                for(j=0;j<128;j++)
                write_dat(0xf0);        //屏幕显示,全亮
        }
}

void dison(void)
{
        write_com(0xaf);                  //OLED开显示
        write_com(0xad);                  //DC-DC打开
        write_com(0x8b);
}

出0入0汤圆

发表于 2010-5-18 15:13:35 | 显示全部楼层
关注!等待高手回答!
OLED的液晶屏?工作电压是3.3V的吗?

出0入0汤圆

 楼主| 发表于 2010-5-18 15:19:19 | 显示全部楼层
回复【1楼】role_2099
-----------------------------------------------------------------------

OLED显示屏工作电压文档上写的12v,有一个电压转换电路

出0入0汤圆

 楼主| 发表于 2010-5-18 16:11:35 | 显示全部楼层
高手大侠们都来看看啊!!!下午人好少

出0入0汤圆

发表于 2010-6-20 10:35:30 | 显示全部楼层
自己在论坛搜索 OLED ,大把的。

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1030124&bbs_page_no=1&search_mode=1&search_text=OLED&bbs_id=9999

有时候要自己动手啊。

出0入0汤圆

发表于 2010-9-18 11:05:06 | 显示全部楼层
你在哪找的例程? OLED分几种型号的  每种型号的初始化代码都不同 你一定要明确你的OLED屏的核心,然后找相应的初始化例程。

出0入0汤圆

发表于 2011-5-4 20:57:51 | 显示全部楼层
sfyn
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 20:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表