标题:
Nokia5110多功能时钟(带温度等级)
[打印本页]
作者:
小娜子
时间:
2017-6-9 21:10
标题:
Nokia5110多功能时钟(带温度等级)
这个时钟采用Nokia5110显示屏
0.png
(58.63 KB, 下载次数: 38)
下载附件
2017-6-9 22:38 上传
单片机源程序如下(带温度等级):
//重庆三峡学院电子与信息工程学院创新实验室唐老鸭
//原创----川流不息
#include<reg52.h>
#include "rset_time.h"
#include "ds18b02.h"
#include "yiwei595.h"
#include "liushuideng.h"
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^5;
uint aa,temperature=0; //温度值
uchar num1,flag1,flag2;
uchar d[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
void show(uchar shi,uchar fen,uchar miao)//数码管显示时间及温度
{
//显示温度
a=0;
b=1;
c=1; //数码管位选择
duan=d[temperature/1000];
input_595();
output_595();
delay(1);
//消除阴影
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=1;
c=1; //数码管位选择
duan=d[temperature%1000/100];
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
//显示时间
a=0;
b=0;
c=0; //数码管位选择
duan=d[shi/10]; //数码管显示
input_595();
output_595();
delay(1);
//消除阴影
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=0;
c=0; //数码管位选择
duan=d[shi%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=0;
b=1;
c=0; //数码管位选择
duan=d[fen/10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=1;
c=0; //数码管位选择
duan=d[fen%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=0;
b=0;
c=1; //数码管位选择
duan=d[miao/10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=0;
c=1; //数码管位选择
duan=d[miao%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
}
void show1(uchar nian,uchar yue,uchar ri,uchar xingqi)//数码管显示时间及温度
{
duan=d[10]; //数码管显示
input_595();
output_595();
//显示时间
a=0;
b=0;
c=0; //数码管位选择
duan=d[nian/10]; //数码管显示
input_595();
output_595();
delay(1);
//消除阴影
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=0;
c=0; //数码管位选择
duan=d[nian%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=0;
b=1;
c=0; //数码管位选择
duan=d[yue/10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=1;
c=0; //数码管位选择
duan=d[yue%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=0;
b=0;
c=1; //数码管位选择
duan=d[ri/10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=0;
c=1; //数码管位选择
duan=d[ri%10]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
//显示xingqi
a=1;
b=1;
c=1; //数码管位选择
duan=d[xingqi]; //数码管显示
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
}
void show2()
{
//显示温度
a=0;
b=1;
c=0; //数码管位选择
duan=d[temperature/1000];
input_595();
output_595();
delay(1);
//消除阴影
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=1;
c=0; //数码管位选择
duan=d[temperature%1000/100];
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=0;
b=0;
c=1; //数码管位选择
duan=d[temperature%100/10];
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
a=1;
b=0;
c=1; //数码管位选择
duan=d[temperature%10];
input_595();
output_595();
delay(1);
duan=d[10]; //数码管显示
input_595();
output_595();
temperature=readtemperature();//读温度
}
void main()
{
flag=0;
flag1=0;
flag2=0;
num=0;
num1=0;
while(1) //无限循环
{
temperature=readtemperature();//读温度
if(flag==0)
get_time();//读出时间
rset_time();
if(flag2==0)
show(shi,fen,miao);
//整点报时
if(fen==0&&miao==0&&nian!=0)
{
beep=0;
rjl(); //渐亮
beep=1;
rja(); //渐暗
flag2=1;
}
//整点时闪烁显示日期5次
if(flag2==1)
{
get_time();
if((miao<=6&&miao>=4)||(miao<=11&&miao>=9)||(miao<=16&&miao>=14)||(miao<=21&&miao>=19)||(miao<=26&&miao>=24))
show1(nian,yue,ri,xingqi);
else
show(shi,fen,miao);
if(miao==27)
flag2=0;
}
//调日期时显示日期
while(flag1)
{
show1(nian,yue,ri,xingqi);
rset_time();
}
//按上键显示日期
if(key_up==0&&num==0)
{
delay(8);
while(!key_up)
show1(nian,yue,ri,xingqi);
};
//按下键显示温度
if(key_down==0&&num==0)
{
delay(8);
while(!key_down)
show2();
};
if(shi==12&&fen==0&&miao==28)
{
rdlszy(); //倒流水左移
rja(); //渐暗
P0=0xff;
ys1ms(300); //延时0.3秒
rzmyy(); //走马右移
P0=0xff;
ys1ms(300);
rzmzy(); //走马左移
P0=0xff;
ys1ms(300);
rjl(); //渐亮
rja(); //渐暗
P0=0xff;
ys1ms(300);
rzmnwyd(); //走马内外移动
P0=0xff;
ys1ms(300);
rlszy(); //流水左移
rja(); //渐暗
ys1ms(300);
rlsyy(); //流水右移
rja(); //渐暗
ys1ms(300);
rsdzmyy(); //3灯走马右移
P0=0xff;
ys1ms(300);
rsdzmzy(); //3灯走马右移
P0=0xff;
ys1ms(300);
rlsnwyd(); //流水内外移动
P0=0xff;
ys1ms(300);
rtbyd(); //跳变7种模式
P0=0xff;
ys1ms(300);
get_time();
}
if(k4==0)
{
delay(5);
while(1)
{
rdlszy(); //倒流水左移
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
Nokia 5110多功能时钟(带温度等级).zip
(75.05 KB, 下载次数: 33)
2017-6-9 21:10 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1