微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SSD1963示例程序

SSD1963示例程序

时间:11-11 来源:互联网 点击:
本程序是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;

s

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top