資源簡介
現在有關舵機控制的51程序很多,大多數經本人測試會出現抖舵、控制不靈敏的問題。不知道是不是操作不當還是怎么樣。經過多次試驗,我特編寫了這個四路的串口舵機控制裝置。想再多加幾路的話我想不用我細說,大家看了就明白。里面有仿真圖。這個里面有兩個單片機源碼。上位機可根據你的需要來編寫控制代碼,里面只有一些可用于避免傳輸誤碼而設置的驗證重發部分代碼。

代碼片段和文件信息
#include
#define?uchar?unsigned?char
//***************用于存儲輸入信息的數組和數組的序號********
uchar?Input[10]?=?{“!!!!!!!!!!“};
uchar?Input_num?=?0; ???//輸入數據的位號
bit???InputOver =?0; ???//輸入結束標志位
uchar?angle[]
//****************串口初始化程序**********************
void?com_init()
{
IE =?0x00; //停止所有中斷
TMOD=?0x22; //設置定時器0和1為方式2,自動可重裝8位定時器
SCON=?0x50; //設置串口控制寄存器,串口方式110位uart,波特率可調;允許接收
TH1 =?TL1?=?0xfa; //為定時器1賦初值,晶振為22.1184MHz時波特率為9600bps
IE =?0x98; //開定時器1中斷、串口中斷和總中斷;
TR1 =?1; //定時器1開始計時
}
//****************中斷初始化程序**********************
void?INT0_init()
{
TH0 =?TL0?=?0xfa; //為定時器0賦初值,晶振為22.1184MHz時
ET0 =?1; //開定時器0中斷;
TR0 =?1; //定時器0開始計時
}
//****************輸入數據的處理函數********************
void?INPUT_transfer()
{
?if(InputOver)
?{
? while(Input[Input_num?+?1]!=)
?}
?Input_num?=?0;
}
//****************串口服務函數**************************
void?Com_In()????interrupt?4
{
RI?=?0; //清零串口計數以連續輸入
Input[Input_num]?=?SBUF?; //計算計數目標數
Input_num++?; //序號積累
if(SBUF==‘!‘) //輸入的有效結束標志為‘!’
{
InputOver?=?1; //輸入已結束
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-03-05?10:03??串口舵機控制器\
?????文件???????97300??2011-02-03?18:43??串口舵機控制器\Last?Loaded?串口舵機控制器.DBK
?????文件????????1347??2011-02-09?17:31??串口舵機控制器\串口舵機控制器.c
?????文件???????97300??2011-02-05?17:45??串口舵機控制器\串口舵機控制器.DSN
?????文件?????????174??2011-02-10?11:51??串口舵機控制器\串口舵機控制器.plg
?????文件?????????742??2011-02-05?17:45??串口舵機控制器\串口舵機控制器.PWI
?????文件???????44928??2011-02-09?17:31??串口舵機控制器\串口舵機控制器.uvopt
?????文件???????13284??2011-02-03?18:58??串口舵機控制器\串口舵機控制器.uvproj
?????文件???????44928??2011-02-03?18:58??串口舵機控制器\串口舵機控制器_uvopt.bak
?????文件???????????0??2011-02-03?18:44??串口舵機控制器\串口舵機控制器_uvproj.bak
- 上一篇:廣義霍夫變換的詳細介紹
- 下一篇:織夢5.6添加自動排版插件
評論
共有 條評論