久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
51單片機(jī)通過編碼器脈沖值控制小車行駛距離 源程序
[打印本頁]
作者:
blinker
時間:
2019-8-6 20:02
標(biāo)題:
51單片機(jī)通過編碼器脈沖值控制小車行駛距離 源程序
大一時使用51單片機(jī)進(jìn)行控制小車走過的距離,現(xiàn)整理一下發(fā)個帖子湊一下黑幣,不喜輕噴。。
主要思路是利用單片機(jī)的外部中斷來讀出編碼器脈沖值,進(jìn)而通過獲得的脈沖值來控制行駛距離。
首先利用外部中斷測得車輪轉(zhuǎn)一圈獲得的脈沖,并測出車輪一圈長度。再利用以上思路便能得出距離從而控制。
在控制小車轉(zhuǎn)過的角度時基本也是以上思路。
單片機(jī)源程序如下:
#include "reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef unsigned int u16;
typedef unsigned char u8;
u16 Encodercout=0;//輪子轉(zhuǎn)一圈大概產(chǎn)生270個脈沖,輪子周長為154mm,走過30度產(chǎn)生58個脈沖
u16 wheelcount=0;
u16 distance=1000;//定義變量為行駛距離,單位為mm
u16 time=0; // 定義占空比的變量
sbit PWM1=P2^0; //P2.0輸出右輪pwm
sbit PWM2=P2^1; //輸出左輪pwm 右輪較快
sbit motorl1=P2^2;
sbit motorl2=P2^3;//右輪
sbit motorr1=P2^4;
sbit motorr2=P2^5;//左輪
void motor();
//void delay(u16 a)
//{
// while(a--);
//}
void Int0Init()
{
//設(shè)置INT0
IT0=1;//跳變沿出發(fā)方式(下降沿)
EX0=1;//打開INT0的中斷允許。
EA=1;//打開總中斷
}
void TimeInt()
{
TMOD=0x01;//定時器0工作方式1
TH0=0xfc;//(65536-10)/256;//賦初值定時
TL0=0x18;//(65536-10)%256;//1ms
EA=1;//開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
}
//void UsartInit()
//{
// SCON=0X50; //設(shè)置為工作方式1
// TMOD=0X20; //設(shè)置計數(shù)器工作方式2
// PCON=0X80; //波特率加倍
// TH1=0XF3; //計數(shù)器初始值設(shè)置,注意波特率是4800的
// TL1=0XF3;
// ES=1; //打開接收中斷
// EA=1; //打開總中斷
// TR1=1; //打開計數(shù)器
//}
//void Usart() interrupt 4
//{
// u8 receivedata;
// receivedata=SBUF;//接收寄存器
// RI=0; //接受位清零
// SBUF = Encodercout; //發(fā)送寄存器
// while(!TI); // 等待發(fā)送完成
// TI=0; //發(fā)送位清零
// receivedata = 0;
//}
void main()
{
while(1)
{
Int0Init();
// UsartInit();
TimeInt();
if(wheelcount<=(distance/154))
{
motor();
}
else if(Encodercout<=(distance%154)/154*270)
{
motor();
}
else
{
motorl1=0;
motorr1=0;
}
}
}
void motor()
{
motorl1=1;
motorl2=0;
motorr1=1;
motorr2=0;
}
void tim0() interrupt 1
{
TH0=0xfc;//(65536-10)/256;//賦初值定時
TL0=0x18;//(65536-10)%256;1ms
time++;
if(time>=100)
time=0;
else if(time<=50) //輪占空比%30,可改 21:28
{
PWM1=1;
PWM2=0;
}
else if(time>50&time<=99)
{PWM1=0;
PWM2=1;
}//左輪占空比
else if(time>99&time<100)
{
PWM1=0;
PWM2=0;
}
}
void Int0() interrupt 0 //外部中斷0的中斷函數(shù)
{
if(Encodercout>=270)
{
Encodercout=1;
Encodercout++;
wheelcount++;
}
else
{
Encodercout++;
}
}
復(fù)制代碼
作者:
a5a5a5ss
時間:
2019-10-16 18:54
為什么程序里有一部分內(nèi)容加//隱藏掉了?
作者:
快樂眼淚
時間:
2023-8-30 22:06
謝謝樓主分享!先收藏了有時間研究一下!
作者:
xingzhe8
時間:
2023-8-31 07:44
a5a5a5ss 發(fā)表于 2019-10-16 18:54
為什么程序里有一部分內(nèi)容加//隱藏掉了?
那是串口函數(shù) 因為用不到
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
av一二三区
|
亚洲www啪成人一区二区麻豆
|
黄色国产视频
|
久久精品久久久精品美女
|
日韩在线免费视频
|
日韩视频一区二区三区
|
欧美黄色网
|
九九色影院
|
国产在线黄色
|
欧美日韩国产激情
|
亚洲精品综合
|
视频一区在线观看
|
欧美亚洲在线观看
|
日本三级大片
|
少妇久久久
|
国产黄a三级三级三级看三级男男
|
黄色影院在线观看
|
a视频在线观看
|
一级做a视频
|
成人精品在线
|
亚洲精品久久久
|
成人aaa
|
性做久久久久久久免费看
|
国产精品一区二区三区四区
|
亚洲国产成人精品女人
|
黄色免费小视频
|
五月天色综合
|
日韩在线免费观看视频
|
av大全在线观看
|
中文字幕自拍
|
欧美一区二区在线播放
|
天天干夜夜草
|
一区二区三区在线播放
|
91看片在线观看
|
国产精品一区二区三区免费
|
麻豆视频国产
|
午夜爽爽影院
|
伊人久久艹
|
国产日韩欧美
|
青青操影院
|
人人干人人澡
|