前阵子刷手游,一直要点击屏幕,刚好手上有个sg90舵机,就简单做一个触控手机屏幕的小制作。

效果如图:

因为之前没用过舵机,上网搜索了一下,发现文章比较少,参考了这博客,写了个最简单的来回摆角程序。

http://blog.csdn.net/zxnsirius/article/details/51002580

一、先看舵机和接线

 

二、关于PWM的知识这里不多说

占空比 = t / T 相关参数如下:

t = 0.5ms——————-舵机会转动 0 ° 
t = 1.0ms——————-舵机会转动 45°
t = 1.5ms——————-舵机会转动 90°
t = 2.0ms——————-舵机会转动 135°
t = 2.5ms——————-舵机会转动180

单片机程序要做的就是,使用定时器0定时周期T = 20ms;I/O管脚输出高电平,时间t在0.5ms-2.5ms之间的一个方波。

#include <reg52.h>sbit SEV_PWM = P1^4;  //设定PWM输出的I/O端口
unsigned char count = 0;
unsigned char SEV_conut =8;
sbit K6=P1^5;//设置两个按键,代表抬起和按下。根据实际硬件资源编写。
sbit K7=P1^6;sbit LED=P0^7;/*延时程序*/
void Delay(unsigned int s)
{unsigned int i;for(i=0; i<s; i++);for(i=0; i<s; i++);
}/*定时器T0初始化*/
void Com_Init()
{TMOD &= 0x00;TMOD |= 0x01; //定时器T0设置成方式1TH0 = 0xff;   //定时常数 0.1ms 晶振为11.0592MHzTL0 = 0xa4;ET0 = 1;      TR0 = 1; EA=1; }/*T0中断初始化*/
void Time0_Init() interrupt 1
{TR0 = 0; TH0 = 0xff; //重装时间常数 0.1msTL0 = 0xa4;if(count <= SEV_conut) //5==0° 10==90°{ SEV_PWM = 1; }else { SEV_PWM = 0; }count++;if (count >= 200) //T = 20ms清零{ count = 0; }TR0 = 1; //开启T0
}
void main()
{Com_Init();while(1){if(K6==0){SEV_conut =5;//5代表0.5mscount=0;}if(K7==0){SEV_conut =8;count=0;}SEV_conut =5;//舵机恢复到0°的位置count=0;//让定时器重新计数Delay(100000);//约延时2sSEV_conut =8;//8这个值是作者调试的角度,得到现象是触控笔向下按压屏幕count=0;Delay(100000);//延时函数写得不好,读者可改写。}
}

实际测试发现,有时定时器计数不够准确,要精确调节特定角度,需要结合自身的单片机和舵机,调试上述程序中SEV_count的参数,确定舵机实际转了多少度。

gif中演示只是触控效果,要达到精确跳一跳,要加入算法,可以是图像识别,或是图案距离检测。

日后有时间再搞搞,有问题可交流。吐槽CSDN的编写博客页面好麻烦,写作体验极差(┬_┬)



盛辉SG90舵机 51单片机PWM控制程序 手机屏幕触控相关推荐

  1. 51单片机PWM调速风扇转速显示转速设置

    实践制作DIY- GC0029-PWM调速风扇 一.功能说明: 基于51单片机设计-PWM调速风扇 二.功能介绍: STC89C52单片机(AT89C52)+5V4线PWM风扇+LCD1602显示器+ ...

  2. 基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298M芯片控制直流电机正反运转的项目

    基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的项目 一.前言 1.基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的 ...

  3. 51单片机PWM温控风扇定时关闭手动自动DS18B20测温LCD1602显示

    实践制作DIY- GC0018-PWM温控风扇 一.功能说明: 基于51单片机设计-PWM温控风扇 功能介绍: 1. STC89C52单片机 +LCD1602 +多个按键+风扇+风扇驱动电路+DS18 ...

  4. 51单片机 PWM 直流电机调速+Proteus仿真

    51单片机 PWM 电机调速+Proteus仿真 Proteus仿真 实例代码 /*用PWM控制电机脉冲频率应控制在25HZ-35HZ之间*//*定时1ms,1个周期30ms,脉冲频率为33HZ */ ...

  5. 51单片机 PWM LED灯亮度调节+Proteus仿真

    51单片机 PWM LED灯亮度调节+Proteus仿真 Proteus仿真 实例代码 #include "reg51.h" unsigned int cd,dd; unsigne ...

  6. 51单片机IIC 12864 OLED屏幕滚动显示仿真

    51单片机IIC 12864 OLED屏幕滚动显示仿真 程序代码接着前面文章<STC15W408AS单片机IIC驱动0.96寸OLED显示> 这里不再贴出代码了,前面有一篇有实物效果演示, ...

  7. 51单片机—— PWM、呼吸灯

    51单片机通过定时器0产生 20ms/50HZ 的可调节 PWM 小灯的有效显示应该是50hz,所以周期是20ms 频率过小显示比较暗,频率过大不好调节 定时器0,16位自动重装载值,定时长度200u ...

  8. 1.基于51单片机的蓝牙手机遥控小车

    第一节  基于51单片机控制的蓝牙遥控小车 51控制的蓝牙遥控小车是楼主大一刚开始接触单片机时DIY的项目,时间大概是2016年的6月,现在已经是19年的5月底,借毕业前有闲时间写一下之前自己做过得种 ...

  9. 51单片机+ESP8266实现手机控制单片机(点亮LED灯)

    固件的烧写 既然要使用WiFi模块,那首先要进行固件的烧写 已经烧写好固件的可以直接跳过看模块的初始化 WiFi模块使用的是自带CH340驱动的NodeMCU开发板 固件烧录工具采用固件烧写\flas ...

最新文章

  1. python并发入门(part5 event对象)
  2. OpenGL之仿“天体”运动渲染球体之间的旋转效果
  3. Flink 时间语义与水位线(Watermarks)
  4. C#中DateTime的缺陷与代替品DateTimeOffset
  5. LeetCode 212. 单词搜索 II(Trie树+DFS)
  6. jconsole 里的线程编号一直在增加_第三章_运行时数据区概述及线程
  7. 麦步手表编程纪实(1)
  8. 软件测试基础:自动化测试、安全测试、性能测试
  9. c# 打印 html,c# – 使用模板打印
  10. 自动化 c语言学不会,为什么那么多人学不会PLC自动化编程?
  11. Frsky X9D Plus遥控器和 Frisky R8 Pro接收机对频
  12. UVM基本介绍(UVM class hierarchy、验证平台、树状图)
  13. 恶意.NET安全攻防(一):使用ETW隐藏你的.NET
  14. 将word文档中所有文本框中的内容转换成普通段落
  15. cortex-M3/cortex-M4架构
  16. Spring AOP源码分析十
  17. C#课程设计:《猜猜看》游戏开发总结
  18. php predis password,‘Predis.php’-WordPress怎么用第三方带密码Redis数据库加速?
  19. jsp成绩分析管理系统myeclipse编程java语言sqlserver数据库
  20. cocos2dx基础篇(19)——音乐音效SimpleAudioEngine

热门文章

  1. 在接下来的几周,Mt.gox可能会上演一出好戏
  2. To Be Better |这个冬天,与CDA一起游学北卡罗莱纳州立大学(NCSU)
  3. 如何做一名主程之Unity3D网络游戏服务器架构设计
  4. 马哥linux培训python
  5. 程序猿之歌 PHP,程序员之歌:一人我编程累
  6. 《C#零基础入门之百识百例》(五十二)封装介绍 -- 二维多项式求值
  7. idea安装plantuml插件画流程图
  8. python实现简单的图片文字识别脚本
  9. 操作系统面试问题集锦
  10. js设置input输入框为必选输入框,判断空格或null值