标题:
直流电机+编码器+oled显示stm32程序
[打印本页]
作者:
gyc2492
时间:
2017-8-9 21:34
标题:
直流电机+编码器+oled显示stm32程序
这几天比赛准备的,结果没用上,哎
所有资料51hei提供下载:
电机综合.rar
(311.98 KB, 下载次数: 172)
2017-8-10 18:39 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序如下:
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//中景园电子
//
// 文 件 名 : main.c
// 版 本 号 : v2.0
// 作 者 : HuangKai
// 生成日期 : 0101
// 最近修改 :
// 功能描述 : OLED 4接口演示例程(51系列)
// 说明:
// ----------------------------------------------------------------
// GND 电源地
// VCC 接5V或3.3v电源
// D0 接PD6(SCL)
// D1 接PD7(SDA)
// RES 接PD4
// DC 接PD5
// CS 接PD3
// ----------------------------------------------------------------
// 修改历史 :
// 日 期 :
// 作 者 : HuangKai
// 修改内容 : 创建文件
//版权所有,盗版必究。
//Copyright(C) 中景园电子2014/3/16
//All rights reserved
//******************************************************************************/
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
#include "timer.h"
#include "encoder.h"
#include "PID.h"
#include "usart.h"
u16 speed;
u16 pwm1=0,pwm2=4999,pwm3=4999,pwm4=0;
int main(void)
{
u16 len,t;
char shujv[]="page jisuanji";
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
TIM4_PWM_Init(4999,719);
// TIM3_Int_Init(4999,7199);
uart2_init(9600); //串口初始化为115200
uart1_init(9600); //串口初始化为115200
Encoder_Init_TIM2();
OLED_Init(); //初始化OLED
OLED_Clear();
// OLED_ShowCHinese(0,0,0);
// OLED_ShowCHinese(18,0,1);
// OLED_ShowCHinese(36,0,2);
// OLED_ShowCHinese(54,0,3);
// OLED_ShowCHinese(72,0,4);
// OLED_ShowCHinese(90,0,5);
// OLED_ShowCHinese(108,0,6);
TIM3_Int_Init(99,7199);
OLED_ShowString(0,2,"IN1:");
OLED_ShowString(63,2,"IN2:");
OLED_ShowString(0,4,"IN3:");
OLED_ShowString(63,4,"IN4:");
OLED_ShowCHinese(0,6,7);//转
OLED_ShowCHinese(18,6,8);//速
OLED_ShowString(32,6,":");
// while(1)
{
// printf("t0.txt=\"%d\"%c%c%c",99,0XFF,0XFF,0XFF); //发送数据
//
for(t=0;t<13;t++)
{
USART_SendData(USART2, shujv[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
}
for(t=0;t<2;t++)
{
USART_SendData(USART2, 0x0d);//向串口1发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
USART_SendData(USART2, 0x0a);//向串口1发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
}
// printf("page main:\r\n\r\n");
PWM1_OUT(pwm1);
PWM2_OUT(pwm2);
PWM3_OUT(pwm3);
PWM4_OUT(pwm4);
if(USART1_RX_STA&0x8000)
{
// OLED_ShowChar(120,0,'a');
len=USART1_RX_STA&0x3fff;//得到此次接收到的数据长度
// printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
OLED_ShowChar(t*9,0,USART1_RX_BUF[t]);
// USART_SendData(USART2, USART1_RX_BUF[t]);//向串口1发送数据
// while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待发送结束
}
// printf("\r\n\r\n");//插入换行
USART1_RX_STA=0;
}
//
OLED_ShowNum(28,2,pwm1,4,16);
OLED_ShowNum(90,2,pwm2,4,16);
OLED_ShowNum(28,4,pwm3,4,16);
OLED_ShowNum(90,4,pwm4,4,16);
if(speed>32768)
{
OLED_ShowString(36,6,"-");
OLED_ShowNum(45,6,(65535-speed)/3,4,16);
}
else
{
OLED_ShowString(36,6," ");
OLED_ShowNum(45,6,speed/3,4,16);
}
}
}
复制代码
作者:
gyc2492
时间:
2017-8-9 21:35
大家仅供参考啊
作者:
gm388
时间:
2017-8-25 15:27
这个是用来干什么的?
作者:
popo321
时间:
2020-4-30 10:46
谢谢分享,学习中。
作者:
yayalyao
时间:
2020-5-1 12:25
多谢分享
作者:
浅试即止
时间:
2020-5-1 18:40
用的什么单片机,还有什么用途啊
作者:
frode
时间:
2020-5-2 09:09
先看看,谢谢了
作者:
welssss
时间:
2020-5-2 11:57
谢谢分享
作者:
mick32
时间:
2022-4-6 00:22
Schematic is missing from project ?
Very difficult to follow...
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1