找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2134|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

采用STC8G1K08A單片機模擬量采集電位器控制舵機同步轉(zhuǎn)動程序分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284341 發(fā)表于 2023-8-23 16:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
【聲明】此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息!
*********************************************************************


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

#define ADC_POWER   0x80            //ADC 電源控制位
#define ADC_FLAG    0x10            //ADC 轉(zhuǎn)換結(jié)束標(biāo)志位
#define ADC_START   0x08            //ADC 開始轉(zhuǎn)換控制位
#define ADC_SPEEDLL 0x00            //210 個時鐘周期轉(zhuǎn)換一次
#define ADC_SPEEDL  0x20            //420 個時鐘周期轉(zhuǎn)換一次
#define ADC_SPEEDH  0x40            //630 個時鐘周期轉(zhuǎn)換一次
#define ADC_SPEEDHH 0x60            //840 個時鐘周期轉(zhuǎn)換一次
/********************************************************************
                                        初始定義
*********************************************************************/
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;//脈沖計數(shù)
/********************************************************************
                                定時器T0初始化
*********************************************************************/
void timer0_init()
{
AUXR &= 0x7F;                //定時器時鐘12T模式       
TMOD &= 0xF0;                //設(shè)置定時器模式
TMOD |= 0x02;                //設(shè)置定時器模式       
//TL0 = 0x9D;                //設(shè)置定時初始值
//TH0 = 0x9D;                //設(shè)置定時重載值
        TL0 = 0xF6;                //設(shè)置定時初始值
        TH0 = 0xF6;                //設(shè)置定時重載值
TR0=1; //開始定時
ET0=1;
EA=1;
}
void InitADC()
{
ADC_RES = 0;                   //AD數(shù)據(jù)寄存器清空
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打開AD電源,轉(zhuǎn)換周期210
_nop_();                        //延時一個機器周期
_nop_();
_nop_();                        //延時一個機器周期
}
/********************************************************************
                                        主函數(shù)
*********************************************************************/
void main()
{
P3M0 = 0x0c; P3M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x10;
InitADC();           //AD初始化
ADCCFG = 0x0f;                              //設(shè)置ADC時鐘為系統(tǒng)時鐘/2/16/16
ADC_CONTR = 0x80;                           //使能ADC模塊
timer0_init();
while(1)
{
ADC_CONTR |= 0x44;                      //啟動AD轉(zhuǎn)換 選擇P5.4口
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));            //查詢ADC完成標(biāo)志
ADC_CONTR &= ~0x20;                     //清完成標(biāo)志
dat = ADC_RES;                           //讀取ADC結(jié)果高8位
//dat1=ADC_RESL;       
dat1=ADC_RES/2.5;  
//if(dat1<=1){dat1=1;}       
if(dat1>=100){dat1=100;}
dat2=dat1+100;
}

}

/********************************************************************
                                                定時器T0中斷服務(wù)函數(shù)
*********************************************************************/
void t0(void) interrupt 1 using 0 //定時中斷服務(wù)函數(shù)
{
tcnt++; //每過250ust tcnt 加一
if(tcnt==1000) //數(shù)值越大閃爍越慢 數(shù)值越小閃爍越快
{
tcnt=0;
P30=!P30;       
}       
sec++;
if(sec==100){PWM1=0;}
if(sec==dat2){PWM2=0;}
if(sec==2000){PWM1=1;PWM2=1;sec=0;}

}
//}

/********************************************************************
                                                結(jié)束
*********************************************************************/

接線圖.JPG (287.49 KB, 下載次數(shù): 99)

接線圖.JPG

STC8G1K08A PWM輸出控制舵機 模擬量調(diào)節(jié).rar

285.74 KB, 下載次數(shù): 38, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表