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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用51和TLC2543AD 做電壓表,12864作顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:120628 發表于 2016-9-4 18:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用51和TLC2543AD 做電壓表,12864作顯示,當TLC2543一上電那顯示就亂跳,不知道怎么搞的?



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:105206 發表于 2016-9-5 12:37 | 只看該作者
你把程序貼出來看了才知道。
回復

使用道具 舉報

板凳
ID:123289 發表于 2016-9-5 13:10 | 只看該作者
上電后先做硬件處理,其中優先關閉LCD顯示即可。
原因:在LCD屏未受控時,無法預估其顯示形式,所以需要盡快使之受控(在人眼未察曉之前)。
當然也可能是其它原因。
回復

使用道具 舉報

地板
ID:120628 發表于 2016-9-5 23:09 | 只看該作者
jubaolun 發表于 2016-9-5 12:37
你把程序貼出來看了才知道。

#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_data P0
uchar table[5];
//uint sda=8000;


//sbit eoc=P1^1;//EOC
//sbit clk=P1^2;//clock
//sbit sdi=P1^3;//data input
//sbit sdo=P1^4;//data  ouput
//sbit cs=P1^5;//cs
//sbit lcd_rs=P2^6;
//sbit lcd_rw=P2^5;
//sbit lcd_en=P2^7;
//sbit lcd_psb=P3^2;
//sbit lcd_rst=P3^4;


sbit CS=P1^2;
sbit CLK=P1^3;
sbit SDO=P1^0;
sbit SDI=P1^1;
sbit EOC=P1^4;
//sbit eoc=P3^3;//EOC
//sbit clk=P3^4;//clock
//sbit sdi=P3^5;//data input
//sbit sdo=P3^6;//data  ouput
//sbit cs=P3^7;//cs
sbit lcd_rs=P2^7;
sbit lcd_rw=P2^6;
sbit lcd_en=P2^5;
sbit lcd_psb=P2^4;
sbit lcd_rst=P2^3;
void delay_ms(uchar t)
{
                uint j,k;
                for(k=t;k>0;k--)
                for(j=110;j>0;j--);
}
void write_com(uchar com)
{
                lcd_rs=0;
                lcd_rw=0;
                lcd_en=0;
                P0=com;
                delay_ms(5);
                lcd_en=1;
                delay_ms(5);
                lcd_en=0;
}

void write_dat(uchar date)
{
                lcd_rs=1;
                lcd_rw=0;
                lcd_en=0;
                P0=date;
                delay_ms(5);
                lcd_en=1;
                delay_ms(5);
                lcd_en=0;
}

void clear()
{
                write_com(0x01);
                delay_ms(2);
}

void lcd_pos(uchar X,uchar Y)
{
                uchar pos;
                if(X==0)
                                {X=0x80;}
                else if(X==1)
                                {X=0x90;}
                else if(X==2)
                                {X=0x88;}
                else if(X==3)
                                {X=0x98;}
                pos=X+Y;
                write_com(pos);
}

void display1(uchar x,uchar y,uchar *disp)
{
                lcd_pos(x,y);
                while(*disp) //顯示函數
                {
                        write_dat(*disp);
                        disp=disp+1;
                        delay_ms(1);
                }
}

