【资源下载】下载地址如下1570:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl
本文分享的是基于STC89C51单片机制作的智能感应台灯,使用AD0809进行转换,使用定时器进行计时和闪烁控制,蜂鸣器报警器提示时间。灯光亮度可以调节,分手动模式和自动模式,自动模式下可以自动感应变换亮度。
//宏定义 重命名作用将unsigned int、unsigned char变为unit、uchar
#define uint unsigned int
#define uchar unsigned char
#define DUAN P0 //用DUAN标识代表P0口
//头函数
#include <reg52.h>
#include <ADC0809.h>
unsigned char code tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff}; //数字0-9的编码//gc.debfa
unsigned char code tab_dian[]={0x80,0x9b,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x08,0xdf}; //带点的数字0-9的编码//gc.debfa
uchar pdata tt[51]; //定义空数组用于AD0809取平均值
uchar scale=20,rsd_sec; //定义占空比比例,热释电计时秒变量
char min,sec; //定义计时分秒
bit bdata flag_auto,ss,flag_bs,flag_rsd,flag_jiejin=1; //位定义自动切换的,闪烁标志,报警位标志,热释电动作标志,接近传感器标志
uchar flag_set=0; //设置变量:0 正常 1 调分 2 调秒
uchar lum; //ad0809读出值
//函数声明
void delay(uchar i); //延时函数
//管脚声明
sbit LED = P3^4; //灯光控制输出
sbit change= P2^3; //自动模式切换按键
sbit set = P2^2; //设置按键
sbit add = P2^1; //加按键
sbit sub = P2^0; //减按键
sbit rsd = P3^6; //热释电
sbit jiejin=P3^5; //接近开关
sbit buzz=P3^7; //蜂鸣器
sbit W0=P2^7;
sbit W1=P2^6;
sbit W2=P2^5;
sbit W3=P2^4; //数码管位端