您的位置 首页 培训

51单片机舵机控制程序

不记得多久没接触过程序这东东了,C++是完全忘了,因为第一个VC的helloworld是编译不出来的,虽然后来确认了是设置路径的问题。也在

不记得多久没触摸过程序这东东了,C++是彻底忘了,由于第一个VC的hello world是编译不出来的,尽管后来确认了是设置途径的问题。也在置疑自己是否从前读过大学,由于尽管知道那玩意叫微积分,但现已不知道哪个叫微分,哪个是积分了。好吧,尽管有点夸大,但肯定是不过份的!^o^ 买了个单片机开发板的确是正确的,由于那玩意的确好玩,也仍然爱好不减,由于编程的心仍然不死,觉得那东西是必需求学会并娴熟的,不然太对不住我那夭亡的第二学历了。尽管那就只差三科就过了。好吧,我得供认那是最难的也是最主要的三科:数据结构、数据库原理、信息系统开发与办理。出来也从前想过要去考的,但后来东奔西跑的仍是没去成。现在已是彻底抛弃了,也觉得没那个必要了,也不会觉得多了个本本又什么重要的了,你学会了才是重要的!所以现在观念也改变了:我学是由于我喜爱!所以这个项目也是会一向延续下去的,不论中心是否会中止,但总会春风吹又生的!
男人之于机械就比如女性之于衣服!还记得小时候自己干的坏事吧,多好的玩具总被猎奇地拆坏!好吧,尽管你现已长大了,但看到轿车仍是会不由得的喜爱,对吧,也总是会有想把它改造的激动,对吧!看到飞机模型仍是会想玩,对吧!所以想玩就玩呗,有爱好是一件美好的作业!更何况是个多么科幻和应战的爱好呢~所以,开端吧,确认你终身的方针和爱好!
好吧,这是一条绵长的路。路漫漫其修远兮,吾将上下而求索!俺在大学里最受用的是确立了一个崇奉:活到老,学到老!所以路不怕绵长!蒹葭苍苍,白露为霜。所谓伊人,在水一方!溯洄从之,道阻且长。溯游从之,宛在水中央。我将像寻求美人相同地坚韧与不拔~
但空中楼阁尽管美丽,却是建不起的,万丈高楼平地起,所以先来根底研讨,哈哈~假如你有爱好,那就一同吧,那个什么子的曰:与其独乐乐,不如与人乐乐,孰乐?这个国际需求Team,创业需求Team,研讨需求Team,连大盗也需求Team,假如你不需求Team,YOU OUT了!
单片机也买一段时刻了,挺好玩的,很根底很结壮的东西,发现是大学时期最最应该具有的玩意!但那时却并没具有过,那个恨呀!那个泪流啊~假如冬季里落在黄河上,它也就不必再干燥了~!
好了,口水多过长江水,太多了污染环境,不知长江里的白海豚是不是我害的,传闻再也找不到了~
先记载几个相关实验先~
单片机一来就刻不容缓地实验了,程序尽管不是自己写的,但C程序仍是能看得懂的,C51也就多了些关键字,研讨研讨修正修正引脚就能用上了。但单片机与硬件是密切相关的,要驱动外围硬件要扩大信号,要了解下上拉电阻的概念。舵机买的是辉盛的9克舵机,便宜货,搅扰就会动,供电得独自供电,不能和单片机共用。另供电的和单片机还得共地线,不然也是不动的。
单片机AI操练之舵机操控程序:通电舵机到中位,P1.1视点削减,P1.2添加。原程序是一接通到180度方位的,舵机的中位不太准的,没到180度就被限位了,害得我第一天就弄坏了个舵机。源程序如下,备档

#include
unsigned char count; //0.5ms次数标识
sbitpwm=P0^1 ; //PWM信号输出
sbit jia =P1^2; //视点添加按键检测IO口
sbit jan =P1^1; //视点削减按键检测IO口
unsigned char jd; //视点标识
void delay(unsigned char i)//延时
{
unsigned char j,k;
for(j=i;j>0;j–)
for(k=125;k>0;k–);
}
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0作业在方法1
IE = 0x82;
TH0 = 0xfe;
TL0 = 0x33; //11.0592MZ晶振,0.5ms
TR0=1; //定时器开端
}
void Time0_Int() interrupt 1 //中止程序
{
TH0 = 0xfe; //从头赋值
TL0 = 0x33;
if(count< jd) //判别0.5ms次数是否小于视点标识
pwm=1; //的确小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
count=(count+1); //0.5ms次数加1
count=count%40; //次数始终坚持为40 即坚持周期为20ms
}
void keyscan() //按键扫描
{
if(jia==0) //视点添加按键是否按下
{
delay(10); //按下延时,消抖
if(jia==0) //的确按下
{
jd++; //视点标识加1
count=0; //按键按下 则20ms周期重新开端
if(jd==6)
jd=5; //现已是180度,则坚持
while(jia==0); //等候按键铺开
}
}
if(jan==0) //视点减小按键是否按下
{
delay(10);
if(jan==0)
{
jd–; //视点标识减1
count=0;
if(jd==0)
jd=1; //现已是0度,则坚持
while(jan==0);
}
}
}
void main()
{
jd=3;
count=0;
Time0_Init();
while(1)
{
keyscan(); //按键扫描

}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/253992.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部