SSD1963示例程序

发布者:runaway2000最新更新时间:2016-08-08 来源: eefocus关键字:SSD1963  示例程序 手机看文章 扫描二维码
随时随地手机看文章
 本程序是C8051f360 + ssd1963驱动4.3寸彩屏的初始化程序.,用的是16位数据输入 ,图片显示是565RGB格式显示.

/*

****************************************************************************************

*                                               数据类型

*                                        

****************************************************************************************

*/

 

typedef unsigned char  uchar;                    /* Unsigned  8 bit quantity               */

typedef signed   char  schar;                    /* Signed    8 bit quantity               */

typedef unsigned int   uint;                     /* Unsigned 16 bit quantity               */

typedef signed   int   sint;                     /* Signed   16 bit quantity               */

//===============================

//Data type

//===============================

typedef    union {

              unsigned char UByte[2];

              unsigned int    UInt;

               } UWORD;

 

void SSD1963Data_16(uchar sdataH,uchar sdataL);

void SSD1963Data1_16(uint dat);

void SSD1963Command_16(uint cmd);

void SetPixel(uint Col,uint Page,uint color); //显示一个相素点

uint GetPixel(uint Col,uint Page);//得到一个像素点

/******************************************************

SSD1963的Conf脚,用来控制读写的方式,

如果为0 则为6800总线MODE

如果位1 ,则为8080总线。

下面的定义是8080 MODE(默认情况下为8080),可以通过修改Conf 跳点来修改读写方式。

******************************************************/

 

void SSD1963Command_8(uchar cmd);

void SSD1963Data_8(uchar sdata);                              

 

void SSD1963Init();

 

uchar GetSSD1963Data_8();

uint    GetSSD1963Data_16();

 

void ReadSSD1963Set();

 

#define SetSSD1963RD() SetBit(P4,4)

 

#define SetSSD1963WR() SetBit(P4,5)

 

 

#define SetSSD1963CS() SetBit(P4,2)

 

#define SetSSD1963DC() SetBit(P4,3)

 

#define SetSSD1963Reset() SetBit(P4,1)

 

#define SetSSD1963Wait() SetBit(p4,0)

 

 

#define ClrSSD1963RD() ClrBit(P4,4)

 

#define ClrSSD1963WR() ClrBit(P4,5)

 

 

#define ClrSSD1963CS() ClrBit(P4,2)

 

#define ClrSSD1963DC() ClrBit(P4,3)

 

#define ClrSSD1963Reset() ClrBit(P4,1)

 

#define ClrSSD1963Wait() ClrBit(p4,0)

#define DataPortL  P1

#define DataPortH  P2

//UWORD 是一个结构体

//注意在给1963写命令时,只能用数据线的低8位来传输数据。

void SSD1963Command_16(uint cmd)

{

              UWORD temp;

              temp.UInt=cmd;    

             

              ClrSSD1963DC();

              SetSSD1963RD();

               

              ClrSSD1963CS();

              ClrSSD1963WR();

              DataPortL=temp.UByte[1];

              DataPortH=temp.UByte[0];

             

              SetSSD1963WR();

              SetSSD1963CS();

             

               

}

 

void SSD1963Data1_16(uint dat)

{

        

              UWORD temp;

              temp.UInt=dat;

              SetSSD1963DC();

              SetSSD1963RD();

             

              ClrSSD1963CS();

              ClrSSD1963WR();

              DataPortL=temp.UByte[1];

              DataPortH=temp.UByte[0];

             

              SetSSD1963WR();

              SetSSD1963CS();

 

             

             

}

 

void SSD1963Data_16(uchar sdataH,uchar sdataL)

{

        

             

              SetSSD1963DC();

              SetSSD1963RD();

             

              ClrSSD1963CS();

              ClrSSD1963WR();

              DataPortL=sdataL;//temp.UByte[1];

              DataPortH=sdataH;//temp.UByte[0];

             

              SetSSD1963WR();

              SetSSD1963CS();

 

             

             

}

 

void SSD1963Command_8(uchar cmd)

{

            

              ClrSSD1963DC();

              SetSSD1963RD();

               

              ClrSSD1963CS();

              ClrSSD1963WR();

              DataPortL=cmd;

              DataPortH=0X00;

             

              SetSSD1963WR();

              SetSSD1963CS();

               

            

}    

void SSD1963Data_8(uchar sdata)

