-
大小: 3KB文件類型: .rar金幣: 2下載: 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
評論
共有 條評論