• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: stc12c5a60s2  PID  PWm  

资源简介

采用STC12C5A60S2单片机实现,PID运算,产生PWM波。实现Boost电路闭环调节。

资源截图

代码片段和文件信息

#include
#include “intrins.h“
#include 
#include  
/*#include “define.h“
#include “delay.h“
#include “lcd.h“
#include “ad.h“
#include “pid.h“
#include “pwm.h“ */
 
/*……………………………………………… define.h…………………………….*/
#define uint unsigned int
#define uchar unsigned char
#define N 14
sbit pwmout=P3^7;
sbit lcden=P2^6;
sbit lcdrs=P2^4;
sbit lcdrw=P2^5;
//uchar a;
uchar code table[]=“The Vol is:.V “;
/*…………………………………………..delay.h……………………………….*/
  void delay(uint z)                                //12M晶振 毫秒级延时
  {
    uint xy;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
  }
  
/*…………………………………………lcd 1602显示……………………………………*/
   void write_com(uchar com)       //写控制字
  {
    lcdrs=0;
delay(5);
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
  
  }
   void write_data(uchar date)      //写数据
  {
    lcdrs=1;
delay(5);
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
  
  }


  void lcdinit()                //lcd初始化
  {
    lcden=0;
    lcdrw=0;
    write_com(0x38);
write_com(0x01);
write_com(0x0e);
write_com(0x06);
  }
  void display(uchar adduint num)  
  {
    /*uchar i;
    write_com(0x80);
for(i=0;i<11;i++)          //显示字符
{
  write_data(table[i]);
  delay(1);
}
    write_com(0x80+0x40);   //显示电压数据
if(num/10000==0)
{
  write_data(table[13]);
   }
else
     write_data(0x30+num/10000);
    write_data(0x30+num%10000/1000);
write_data(table[11]);
write_data(0x30+num%1000/100);
write_data(0x30+num%100/10);
write_data(0x30+num%10);
write_data(table[12]);*/

if(add==1)
 {
   write_com(0x80);
   write_data(0x30+num/10000);
       write_data(0x30+num%10000/1000);
   write_data(0x30+num%1000/100);
   write_data(0x30+num%100/10);
   write_data(0x30+num%10);
 }
 if(add==3)
 {
   write_com(0x80+0x07);
   write_data(0x30+num/10000);
       write_data(0x30+num%10000/1000);
   write_data(0x30+num%1000/100);
   write_data(0x30+num%100/10);
   write_data(0x30+num%10);
 
 }

 if(add==2)
 {
   write_com(0x80+0x40);
   write_data(0x30+num/10000);
       write_data(0x30+num%10000/1000);
   write_data(0x30+num%1000/100);
   write_data(0x30+num%100/10);
   write_data(0x30+num%10);
 }
 if(add==4)
  {
    write_com(0x80+0x40+0x06);
   write_data(0x30+num/10000);
       write_data(0x30+num%10000/1000);
   write_data(0x30+num%1000/100);
   write_data(0x30+num%100/10);
   write_data(0x30+num%10);
   }
 if(add==5)
  {
   write_com(0x80+0x40+0x0b);
   write_data(0x30+num/10000);
       write_data(0x30+num%10000/1000);
   write_data(0x30+num%1000/100);
   write_data(0x30+num%100/10);
   write_data(0x30+num%10);
 
  }

  }
/*…………………………………..A/D程序…………………………………….*/
void AD_init()       //AD转化初始化
  {
     P1ASF=0x01;
 P1M0=0x03;
 P1M1=0x03; //P1.0为开漏模式,用来A/D采集
 ADC_CONTR=0xe0;
 delay(10);
  }
  int GetAD(uchar channel)
  {
    uchar AD_finished=0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10328  2013-08-06 22:30  buckboost.c

----------- ---------  ---------- -----  ----

                10328                    1


评论

共有 条评论