时钟温度计
来源:互联网 发布:nodejs linux 运维 编辑:程序博客网 时间:2024/04/30 10:52
最近利用DS1302与DS18B20做了一个能显示当前时间、日期、温度的东西。有三个按键,正常运行时显示当前的时间,利用按键2、3可以切换到日期与温度。按下按键1进入设置时间状态,在设置时间状态利用按键2、3可调整时间与日期。调整好后不进行任何操作6秒退出设置状态。
实物图:
显示当前时间:(11时:24分:47秒)
显示当前日期:(09年:01月:15日)
显示当前温度:(17.2度)
源程序:
#include <reg51.h>
#include<intrins.h>
sbit dq = P0^0;//定义P0.0为DS18B20的数据线
sbit t_rst=P0^2;//DS1302数据线
sbit t_clk=P0^4;
sbit t_io=P0^3;
sbit P2_0=P2^0;//按键
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P3_0=P3^0;//显示
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
void delay(unsigned char i);//定义延时函数
bit init_18b20();//定义DS18B20初始化复位函数
void w_18b20(unsigned char dat);//定义写DS18B20函数
unsigned char r_18b20();//定义读DS18B20函数
void GetTem(void);//定义获得温度函数
void Temdisp(void);//温度显示函数
void in_1302(unsigned char tdat);//定义写一个字节到DS1302函数
unsigned char out_1302(void);//定义从DS1302读一个字节函数
void w_1302(unsigned char ucAddr, unsigned char ucDa);//定义写DS1302函数
void set1302(void);//设置时间
void get1302(void);//读取时间
void timedisp(void);//时间显示函数
void datedisp(void);//日期显示函数
void setbom(void);
unsigned char TemL;//温度低位
unsigned char TemH;//温度高位
unsigned char Tem1;//转换后温度个位
unsigned char Tem2;//转换后温度十位
unsigned char Led[4];
unsigned char dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//不带点的0~9
unsigned char dis1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带点的0~9
bit TempS;//温度符号位
unsigned int ms;
unsigned char time[7]={0x00,0x24,0x11,0x15,0x01,0x04,0x09};
main()
{
set1302();
while(1)
{
if(!P2_1){get1302();
实物图:
显示当前时间:(11时:24分:47秒)
显示当前日期:(09年:01月:15日)
显示当前温度:(17.2度)
源程序:
#include <reg51.h>
#include<intrins.h>
sbit dq = P0^0;//定义P0.0为DS18B20的数据线
sbit t_rst=P0^2;//DS1302数据线
sbit t_clk=P0^4;
sbit t_io=P0^3;
sbit P2_0=P2^0;//按键
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P3_0=P3^0;//显示
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
void delay(unsigned char i);//定义延时函数
bit init_18b20();//定义DS18B20初始化复位函数
void w_18b20(unsigned char dat);//定义写DS18B20函数
unsigned char r_18b20();//定义读DS18B20函数
void GetTem(void);//定义获得温度函数
void Temdisp(void);//温度显示函数
void in_1302(unsigned char tdat);//定义写一个字节到DS1302函数
unsigned char out_1302(void);//定义从DS1302读一个字节函数
void w_1302(unsigned char ucAddr, unsigned char ucDa);//定义写DS1302函数
void set1302(void);//设置时间
void get1302(void);//读取时间
void timedisp(void);//时间显示函数
void datedisp(void);//日期显示函数
void setbom(void);
unsigned char TemL;//温度低位
unsigned char TemH;//温度高位
unsigned char Tem1;//转换后温度个位
unsigned char Tem2;//转换后温度十位
unsigned char Led[4];
unsigned char dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//不带点的0~9
unsigned char dis1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带点的0~9
bit TempS;//温度符号位
unsigned int ms;
unsigned char time[7]={0x00,0x24,0x11,0x15,0x01,0x04,0x09};
main()
{
set1302();
while(1)
{
if(!P2_1){get1302();
- 时钟温度计
- 数字时钟语音温度计
- 数字时钟语音温度计
- 使用LPC1768实现的数字时钟和温度计
- USB温度计
- 单片机 温度计
- 温度计样式
- 温度计式样的时间
- DS18B20数字温度计使用
- jfreechart做温度计
- 带温度计的杯子
- Draw2d 温度计例子
- 温度计(LCD显示)
- ad590温度计的毕业论文
- DS18B20数字温度计
- DS18B20 与数字温度计
- 自定义View之温度计
- android:自定义温度计View
- 用游戏的方式学习Java
- Visual Studio 2005 提示”试图运行项目时出错:无法启动调试。绑定句柄无效”的解决
- 继承、多态、重载和重写
- oracle sql函数
- Javascript 中 ShowModalDialog 的使用方法
- 时钟温度计
- js实现上传时图片的预览
- oracle处理日期的技巧
- 用过滤器filter设置编码格式
- 9月3日朵朵上幼儿园第三天表现还不错,不过...
- 活化石
- css控制DIV在底部(可以适应不同分辨率)
- sql分页
- 页面document.all.WebBrowser的应用