找回密码
 立即注册
查看: 1530|回复: 3

8G1K08A-36I-SOP8单片机模拟量采集电位器控制舵机同步转动程序设计分享

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-11-26 00:25:05

24

主题

7

回帖

256

积分

荣誉版主

积分
256
发表于 2023-8-27 11:22:30 | 显示全部楼层 |阅读模式
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************


*********************************************************************/
#include "STC8G1K08A.h"
#include <intrins.H>
#define uchar unsigned char //宏定义字符型变量
#define uint  unsigned int        //宏定义整型变量

#define ADC_POWER   0x80            //ADC 电源控制位
#define ADC_FLAG    0x10            //ADC 转换结束标志位
#define ADC_START   0x08            //ADC 开始转换控制位
#define ADC_SPEEDLL 0x00            //210 个时钟周期转换一次
#define ADC_SPEEDL  0x20            //420 个时钟周期转换一次
#define ADC_SPEEDH  0x40            //630 个时钟周期转换一次
#define ADC_SPEEDHH 0x60            //840 个时钟周期转换一次
/********************************************************************
                                        初始定义
*********************************************************************/
uint tcnt=0;
uint sec=0;
uint dat=0;
uint dat1=0;
uint dat2=0;
/********************************************************************
                                        I/O定义
*********************************************************************/
sbit PWM1=P3^2; //PWM输出端
sbit PWM2=P3^3; //PWM输出端

uchar CLK=0;//脉冲计数
/********************************************************************
                                定时器T0初始化
*********************************************************************/
void timer0_init()
{
AUXR &= 0x7F;                //定时器时钟12T模式        
TMOD &= 0xF0;                //设置定时器模式
TMOD |= 0x02;                //设置定时器模式        
//TL0 = 0x9D;                //设置定时初始值
//TH0 = 0x9D;                //设置定时重载值
        TL0 = 0xF6;                //设置定时初始值
        TH0 = 0xF6;                //设置定时重载值
TR0=1; //开始定时
ET0=1;
EA=1;
}
void InitADC()
{
ADC_RES = 0;                   //AD数据寄存器清空
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打开AD电源,转换周期210
_nop_();                        //延时一个机器周期
_nop_();
_nop_();                        //延时一个机器周期
}
/********************************************************************
                                        主函数
*********************************************************************/
void main()
{
P3M0 = 0x0c; P3M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x10;
InitADC();           //AD初始化
ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16/16
ADC_CONTR = 0x80;                           //使能ADC模块
timer0_init();
while(1)
{
ADC_CONTR |= 0x44;                      //启动AD转换 选择P5.4口
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
ADC_CONTR &= ~0x20;                     //清完成标志
dat = ADC_RES;                           //读取ADC结果高8位
//dat1=ADC_RESL;        
dat1=ADC_RES/2.5;  
//if(dat1<=1){dat1=1;}        
if(dat1>=100){dat1=100;}
dat2=dat1+100;
}

}

/********************************************************************
                                                定时器T0中断服务函数
*********************************************************************/
void t0(void) interrupt 1 using 0 //定时中断服务函数
{
tcnt++; //每过250ust tcnt 加一
if(tcnt==1000) //数值越大闪烁越慢 数值越小闪烁越快
{
tcnt=0;
P30=!P30;        
}        
sec++;
if(sec==100){PWM1=0;}
if(sec==dat2){PWM2=0;}
if(sec==2000){PWM1=1;PWM2=1;sec=0;}

}
//}

/********************************************************************
                                                结束
*********************************************************************/


接线图.JPG

STC8G1K08A PWM输出控制舵机 模拟量调节.rar

285.74 KB, 下载次数: 146

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2024-5-14 11:02:42 | 显示全部楼层
建议可以直接使用PWM波形发生器来产生PWM驱动舵机,
然后AD转换读取值和舵机角度比例换算,
省掉一个定时器的同时,还用上了更拉风的功能。
回复 支持 反对

使用道具 举报 送花

0

主题

5

回帖

62

积分

等待验证会员

积分
62
发表于 2024-9-16 23:21:30 | 显示全部楼层
再加上显示屏就好了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-04-29 07:45:37

3

主题

74

回帖

358

积分

中级会员

积分
358
发表于 2024-9-25 09:25:31 | 显示全部楼层
加一个显示屏显示当前频率,当前脉冲的宽度等,而且看起啦也很高档。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 20:18 , Processed in 0.123453 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表