找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3060|回复: 1
打印 上一主题 下一主题
收起左侧

STM32舵机多路超声波源码 OLED显示

[复制链接]
跳转到指定楼层
楼主
ID:259675 发表于 2017-12-10 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在下新手,如有错误,请大佬批评指正

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "timer.h"
  5. #include "wave.h"
  6. #include "sys.h"
  7. #include "pwm.h"
  8. #include "oled.h"
  9. int main(void)
  10. {       
  11.         u8 s=0;
  12.         u16 led0pwmval=0;   
  13.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  14.         uart_init(115200);         //串口初始化为115200
  15.         delay_init();                     //延时函数初始化          
  16.         LED_Init();                          //初始化与LED连接的硬件接口
  17.         TIM1_PWM_Init(1439,999);//不分频。PWM频率=72000/(899+1)=80Khz
  18.         Timer_SRD_Init(5000,7199);
  19.         UltrasonicWave_Configuration();
  20.         OLED_Init();
  21.            while(1)
  22.         {
  23.                 switch (s)
  24.                  {
  25.                          case 0:         UltrasonicWave_StartMeasure_0();
  26.                                                                 delay_ms(100);s=1;break;
  27.                          case 1:        UltrasonicWave_StartMeasure_1();
  28.                                                                 delay_ms(100);s=2;break;
  29.                          case 2:         UltrasonicWave_StartMeasure_2();
  30.                                                                 delay_ms(100);s=0;break;
  31.                         default:  s=0; break;
  32.                  }   
  33.                
  34.                
  35.            if(a==1)
  36.                         {
  37.                                 OLED_Clear();
  38.                                 OLED_ShowCHinese(0,0,0);//"哥"
  39.                                 OLED_ShowCHinese(0,3,1);//"这"
  40.                                 OLED_ShowCHinese(18,3,2);//"有"
  41.                                 OLED_ShowCHinese(36,3,3);//'人"
  42.                                 OLED_ShowString(72,3,"->");//"->"
  43.                                 OLED_ShowNum(88,3,1,3,16);
  44.                                
  45.                           LED1=!LED1;
  46.                                 led0pwmval=37;                        
  47.                                 TIM_SetCompare1(TIM1,led0pwmval);                      //90度
  48.                                 a=0;
  49.                         }
  50.                         else if(b==1)
  51.                         {               
  52.                                
  53.                                 OLED_Clear();
  54.                                 OLED_ShowCHinese(0,0,0);//"哥"
  55.                                 OLED_ShowCHinese(0,3,1);//"这"
  56.                                 OLED_ShowCHinese(18,3,2);//"有"
  57.                                 OLED_ShowCHinese(36,3,3);//'人"
  58.                                 OLED_ShowString(72,3,"->");//"->"
  59.                                 OLED_ShowNum(88,3,2,3,16);
  60.                                
  61.                                 led0pwmval=180;                        
  62.                                 TIM_SetCompare1(TIM1,led0pwmval);  
  63.                                 b=0;
  64.                                 LED0=!LED0;
  65.                         }
  66.                         else if(c==1)
  67.                         {
  68.                                 OLED_Clear();
  69.                                 OLED_ShowCHinese(0,0,0);//"哥"
  70.                                 OLED_ShowCHinese(0,3,1);//"这"
  71.                                 OLED_ShowCHinese(18,3,2);//"有"
  72.                                 OLED_ShowCHinese(36,3,3);//'人"
  73.                                 OLED_ShowString(72,3,"->");//"->"
  74.                                 OLED_ShowNum(88,3,3,3,16);
  75.                                
  76.                                
  77.                                 LED0=1;
  78.                                 LED1=1;       
  79.                                 delay_ms(500);
  80.                                 LED0=0;
  81.                                 LED1=0;       
  82.                                 c=0;
  83.                         }
  84.                         else if((a!=1)&&(b!=1)&&(c!=1))
  85.                         {

  86.                                 OLED_Clear();
  87.                                 OLED_ShowCHinese(0,0,0);//"哥"
  88.                                 OLED_ShowCHinese(0,3,1);//"这"
  89.                                 OLED_ShowCHinese(18,3,4);//"没"
  90.                                 OLED_ShowCHinese(36,3,3);//'人"
  91.                                
  92.                                 led0pwmval=93;
  93.                                 TIM_SetCompare1(TIM1,led0pwmval);                  //0度,延时1s
  94.                         }
  95.         }
  96. }


复制代码

所有资料51hei提供下载:
超声波模块程序外中断3路 终极版.rar (334.27 KB, 下载次数: 73)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:434958 发表于 2018-11-28 20:15 | 只看该作者
有原理图吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表