矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2364|回复: 11

【分享】51单片机320*240,SPI彩屏测试程序

[复制链接]
     
发表于 2020-10-31 22:06:27 | 显示全部楼层 |阅读模式
本帖最后由 分立元件 于 2020-11-1 00:05 编辑


#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int

//引脚连接定义
sbit cs        =P1^0;//片选
sbit reset     =P1^1;//复位
sbit rs        =P1^2;//地址/数据切换
sbit sda       =P1^3;// SDI  MOSI
sbit scl       =P1^4;//时钟
//SDO引脚可以不连接

uchar bdata bitdata;
sbit bit7=bitdata^7;
sbit bit6=bitdata^6;
sbit bit5=bitdata^5;
sbit bit4=bitdata^4;
sbit bit3=bitdata^3;
sbit bit2=bitdata^2;
sbit bit1=bitdata^1;
sbit bit0=bitdata^0;


void  delay(uint t);


void delay(uint time)
{
uint i,j;
  for(i=0;i<time;i++)
   for(j=0;j<2500;j++);
}

void  write_command(uchar c)
{
        cs=0;

        rs=0;
        bitdata=c;

        sda=bit7;scl=0;scl=1;
        sda=bit6;scl=0;scl=1;
        sda=bit5;scl=0;scl=1;
        sda=bit4;scl=0;scl=1;
        sda=bit3;scl=0;scl=1;
        sda=bit2;scl=0;scl=1;
        sda=bit1;scl=0;scl=1;
        sda=bit0;scl=0;scl=1;
        cs=1;      
}

void  write_data(uchar d)
{
        cs=0;
        rs=1;
        bitdata=d;
        sda=bit7;scl=0;scl=1;
        sda=bit6;scl=0;scl=1;
        sda=bit5;scl=0;scl=1;
        sda=bit4;scl=0;scl=1;
        sda=bit3;scl=0;scl=1;
        sda=bit2;scl=0;scl=1;
        sda=bit1;scl=0;scl=1;
        sda=bit0;scl=0;scl=1;
        cs=1;
}

void wr_com16(unsigned char i,unsigned char j)   
{         
        cs=0;

        rs=1;
        bitdata=i;

        sda=bit7;scl=0;scl=1;
        sda=bit6;scl=0;scl=1;
        sda=bit5;scl=0;scl=1;
        sda=bit4;scl=0;scl=1;
        sda=bit3;scl=0;scl=1;
        sda=bit2;scl=0;scl=1;
        sda=bit1;scl=0;scl=1;
        sda=bit0;scl=0;scl=1;
        cs=1;  
        cs=0;


        rs=1;
        bitdata=j;

        sda=bit7;scl=0;scl=1;
        sda=bit6;scl=0;scl=1;
        sda=bit5;scl=0;scl=1;
        sda=bit4;scl=0;scl=1;
        sda=bit3;scl=0;scl=1;
        sda=bit2;scl=0;scl=1;
        sda=bit1;scl=0;scl=1;
        sda=bit0;scl=0;scl=1;
        cs=1;

}
//////////////////////////////////////////////////////////////////////////////////////////////