{

             SetSSD1963DC();   

             

              SetSSD1963RD();

             

              ClrSSD1963CS();

              ClrSSD1963WR();

              DataPortL=sdata;

              DataPortH=0X00;

             

              SetSSD1963WR();

             SetSSD1963CS();

 

               

}

 

/*void SSD1963Data_16(uchar sdataL,uchar sdataH)

{

             SetSSD1963DC();

              SetSSD1963RD();

              ClrSSD1963WR();

              ClrSSD1963CS();

             

              DataPortL=sdataL;

              DataPortH=sdataH;   

              nop();nop();nop(); nop();nop();nop();

              SetSSD1963WR();

             SetSSD1963CS(); 

               

}*/

uchar GetSSD1963Data_8()

{

             uchar sdata;  

             

              ClrSSD1963RD();

              SetSSD1963WR();

              SetSSD1963DC(); 

              ClrSSD1963CS();     

              sdata=DataPortL;

 

              nop();nop();nop();nop();nop();nop();

              SetSSD1963RD();

              SetSSD1963CS();

          return sdata;

               

}

 

 

 

uint GetSSD1963Data_16()

{

             uint sdata;     

              unsigned char SFRPAGE_save = SFRPAGE; // Save the current SFRPAGE

 

        SFRPAGE   = CONFIG_PAGE;  //设置输入输出

              P1MDOUT=0x00; ///输出设置为 高阻

           P2MDOUT=0x00;

              SFRPAGE = SFRPAGE_save;             // Restore the SFRPAGE

              P1=0xff;

              P2=0xff;

 

              ClrSSD1963RD();

              SetSSD1963WR();

              SetSSD1963DC(); 

              ClrSSD1963CS();  

              nop();

              nop();

              sdata=DataPortH;

             

              sdata=sdata<<8;    

               

              sdata|=DataPortL;

              SetSSD1963RD();

              SetSSD1963CS();

 

              SFRPAGE   = CONFIG_PAGE;

              P1MDOUT=0xff;//设置为 上拉 输出 。

              P2MDOUT=0xff;

              SFRPAGE = SFRPAGE_save;             // Restore the SFRPAGE

           return sdata;

               

}

uint GetPixel(uint Col,uint Page)

{

  

         uint temp;

               uint color; 

                       SSD1963Command_8(0x2a); //设置行开始和结束的位置

               SSD1963Data_8(Col/256);

               SSD1963Data_8(Col%256);

               temp=Col;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

 

               SSD1963Command_8(0x2b);

               SSD1963Data_8(Page/256);

               SSD1963Data_8(Page%256);

               temp=Page;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

 

               SSD1963Command_8(0x2E);

               color=GetSSD1963Data_16();

               return color;

               

}

void SetPixel(uint Col,uint Page,uint color)

{

  

         uint temp; 

 

                       SSD1963Command_8(0x2a); //设置行开始和结束的位置

               temp=Col;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

               temp=Col;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

 

               SSD1963Command_8(0x2b);

               temp=Page;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

               temp=Page;

               SSD1963Data_8(temp/256);

               SSD1963Data_8(temp%256);

 

               SSD1963Command_8(0x2c);

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

              // {

               SSD1963Data1_16(color);

              // }

}

//初始化程序

void SSD1963Init()

