標(biāo)題:
單片機(jī)HM電位器搖桿控制程序,ADC采集電壓方向,易語(yǔ)言上位機(jī)接收
[打印本頁(yè)]
作者:
zpmpok001
時(shí)間:
2021-1-17 18:57
標(biāo)題:
單片機(jī)HM電位器搖桿控制程序,ADC采集電壓方向,易語(yǔ)言上位機(jī)接收
單片機(jī)源程序如下:
#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;
//千萬(wàn)記住,局部動(dòng)態(tài)變量的初值不可省略
CLK=1;
CLK=0;
CLK=1;
//第一個(gè)數(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; //定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(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);
}
}
作者:
zpmpok001
時(shí)間:
2021-1-17 18:58
.版本 2
.程序集 窗口程序集1
.子程序 __啟動(dòng)窗口_創(chuàng)建完畢
端口1.啟動(dòng) ()
.子程序 _端口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
作者:
zpmpok001
時(shí)間:
2021-1-17 18:58
易語(yǔ)言自己發(fā)揮,組件就是一個(gè)端口,接收數(shù)據(jù)處理就可以了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1