这几天比赛准备的,结果没用上,哎
所有资料51hei提供下载:
电机综合.rar
(311.98 KB, 下载次数: 172)
单片机源程序如下:
- //////////////////////////////////////////////////////////////////////////////////
- //本程序只供学习使用,未经作者许可,不得用于其它任何用途
- //中景园电子
- //
- // 文 件 名 : 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);
- }
-
- }
- }
复制代码
|