⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssd1779.c

📁 瑞福达开的模块(SSD1779)的C语言驱动程序
💻 C
字号:
/*-----------------------
Drive IC:SSD1779
Test mode:8 bit paraller interface 8080 MCU
DOT SIZE:128*128
Program by:wudi
Date:2006-02-08
-------------------------*/
#include <reg51.h>
#include <intrins.h>
#include <ctype.h>
#define X_add 128
#define Y_add 128
#define Data_port P1
#define nop _nop_()
sbit CS=P3^5;
sbit RST=P3^4;
sbit RS=P3^2;
sbit WR_=P3^1;
sbit RD_=P3^0;
sbit KEY=P2^0;
typedef unsigned char byte;
typedef unsigned int word;
byte code BMP[];
void write_data(in_data);
void write_com(in_com);
void delay(word time);
void initial();
void wait_key();
void display_griphic(byte griphic[]);
void test_patten(byte cl,byte ch);
void disptest_bar_h();
void address_set(byte addX1,addX2,addY1,addY2);
void main(void)
     {
     initial();
     while(1)
     {
     display_griphic(BMP);
     delay(1000);
     disptest_bar_h();
     delay(1000);
     test_patten(0xf8,0x00);
     test_patten(0x07,0xe0);
     test_patten(0x00,0x1f);
     test_patten(0xff,0xff);
     test_patten(0x00,0x00);
     }
    }
void delay(word time)
     {
    word i;
    while(time--)
         for(i=0;i<10;i++);
    }
void wait_key()
     {
    KEY=1;
     while(KEY);
     delay(10);
     while(!KEY);
     delay(10);
     //delay(8000);
    }

void address_set(byte addX1,addX2,addY1,addY2)
     {
    write_com(0x75);
    write_data(addX1);
    write_data(addX2);
    write_com(0x15);
    write_data(addY1);
    write_data(addY2);
    }
void write_data(in_data)
     {
     RS=1;
     CS=0;
     RD_=1;
     Data_port=in_data;
     WR_=0;
     //nop;
     WR_=1;
     CS=1;
    }
void write_com(in_com)
    {
    	RS=0;
    	CS=0;
        RD_=1;
    	Data_port=in_com;
        WR_=0;
        //nop;
        WR_=1;
        CS=1;
    }
void initial()
     {
    //word i;
    RST=0;
    delay(10);
    RST=1;
    write_com(0xD1);       // ENABLE INTERAL OSCILLATOR
    delay(10);
    write_com(0x20);       //SET POWER CONTROL REGISTER
    write_data(0x0F);      //5X BOOST

    write_com(0x81);        //SET CONTRAST LEVEL & INTERAL REGULATOR
    write_data(0x2F);
    write_data(0x06);

    write_com(0x94);        //EXIT SLEEP MODE

    write_com(0xfb);         //SET BIASING RATIO
    write_data(0x02);        //1/9 BIAS

  //  write_com(0xf7);         //SELECT PWM/FRC
  //  write_data(0x28);        //
  //  write_data(0x0e);        //
   // write_data(0x05);        //

    write_com(0xbb);         //SET COM OUTPUT SCAN DIRECTION
    write_data(0x01);

    write_com(0xbc);         //SET  DATA OUT SCAN DIRECTION
    write_data(0x00);
    write_data(0x00);
    write_data(0x00);        //65k

    write_com(0xca);         //SET DISPLAY CONTROL
    write_data(0x00);         //
    write_data(0x20);         //
    write_data(0x00);         //

    write_com(0xf2);          //SET FRAME FREQUENCY
    write_data(0x00);
    write_data(0x00);

    write_com(0xf1);
    write_data(0xe0);
    write_data(0x00);
    write_data(0x00);


    write_com(0xa2);          //DISABLE ICON

    write_com(0xa7);         //NORMAL/INVERSE DISPLAY

    write_com(0xaf);         //SET DISPLAY ON




}

void display_griphic(byte griphic[])
     {
    word i,j,k;
    address_set(4,131,4,131);
    write_com(0x5c);
    for(i=0;i<X_add;i++)
       for(j=0;j<Y_add;j++)
          for(k=0;k<2;k++)
           {
           write_data(*griphic);
           griphic++;
           }
    }
void test_patten(byte cl,byte ch)
    {
    word i,j;
    address_set(4,131,4,131);
    write_com(0x5c);
    for(i=0;i<X_add;i++)
       for(j=0;j<Y_add;j++)
         {
          //for(k=0;k<2;k++)
          write_data(cl);
          write_data(ch);
         }
         }

void disptest_bar_h()
{
	word i,j;

	write_com(0x75);
	write_data(0x00);
	write_data(0x83);

	write_com(0x15);
	write_data(0x00);
	write_data(0x83);

        write_com(0x5c);
	for (i=0;i<34;i++)
	{
        	for(j=0;j<132;j++)
        	{
            		write_data(0xF8);
                        write_data(0x00);
        	}
    	}
    	for (i=0;i<34;i++)
    	{
        	for(j=0;j<132;j++)
        	{
            	write_data(0x07);
                write_data(0xe0);
        	}
   	 }
    	for (i=0;i<34;i++)
    	{
        	for(j=0;j<132;j++)
        	{
                       write_data(0x00);
                       write_data(0x1F);
        	}
    	}

        	for (i=0;i<34;i++)
    	{
        	for(j=0;j<132;j++)
        	{
                       write_data(0xff);
                       write_data(0xff);
        	}
    	}

}







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -