结构体仿真测试

 

 

/***结构体仿真测试*L45 CODE 3583*****/
/***2018 4 28 09:00 PAST*       *****/
              #include   "reg52.h"
              #include       <intrins.h>
              #include<stdio.h>
              #define    uint unsigned int 
              #define    uchar unsigned char
              typedef struct stu
              {
              char name[30];
              char sex;
              int age;
              double score;
              }STU;
              void  main()
              {
               STU X[4]={
               {"LiPin",'M',18,80},
               {"LinYi",'M',19,85},
               {"SunDan",'W',18,90},
               {"WuLi",'W',18,70}
              };
              double max_s;
              int i,max_n;
              max_s=X[0].score;//结构体成员的应用
              max_n=0;
              TMOD|=0x20;
              TH1=0xF3;
              TR1=0x1;
              TI=1;
              for(i=1;i<4;i++)
              {
               if(X[i].score>max_s)
               {
               max_s=X[i].score;
               max_n=i;
               }
               }
              printf("最高分为 :%f\n",max_s);
              printf("最高分的学生信息 :");
              printf("姓 名 :%s\n",X[max_n].name);
              printf("性 别 :%c\n",X[max_n].sex);
              printf("年 龄 :%d\n",X[max_n].age);
              printf("成 绩 :%f\n",X[max_n].score);
              }

 

 

/***STM32结构体类型仿真打印输出测试***/
/***2020  2 20 PAST*****************/
              #include "sys.h"
              #include "usart.h"        
              #include "delay.h"    
              #include "led.h" 
              #include "key.h" 
                            #include <math.h>
              #include <string.h>
                            u8       set1,set2;                                   //
                            struct   PID
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PID spid;                                    //PID Control Structurea,spidb,spidc,spidd
                            void PIDInit(struct PID *pp)
              {
                memset(pp,0,sizeof(struct PID));                    //用参数0初始化pp
              }
                            u16 PIDCalc( struct PID *pp, unsigned int NextPoint ) //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
              int main(void)
              {            
                 Stm32_Clock_Init(9);                                 //系统时钟设置
                 delay_init(72);                                        //延时初始化 
                 uart_init(72,9600);                                    //串口初始化为9600
                 LED_Init();                                                //初始化与LED连接的硬件接口    
               while(1)
                 {
                                PIDInit(&spid);                                     //Initialize Structure
                spid.Proportion= 10;                                //Set PID Coefficients
                spid.Integral = 8;
                spid.Derivative =6;
                spid.SetPoint =100;                                 //Set PID Setpoint
               }
              }

 

 

/***STM32结构体类型仿真打印输出测试***/
/***2020  2 20 PAST*****************/
              #include "sys.h"
              #include "usart.h"        
              #include "delay.h"    
              #include "led.h" 
              #include "key.h" 
                            #include <math.h>
              #include <string.h>
                            u8       set1,set2;                                   //
                            struct   PIDA
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PIDA spida;                                    //PID Control Structurea,spidb,spidc,spidd
                            void PIDAInit(struct PIDA *pp)
              {
                memset(pp,0,sizeof(struct PIDA));                    //用参数0初始化pp
              }
                            u16 PIDACalc( struct PIDA *pp, unsigned int NextPoint ) //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
              int main(void)
              {            
                 Stm32_Clock_Init(9);                                 //系统时钟设置
                 delay_init(72);                                        //延时初始化 
                 uart_init(72,9600);                                    //串口初始化为9600
                 LED_Init();                                                //初始化与LED连接的硬件接口    
               while(1)
                 {
                                PIDAInit(&spida);                                     //Initialize Structure
                spida.Proportion= 10;                                //Set PID Coefficients
                spida.Integral = 8;
                spida.Derivative =6;
                spida.SetPoint =100;                                 //Set PID Setpoint
               }
              }

 

 

 

 

 

/***STM32结构体类型仿真打印输出测试***/
/***2020  2 20 PAST*****************/
              #include "sys.h"
              #include "usart.h"        
              #include "delay.h"    
              #include "led.h" 
              #include "key.h" 
              #include <math.h>
              #include <string.h>
              u8       set1,set2;                                   //
/***************************************/                            
              struct   PIDA
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PIDA spida;                                    //PID Control Structurea,spidb,spidc,spidd
/***************************************/                        
              struct   PIDB
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PIDB spidb;                                    //PID Control Structurea,spidb,spidc,spidd
/***************************************/                            
              struct   PIDC
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PIDB spidc;                                    //PID Control Structurea,spidb,spidc,spidd
/***************************************/                            
              struct   PIDD
              {
               u16    SetPoint;                                     //设定目标 Desired Value
               u16    Proportion;                                   //比例常数 Proportional Const
               u16    Integral;                                     //积分常数 Integral Const
               u16    Derivative;                                   //微分常数 Derivative Const
               u16    LastError;                                    //Error[-1]
               u16    PrevError;                                    //Error[-2]
               u16    SumError;                                     //Sums of Errors
              };
              struct   PIDB spidd;                                    //PID Control Structurea,spidb,spidc,spidd
/***************************************/                            
              void PIDAInit(struct PIDA *pp)
              {
                memset(pp,0,sizeof(struct PIDA));                    //用参数0初始化pp
              }
/***************************************/                            
              void PIDBInit(struct PIDB *pp)
              {
                memset(pp,0,sizeof(struct PIDB));                    //用参数0初始化pp
              }
/***************************************/                            
              void PIDCInit(struct PIDC *pp)
              {
                memset(pp,0,sizeof(struct PIDC));                    //用参数0初始化pp
              }
/***************************************/                            
              void PIDDInit(struct PIDD *pp)
              {
                memset(pp,0,sizeof(struct PIDD));                    //用参数0初始化pp
              }
/***************************************/                            
             u16 PIDACalc( struct PIDA *pp, u16 NextPoint ) //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
/***************************************/                            
              u16 PIDBCalc( struct PIDB *pp, u16 NextPoint )        //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
/***************************************/                            
              u16 PIDCCalc( struct PIDC *pp, u16 NextPoint )        //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
/***************************************/                            
              u16 PIDDCalc( struct PIDD *pp, u16 NextPoint )        //PID计算
              {
               u16 dError,Error;
               Error=pp->SetPoint - NextPoint;                      //偏差
               pp->SumError += Error;                               //积分
               dError = pp->LastError - pp->PrevError;              //当前微分
                pp->PrevError = pp->LastError;
               pp->LastError = Error;
               return (pp->Proportion * Error                       //比例
               +pp->Integral*pp->SumError                           //积分项
               +pp->Derivative*dError);                             //微分项
              }
/***************************************/                            
              int main(void)
              {            
                 Stm32_Clock_Init(9);                                 //系统时钟设置
                 delay_init(72);                                        //延时初始化 
                 uart_init(72,9600);                                    //串口初始化为9600
                 LED_Init();                                                //初始化与LED连接的硬件接口    
               while(1)
                 {
                                PIDAInit(&spida);                                     //Initialize Structure
                spida.Proportion= 10;                                //Set PID Coefficients
                spida.Integral = 8;
                spida.Derivative =6;
                spida.SetPoint =100;                                 //Set PID Setpoint
               }
              }

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值