历史上的今天
返回首页

历史上的今天

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

正在发生

2019年10月15日 | stc8单片机+8针oled驱动显示ADC值源程序

2019-10-15 来源:eefocus

#include

#include


sbit lcd_sclk=P5^0;  /*接口定义:lcd_sclk就是CLK*/

sbit lcd_sid=P5^1;   /*接口定义:lcd_sid就是MOSI*/

sbit lcd_rs=P5^2;    /*接口定义:lcd_rs就是DC*/

sbit lcd_cs1=P5^3;   /*接口定义:lcd_cs1就是OLED的片选CS1*/

sbit Rom_OUT=P5^4;   /*字库IC接口定义:Rom_OUT就是FSO*/

sbit Rom_CS=P5^5;    /*字库IC接口定义Rom_CS就是字库IC的CS2*/

unsigned char code ASCII[] =    {'0','1','2','3','4','5','6','7','8','9'};




#define uchar unsigned char 

#define uint unsigned int

#define ulong unsigned long


uchar code bmp1[];




/*写指令到LCD模块*/

void transfer_command_lcd(int data1)   

{

        char i;

        lcd_rs=0;

        lcd_sclk=0;

        for(i=0;i<8;i++)

   {

                

                if(data1&0x80) lcd_sid=1;

                else lcd_sid=0;

                lcd_sclk=1;

                _nop_();

                lcd_sclk=0;

                 data1<<=1;

   }

}


/*写数据到LCD模块*/

void transfer_data_lcd(int data1)

{

        char i;

        lcd_rs=1;

        lcd_sclk=0;

        for(i=0;i<8;i++)

   {

                

                if(data1&0x80) lcd_sid=1;

                else lcd_sid=0;

                lcd_sclk=1;

                _nop_();

                lcd_sclk=0;

                 data1<<=1;

   }

}


/*延时*/

void delay(int n_ms)               

{

int j,k;

for(j=0;jfor(k=0;k<110;k++);

}



/*等待一个按键,我的主板是用P2.0与GND之间接一个按键*/

//void waitkey()

//{

// repeat:

//          if (P2&0x01) goto repeat;

//        else delay(6);

//        if (P2&0x01) goto repeat;

//        else

//        delay(40);;

//}



/*LCD模块初始化*/

void initial_lcd()

{

        lcd_cs1=0;

        Rom_CS = 1;

//        lcd_reset=0;        /*低电平复位*/

        delay(20);

        //lcd_reset=1;                    /*复位完毕*/

        delay(20);        

        transfer_command_lcd(0xAE);   //display off

        transfer_command_lcd(0x20);        //Set Memory Addressing Mode        

        transfer_command_lcd(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid

        transfer_command_lcd(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7

        transfer_command_lcd(0xc8);        //Set COM Output Scan Direction

        transfer_command_lcd(0x00);//---set low column address

        transfer_command_lcd(0x10);//---set high column address

        transfer_command_lcd(0x40);//--set start line address

        transfer_command_lcd(0x81);//--set contrast control register

        transfer_command_lcd(0x7f);

        transfer_command_lcd(0xa1);//--set segment re-map 0 to 127

        transfer_command_lcd(0xa6);//--set normal display

        transfer_command_lcd(0xa8);//--set multiplex ratio(1 to 64)

        transfer_command_lcd(0x3F);//

        transfer_command_lcd(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content

        transfer_command_lcd(0xd3);//-set display offset

        transfer_command_lcd(0x00);//-not offset

        transfer_command_lcd(0xd5);//--set display clock divide ratio/oscillator frequency

        transfer_command_lcd(0xf0);//--set divide ratio

        transfer_command_lcd(0xd9);//--set pre-charge period

        transfer_command_lcd(0x22); //

        transfer_command_lcd(0xda);//--set com pins hardware configuration

        transfer_command_lcd(0x12);

        transfer_command_lcd(0xdb);//--set vcomh

        transfer_command_lcd(0x20);//0x20,0.77xVcc

        transfer_command_lcd(0x8d);//--set DC-DC enable

        transfer_command_lcd(0x14);//

        transfer_command_lcd(0xaf);//--turn on oled panel 

        lcd_cs1=1;

}


void lcd_address(uchar page,uchar column)

{


        transfer_command_lcd(0xb0 + column);   /*设置页地址*/

        transfer_command_lcd(((page & 0xf0) >> 4) | 0x10);        /*设置列地址的高4位*/

        transfer_command_lcd((page & 0x0f) | 0x00);        /*设置列地址的低4位*/        

}


/*全屏清屏*/

void clear_screen()

{

        unsigned char i,j;

        lcd_cs1=0;

        Rom_CS = 1;        

        for(i=0;i<8;i++)

        {

                transfer_command_lcd(0xb0+i);

                transfer_command_lcd(0x00);

                transfer_command_lcd(0x10);

                for(j=0;j<128;j++)

                {

                          transfer_data_lcd(0x00);

                }

        }

         lcd_cs1=1;

}


/*显示128x64点阵图像*/

//void display_128x64(uchar *dp)

//{

//        uint i,j;

//        lcd_cs1=0;

//        for(j=0;j<8;j++)

//        {

//                lcd_address(0,j);

//                for (i=0;i<128;i++)

//                {        

//                        transfer_data_lcd(*dp);                                        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/

//                        dp++;

//                }

//        }

//        lcd_cs1=1;

//}



/*显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标*/

void display_graphic_16x16(uint page,uint column,uchar *dp)

{

        uint i,j;

         lcd_cs1=0;

        Rom_CS = 1;         

        for(j=2;j>0;j--)

        {

                lcd_address(column,page);

                for (i=0;i<16;i++)

                {        

                        transfer_data_lcd(*dp);                                        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/

                        dp++;

                }

                page++;

        }

        lcd_cs1=1;

}



/*显示8x16点阵图像、ASCII, 或8x16点阵的自造字符、其他图标*/

void display_graphic_8x16(uint page,uchar column,uchar *dp)

{

        uint i,j;

        lcd_cs1=0;        

        for(j=2;j>0;j--)

        {

                lcd_address(column,page);

                for (i=0;i<8;i++)

                {        

                        transfer_data_lcd(*dp);                                        /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/

                        dp++;

                }

                page++;

        }

        lcd_cs1=1;

}



/*显示5*7点阵图像、ASCII, 或5x7点阵的自造字符、其他图标*/

//void display_graphic_5x7(uint page,uchar column,uchar *dp)

推荐阅读

史海拾趣

E. Dold & Söhne KG公司的发展小趣事

在电子行业快速发展的背景下,E. Dold & Söhne KG公司始终紧跟科技潮流,致力于技术创新。公司投入大量资源研发新型电子元件和系统,以满足市场对于高性能、高可靠性产品的需求。通过不断的技术创新,E. Dold & Söhne KG公司在行业内树立了良好的口碑,成为众多知名企业的合作伙伴。

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

Digi International公司的发展小趣事

Digi International在无人机技术方面也取得了重要进展。公司与Draganfly公司合作,为新型Draganflyer X4-P无人机配备了无线XBee®模块,实现了更远距离的控制和实时数据传输。这一技术突破不仅提高了无人机的性能和应用范围,也为Digi International在无人机领域的发展开辟了新的道路。通过与Draganfly的合作,Digi International进一步巩固了其在物联网和M2M领域的技术领先地位。

EPT公司的发展小趣事

EPT公司在其发展历程中,始终重视与科研机构的合作。早年间,EPT与哈尔滨工业大学共同研发了一种新型电池材料,这种材料具有更高的能量密度和更长的循环寿命。通过双方的技术交流和深度合作,EPT成功将这种材料应用到其产品线中,极大地提升了产品的竞争力。这一合作不仅为EPT带来了技术上的突破,也为其在电子行业树立了良好的口碑。

BOCA公司的发展小趣事

随着技术的不断进步,BOCA公司意识到单一产品线的局限性。为了拓宽市场,公司决定进军消费电子领域。BOCA通过与知名品牌合作,推出了一系列搭载其先进技术的电子产品,如智能手机、平板电脑等。这些产品凭借其卓越的性能和独特的设计,迅速在市场上获得了良好的口碑,为BOCA带来了丰厚的利润。

Hitachi (Renesas )公司的发展小趣事

随着国内市场的饱和,BOCA公司开始将目光投向海外市场。公司首先在欧洲和北美设立了分公司,通过本地化运营和营销策略,成功打开了这些市场。随后,BOCA又陆续在亚洲、非洲等地区设立了分支机构,形成了全球化的销售网络。国际化战略的实施不仅为BOCA带来了更广阔的市场空间,也提升了公司的品牌影响力和国际竞争力。

问答坊 | AI 解惑

机器人触须传感器的设计

提出了一种利用触须来识别物体表面轮廓的新方法.传感器采用了二维PSD作为敏感元件,实时地测量由于与物体接触在触须根部所产生的微小位移量.介绍了机器人触须传感器具体的结构及工作原理.由实验数据可知,触须根部位移量的大小与接触的距离成反比,且 ...…

查看全部问答>

PID参数调整问题

PID参数调整疑问????? 最近学习PID,和同学一起准备做一个简单的PID水温控制小系统。我们在网上也下了不少的资料看了看。于是开始了简单的实验,实验条件限制。我们就用了一个18b20温度传感器将它包好放在水里,然后用一个热得快 ...…

查看全部问答>

单片机键盘

我用单片机做的一个键盘,在工控机启动的时候,按DEL进不了BIOS,启动之后键盘正常,能检测到DEL键,我这里有三款工控机,有一款会出现上面的情况,各位大侠有没见过这种情况?我的程序里是只有发送没有接收的…

查看全部问答>

软件开发,上海

著名通信企业招聘嵌入式软件开发(高级)工程师 有意者请将简历发送至:chengqi2010@163.com 岗位描述: 一.岗位名称:软件设计高级工程师 工作地:上海 主要职责: 1.负责终端产品软件架构设计、总体方案设计 2.指导产品的软件设计开发过程 ...…

查看全部问答>

SES5VD923-2B资料 TVS管的选择

SES5VD923-2B资料 TVS管的选择 替换型号;PVS05A-0402 SES5VD923-2B WE05D9-B  Feature 100 Watts peak pulse power (tp = 8/20μs) Transient protection for data lines to IEC 61000-4-2 (ESD) ±25kV (air), ...…

查看全部问答>

求助:关于93C46的问题

下面是我编写关于93C46的读写代码,P0引脚连接的是8个LED,目的是通过读写93C46实现LED闪烁的效果。 现在程序运行时,DO引脚始终是高电平,LED常亮,检查好几遍时序设置,也没有发现问题,请各位高手帮我分析一下到底问题出现在哪了,谢谢! #inc ...…

查看全部问答>

提取微弱小信号的锁相放大器试制

为实现低成本小体积的模拟式锁相放大器,来采集TDS中的差分探头产生的THz信号。通过核心器件AD630(平衡调制解调器)做锁相放大,以提取被噪声淹没的微弱THz信号,要求其动态范围宽,达到100db以上,能检测300pA以上的信号。最终采集的信噪比需满足 ...…

查看全部问答>

请问32KB+256B Flash Memory,这个256B干嘛用的?

MSP430 Datasheet中一般出现这句话:32KB + 256B Flash Memory 512B RAM 问1,这个256B是什么意思? 问2,假如我的程序大小为12KB,那么剩下的20KB Flash Memory是否可以当做EEPROM来使用?…

查看全部问答>

51单片机实现红外编码检测

51单片机实现红外编码检测 通过51 单片机及外围电路实现对接受信号的处理(通过外部中断和计数器)获得信号的01编码,设备显示。 有关红外传感的一些资料 红外传感基础知识:v 红外发光管:红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlA ...…

查看全部问答>

关于beaglebone 的LCD扩展!

给beaglebone扩展的群创LCD,是AT070TN92,电路设计是这样的: 但是会出现比较严重的色差现象: 上图的颜色过渡明显有问题,换成整图的话,这种问题会更明显!! 我尝试去掉此电平转换芯片,显示效果倒是正常了: 但是又有了新的 ...…

查看全部问答>