LED=0; //关闭传感器LED }
//端口功能设置 void Port_Init() {
P1M0 = 0x03; //DS--88页IO口功能设置,设为开漏11 P1M1 = 0x03; // }
void ADC_Init() //DS-282页 {
P1ASF = 0x03; //开启通道0,1 ADC_RES = 0;
ADC_CONTR=ADC_POWER|ADC_SPEEDLL; //每次转换需要420个时钟周期 delay_ms(10); }
//进行AD转换,得到当前8位AD值 uchar GetADVal(uchar CH) {
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CH|ADC_START; //delay_ms(1);
while(!(ADC_CONTR&ADC_FLAG)); //等待ADC转换结束 ADC_CONTR &= ~ADC_FLAG; //关闭ADC return ADC_RES; }
//中值滤波
//算法:先进行排序,然后将数组的中间值作为当前值返回。 uchar Error_Correct(uchar *str,uchar num) {
unsigned char i=0; unsigned char j=0; uchar Temp=0;
//排序
for(i=0;i
for(j=i+1;j
if(str[i]
24
Temp=str[i]; str[i]=str[j]; str[j]=Temp; } } }
//去除误差,取中间值 return str[num/2]; }
//存入设定值 将设定值存储在24C02中 void Save_Setting(void) {
uchar Save;
Save =DUST_SET/256; IIC_Write(0x00, Save); Save =DUST_SET%6; delay_ms(10);
IIC_Write(0x01, Save); }
//载入设定值 从24C02中读取设定值 void Load_Setting() {
DUST_SET=0;
DUST_SET = IIC_Read(0x00); DUST_SET*=256; delay_ms(10);
DUST_SET+= IIC_Read(0x01);
if ((DUST_SET>=760)||(DUST_SET<=0)) DUST_SET =100; }
//按键处理程序
void KeyProcess(void) {
uchar Temp; uint i,j; Temp=P3; Temp&=0xf0; if(Temp!=0xf0) { //延时
25
//for (i=0;i<500;i++) //for (j=0;j<254;j++); Temp=P3; Temp&=0xf0;
if(Temp!=0xf0) {
switch(Temp) {
case 0xE0: DUST_SET++; break; // 设定值+ case 0XD0: DUST_SET--; break; // 设定值- default: break; }
//值限定
if (DUST_SET>=760) DUST_SET =760; if (DUST_SET<=1) DUST_SET =0; Save_Setting();
} } }
void main() {
uchar read; uint DUST;
EA = 0; //总中断关闭 Data_Init(); //数据初始化 Port_Init(); //端口初始化 IIC_Init();
LCD_Init(); //液晶初始化 LCD_Clear();//清屏
LCD_Write_String(4,0,
LCD_Write_String(0,1, delay_ms(2000);
LCD_Clear();//清屏 delay_ms(10);
LCD_Write_String(0,0,
LCD_Write_String(0,1,载入设定值
Load_Setting();
ADC_Init(); //ADC初始化
26
delay_ms(10);
Timer0_Init(); //定时器0初始化 num=0; DUST=0;
FlagStart=0;
while(1) {
if(FlagStart==1) //10次采集完成 {
DUST=Error_Correct(ADC_Get,10); //求取10次AD采样的值 DUST_Value=(DUST/256.0)*5000; //转化成电压值MV
DUST_Value=DUST_Value*0.172-99.9; //DUST_Value=((DUST)*38)/4-202;// 计算 Y=0.172*X-0.0999 X--采样电压V if(DUST_Value<0) DUST_Value=0;
if(DUST_Value>760) DUST_Value=760; //限位 DUST=(uint)DUST_Value; //
LCD_Show4(6,0,DUST);
LCD_Show4(6,1,DUST_SET); //显示结果
if(DUST>DUST_SET) {
DUST_Warn=0; fs=0; LED1=1; LED2=0;
} //超过阈值,报警 else
{ DUST_Warn=1; fs=1; LED1=0; LED2=1; }
KeyProcess(); delay_ms(100);
TL0 = (65536-30000)/256; TH0 = (65536-30000)%6; TR0 = 1; //开启定时器0 EA = 1;
FlagStart=0; }
} }
//固体悬浮颗粒浓度
27
致 谢
本文是在吴小玲老师的悉心指导下完成的。吴老师从论文选题、研究方法、论文写作、实验等诸方面都给予了细致、精心的指导,在生活上更是细心的照顾着我们。她严谨的治学态度,踏实的做人风格,深厚的理论知识使我受益匪浅,我想如果没有吴老师这开放性思想的指导我就很难在此有所突破了。她待人和蔼、认真求实的工作作风,对指导毕业设计工作积极负责的态度都深深影响着即将走出社会的我。让我不仅系统的掌握了专业知识体系,也让我有了正确的态度和坚定地信念去面对未来。在此谨向吴小玲老师表示衷心的感谢。
在此,我还要感谢在一起愉快的度过本科生活的12应电班各位同学,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。尤其是伟建同学,在实验期间帮我做了很多工作给了我不少帮助。还有感谢我的室友们,感谢你们三年来的宽容和支持,如果没有你们我的大学没有这么精彩。
在论文即将完结之际,心情非常的激动,从论文的选题,实验到顺利完成,那么多的老师、同学、朋友都给了我莫大的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!
谢谢所有给予我关心和帮助的朋友们!
28
指导教师评语: 初评成绩: 指导教师签名: 年 月 日 毕业论文(设计)评审小组意见: 终评成绩: 组长签章: 年 月 日 备注 29
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PM2.5空气质量检测仪的设计与制作 - 图文(6)在线全文阅读。
相关推荐: