欢迎来到天天文库
浏览记录
ID:60806355
大小:42.50 KB
页数:8页
时间:2020-12-20
《左瓶程序知识讲解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、精品好文档,推荐学习交流/******************************************************************************//*Name:电子设计电源题功能:稳压,电路保护功能*//*Designedby:胡车,蒋睿,张佩小组Date:2013/9/521:09*//*开发环境:ICCAVR*//*PD0确定键,PD1增加键,PD2菜单键,PD7减小键,PD5输出PWM波,PD6接继电器*//*PA0~PA2液晶控制,PB口液晶数据口,PA5采样电压输入,PA6采样电流输入*//*********************
2、*********************************************************/#include#include#include"1602.h"#defineucharunsignedchar#defineuintunsignedint#defineGet_Bit(val,bitn)(val&(1<<(bitn)))uintaddata;uintrec=1;ucharflag=1;//进入按键中断标志ucharkey_flag=0;//按键标志位ucharnum_flag=0;//数字改变标志uchare
3、rr_flag=0;//出错类型标志uchardelay_flag=0;//适应电压标志uintvol_exp=368;//360理想输出电压uintnum1=1,num2=5;uintk1,k2;ucharcont1[]={"LimitedCurrent:"};ucharcont2[]={".A"};uchartemp1[]={"Voltage:.V"},temp2[]={"Current:.A"},temp3[]={"DUTYCYCLE:%"};floattemp1float=0,temp2float=0;uinttemp1int=0,temp2int=0;voidport_
4、init(void){PORTA=0xf8;//f8DDRA=0x07;PORTB=0x00;DDRB=0xFF;PORTC=0xFF;//m103outputonlyDDRC=0x00;PORTD=0x8F;DDRD=0x70;}//TIMER1initialize-prescale:1//WGM:5)PWM8bitfast,TOP=0x00FF//desiredvalue:31.25KHz//actualvalue:31.250KHz(0.0%)voidtimer1_init(void){TCCR1B=0x00;//stopTCNT1H=0xFF;//setupTCNT1L=
5、0x01;OCR1AH=0x00;OCR1AL=0x30;//改变A占空比OCR1BH=0x00;OCR1BL=0x5E;//改变B占空比ICR1H=0x00;ICR1L=0xFF;TCCR1A=0xF1;TCCR1B=0x09;//startTimer}仅供学习与交流,如有侵权请联系网站删除谢谢8精品好文档,推荐学习交流/*延时函数*/voiddelay_ms(unsignedintxms){inti,j;for(i=0;i6、=0;j<200;j++);}}//按下按键后待处理的程序voidkey_sol(void)//液晶界面{flag=0;key_flag=1;LcdInit();WriteChar(1,0,16,cont1);WriteChar(2,0,16,cont2);WriteNum(2,0,ASCII[num1]);WriteNum(2,2,ASCII[num2]);writecom(0x0f);//开光标显示writecom(0xc0);while(key_flag!=0){/*确定按键*/if(Get_Bit(PIND,PD0)==0){delay_ms(20);key_flag=k7、ey_flag+1;while(!(Get_Bit(PIND,PD0)));//等待按键松开delay_ms(20);}switch(key_flag){case1://调节电流NUM1/*增加按键*/if(Get_Bit(PIND,PD1)==0){num_flag=1;delay_ms(10);num1++;if(num1==10){num1=9;}WriteNum(2,0,ASCII[num1]);writecom(0xc0);while(!(Get_Bit(PIND,PD
6、=0;j<200;j++);}}//按下按键后待处理的程序voidkey_sol(void)//液晶界面{flag=0;key_flag=1;LcdInit();WriteChar(1,0,16,cont1);WriteChar(2,0,16,cont2);WriteNum(2,0,ASCII[num1]);WriteNum(2,2,ASCII[num2]);writecom(0x0f);//开光标显示writecom(0xc0);while(key_flag!=0){/*确定按键*/if(Get_Bit(PIND,PD0)==0){delay_ms(20);key_flag=k
7、ey_flag+1;while(!(Get_Bit(PIND,PD0)));//等待按键松开delay_ms(20);}switch(key_flag){case1://调节电流NUM1/*增加按键*/if(Get_Bit(PIND,PD1)==0){num_flag=1;delay_ms(10);num1++;if(num1==10){num1=9;}WriteNum(2,0,ASCII[num1]);writecom(0xc0);while(!(Get_Bit(PIND,PD
此文档下载收益归作者所有