基于单片机的太阳能充电器的设计毕业设计 联系客服

发布时间 : 星期六 文章基于单片机的太阳能充电器的设计毕业设计更新完毕开始阅读fa06279488eb172ded630b1c59eef8c75fbf95d1

void convert(uint x) //定义显示码转换子函数/ {

uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义0~9显示码/

x=x*1.0/255*5000; // 处理数据使其在0~5v范围内/ disp[3]=dispcode[x]; //第三位小数,最低位/ disp[2]=dispcode[x/10]; //第二位小数/ disp[1]=dispcode[x/100]; //第一位小数/ disp[0]=dispcode[x/1000]; //整数部分/ }

void timer0() interrupt 1 using 1 {

TH0=0xff; /*定时器初值重装载*/ TL0=0xf6; time++; if(time==high) /*高电平持续时间结束,变低*/ { PWM=th0; /*经过反相器反相*/ }

else if(time==period) /*周期时间到,变高*/ { time=0;

PWM=tl0; /*经过反相器反相*/ } }

void timer1() interrupt 3 using 3 {

TH1=0xff; /*定时器初值重装载*/ TL1=0xf6; time1++; if(time1==high1) /*高电平持续时间结束,变低*/ { PWM=th0; /*经过反相器反相*/ }

else if(time1==period) /*周期时间到,变高*/ { time1=0;

PWM=tl0; /*经过反相器反相*/ } }

void main() {

OE=0; //ADC0808初始化/ START=0; EOC=1; //将单片机的引脚(EOC输入端)置成输入状态/ P3_3=0;

P3_4=0; P3_6=1; P3_7=1;

TMOD=0x11; /*定时器0方式1*/

TH0=0xff; /*定时器装载初值,设置脉冲信号的占空比为1/5*/ TL0=0xf6; ET0=1; // TR0=1; TH1=0xff; /*定时器装载初值,设置脉冲信号的占空比为1/5*/ TL1=0xf6; ET1=1; // TR1=1;

while(1) { if(P3_3==1) { EA=1; /*开CPU中断*/ TR0=1; TR1=0; P3_4=0; du: for(i=0;i<14;i++) { P3_7=1; high1=0; high=high+2; for(j=0;j<5;j++) { P3_6=0; convert(ADC0808()); //每1s启动A/D转换一次,把读入数据转换为显示数据/ display(); delay(10); // 调用显示子函数/ } } if(high==34) { P3_6=1; P3_7=0; delay(100); TR0=0; } }

if(P3_4==1) { TR0=0; TR1=1; P3_6=1; EA=1; high1=high1+4; if(high1==40) high1=16; if(P3_3==1) {P3_7=1; goto du; } while(P3_4!=0) {}; convert(ADC0808()); //每1s启动A/D转换一次,把读入数据转换为显示数据/ display(); // 调用显示子函数/ } convert(ADC0808()); //每1s启动A/D转换一次,把读入数据转换为显示数据/ display(); // 调用显示子函数/ } }