找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2495|回復(fù): 2
收起左側(cè)

單片機HM電位器搖桿控制程序,ADC采集電壓方向,易語言上位機接收

[復(fù)制鏈接]
ID:878235 發(fā)表于 2021-1-17 18:57 | 顯示全部樓層 |閱讀模式
單片機源程序如下:

#include "reg52.h"
#define SD 1

char KEY_XY;
char bdata ADC_BIT;
sbit ADC0=ADC_BIT^0;
sbit ADC1=ADC_BIT^1;
sbit ADC2=ADC_BIT^2;
sbit ADC3=ADC_BIT^3;

sbit ADC4=ADC_BIT^4;
sbit ADC5=ADC_BIT^5;
sbit ADC6=ADC_BIT^6;
sbit ADC7=ADC_BIT^7;


sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;

sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;


float  ADC21[9]={0,2.5,1.25,0.625,0.3125,0.15625,0.078125,0.03906,0.01953};


sbit CS=P2^2;
sbit CLK=P2^0;
sbit SDI =P2^1;
sbit SDO =P2^1;




//===================================
void init_ADC0832()
{
        CLK=0;yc(SD);
        
        CS=0;yc(SD);
        
        SDI=1;yc(SD);
        CLK=1;yc(SD);
        CLK=0;yc(SD);
        
        SDI=1;yc(SD);
        CLK=1;yc(SD);
        CLK=0;yc(SD);
        
        
        //SDI=0;yc(SD);
        SDI=KEY_XY=!KEY_XY;yc(SD);
        CLK=0;yc(SD);
        CLK=0;yc(SD);
        
        // 設(shè)置通道 110 CH0單通道輸入
        
}

float read_ADC0832()
{
        float re_data;
        re_data=0;
        //千萬記住,局部動態(tài)變量的初值不可省略
        CLK=1;
        CLK=0;
        CLK=1;
        //第一個數(shù)據(jù)不要

        //0        
        CLK=0;
        ADC0=SDO;
        CLK=1;
        //1
        CLK=0;
        ADC1=SDO;
        CLK=1;
        


  //2
        CLK=0;
        ADC2=SDO;
  CLK=1;

        
        
        //3
        CLK=0;
        ADC3=SDO;
        CLK=1;

        
        
        //4
        CLK=0;
        ADC4=SDO;
        CLK=1;
        
        //5
        CLK=0;
  ADC5=SDO;
  CLK=1;
        
        
        
        //6
        CLK=0;
  ADC6=SDO;
        CLK=1;
        
        //7
        CLK=0;
  ADC7=SDO;
        CLK=1;
        
        re_data=ADC21[ADC0*1]+ADC21[ADC1*2]+ADC21[ADC2*3]+ADC21[ADC3*4]+ADC21[ADC4*5]+ADC21[ADC5*6]+ADC21[ADC6*7]+ADC21[ADC7*8];
        return(re_data);
        
}

void rs232_init(void)
{
    SCON=0x50;           //設(shè)定串口工作方式
    PCON=0x00;           //波特率不倍增

    TMOD=0x20;           //定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率
    EA=1;
    ES = 1;              //允許串口中斷
    TL1=0xA0;
    TH1=0xff;             //波特率9600
    TR1=1;

         
}
void senddata(char dat)
{

         
           
         
        
               

//-------------------------



                        TI = 0;
            SBUF = dat;
      while(!TI);

                  



}



main()
{

        char num;
        char D1;
//        char D2;
//        char D3;
//        char D4;
        
rs232_init();

while(1)
{   

  init_ADC0832();
        D1=read_ADC0832();
        CS=1;
//        D2=data_num*10-D1*10;
//        D3=data_num*100-D1*100-D2*10;
//        D4=data_num*1000-D1*1000-D2*100-D3*10;
//  
//           
                  if(KEY_XY)
           {//X 數(shù)據(jù)
              
               num=num&0x0f;
                           num=num+(D1<<4);
                 }
else
    { //Y 數(shù)據(jù)
                        num=num&0xf0;
                        num=num+D1;
                        ;
    }

//     num=D1;
                 senddata(num);
                 yc(8);
}

}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:878235 發(fā)表于 2021-1-17 18:58 | 顯示全部樓層
.版本 2

.程序集 窗口程序集1

.子程序 __啟動窗口_創(chuàng)建完畢

端口1.啟動 ()




.子程序 _端口1_數(shù)據(jù)到達(dá)
.參數(shù) 數(shù)據(jù)字節(jié)值, 整數(shù)型

變量X = 右移 (數(shù)據(jù)字節(jié)值, 4)
變量Y = 位與 (數(shù)據(jù)字節(jié)值, 15)

編輯框X.內(nèi)容 = 到文本 (變量X)
編輯框Y.內(nèi)容 = 到文本 (變量Y)


標(biāo)簽1.左邊 = 標(biāo)簽1.左邊 + (2 - 變量X) × 4
標(biāo)簽1.頂邊 = 標(biāo)簽1.左邊 + (2 - 變量Y) × 4



回復(fù)

使用道具 舉報

ID:878235 發(fā)表于 2021-1-17 18:58 | 顯示全部樓層
易語言自己發(fā)揮,組件就是一個端口,接收數(shù)據(jù)處理就可以了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表