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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1526|回復: 0
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:382699 發(fā)表于 2020-9-2 21:36 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 分立元件 于 2020-9-3 13:31 編輯

搞了好多天都不行,不知道哪里錯了,現(xiàn)在X軸正常,Y軸定位不對,寫上,就顯示下,反過來了,還有屏幕最下面不能顯示

單片機源程序如下:
#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;//地址/數(shù)據(jù)切換
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);//豎屏參數(shù)

        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坐標數(shù)據(jù)

{

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坐標數(shù)據(jù)給aa
    ad_read(0x90);    //讀y坐標指令
    bb=shuju;        //y坐標數(shù)據(jù)給bb
                        
    x=aa/(4095/240);//觸摸和液晶坐標轉換
                         y=bb/(4095/320);
                        

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

                     dsp_single_colour(0xFF,0xFF);         //顯示白色定位點
               
                 
                                                   
               
            }
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品一区二区三区四区 | 亚洲欧美综合 | 久草精品视频 | 成人在线免费 | 黑人精品欧美一区二区蜜桃 | 1级毛片| 韩日一区 | 日韩一区二区三区视频 | 亚洲综合一区二区三区 | 国产成人99久久亚洲综合精品 | 国产羞羞视频在线观看 | 91高清视频在线观看 | 午夜视频一区二区三区 | 日韩高清成人 | 国产高清免费视频 | 久久综合欧美 | 在线视频国产一区 | 人人叉 | 中文字幕国产 | 播放一级毛片 | 日韩一区二区黄色片 | 欧美精品1区2区 | 午夜精品一区二区三区在线 | 精品一区久久 | 黄色骚片 | 亚洲欧洲精品成人久久奇米网 | 性高湖久久久久久久久3小时 | 草久久久 | 国产1区| 欧美三级电影在线播放 | 第四色狠狠 | 一区二区三区亚洲精品国 | 国产精品免费福利 | 在线看av网址| 日本亚洲一区 | 精品久久久久久久久久久 | 精品91久久 | 国户精品久久久久久久久久久不卡 | 国产精品久久久久久婷婷天堂 | 午夜免费福利影院 | 色爱综合网 |