04 电位器采集电压

通过改变电位器,获取A0引脚的电压

int A0_value;   //保存A0采集到的A/D转换数值
float valtage_value;   //电压的数值

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  A0_value=analogRead(A0);
  Serial.print("A/D转换数值:");
  Serial.println(A0_value);
  valtage_value=5.0*A0_value/1024;
  Serial.print("输出电压数值:");
  Serial.println(valtage_value);
  delay(500);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用汇编语言控制步进电机转动,并通过串口发送电位器采集电压的示例代码: ``` ; 定义常量 MOV DPTR, #2000H ; 定义数据存储地址 DELAY_TIME EQU 1000 ; 定义延迟时间常量 ; 初始化端口 MOV P1, #0FFH ; 将 P1 端口设为输出模式 MOV P2, #0FH ; 将 P2 端口设为输入模式 ; 设置串口通讯 MOV TMOD, #20H ; 定时器1为模式2 MOV TH1, #FDH ; 波特率为9600,使用12MHz晶振 SETB TR1 ; 启动定时器1 MOV SCON, #50H ; 8位数据位,无校验,1位停止位 SETB TI ; 启动串口发送 ; 延迟函数 DELAY: MOV R1, #DELAY_TIME DELAY_LOOP: DJNZ R1, DELAY_LOOP RET ; 读取电位器采集电压 READ_ADC: MOV A, #00000000B ; 选择A/D转换通道0 MOV P2, A ; 将选择写入 P2 端口 DELAY ; 延迟一段时间等待电压稳定 SETB P3.6 ; 启动A/D转换 CLR TR0 ; 启动定时器0 WAIT_ADC: JNB P3.6, WAIT_ADC ; 等待A/D转换完成 SETB TR0 ; 停止定时器0 MOV A, P2 ; 读取A/D转换结果 RET ; 控制步进电机转动 MAIN: CALL READ_ADC ; 读取电位器采集电压 MOV R0, A ; 保存电位器采集电压 MOV A, #00001001B ; 选择全步进模式 MOV P1, A ; 将设置写入 P1 端口 MOV A, R0 ; 读取电位器采集电压 DIV AB, #10 ; 将电位器采集电压除以10 MOV R7, A ; 保存除以10后的结果 MOV A, #00000001B ; 控制电机转动一步 MOV P1, A ; 将控制命令写入 P1 端口 ACALL DELAY ; 延迟一段时间等待电机稳定 MOV A, R7 ; 读取除以10后的电位器采集电压 MOV SBUF, A ; 将电位器采集电压发送到串口 WAIT_SEND: JNB TI, WAIT_SEND ; 等待串口发送完成 CLR TI ; 清除发送标志位 SJMP MAIN ; 转到下一次循环 ``` 在这个示例代码中,我们使用了定时器0和定时器1来完成延迟和串口通讯的功能,使用了P2端口来读取电位器采集电压。程序每次循环会读取一次电位器采集电压,然后根据电位器采集电压的值来控制步进电机转动,并将电位器采集电压通过串口发送到电脑端。注意在程序中需要根据实际情况修改串口通讯波特率、晶振频率和数据存储地址等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值