久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1547|回復: 0
收起左側

求分析51單片機2046觸摸屏畫圖程序的錯誤

[復制鏈接]
ID:382699 發表于 2020-9-2 21:36 來自手機 | 顯示全部樓層 |閱讀模式
本帖最后由 分立元件 于 2020-9-3 13:31 編輯

搞了好多天都不行,不知道哪里錯了,現在X軸正常,Y軸定位不對,寫上,就顯示下,反過來了,還有屏幕最下面不能顯示
IMG_20200901_113104.jpg
單片機源程序如下:
#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引腳可以不連接

//觸摸屏引腳
sbit  clk=P0^4;
sbit  cs1=P0^3;
sbit  din=P0^2;
sbit  out=P0^1;
sbit  a=P0^0;

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;

uint shuju;
void delay(uint time)
{
uint i;
  for(i=0;i<time;i++);
}

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);
        
        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(0,x);
                write_command(0x2b);
                wr_com16(0,y);
                write_command(0x2c);
}

void dsp_single_colour(DH,DL)
{
        

           unsigned int i;

        for (i=0;i<1;i++)  
        {
         
    wr_com16(DH,DL);
        
        
         }

}

//觸摸屏程序
void write(uchar DAT)                //寫XY坐標

{

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

{
  
if(DAT&0x80)
   din=1;  
   else din=0;   
   DAT<<=1;   
   clk=0;         
   clk=1;               
}

}


uint read()                                        //讀XY坐標數據

{

uint date=0;

uchar i;

clk=0;

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

{
  
date<<=1;



clk=1;

clk=0;
  
date|=out;


}

return date;

}



uint ad_read(uchar cmd)                 

{



char i;

clk=0;

cs1=0;

write(cmd);

for(i=6;i>0;i--);

clk=1;

clk=0;

shuju=read();

cs1=1;

return  shuju;

}

main()
{           uint aa,bb,x,y;
                lcd_initial();        //液晶屏初始化
                aa=0;
                bb=0;
                while(1)        
                  {
                        
                    if(a==0)   //有觸摸低電平
                        {
                        
                         // delay(1);
                        
ad_read(0xd0);   //讀x坐標指令
   aa=shuju;        //x坐標數據給aa
    ad_read(0x90);    //讀y坐標指令
    bb=shuju;        //y坐標數據給bb
                        
    x=aa/(4095/240);//觸摸和液晶坐標轉換
                         y=bb/(4095/320);
                        

                         addset(x,y);                                          //液晶屏坐標

                     dsp_single_colour(0xFF,0xFF);         //顯示白色定位點
               
                 
                                                   
               
            }
        }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 爱草在线| 性一交一乱一透一a级 | 人妖一区 | 高清一区二区三区 | 日韩在线播放中文字幕 | 视频二区国产 | 91视频进入 | 91成人在线视频 | 亚洲在线一区二区三区 | 色姑娘综合网 | 91日韩| 精品国产一区二区在线 | 国产在线视频一区二区 | 国产精品一区二区三区在线 | 久久久视 | 亚洲国产成人在线 | 99久久精品免费看国产四区 | 免费观看成人鲁鲁鲁鲁鲁视频 | 成人免费视频网站在线观看 | 中文字幕亚洲在线 | 黄色大片在线 | 午夜免费视频观看 | 美女久久久久久久 | 国产精品视频专区 | 成人国产在线视频 | 人人玩人人添人人澡欧美 | 91精品国产91久久综合桃花 | 亚洲一区精品在线 | 在线观看视频一区二区三区 | 91精品久久久久久久久中文字幕 | 一区二区久久精品 | 欧美精品一区在线 | 久久国产精品视频 | 香蕉久久a毛片 | 成人午夜免费福利视频 | 日韩欧美国产精品一区 | 一区二区国产精品 | 色综合久久天天综合网 | 另类一区 | 欧美精品v国产精品v日韩精品 | 亚洲精品无人区 |