普中科技开发板AD转换和步进电机

本文介绍了如何在普中科技开发板上实现AD转换,通过调节滑动变阻器控制步进电机转速,并详细描述了按键S1-S4对步进电机的控制功能。在遇到软件延时导致数码管闪烁的问题时,采用定时器中断解决了该问题。
摘要由CSDN通过智能技术生成

AD转换和步进电机

在这里插入图片描述

主要功能

1.使用ad转换模块,调节滑动变阻器输出实际电压值显示在数码管上。在步进电机正转时,根据输出的电压值调节步进电机转速。
2.使用按键S1 S2 S3 S4控制步进电机,其中S1控制步进电机正反转;S2长按步进电机暂停;S3按下步进电机反转时高速状态;S4按下步进电机反转时为低速状态。(反转时默认高速状态

main.c

#include"reg52.h"
#include"XPT2046.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;


sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;	

sbit S1=P3^1;    //正反转
sbit S2=P3^0;    //暂停
sbit S3=P3^2;    //加速
sbit S4=P3^3;    //减速
u8 state=1;      //转向1正0反
u16 time=0;   //定义延时变量
u16 time1=80;   //定义延时变量
unsigned char code tableZ[8]={
   0x1,0x3,0x2,0x6,0x4,0xc,0x8,0x9};  //四相八拍正
unsigned char code tableF[8]={
   0x9,0x8,0xc,0x4,0x6,0x2,0x3,0x1};
u8 SMG_dat[8]= {
   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
u8 code SMG_duanma[10]={
   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*******延时函数********/
void delay(u16 i)
{
   
	while(i--);	
}
/*******处理电压数据函数*************/
void display_V()
{
   
  int temp=0;   //ad值
	int ad_value;
	unsigned int voltage_display = 0;
	float index = 1.222;
	float voltage = 0;
	
	static u8 i;
	if(i==50)                        //隔一段时间读取  
	{
     
     i=0;
		EA=0;            //关中断
		ad_value =  Read_AD_Data(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值