找回密码
 立即注册
查看: 694|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2024-3-29 12:03
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    24

    主题

    6

    回帖

    247

    积分

    荣誉版主

    积分
    247
    发表于 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, 下载次数: 42

    回复 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-29 00:58 , Processed in 0.053258 second(s), 32 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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