Word版可编辑-基于MSP430设计的斩波升压电路程序精心整理.doc_第1页
Word版可编辑-基于MSP430设计的斩波升压电路程序精心整理.doc_第2页
Word版可编辑-基于MSP430设计的斩波升压电路程序精心整理.doc_第3页
Word版可编辑-基于MSP430设计的斩波升压电路程序精心整理.doc_第4页
Word版可编辑-基于MSP430设计的斩波升压电路程序精心整理.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include io430.h#include in430.h#include lcd12864.c#define start P2OUT|=BIT5;#define stop P2OUT&=BIT5;/选用8mhz时钟晶振,定时器A工作在增计数模式,工作模式7。/#define Numresults 8 /定义常数float A0results16; /一通道输出结果float A1results16;/二通道输出结果float pwmx=4;float sum=0,avg=0;static unsigned int pwmn=100;/当前输出序列号unsigned char k1=1,k2=1,k3=1,jisu=0,protectkey=0;unsigned char show5;float trv=0,tri=0,setv=3685;int index=0;float settotr=0;/setv-trvvoid ADCinit();void SHOW();void keyscan();void stablev();void protect();void delay(unsigned char n) unsigned char x,y; for(x=n;x0;x-) for(y=110;y0;y-); int main( void ) unsigned char i=0; / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P2DIR|=BIT5; P3DIR&=(BIT2+BIT3); P1SEL |=BIT2; P1DIR |=BIT2; / BCSCTL1&=XT2OFF; BCSCTL2|=SELS;/设置SMCLK晶振来源为外部8M TACTL |=MC_1+TASSEL_2; TACCTL1=OUTMOD_7; TACCR0=200; TACCR1=100; ADC12IFG=0x00; ADCinit(); _EINT(); /总中断使能 Init12864(); ClrScreen(); LCD_PutString(0,1,输出电压(V); LCD_PutString(0,3,设置电压(V); for(i=0;i=15;i+) ADC12CTL0 |=ADC12SC;/转换开始 31.264 start; while(1) ADC12CTL0 |=ADC12SC;/转换开始 31.264 keyscan(); for(i=0;i16;i+) sum=sum+A0resultsi; trv=sum/16.0; sum=0; for(i=0;i=2.5) protectkey+; if(protectkey=5) protectkey=0; stop; void SHOW() unsigned char i=0,j=0; avg=(trv*3.3/4095.0)*12.12; show0=(unsigned char)(unsigned int)(avg/10); show1=(unsigned char)(unsigned int)avg)%10; show2=0x2e; show3=(unsigned char)(unsigned int)(avg*10)%10); show4=(unsigned char)(unsigned int)(avg*100)%10); for(j=0;j=4;j+) switch(showj) case 0: showj=0x30;break; case 1: showj=0x31;break; case 2: showj=0x32;break; case 3: showj=0x33;break; case 4: showj=0x34;break; case 5: showj=0x35;break; case 6: showj=0x36;break; case 7: showj=0x37;break; case 8: showj=0x38;break; case 9: showj=0x39;break; default: break; for(i=0;i=4;i+) LCD_PutChar(i,2,showi); /定时8次显示一次平均的真实值 avg=(setv*3.3/4095.0)*12.12; show0=(unsigned char)(unsigned int)(avg/10); show1=(unsigned char)(unsigned int)avg)%10; show2=0x2e; show3=(unsigned char)(unsigned int)(avg*10)%10); show4=(unsigned char)(unsigned int)(avg*100)%10); for(j=0;j=4;j+) switch(showj) case 0: showj=0x30;break; case 1: showj=0x31;break; case 2: showj=0x32;break; case 3: showj=0x33;break; case 4: showj=0x34;break; case 5: showj=0x35;break; case 6: showj=0x36;break; case 7: showj=0x37;break; case 8: showj=0x38;break; case 9: showj=0x39;break; default: break; for(i=0;itrv) settotr=setv-trv; if (settotr=10) pwmn-=2; else if(settotr5) pwmn-; else if(settotr3) pwmx+; if(pwmx=8) pwmx=4; pwmn-; if(pwmn=100) pwmn=100; TACCR1=pwmn; else if(setv10) pwmn+=2; else if(settotr5) pwmn+; else if(settotr3) pwmx-; if(pwmx=150) pwmn=150; TACCR1=pwmn; #pragma vector=ADC_VECTOR _interrupt void ADC12ISR(void) A0resultsindex=ADC12MEM0;/将结果存入数组同时清除ADC12FIG0 A1resultsindex=ADC12MEM1;/将结果存入数组同时清除ADC12FIG1 index=(index+1)%16;/ _DINT()#include io430.h#define RS1 P2OUT|=BIT0#define RS0 P2OUT&=BIT0#define RW1 P2OUT|=BIT1#define RW0 P2OUT&=BIT1#define E1 P2OUT|=BIT2#define E0 P2OUT&=BIT2#define RES1 P2OUT|=BIT4#define RES0 P2OUT&=BIT4#define PSB1 P2OUT|=BIT3#define PSB0 P2OUT&=BIT3#define DataPort P4OUTvoid Delayus(unsigned char t) void Delayms(unsigned char t) unsigned char x; while(t-) for(x=30;x0;x-); void Check_Busy() RS0; RW1; E1; DataPort=0xff; P4DIR&=0x7f; while(P4IN&0x80)=0x80); P4DIR|=0xff; E0;void Write_Cmd(unsigned char cmd) Check_Busy(); RS0; RW0; E1; DataPort=cmd; Delayus(5); E0; Delayus(5);void Write_Data(unsigned char Data) Check_Busy(); RS1; RW0; E1; DataPort=Data; Delayus(5); E0; Delayus(5);void LCD_PutString(unsigned char x,unsigned char y,const unsigned char *s) unsigned char temp; switch(y) case 1: Write_Cmd(0x80+x);break; case 2: Write_Cmd(0x90+x);break; case 3: Write_Cmd(0x88+x);break; case 4: Write_Cmd(0x98+x);break; default:break; temp=*s; while(temp!=0x00) Write_Data(temp); temp=*(+s); void LCD_PutChar(unsigned char x,unsigned char y,unsigned char s) switch(y) case 1: Write_Cmd(0x80+x);break; case 2: Write_Cmd(0x90+x);break; case 3: Write_Cmd(0x88+x);break; case 4: Write_Cmd(0x98+x);break; default:break; Write_Data(s);void Init12864() P4DIR|=0xff; P2DIR|=BIT0+BIT1+BIT2+BIT3+BIT4; Delayms(40); PSB1; Delayms(1); RES0; Delayms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论