第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/5/23 7:03:36 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

WriteCOMDATA(0x38,0); Delay(10);

WriteCOMDATA(0x06,0); Delay(10);

WriteCOMDATA(0x0c,0); Delay(10); }

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

** 函数名称 :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) ** 函数功能 :在任意位置写指定个字符

** 输 入 :Row : 要写的字符所在的行,只能为1或2; Col : 要写的字符所在的列,只能为0---15 Num : 要写字符的个数

pbuffer : 要写字符的首地址 ** 输 出 :无 ** 说 明 :

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

void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer) {

uchar i;

if(Row==1)Row=0x80+Col; else Row=0xC0+Col; WriteCOMDATA(Row,0); for(i=Num;i!=0;i--) { WriteCOMDATA(*pBuffer,1); pBuffer++; } }

#endif#include\ //添加延时函数头文件 #include sbit CS = P1^2; sbit Clk = P1^1; sbit DATI = P1^0; sbit DATO = P1^0;

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

函数功能:AD转换子程序 入口参数:CH 出口参数:dat

32

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

unsigned char adc0832(unsigned char CH) {

unsigned char dat = 0x00; //AD值 unsigned char i,test,adval; adval = 0x00; test = 0x00;

Clk = 0; //初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_();

if ( CH == 0x00 ) //通道选择 {

Clk = 0;

DATI = 1; //通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0;

DATI = 0; //通道0的第二位 _nop_(); Clk = 1; _nop_(); } else {

Clk = 0;

DATI = 1; //通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0;

DATI = 1; //通道1的第二位 _nop_(); Clk = 1; _nop_();

33

}

Clk = 0; DATI = 1;

for( i = 0;i < 8;i++ ) //读取前8位的值 {

_nop_();

adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else

adval |= 0x00; }

for (i = 0; i < 8; i++) //读取后8位的值 {

test >>= 1; if (DATO)

test |= 0x80; else

test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; }

if (adval == test) //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; _nop_();

CS = 1; //释放ADC0832 DATO = 1; Clk = 1; return dat; }

#include\ sbit v_led = P3^2;

34

uint count_100us;

/************************************************ ** 函数名称 : Init_Timer0(void)

** 函数功能 : 定时器0初始化子程序 ** 输 入 : 无 ** 输 出 : 无

** 说 明 : 对定时器0进行初始化 模式1 16位定时器 0~65536 ************************************************/ void Init_Timer0(void) //定时器初始化子程序 {

TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响

TH0=0xFF; //定时器赋初值 TL0=0xA4;

ET0=1; //使能定时器中断 TR0=1; //打开定时器 EA=1; //打开总中断 }

/************************************************ ** 函数名称 : Timer0_isr(void) interrupt 1 using 1 ** 函数功能 : 定时器中断程序 ** 输 入 : 无 ** 输 出 : 无

** 说 明 : 定时器计数到65536溢出执行中断函数 定时器重新赋值及状态指示灯取反 ************************************************/ //void Timer0_isr(void) interrupt 1 using 1 //{

// TH0=0xFF; //重新赋值 // TL0=0xA4; // count_100us++;

// if(count_100us<30)TEST=0; // else if(count_100us<90)TEST=1; // else count_100us=0;

// //TEST=~TEST; //状态指示灯取反 //}

/************************************************ * 文件功能: 延时函数头文件 * 使用说明: 在需要使用延时函数时添加此头文件“delay.h” ************************************************/

35

#ifndef __DELAY_H__ #define __DELAY_H__ #include //#include

#define uchar unsigned char #define uint unsigned int

/************************************************ ** 函数名称 : Delay(uint T) ** 函数功能 : 延时函数

** 输 入 : T--延时倍数 大小--0~65535 ** 输 出 : 无 ** 说 明 :

************************************************/ void Delay(uint T) {

uchar i;

for(T;T>0;T--)

for(i=200;i>0;i--); }

#endif

36

一种基于51单片机的粉尘监测系统的设计—定稿 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c727u1178pf4n25r6n2d3_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top