模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

[单片机课堂] 第十四课:制作舵机测试仪

  [复制链接]
发表于 2020-12-23 12:04:47 来自手机 | 显示全部楼层
感谢老大的无私奉献,学习中
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-29 11:43:59 | 显示全部楼层
#include<reg51.h>

sfr P5=0xC8; //声明P5引脚寄存器
sfr P1ASF=0x9D;    //声明 P1口模拟功能寄存器
sfr ADC_RES=0xBD;  //声明 ADC转换结果寄存器
sfr ADC_CONTR=0xBC;//声明 ADC控制寄存器

sbit OUT=P5^5;//定义一个输出引脚

unsigned int L; //定义一个数据
unsigned int adc;          //AD转换计算

void Delay10us()                //@12.000MHz
{
        unsigned char i;
        _nop_();
        _nop_();//调整过
        i = 24;
        while (--i);
}

void delay_n_10us(unsigned int n)//延时n个10us的函数
{
        while(n)         
        {
                Delay10us();
                n=n-1;//每循环一次n减小1
        }
}


void main()
{
        L=150;//1.5ms高电平,舵机摆到中间
        P1ASF=0x02;  //设置P1.7引脚0x80为模拟功能
        
        while(1)
        {
                OUT=1;
                delay_n_10us(L);//输出高电平
                OUT=0;
                delay_n_10us(1900);//19ms左右低电平
               
                ADC_CONTR=0x88+1;  //开始P1.7引脚转换
                delay_n_10us(5);   //等待50us,AD转换完成
                adc=ADC_RES;  //读取转换结果
               
                L=adc; //转动旋钮,adc的值0~255变化
                //L的变化范围是100~200,所以进行一下限制
                if(L>200)L=200; //高电平时间不能超过2ms
                if(L<100)L=100; //高电平时间不能低于1ms
        }
}
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-9 17:27:11 | 显示全部楼层
//STC15W408AS 11.0592MHz QQ:1149268555
#include<reg52.h>
#include<intrins.h>
#define U8 unsigned char
#define U16 unsigned int
#define U32 unsigned long
sfr P1M0 = 0x92;
sfr P1M1 = 0x91;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
sfr P3M0 = 0xb2;
sfr P3M1 = 0xb1;


sfr P5 = 0xC8;
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr AUXR = 0x8e;
sfr T2H = 0xD6;
sfr T2L = 0xD7;


sbit led = P3^2;


sbit OUT1 = P1^2;
sbit OUT2 = P1^3;
sbit OUT3 = P1^4;
sbit OUT4 = P1^5;


bit flagTxd =0;
U8 cntRxd=0;
U8 flagRxd=0;
U8 pdata bufRxd[64];
U8 pdata Data[64];


U8 num;
U8 ch=2;
U8 ms;


void Delay05ms()//@11.0592MHz 0.5
{
unsigned char i, j;


i = 6;
j = 100;
do
{
while (--j);
} while (--i);
}


void Delay(U16 t)
{do
{ Delay05ms();
} while (--t);
}


void Delay4us()//@11.0592MHz
{
unsigned char i;
i = 14;
while (--i);
}


void delays(U8 i)
{
while(i--)
Delay4us();
}


U8 GetADC(U8 ch)
{
ADC_CONTR=0x80|0x00|ch|0x08;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR&0x10));
ADC_CONTR&=~0x10;
return ADC_RES;
}


void InitADC()
{
P1ASF=0x02;
ADC_RES=0;
ADC_CONTR=0x80|0x00;
Delay(100);
}


void UartInit(void)
{
SCON = 0x50;
AUXR |= 0x01;
AUXR |= 0x04;
T2L = 0xe8;
T2H = 0xFf;
AUXR |= 0x10;
ES = 1;
EA = 1;
}


void Timer0Init(void)//2ms @11.0592MHz
{
IP=0x10;
ET0=1;
AUXR |= 0x80;
TMOD &= 0xF0;
TL0 = 0x66;
TH0 = 0x7e;
TF0 = 0;
TR0 = 1;
}


void UartWrite(U8 *buf, U8 len)
{
while (len--)
{
flagTxd = 0;
SBUF = *buf++;
while (!flagTxd);
}
Delay(1);
}


main()
{
InitADC();
Timer0Init();

UartInit();

while(1)
{
Data[0]=GetADC(1);
if(flagRxd==1)
{
Delay05ms();
led=~led;
Data[1]=bufRxd[1];
Data[2]=bufRxd[2];
Data[3]=bufRxd[3];
UartWrite(Data,1);
flagRxd=0;
cntRxd=0;
}

}
}


void Time0()interrupt 1
{
ms++;
if(ms==12)ms=0;
switch(ms)
{
case 0:OUT1=1,Delay05ms(),delays(255-Data[0]),OUT1=0;break;
case 1:OUT2=1,Delay05ms(),delays(Data[0]),OUT2=0;break;
case 2:OUT3=1,Delay05ms(),delays(Data[0]),OUT3=0;break;
case 3:OUT4=1,Delay05ms(),delays(Data[1]),OUT4=0;break;
}

}


void InterruptUART() interrupt 4
{
if (RI)
{
RI = 0;
flagRxd=1;
if (cntRxd < sizeof(bufRxd))
{
bufRxd[cntRxd++] = SBUF;
}
}
if (TI)
{
TI = 0;
flagTxd = 1;
}
}
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-9 18:12:57 | 显示全部楼层

楼主,辛苦了。
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-17 16:54:42 | 显示全部楼层

顶顶,好帖好人
回复 支持 0 反对 1

使用道具 举报

发表于 2021-6-8 18:35:40 | 显示全部楼层
支持萝莉大神  大神辛苦了
回复 支持 0 反对 1

使用道具 举报

发表于 2021-6-18 15:20:55 | 显示全部楼层

感谢老大的无私奉献,学习中。
回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-25 15:39:55 | 显示全部楼层
顶,有一个新项目。第十四课:制作舵机测试仪  作者:htlkj2020 7786
回复 支持 1 反对 0

使用道具 举报

发表于 2021-11-19 07:20:08 来自手机 | 显示全部楼层
菜鸟路过,学习一下
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-6 15:15:47 | 显示全部楼层
舵机测试仪,学习到了!!
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-23 12:57:33 | 显示全部楼层
跟着楼主学单片机.
回复 支持 反对

使用道具 举报

发表于 2024-1-11 08:56:58 | 显示全部楼层
你所在组无法查看是啥原因
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!