资源简介
基于单片机DS1302+DS18B20+DHT11+LCD12864的万年历设计,单片机是用STC12C5A60S2,具有时钟调节,温度报警,按键翻页功能。
代码片段和文件信息
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define KeyIN (P2&0x38)
unsigned char up_limit=27;
unsigned char down_limit=10;
uchar data up_value[3]; //上下限温度存放数组
uchar data down_value[3];
sbit RS=P3^5; //12864引脚
sbit RW=P3^4;
sbit E=P4^0;
//sbit shijian=P3^2;
sbit wenshidu=P3^3;
sbit SetKey=P2^3; //按键功能:设置
sbit PlusKey=P2^4; //按键功能:加
sbit ReduceKey=P2^5; //按键功能:减
sbit Alarm=P2^7;
//sbit LCD_RES=P4^6;
sbit SCLK=P3^7; //ds1302引脚
sbit IO=P3^6;
sbit RES=P2^1;
sbit DQ=P2^2;
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
sbit DHT=P2^0;
uint tvalue;
uchar tflag;
uchar data disdata[4];
uchar data timedata[12];
uchar table[]=“现在温度“;//数组形式
uchar table1[]=“现在湿度“;
uchar table2[]=“TH“;
uchar table3[]=“TL“;
uchar shiZshiXwenZwenXcheck;
uchar tr_shiZtr_shiXtr_wenZtr_wenX;
uchar flag;
uchar keyvalue;
uchar Clear_cont;
uchar time_a;
char read_data();
void delay(uint del) //延时xms
{
uint ij;
for(i=del;i>0;i--)
for(j=110;j>0;j--);
}
void delay_1ms(uint i)
{
uint j=88;
for(;i>0;i--)
{
while(j>0)j--;
}
}
void delay10ms(void) //误差 -0.000000000001us
{
unsigned char abc;
for(c=14;c>0;c--)
for(b=168;b>0;b--)
for(a=22;a>0;a--);
}
void delay_10us()
{
uchar i;
i--;
i--;
i--;
i--;
i--;
i--;
}
/*******************************************************************
12864 程序
******************************************************************/
void writecom(uchar com)
{
P0=com;
RS=0;
RW=0;
E=0;
delay(1);
E=1;
delay(1);
}
void lcdwritedate(uchar date)
{
P0=date;
RS=1;
RW=0;
E=0;
delay(1);
E=1;
delay(1);
}
void lcdinit()
{
// PSB=1;
writecom(0x01);
delay(1);
writecom(0x30);
delay(1);
writecom(0x06);
delay(1);
writecom(0x0c);
delay(1);
}
void clear_lcd()
{
writecom(0x34);
delay(5);
writecom(0x30);
delay(5);
writecom(0x01);
delay(5);
}
/*************************************************************************
dh11程序
**************************************************************************/
void read_init()
{
DHT=0; //主机使DHT11低电平并延时至少18ms
delay_1ms(21);
DHT=1; //主机置DHT11高电平20~40us并等待从机相应
delay_10us();
delay_10us();
delay_10us();
delay_10us();
DHT=1;
if(!DHT) //从机发出响应信号
{
flag=2;
while((!DHT)&&flag++);//等待从机发高电平结束
flag=2;
while(DHT&&flag++); //开始采集数据
tr_shiZ=read_data();//采集湿度整数部分
tr_shiX=read_data();//采集湿度小数部分
tr_wenZ=read_data();//采集温度整数部分
tr_wenX=read_data();//采集温度小数部分
check=read_data(); //采集校验位
}
DHT=0;
delay(20);//采集完数据后
}
char read_data()
{
uchar inumtemp;
num=0;
for(i=0;i<8;i++)
{
flag=2;
while((!DHT)&&flag++);//等待50毫秒低电平
delay_10us();//延时判断0还是1
delay_10us();
delay_10us();
delay_10us();
if(DHT==1)
{
temp=1;
flag=2;
while(DHT&&flag++);
}
- 上一篇:createpajek工具
- 下一篇:广工操作系统课程设计-多道批处理两级调度模拟
相关资源
- 单片机温度检测系统
- 基于51单片机的温度采集系统
- 51单片机温度报警程序
- 单片机恒温箱温度控制系统的设计
- 基于DS18B20的温度控制系统设计
- 单总线温度采集与显示
- 已成功的DS18B20温度显示程序带高低限
- 温度显示报警程序 温度传感器ds18
- 51单片机室温 体温测量
- 基于51单片机的ds18b20温度传感器实现
- DS18B20的温度显示程序,序列号读取,
- DS18B20的时序图详解
- 1602+ds1302+18B20万年历显示温度星期完全
- DS18b20在STC12C5A60S2上的移植
- 温湿度传感器DHT11 +烟雾报警 8位数码
- MSP430单片机通过proteus仿真DS18B20程序
- DS18B20温度传感器的proteus仿真.rar
- 基于Arduino的温湿度传感器DHT11库
- STM32-DS18B20.zip
- 51单片机串口修改DS1302时间
- DHT11程序,用1602显示
- DS18B20 51单片机,包括电路
- MSP430—DS18B20程序
- 单总线两个DS18B20温度传感器程序及其
- DS18B20+UCOSIII-技术资料+源码
- 单总线控制多个DS18B20
- 完整的电子时钟万年历LCD12846+DS1302+
- 60S2单片机驱动DS18B20温度传感器C程序
- MSP430g2231+nrf24l01+DHT11实现温湿度远程监
- DS1302源码
评论
共有 条评论