云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 一种基于51单片机的粉尘监测系统的设计—定稿 - 图文

一种基于51单片机的粉尘监测系统的设计—定稿 - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 0:32:54

附录2:系统设计部分源程序

#include\ //添加LCD1602头文件 #include\添加ADC0832头文件 //#include\

sbit BUZZER = P1^3; //蜂鸣器驱动端口==P1^2

sbit Reduc = P1^7; //按键键输入端口==P1^7 sbit Add = P3^0; //按键加输入端口==P3^1

sbit vled = P3^2;

void Delay1us(uint t) //@12MHz {

while(t--)_nop_(); }

uint read_data(uchar N) {

uint val=0; vled=0;

Delay1us(20); val=adc0832(N); vled=1;

Delay1us(400); return val; }

/************************************************ ** 函数名称 : void main(void) ** 函数功能 : 主函数 ** 输 入 : 无 ** 输 出 : 无 ** 说 明 :

************************************************/ void main(void) {

double PM,pm1,pm2;

int PMVAL=0,HPM=200,PM_count=0,pm1_count=0;

28

uchar bueezr_flag=0,bueezr_count=0,buzzer_time=25;//蜂鸣器报警变量 LCD_Init();

WriteChar(1,0,16,\ WriteChar(2,0,16,\while(1) { Delay(120); pm1+=read_data(1); if(++PM_count>=40) { PM_count=0; pm1=pm1/40; pm2+=pm1; if(++pm1_count>=3) { PM=pm2/3; PM=PM*50/255; PM-=4; PM/=5; PM*=1000; PMVAL=PM; PMVAL+=235; if(PMVAL>=9999)PMVAL=9999; if(PMVAL<=0)PMVAL=0; WriteCOMDATA(0x83,0); WriteCOMDATA(PMVAL/1000+0x30,1); WriteCOMDATA(PMVAL/100+0x30,1); WriteCOMDATA(PMVAL/10+0x30,1); WriteCOMDATA(PMVAL+0x30,1); PM=pm1=pm2=0; } } //PM值与报警值比较 if(PMVAL>HPM) { bueezr_flag=1; } else { bueezr_flag=0;

29

BUZZER=1; } if(PMVAL>=100) WriteChar(1,12,4,\ else if((PMVAL<100)&&(PMVAL>=50)) WriteChar(1,12,4,\ else if(PMVAL<50) WriteChar(1,12,4,\ /*******蜂鸣器报警********/

bueezr_count++;if(bueezr_count>buzzer_time*10)bueezr_count=buzzer_time+1; if(bueezr_count%buzzer_time==0 && bueezr_flag) { BUZZER=~BUZZER;//蜂鸣器取反 发出声音提示 } if(!Reduc) { Delay(100); HPM--; WriteCOMDATA(0xC7,0); WriteCOMDATA(HPM/1000+0x30,1); WriteCOMDATA(HPM/100+0x30,1); WriteCOMDATA(HPM/10+0x30,1); WriteCOMDATA(HPM+0x30,1); } if(!Add) { Delay(100); HPM++; WriteCOMDATA(0xC7,0); WriteCOMDATA(HPM/1000+0x30,1); WriteCOMDATA(HPM/100+0x30,1); WriteCOMDATA(HPM/10+0x30,1); WriteCOMDATA(HPM+0x30,1); } } }

/************************************************ * 编写时间: 2016.05.09

30

* 作 者: liuweiliang

* 程序功能: LCD1602头文件

* 使用说明: 在需要使用LCD1602显示时添加此头文件“LCD1602.h” ************************************************/ #ifndef __LCD1602_H__ #define __LCD1602_H__ #include\ //添加延时函数头文件 #define LCD_PINDATA P0 //数据端口定义 P2 sbit RS = P1^4; //RS P0^7 sbit RW = P1^5; //RW P0^6 sbit E = P1^6; //E P0^5

/************************************************

** 函数名称 : WriteCOMDATA(uchar LCD_DATA,uchar N) ** 函数功能 : LCD1602写指令、数据函数 ** 输 入 : LCD_DATA:指令或者数据 N:指令方式还是数据方式 N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据 ** 输 出 : 无 ** 说 明 :

************************************************/ void WriteCOMDATA(uchar LCD_DATA,uchar N) {

Delay(1); E=1; RW=0; RS=N;

LCD_PINDATA=LCD_DATA; E=0; }

/************************************************ ** 函数名称 : void LCD_init(void) ** 函数功能 : LCD1602初始化操作 ** 输 入 : 无 ** 输 出 : 无 ** 说 明 :

************************************************/ void LCD_Init(void) {

WriteCOMDATA(0x01,0); Delay(500);

31

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

附录2:系统设计部分源程序 #include\ //添加LCD1602头文件 #include\添加ADC0832头文件 //#include\ sbit BUZZER = P1^3; //蜂鸣器驱动端口==P1^2 sbit Reduc = P1^7; //按键键输入端口==P1^7 sbit Add = P3^0; //按键加输入端口==P3^1 sbit vled = P3^2; void Delay1us(uint t) //@12MHz { while(t--)_nop_(); } uint read_data(uchar N) { uint val=0; vled=0; Delay1u

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com