资源简介
基于单片机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工具
- 下一篇:广工操作系统课程设计-多道批处理两级调度模拟
相关资源
- 利用DS1302和msp430进行闹钟和万年历的
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- stm32 ds18b20 温度传感器 测试通过
- 51单片机读取温度数据存储到SD卡中并
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- DS18B20分布式多点测温的Proteus仿真
- 单片机 DS18B20 温度控制系统
- 课程设计蔬菜大棚自动控制系统,包
- ds18b20温度传感是什么传感器
- STM32F407实时时钟_DS1302实时时钟模块和
- 基于STM32F103的实时时钟程序,采用D
- 51单片机_DS1302时钟芯片_共阴数码管
- DS1302时钟带可调时间显示
- DS1302+DS13B20+12864,万年历。农历
- AVR多功能实验箱DS1302时钟实验源码资
- 畅学STM32多功能实验箱DS1302时钟芯片源
- STM32+DHT11+OLED+RTC+MQ2+NRF24L01+串口12
- proteus仿真、keil4、DHT11、LCD1602
- DS18B20_Serial_println.ino
- DHT11 21 22库文件
- 基于zigbee温湿度传输及控制带wifiAPP查
- ds18b20测温例程tm4c123x
- stm32之传感器DHT11.zip
- STM32F103C8T6读取DS18B20串口显示程序.r
- DS18B20温度+DHT11湿度+LCD1602
- TM4C系列ds18b20温度传感器例程
- 读写ds18b20内部eeprom
- 基于FPGA的DS18B20单总线控制+数码管显
- STM32F103C8T6读取DS18B20串口显示程序
评论
共有 条评论