#include <REGX51.H>
#include<intrins.h> // 声明 _nop_();
#include<absacc.h>
#define E1 P2_2
#define E2 P2_3
#define A0 P2_1
#define DATA P1
unsigned char state;
unsigned char state1=0;
unsigned char flg=0;
unsigned char resultz,resultf;
signed data temp_data[2]={0x00,0x00};
unsigned char code bmp001[]=
{0x00,0x00,0xC0,0xE0,0x30,0x18,0x08,0x08,0x08,0x08,0x18,0x30,0xE0,0xC0,0x00,0x00,
0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x20,0x30,0x18,0x0F,0x07,0x00,0x00,
/////0
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x00,0x00,0x00,
/////1
0x00,0x00,0x20,0x70,0x28,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0xF0,0x70,0x00,0x00,
0x00,0x00,0x30,0x30,0x28,0x28,0x24,0x24,0x22,0x23,0x21,0x21,0x30,0x38,0x00,0x00,
////2
0x00,0x00,0x30,0x30,0x38,0x08,0x88,0x88,0x88,0x88,0xD8,0xF8,0x70,0x70,0x00,0x00,
0x00,0x00,0x18,0x18,0x38,0x20,0x21,0x21,0x21,0x21,0x21,0x3B,0x1E,0x1E,0x00,0x00,
///////3
0x00,0x00,0x00,0x00,0x80,0x80,0x40,0x20,0x10,0x18,0xF8,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x03,0x03,0x02,0x02,0x02,0x22,0x22,0x3F,0x3F,0x22,0x22,0x00,0x00,
/////////4
0x00,0x00,0x00,0xF8,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x08,0x00,0x00,
0x00,0x00,0x00,0x19,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x3F,0x1F,0x00,0x00,
////////////5
0x00,0x00,0xF0,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x98,0x10,0x00,0x00,
0x00,0x00,0x1F,0x3F,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x1F,0x1F,0x00,0x00,
/////////////6
0x00,0x00,0x18,0x18,0x18,0x08,0x08,0x08,0x08,0x88,0xC8,0x68,0x38,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3E,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
////////////7
0x00,0x00,0x70,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x70,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1E,0x1E,0x00,0x00,
/////////8
0x00,0x00,0xE0,0xF0,0x18,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF0,0xE0,0x00,0x00,
0x00,0x00,0x00,0x11,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x31,0x3F,0x0F,0x00,0x00,
////////9
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
///-
0x00,0x00,0x70,0x70,0x70,0x00,0x00,0x00,
0x00,0x00,0x1C,0x1C,0x1C,0x00,0x00,0x00,
/////:
0x00,0x06,0x09,0x09,0xE6,0xF0,0x18,0x08,0x08,0x08,0x18,0x30,0x78,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00,
///℃
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
////·
};
unsigned char code time001[]=
{0x04,0x84,0x84,0xFC,0x86,0x84,0x00,0xFE,0x02,0x82,0x7A,0x02,0xFF,0x02,0x00,0x00,
0x10,0x30,0x10,0x1F,0x88,0x88,0x40,0x23,0x18,0x07,0x78,0x80,0x83,0x80,0xE0,0x00,
///现
0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,0x08,0xE8,0x08,0x88,0x08,0x0C,0x08,0x00,
0x08,0x04,0x02,0xFF,0x00,0x40,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x60,0x40,0x00,
///在
0x00,0xFC,0x84,0x84,0x84,0xFE,0x14,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00,
///时
0x00,0xF8,0x01,0x02,0xF6,0x10,0x12,0x12,0x12,0x12,0xFA,0x12,0x02,0xFF,0x02,0x00,
0x00,0xFF,0x00,0x00,0x3F,0x11,0x11,0x11,0x11,0x11,0x3F,0x40,0x80,0x7F,0x00,0x00
////间
};
unsigned char code temprature001[]=
{0x04,0x84,0x84,0xFC,0x86,0x84,0x00,0xFE,0x02,0x82,0x7A,0x02,0xFF,0x02,0x00,0x00,
0x10,0x30,0x10,0x1F,0x88,0x88,0x40,0x23,0x18,0x07,0x78,0x80,0x83,0x80,0xE0,0x00,
///现
0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,0x08,0xE8,0x08,0x88,0x08,0x0C,0x08,0x00,
0x08,0x04,0x02,0xFF,0x00,0x40,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x60,0x40,0x00,
///在
0x10,0x22,0x64,0x0C,0x80,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
0x04,0x04,0xFE,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,
///温
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x34,0x26,0x04,0x00,
0x40,0x20,0x9F,0x80,0x42,0x42,0x26,0x2A,0x12,0x2A,0x26,0x42,0x40,0xC0,0x40,0x00
///度
};
unsigned char LEDBufs[6];
unsigned char LEDBufw[5];
unsigned char sec;
unsigned char sec;
unsigned char min;
unsigned char hour;
delay1ms()
{
unsigned char i;
for(i = 250; i > 0; i--);
for(i = 247; i > 0; i--);
}
delayms(unsigned char i)
{
for(; i > 0; i--)
delay1ms();
}
timer0() interrupt 1
{
unsigned int j;
j++;
if(j==4000)
{ j=0;
sec++;
if(60 == sec)
{
sec = 0;
min ++;
if(60 == min)
{
min = 0;
hour ++;
if(24 == hour)
{
hour = 0;
}
}
}
}
LEDBufs[0] = sec%10;
LEDBufs[1] = sec/10;
LEDBufs[2] = min%10;
LEDBufs[3] = min/10;
LEDBufs[4] = hour%10;
LEDBufs[5] = hour/10;
}
void reset()
{
unsigned int i;
P0_0=0;
i=60;
while(i>0) i--; //delay for at least 480uS(11.0592MHz) for reset impulse(482us)
P0_0=1;
i=4;
while(i>0) i--; //delay a period for ds18b20 to detect the rising edge(34us)
i=60;
while(i>0) i--; //delay for at least 480uS(11.0592MHz) for presence impulse(482us)
}
readbit()
{
unsigned int i;
bit value;
P0_0=0;
i++; //(3us)
P0_0=1;
i++;
i++; //short delay(6us)
value=P0_0;
i=6;
while(i>0) i--; //delay(50us)
return((char)value);
}
readbyte()
{
unsigned char i,value,result;
value=0;
result=0;
for(i=1;i<=8;i++)
{
value=readbit();
result=(value<<7)|(result>>1); //build the entire byte from the lower bit
}
return(result);
}
void writebyte(unsigned char date)
{
unsigned int i;
unsigned char j;
bit inbit;
for(j=1;j<=8;j++)
{
inbit=date&0x01;
date=date>>1;
if(inbit) //case of write 1
{
P0_0=0;
i++;
i++; //(6us)
P0_0=1;
i=8;
while(i>0) i--; //(68us)
}
else //case of write 0
{
P0_0=0;
i=8;
while(i>0) i--; //(68us)
P0_0=1;
i++;
i++; //(6us)
}
}
}
trans_temperature()
{
reset();
writebyte(0xcc); //skip rom
writebyte(0x44); //transform the temperature into data //启动温度转换
}
get_temperature()
{
trans_temperature();
reset();
writebyte(0xcc); //skip rom
writebyte(0xbe); //read the data
temp_data[0]=readbyte();
temp_data[1]=readbyte();
}
timer1() interrupt 3
{
unsigned int i;
TL1=(65536-1000)/256;
TH1=(65536-1000)%256;
TR1=1;
get_temperature();
resultf= temp_data[0];
resultz=( temp_data[0]>>4)|( temp_data[1]<<4);//drop the lowerst 4 bits and the highest 4 bits to build one byte with unit "1" instead of "0.0625"
resultf=(resultf&0x0f);
if(resultz>0x80)
{
LEDBufw[4]=10;
resultz=~resultz+1;
resultf=~resultf+1;
LEDBufw[3]=resultz/10;
LEDBufw[2]=resultz%10;
i=resultf*6.25;
LEDBufw[1]=i/10;
LEDBufw[0]=i%10;
}
else
{
LEDBufw[4]=resultz/100;
resultz=resultz%100;
LEDBufw[3]=resultz/10;
LEDBufw[2]=resultz%10;
i=resultf*6.25;
LEDBufw[1]=i/10;
LEDBufw[0]=i%10;
}
}
key()
{
if(0==P3_2)
{
state1++;
if(2==state1)
state1=0;
while(0==P3_2);
}
if(0==P3_0) //状态切换键按下时
{
state ++;
if(4 == state)
{
state = 0;
}
while(0 == P3_0);
}
switch(state1)
{
case 0:
switch(state)
{
case 1: //秒调时
if(0 == P3_1)
{
sec ++;
if(60 == sec)
{
sec = 0;
}
}
delayms(60);
break; //分调时
case 2:
if(0 == P3_1)
{
min ++;
if(60 == min)
{
min = 0;
}
}
delayms(60);
break;
case 3: //小时调时
if(0 == P3_1)
{
hour ++;
if(24 == hour)
{
hour = 0;
}
}
delayms(60);
brea
没有合适的资源?快使用搜索试试~ 我知道了~
液晶电子钟+温度计(ds18b20)带仿真图
共14个文件
bak:2个
dsn:1个
plg:1个
2星 需积分: 11 39 下载量 156 浏览量
2009-03-28
00:02:11
上传
评论
收藏 60KB RAR 举报
温馨提示
液晶电子钟+温度计(ds18b20)能功能切换,温度计精确到小数点后两位,带仿真图,c代码源程序,自己编写
资源推荐
资源详情
资源评论
收起资源包目录
+温度计.rar (14个子文件)
液晶电子钟+温度计
dd.M51 35KB
LCD1.DSN 85KB
dd.plg 215B
dd_Opt.Bak 844B
dd.Opt 844B
dd_Uv2.Bak 2KB
gh.c 14KB
Last Loaded LCD1.DBK 85KB
gh.LST 32KB
LCD1.PWI 1KB
gh.OBJ 30KB
dd.Uv2 2KB
dd.lnp 21B
dd.hex 10KB
共 14 条
- 1
资源评论
- chanajuan2014-03-20下载下来,里面的仿真图不能用
普通网友
- 粉丝: 4
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功