资源简介
通过STM89C51单片机控制烟雾传感器,通过AD0832数模转换和LCD1602来显示烟雾的浓度。
代码片段和文件信息
#include
#include
//变量定义:
unsigned char ly_dis[4]; //定义显示缓冲区
code unsigned char table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//表:共阳数码管 0-9
unsigned char l_posit=0; //显示位置
//引脚定义:
sbit SMG_q = P0^0; //定义数码管阳级控制脚(千位)
sbit SMG_b = P0^1; //定义数码管阳级控制脚(百位)
sbit SMG_s = P0^2; //定义数码管阳级控制脚(十位)
sbit SMG_g = P0^3; //定义数码管阳级控制脚(个位)
sbit CS = P2^3;
sbit Clk = P2^2;
sbit DATI = P2^0;
sbit DATO = P2^1;
unsigned char dat = 0x00; //AD值
unsigned char count = 0x00; //定时器计数
unsigned char CH; //通道变量
//函数声明:
void display(void);//显示函数,显示缓冲区内容
void delay(void);
//unsigned char GetValue0832(bit Channel);
unsigned char adc0832(unsigned char CH);
//主函数,C语言的入口函数:
void main()
{
unsigned int i=0;
int ltemp;
while(1)
{
if(i==100)
{
ltemp=2*adc0832(1); //隔时取模数转换(0~255对应0.00-5.00的电压)
ly_dis[0]=ltemp/100; //显示百位值
ltemp=ltemp%100;
ly_dis[1]=ltemp/10; //显示 十位值
ltemp=ltemp%10;
ly_dis[2]=ltemp/1; //显示 个位值
ly_dis[3]=0; //显示小数点后一位0
}
i++;
if(i==500)
i=0;
display(); //调用显示调一次只显示一位轮流显示四位
delay();
}
}
//显示函数,参数为显示内容
void display()
{
P0=0x00;
for(l_posit=0;l_posit<=3;l_posit++)
{ //
P0=0xfe;
P1=table[ly_dis[0]];
delay();
P0=0xfd;
P1=table[ly_dis[1]];
delay();
P0=0xfb;
P1=table[ly_dis[2]];
delay();
P0=0xf7;
P1=table[ly_dis[3]];
delay();
//每调用一次将轮流显示一位
};
}
//延时子函数短暂延时
void delay(void){
unsigned char i;
i=10;
while(i--);
}
/****************************************************************************
函数功能:AD转换子程序
入口参数:CH
出口参数:dat
****************************************************************************/
unsigned char adc0832(unsigned char CH)
{
unsigned char itestadval;
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_();
}
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 (adva
- 上一篇:CS231n课程笔记翻译 全 带书签 PDF
- 下一篇:AEwin英文说明书
相关资源
- 图解单片机功能与应用(PDF图书)
- STM32F103C8T6 单片机 ESP8266 12F接入机智云
- 微处理器 CPU 的结构与性能
- zw_jhn199388-9911706-基于51单片机都_自动
- 单片机Keil C251 V5.5.4
- 时间触发嵌入式系统设计模式.pdf
- 瑞萨单片机RL78G13(R5F100LEA)中文资料
- 80C51单片机实验实训100例 基于Keil C和
- 基于51单片机的1-40Mhz正弦波发生器仿
- FreeRTOS_emWin.rar
- STM32/PLC/FX2N/程序/KEIL4/5源码/单片机/仿
- 51单片机RFID程序完整版
- Altium Designer的元件库大全包括DSPARM5
- AVR32单片机说明书
- 基于单片机的语音识别声控系统设计
- 超低功耗单片无线系统应用入门:基
- 51单片机 火灾报警器
- 蓝牙小车APP
- 国产新塘单片机-N76E003开发资料参考手
- MSP430系列单片机接口技术及系统设计
- 基于51单片机自动智能浇花系统设计
- MQTT单片机编程小工具.exe
- 电子-RVMDK.rar
- 单片机温控风扇
- 基于51单片机的智能超声波测距
- 20172016广东工业大学单片机考试卷
- 51单片机与CPLD的串口通信
- stm32单片机开发三菱PLC(模仿)代码
- STC89C52中文芯片手册_
- 基于CC2530的传感数据采集系统(含加
评论
共有 条评论