void lcd_initial()
{

        reset=0;
        delay(100);
        reset=1;
        delay(100);
       
    //2.2inch TM2.2-G2.2 Init 20171020
        write_command(0x11);  
        write_data(0x00);

        write_command(0xCF);  
        write_data(0X00);
        write_data(0XC1);
        write_data(0X30);

        write_command(0xED);  
        write_data(0X64);
        write_data(0X03);
        write_data(0X12);
        write_data(0X81);

        write_command(0xE8);  
        write_data(0X85);
        write_data(0X11);
        write_data(0X78);

        write_command(0xF6);  
        write_data(0X01);
        write_data(0X30);
        write_data(0X00);

        write_command(0xCB);  
        write_data(0X39);
        write_data(0X2C);
        write_data(0X00);
        write_data(0X34);
        write_data(0X05);

        write_command(0xF7);  
        write_data(0X20);

        write_command(0xEA);  
        write_data(0X00);
        write_data(0X00);

        write_command(0xC0);  
        write_data(0X20);

        write_command(0xC1);  
        write_data(0X11);

        write_command(0xC5);  
        write_data(0X31);
        write_data(0X3C);

        write_command(0xC7);  
        write_data(0XA9);

        write_command(0x3A);  
        write_data(0X55);
       
    write_command(0x36);  
        write_data(0x48);//竖屏参数

        write_command(0xB1);  
        write_data(0X00);
        write_data(0X18);

        write_command(0xB4);  
        write_data(0X00);
        write_data(0X00);

        write_command(0xF2);  
        write_data(0X00);

        write_command(0x26);  
        write_data(0X01);

        write_command(0xE0);  
        write_data(0X0F);
        write_data(0X17);
        write_data(0X14);
        write_data(0X09);
        write_data(0X0C);
        write_data(0X06);
        write_data(0X43);
        write_data(0X75);
        write_data(0X36);
        write_data(0X08);
        write_data(0X13);
        write_data(0X05);
        write_data(0X10);
        write_data(0X0B);
        write_data(0X08);


        write_command(0xE1);  
        write_data(0X00);
        write_data(0X1F);
        write_data(0X23);
        write_data(0X03);
        write_data(0X0E);
        write_data(0X04);
        write_data(0X39);
        write_data(0X25);
        write_data(0X4D);
        write_data(0X06);
        write_data(0X0D);
        write_data(0X0B);
        write_data(0X33);
        write_data(0X37);
        write_data(0X0F);
    write_command(0x29);         

}
void addset(unsigned int x,unsigned int y)
{
                write_command(0x2a);
                wr_com16(x>>8,x);
                write_command(0x2b);
                wr_com16(y>>8,y);
                write_command(0x2c);
}

void dsp_single_colour(DH,DL)
{
        unsigned int i,j;
        addset(0,0);
        for (i=0;i<320;i++)
    for (j=0;j<240;j++)
    wr_com16(DH,DL);


}

main()
{
                lcd_initial();

      
               
                        dsp_single_colour(0x84,0x10);//灰色
                        dsp_single_colour(0xff,0xff);//白色
                        dsp_single_colour(0x00,0x00);//黑色
                        dsp_single_colour(0xf8,0x00);//红色
                        dsp_single_colour(0x07,0xe0);//绿色
                        dsp_single_colour(0x00,0x1f);//蓝色

           while(1)        ;
}


89efcdb30c4c58ddaea9da5e293b202.jpg
     
发表于 2020-10-31 23:38:56 | 显示全部楼层
显示屏用的是什么驱动芯片
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-10-31 23:42:25 | 显示全部楼层
cwf2011 发表于 2020-10-31 23:38
显示屏用的是什么驱动芯片

ILI9341芯片
回复 支持 反对

使用道具 举报

     
发表于 2020-11-1 12:36:17 | 显示全部楼层
大侠,帮忙用这个屏改写一个STC15W408AS控制LC72131的程序,常建国老师原程序是中波段的,帮忙改写一个短波段的,屏驱动改为你这个显示的。
原贴的内容在这里
http://www.crystalradio.cn/forum ... &extra=page%3D1
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-11-1 12:55:31 来自手机 | 显示全部楼层
bfzy196167366 发表于 2020-11-1 12:36
大侠,帮忙用这个屏改写一个STC15W408AS控制LC72131的程序,常建国老师原程序是中波段的,帮忙改写一个短波 ...

能力有限啊!
回复 支持 反对

使用道具 举报

     
发表于 2020-11-3 17:18:09 | 显示全部楼层
用串口的SPI 模式或者是使用CPU扩展功能的SPI模块来驱动吧, IO模拟驱动彩屏慢成狗
回复 支持 反对

使用道具 举报

     
发表于 2020-11-4 17:27:58 | 显示全部楼层
51别用了,stm32又便宜能力又强。
回复 支持 反对

使用道具 举报

     
发表于 2020-11-15 13:37:25 | 显示全部楼层
学习一下!
回复 支持 反对

使用道具 举报

     
发表于 2021-1-8 20:45:57 | 显示全部楼层

收藏备用,多谢分享
回复 支持 反对

使用道具 举报

     
发表于 2021-1-8 20:46:36 | 显示全部楼层

收藏备用,多谢分享
回复 支持 反对

使用道具 举报

     
发表于 2021-1-10 14:46:09 | 显示全部楼层
学习一下!!
回复 支持 反对

使用道具 举报

     
发表于 2021-1-10 19:45:05 | 显示全部楼层

谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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