{

 

       //software reset       

       SSD1963Command_8(0x01);

       Delay_Ms(400);           

       SSD1963Command_8(0x01);

       Delay_Ms(400);     

 

       //enable pll                       

       SSD1963Command_8(0xe0);

       Delay_Ms(400);       

       SSD1963Data_8(0x01);  

       Delay_Ms(400);

       SSD1963Command_8(0xe0);      

       Delay_Ms(400);  

       SSD1963Data_8(0x03);  

       Delay_Ms(400);

 

       //pll: n= 34 m= 3

       SSD1963Command_8(0xe2);         

       SSD1963Data_8(0x14);

       SSD1963Data_8(0x03);

      SSD1963Data_8(0x54);   

      

       //dotclk setting

       SSD1963Command_8(0xe6);         

       SSD1963Data_8(0x03);

       SSD1963Data_8(0xa0);

      SSD1963Data_8(0x00);

 

       //panel setting

       SSD1963Command_8(0xb0);

       Delay_Us(100);

       SSD1963Data_8(0x38);

       SSD1963Data_8(0x20);

      SSD1963Data_8(0x01);

 

       SSD1963Data_8(0xdf);

       SSD1963Data_8(0x01);

      SSD1963Data_8(0x0f);

       SSD1963Data_8(0x00);

 

       //pixel format

       SSD1963Command_8(0x3a);      

       SSD1963Data_8(0x50);

 

       //hsync setting

       SSD1963Command_8(0xb4);      

       SSD1963Data_8(0x02);

       SSD1963Data_8(0x0D);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x25);

       SSD1963Data_8(0x02);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x00);

 

       SSD1963Data_8(0x00);

      

       //vsync setting

       SSD1963Command_8(0xb6);         

       SSD1963Data_8(0x01);

       SSD1963Data_8(0x1E);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x08);

       SSD1963Data_8(0x01);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x00);

 

       //col start_end

       SSD1963Command_8(0x2a);             

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x01);

       SSD1963Data_8(0xdf);//480

 

       //row start_end

       SSD1963Command_8(0x2b);          

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x00);

       SSD1963Data_8(0x01);

       SSD1963Data_8(0x0f);//272

 

 

        SSD1963Command_8(0x36);

        SSD1963Data_8(0x00);     

       //MCU IF setting

 

       //SSD1963Command_8(13);

 

 

       SSD1963Command_8(0xf0);    

       SSD1963Data_8(0x03);   //02

 

 

       //SSD1963Command_8(0x35);

 

       //display on

       SSD1963Command_8(0x29);

 

 

       SSD1963Command_8(0xbe);//设置PWM

       SSD1963Data_8(0X0E);

       SSD1963Data_8(0XFF);

       SSD1963Data_8(0X09);

       SSD1963Data_8(0XFF);

       SSD1963Data_8(0X00);

       SSD1963Data_8(0X00);

 

 

       SSD1963Command_8(0xD4);//(Define the threshold value)

       SSD1963Data_8(0X00);

       SSD1963Data_8(0X09);

       SSD1963Data_8(0X90);

       SSD1963Data_8(0X00);

       SSD1963Data_8(0X17);

       SSD1963Data_8(0XE8);

       SSD1963Data_8(0X00);

       SSD1963Data_8(0X39);

       SSD1963Data_8(0X60);

 

       SSD1963Command_8(0xd0);

       SSD1963Data_8(0x0d);

 //  ReadSSD1963Set();

}

关键字:SSD1963  示例程序 引用地址:SSD1963示例程序

上一篇:AT89C2051+AD7545正弦信号发生器
下一篇:在Keil C51函数中加入ASM代码

推荐阅读最新更新时间:2024-03-16 15:04

89C51串并转换驱动数码管示例程序
器件:74hc595. 引脚说明: SDA:数据输入口。 SH_CP:数据输入控制端,在每个 SH_CP的上升沿, SDA口上的数据移入寄存器, 在 SH_CP的第 9个上升沿, 数据开始从 QS 移出。 ST_CP:数据置入锁存器控制端。 Q0~Q7:数据并行输出端。 数据从SDA 口送入 74HC595 , 在每个 SH_CP的上升沿, SDA口上的数据移入寄存器, 在 SH_CP的第 9个上升沿, 数据开始从 QS 移出。如果把第一个74HC595的QS和第二个74HC595 的 SDA 相接, 数据即移入第二个74HC595中, 照此一个一个接下去, 可接任意多个。数据全部送完后, 给 ST_CP一个上升沿, 寄存
[单片机]
89C51串并转换驱动数码管<font color='red'>示例</font><font color='red'>程序</font>
单片机键盘程序设计示例
  在图示电路中,用 P1 口接一个 4 X 4 键盘。设: SO-S9 为数字键,键值为 0-9 ,用于向单片机系统输入数据; S10-S15 为命令键,键值为 A-F ,用于对计算机系统送操作命令;每键只 1 个功能;行线接 P1 口的高 4 位;列线接 P1 口的低 4 位。   (1)键盘扫描子程序   KEY: MOV A, #0F 0H   MOV P1,A   XRL A,P1   JZ KEYR ;无键按下返回   ACALL DELAY ;延时去抖动   MOV 30H,P1 ;读闭合键行位置   MOV P1,#0FH ;反转   MOV A,P1 ;读闭合键列位置   ORL 30H,A ;合成键盘位置码
[单片机]
单片机键盘<font color='red'>程序</font>设计<font color='red'>示例</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved