#include<iom128v.h>
#include"1602.h"
#include"lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
uchar F_out[]={"Out:1KHZ . %"};
uchar adc_1[]={"ADC_1: . V"};
/*uchar get_key(void)
{
unsigned char i;
static unsigned char j;//按键记录
PORTD|=0x0c;//pd2,pd3上拉电阻
DDRD&=0xf3;//pd2,pd3为输入
if((PIND&0x04)==0)i='A';
else if((PIND&0x08)==0)i='B';
else i=0x00;
if (i == 0x00)//无有效按键按下
{
j = 0x00;//清除按键记录
return 0x00;//程序退出
}
if (j == 0x00) //为新按键
{j = i;//保存本次采样结果
s_ms(10);//去按键颤抖
if((PIND&0x04)==0)i='A';
else if((PIND&0x08)==0)i='B';
else i=0x00;
if(i == j) {return i;}
}
return 0x00;
}*/
void init_timer0(void)
{
DDRB|=0x10;//OC0匹配输出
TCNT0=0x00;//清除定时器值
//TCCR0=0x6d;//快速PWM模式,匹配时OC0清零,top时置数,系统时钟1024分频 频,输出比较匹配清除定时器值
//OCR0=128;//128;//OCR0置初值,占空比50% 0x80
}
/*void F_set(void)
{
static unsigned char i;
if(i!=5)i++;
else i=1;
switch(i)//频率选择
{
case 1:
{
TCCR0=0x6d;
LCD_write_string(6,0," 28HZ");
break;
} //1024分频,F=28HZ
case 2:
{
TCCR0=0x6c;
LCD_write_string(6,0," 112HZ");
break;
}// 256分频,F=112HZ
case 3:
{
TCCR0=0x6b;
LCD_write_string(6,0," 450HZ");
break;
} // 64分频,F=450HZ
case 4:
{
TCCR0=0x6a;
LCD_write_string(6,0," 7200HZ");
break;
} // 8分频,F=7200HZ
case 5:
{
TCCR0=0x69;
LCD_write_string(6,0,"28800HZ");
break;
} // 无分频,F=28800HZ
default:break;
}
}
void R_set(void)
{
static unsigned char i;
if(i!=9)i++;
else i=1;
switch(i)//频率选择
{
case 1:
{
OCR0=256*0.1;//0x0a;//占空比10%
LCD_write_string(13,0,"10%");
break;
}
case 2:
{
OCR0=256*0.2;//0x14;//占空比20%
LCD_write_string(13,0,"20%");
break;
}
case 3:
{
OCR0=256*0.3;//0x1e;//占空比30%
LCD_write_string(13,0,"30%");
break;
}
case 4:
{
OCR0=256*0.4;//0x28;//占空比40%
LCD_write_string(13,0,"40%");
break;
}
case 5:
{
OCR0=0x80;//占空比50%
LCD_write_string(13,0,"50%");
break;
}
case 6:
{
OCR0=256*0.6;//0x3c;//占空比60%
LCD_write_string(13,0,"60%");
break;
}
case 7:
{
OCR0=256*0.7;//0x46;//占空比70%
LCD_write_string(13,0,"70%");
break;
}
case 8:
{
OCR0=256*0.8;//0x50;//占空比80%
LCD_write_string(13,0,"80%");
break;
}
case 9:
{
OCR0=256*0.9;//0x5a;//占空比90%
LCD_write_string(13,0,"90%");
break;
}
default:break;
}
}*/
//主函数
main()
{
uchar ten_1,ten_2,ten_3,ten_4,k,ten_5,ten_6,ten_7,ten_8,ten_9;//key;
uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1,adc_value[6],adc_min,adc_max;
//初始化端口
DDRA=0xff;
PORTA=0x00;
DDRB=0xff;
PORTB=0x00;
DDRC=0xff;
PORTC=0x00;
DDRD=0xff;
PORTD=0x00;
DDRF=0xff;
PORTF=0x00;
DDRG=0xff;
PORTG=0x00;
init_timer0();
//1602初始化
LcdInit();
//LCD_write_string(0,0,"F_out: 28HZ50%");
WriteChar(1,0,16,F_out);
WriteChar(2,2,12,adc_1);
while(1)
{
for(k=0;k<6;k++)
{
s_ms(600);
adc_min=adc_value[0];
adc_max=adc_value[0];
if(adc_min>adc_value[k])
adc_min=adc_value[k];
if(adc_max<adc_value[k])
adc_max=adc_value[k];
//取ADC_1
ADCSRA=0x00;
ADMUX=0x46;
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;
s_ms(500);
adc_l1=ADCL;
adc_h1=ADCH;
adc_value[k]=adc_h1<<8|adc_l1;
adc_data1=(adc_value[0]+adc_value[1]+adc_value[2]+adc_value[3]+adc_value[4]+adc_value[5]-adc_max-adc_min)*1.11631345490389;//35;
TCCR0=0x6b;//0x6d;//快速PWM模式,匹配时OC0清零,top时置数,系统时钟1024分频 频,输出比较匹配清除定时器值
OCR0=adc_data1*0.056512141280353200883002207505519;//0.028;//128;//OCR0置初值,占空比50% 0x80
//显示ADC1
ten_4=(adc_data1)/1000;
ten_3=(adc_data1-(ten_4*1000))/100;
ten_2=(adc_data1-(ten_4*1000)-(ten_3*100))/10;
ten_1=adc_data1-(ten_4*1000)-(ten_3*100)-ten_2*10;
ten_1+=0x30;
ten_2+=0x30;
ten_3+=0x30;
ten_4+=0x30;
WriteNum(2,8,(ten_4));
WriteNum(2,10,(ten_3));
WriteNum(2,11,(ten_2));
WriteNum(2,12,(ten_1));
ten_9=(OCR0)/255;
ten_8=(OCR0-(ten_9*255))/25.5;
ten_7=(OCR0-(ten_9*255)-(ten_8*25.5))/2.55;
ten_6=OCR0-(ten_9*255)-(ten_8*25.5)-ten_7*2.55;
ten_5=OCR0-(ten_9*255)-(ten_8*25.5)-(ten_7*2.55)-ten_6*0.255;
ten_5+=0x30;
ten_6+=0x30;
ten_7+=0x30;
ten_8+=0x30;
ten_9+=0x30;
WriteNum(1,9,(ten_9));
WriteNum(1,10,(ten_8));
WriteNum(1,11,(ten_7));
WriteNum(1,13,(ten_6));
WriteNum(1,14,(ten_5));
/*key=get_key();
if(key=='A')F_set();
if(key=='B')R_set();*/}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
321PASS ADC+PWM.rar (47个子文件)
321PASS ADC+PWM
ADC+PWM
ADC 319pass
ADC.lis 91KB
ADC.lst 84KB
ADC.dp2 236B
ADC._c 5KB
AD.SRC 41B
Desktop_1.ini 9B
ADC.cof 12KB
ADC.prj 980B
ADC.lk 8B
lcd1602.h 5KB
ADC.SRC 68B
delay.h 834B
ADC.s 39KB
ADC.dbg 7KB
1602.h 4KB
ADC.o 23KB
ADC.c 5KB
ADC.mak 680B
1602._h 4KB
ADC.mp 4KB
ADC.hex 11KB
PWM 320pass
Desktop_1.ini 9B
ADC 316
Desktop_1.ini 9B
316.hex 4KB
delay.h 834B
main._c 3KB
main1.lis 39KB
316.lst 31KB
main.s 26KB
main1._c 2KB
1602.h 5KB
316.cof 6KB
316.dbg 4KB
main1.s 18KB
316.SRC 49B
main1.c 2KB
main.lis 57KB
1602._h 5KB
main.dp2 197B
316.mp 3KB
main1.dp2 164B
main1.o 9KB
main.o 12KB
main.c 3KB
316.mak 663B
316.prj 980B
316.lk 9B
共 47 条
- 1
资源评论
- zuomuzhi2018-03-31还可以,值得下载a
- SUNREIHE2014-01-22学习中,对我AVR学习有帮助
- nima58652014-11-01学习中,对我AVR有帮助
kingson1002
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功