找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于STC15F单片机的太阳能版追光系统程序与原理图PCB

  [复制链接]
跳转到指定楼层
#
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


以下为主函数内容:
  1. #include "GPIO.h"
  2. #include "usart.h"
  3. #include "config.h"
  4. #include "adc.h"
  5. #include "delay.h"

  6. #define Mz P24 //左转电机端口
  7. #define Mf P25 //右转电机端口
  8. #define LED1  P20 //左转LED灯控制端口
  9. #define LED2  P21 //右转LED灯控制端口
  10. #define P1n_pure_input(bitn)                P1M1 |=  (bitn),        P1M0 &= ~(bitn)


  11. u16 ADC1=0,ADC2=0;


  12. void GPIO_Init_init()                  //GPIO初始化设置
  13. {
  14.          GPIO_InitTypeDef GPIO_Init;
  15.          GPIO_Init.Mode = GPIO_OUT_PP;
  16.          GPIO_Init.Pin = P30|P31;
  17.          GPIO_Inilize(GPIO_P3, &GPIO_Init);

  18.          GPIO_Init.Mode = GPIO_OUT_PP;
  19.          GPIO_Init.Pin = P20|P21;
  20.          GPIO_Inilize(GPIO_P2, &GPIO_Init);
  21. }


  22. void COM1_Init()                                        //串口1初始化设置
  23. {
  24.         COMx_InitDefine COM1_InitDefine;
  25.         COM1_InitDefine.UART_Mode = UART_8bit_BRTx;                        //模式,         UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
  26.         COM1_InitDefine.UART_BRT_Use = BRT_Timer2;                //使用波特率,   BRT_Timer1,BRT_Timer2
  27.         COM1_InitDefine.UART_BaudRate = 115200ul;                //波特率,       ENABLE,DISABLE
  28.         COM1_InitDefine.Morecommunicate = DISABLE;        //多机通讯允许, ENABLE,DISABLE
  29.         COM1_InitDefine.UART_RxEnable = ENABLE;                //允许接收,   ENABLE,DISABLE
  30.         COM1_InitDefine.BaudRateDouble = ENABLE;                //波特率加倍, ENABLE,DISABLE
  31.         COM1_InitDefine.UART_Interrupt = ENABLE;                //中断控制,   ENABLE,DISABLE
  32.         COM1_InitDefine.UART_Polity = PolityHigh;                //优先级,     PolityLow,PolityHigh
  33.         COM1_InitDefine.UART_P_SW = UART1_SW_P30_P31;                        //切换端口,   UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17(必须使用内部时钟)
  34.         COM1_InitDefine.UART_RXD_TXD_Short = DISABLE;        //内部短路RXD与TXD, 做中继, ENABLE,DISABLE
  35.         USART_Configuration(USART1, &COM1_InitDefine);
  36.         //PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n");        //SUART1发送一个字符串
  37. }


  38. void ADC_Init()                                           //ADC10-11初始化
  39. {
  40.         ADC_InitTypeDef ADC_InitType;
  41.         ADC_InitType.ADC_Px = ADC_P10|ADC_P11;                        //设置要做ADC的IO,        ADC_P10 ~ ADC_P17,ADC_P1_All
  42.         ADC_InitType.ADC_Speed = ADC_180T;                //ADC速度                        ADC_90T,ADC_180T,ADC_360T,ADC_540T
  43.         ADC_InitType.ADC_Power = ENABLE;                //ADC功率允许/关闭        ENABLE,DISABLE
  44.         ADC_InitType.ADC_AdjResult = ADC_RES_H8L2;        //ADC结果调整,        ADC_RES_H2L8,ADC_RES_H8L2
  45.         ADC_InitType.ADC_Polity = PolityHigh;                //优先级设置        PolityHigh,PolityLow
  46.         ADC_InitType.ADC_Interrupt = DISABLE;        //中断允许                ENABLE,DISABLE
  47.         ADC_Inilize(&ADC_InitType);
  48.         P1n_pure_input(0x03);
  49. }



  50. void main()
  51. {
  52.         u8 i = 0;
  53.         Mz = Mf = 1;
  54.         GPIO_Init_init(); //GPIO初始化
  55.         COM1_Init(); //串口初始化
  56.         ADC_Init(); //ADC初始化
  57.         ADC_PowerControl(ENABLE); //使能内部工作电源ADC
  58.         EA = 1;                //打开总中断
  59.         while(1)
  60.         {
  61.                 delay_ms(10);
  62.                 ADC1 = Get_ADC10bitResult(ADC_CH0)/10;         //读ADC0值;除以误差系数10
  63.                 ADC2 = Get_ADC10bitResult(ADC_CH1)/10;         //读ADC1值;除以误差系数10
  64. //                TX1_write2buff(ADC1);
  65.                 if(ADC1 == 1024 || ADC2 == 1024)
  66.                 {
  67.                         PrintString1("1024\r\n");
  68.                         continue;
  69.                 }
  70.                 if(ADC1 > ADC2)
  71.                 {        
  72.                         if(i == 2)
  73.                         {
  74.                                 Mz = 1;
  75.                                 Mf = 1;
  76.                                 delay_ms(200);
  77.                                 i = 1;
  78.                         }        
  79.                         Mz = 0;
  80.                         Mf = 1;
  81.                         LED1 = 0;
  82.                         LED2 = 1;
  83.                         PrintString1("左侧\r\n");
  84.                 }        
  85.                 else if(ADC1 < ADC2)
  86.                 {  
  87.                         if(i == 1)
  88.                         {
  89.                                 Mz = 1;
  90.                                 Mf = 1;
  91.                                 delay_ms(200);
  92.                                 i = 2;
  93.                         }
  94.                         PrintString1("右侧\r\n");
  95.                         Mz = 1;
  96.                         Mf = 0;
  97.                         LED1 = 1;
  98.                         LED2 = 0;
  99.                         
  100.                 }
  101.                 else
  102.                 {  
  103.                         if(i != 0)
  104.                         {
  105.                                 Mz = 1;
  106.                                 Mf = 1;
  107.                                 delay_ms(200);
  108.                                 i = 0;
  109.                         }        
  110.                         Mz = 1;
  111.                         Mf = 1;
  112.                         LED1 = 1;
  113.                         LED2 = 1;
  114.                         PrintString1(".");
  115.                 }
  116.                
  117.         }        
  118. }
复制代码

全部资料51hei下载地址(程序+PCB+原理图):
PCB工程文件.7z (3.91 MB, 下载次数: 123)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

板凳
ID:438843 发表于 2022-5-15 13:00 | 只看该作者
PCB 只画了单轴输出
回复

使用道具 举报

沙发
ID:971300 发表于 2022-3-1 16:48 来自手机 | 只看该作者
芯片用的是啥
回复

使用道具 举报

楼主
ID:865245 发表于 2021-6-18 19:03 | 只看该作者
这个有一百个元器件吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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