void lcd_init()
{
                lcd_psb=1;
                lcd_rst=0;
                delay_ms(5);
                lcd_rst=1;
                delay_ms(5);
                write_com(0x30); // 基本操作指令 delay_ms(5);
                write_com(0x0c); // 顯示開,關光標 delay_ms(5);
                write_com(0x01); // 清除LCD的顯示內容 delay_ms(5);

}
unsigned int  A_D(unsigned char CH_i)           //CH_i,通道值
{
  unsigned int AD_Val;         //儲存12位的A/D轉換結果
   unsigned char i;
   AD_Val=0;
   CS=1;   //一個轉換周期開始
   EOC=0;
   CLK=0;      //為第一個脈沖作準備
   _nop_();
   _nop_();         
   CS=0;      //CS置0,片選有效
   EOC=1;     //EOC開始應設為高電平
   CH_i<<=4;  //將通道值(D7,D6,D5,D4)移入高四位,轉換通道設置
   CH_i|=0x02; //D3,D2,D1,D0=0,0,1,0 ,輸出數據為12位,先輸出低位

for(i=0;i<8;i++)         //將A/D轉換方式控制字寫入TLC2543,并讀取低8位轉換結果
        {
          AD_Val>>=1;   //將讀取結果逐位右移(先輸出的是低位)   
          CLK=0;
          _nop_();
      if((CH_i&0x80)==0x80)       
            SDI=1;            
          else
            SDI=0;
           CH_i<<=1;        //在脈沖上升沿,從高位至低位依次將控制字寫入TLC2543
       CLK=1;       
       _nop_();
          if(SDO==1)                    //在脈沖下降沿,TLC2543輸出數據,寫入AD_Val的第12位
           {
              AD_Val|=0x800;         
           }
          else
           {
             AD_Val|=0x000;
           }
        }
   SDI=0;        //8個數據流輸入后,SDI端必須保持在一個固定的電平上,指引EOC變高
   for(i=8;i<12;i++)          //讀取轉換值的第8至第11位
   {
      AD_Val>>=1;
          CLK=0;                      
           _nop_();
      CLK=1;      
           _nop_();
          if(SDO==1)  
           {
            AD_Val|=0x800;        //在脈沖下降沿,TLC2543輸出數據,寫入AD_Val的第12位
           }
          else
           {
            AD_Val|=0x000;         //第12位寫 ‘0’
           }
        }
   CLK=0;         //在第12個時鐘下降沿來臨時,EOC開始變低,開始對本次采樣的模擬量進行A/D轉換,
   _nop_();         //給硬件一點轉換時間
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   CS=1;      // 停止轉換,高電平無效
   EOC=0;  
   return AD_Val;
  
  }


void display(uchar x,uchar y,uint temp)
{       
         uchar i=0;
        temp=temp*5000.0/4096;
        table[0]=temp/1000;
        table[1]=-2;//顯示小數點
        table[2]=temp%1000/100;
        table[3]=temp%1000%100/10;
        table[4]=temp%1000%100%10;
        lcd_pos(x,y);
                for(i=0;i<5;i++)
                {
                                write_dat('0'+table);
                        delay_ms(5);
                }
}

void main()

{
                double AD2=0;
                lcd_init();
                clear();
           //read();
                display1(0,0,"電壓值");
                ;
while(1)
{

        AD2=A_D(0x00);//通道0測試


display(0,5,AD2);
delay_ms(10);

}
}
這是和諧別人的,幫忙看下,我測了一下通道0與地,發現有1~2V的電壓,然后我并一只10k的電阻,然發現不亂跳了顯示為0000,但是有模糊重影,但測量是還是亂跳
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久久秒播九色 | 国产做a爱免费视频 | 影音先锋中文字幕在线观看 | 激情黄色在线观看 | 日韩欧美在线播放 | 欧美一区二区三区的 | 91麻豆精品一区二区三区 | 久久精品中文 | 亚洲精品乱码 | 国产亚洲一区二区三区 | 日韩欧美在线视频观看 | 国产一二三区免费视频 | 亚洲免费精品一区 | 污污免费网站 | 成人免费精品视频 | 成人蜜桃av | 一区二区三区四区在线视频 | 成人一区二区三区在线 | 久久大全 | jⅰzz亚洲| 久久精品视频网站 | 91久久 | 在线视频一区二区 | 国产亚洲精品a | 欧美日韩不卡合集视频 | 亚洲精品一区二区三区在线 | 欧美日韩亚洲一区 | 日韩中文字幕免费 | 免费a级毛片在线播放 | 成人污污视频 | 久久区二区 | 国产精品久久久久久久久久久久午夜片 | 亚洲欧美日韩精品久久亚洲区 | 最新国产精品视频 | 国产综合久久 | 综合九九| 91成人精品视频 | 精品国产乱码一区二区三 | 观看毛片 | 国产1区 | 国产精品久久久久久久久久了 |