没有合适的资源?快使用搜索试试~ 我知道了~
带温度显示的万年历-数码管显示(附电路图和源代码).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 11 浏览量
2022-11-26
18:52:06
上传
评论
收藏 1.25MB PDF 举报
温馨提示
试读
24页
。。。
资源推荐
资源详情
资源评论
设计报告
设计任务:
设计一个智能化万年历时钟电路,LED 数码管作为电路的显示部
分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、
月、日、时、分、秒、星期、温度。并能准确计算闰年闰月的显示。
设计要求:
通过与单片机连接数码管动态显示年、月、日、时、分、秒、星
期等功能,并能准确计算闰年闰月的显示,三个个按钮连接 P3.0、
P3.1、P3.2 可以精确调整每一个时间数值,通过对所设计的万年历
时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术
所连线路和单片机接口仿真图如图3 所示:
图 3 仿真按键
4)温度采集部分 :
DS18B20 温度传感器,测温范围 -55℃~+125 ℃,固有测
温分辨率 0.5℃。独特的单线接口方式, DS18B20 在与微处理器
连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通
讯。DS18B20 的采集数据通过 DQ 传入单片机,单片机读取数据后将
数据输出!如图所示
:
程序如下:
ReadOneChar(void)
{
unsigned char i=0;// 定义 i 用于循环
unsigned char dat = 0;// 读取的 8 位数据
for (i=8;i>0;i--)//8 次循环
{
DQ = 0;// 拉低 DQ 总线开始读时序
dat>>=1;// dat 左移一位
DQ = 1; //释放 DQ 总线
if(DQ)// 如果 DQ=1,执 dat|=0x80;(0x80 即第 7 位为 1,如果 DQ 为 1,
即读取的数据为 1,将 dat 的第 7 为置 1,然后 dat>>=1,循环 8 次结束,dat
即为读取的数据)
//DQ=0,就跳过
dat|=0x80;
Tdelay(4);// 延时以完成此次读时 序,之后再读下一数据
}
return(dat); 返回读取的 dat
}
//写一个字节
WriteOneChar(unsigned char dat)
{
unsigned char i=0;//
for (i=8; i>0; i--)//
{
DQ = 0;//
DQ = dat&0x01;//
Tdelay(5);// 延时以完成此次读时序,之后再读下一数据
2
DQ = 1;//
dat>>=1;//
}
}
//读取温度
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;//
Init_DS18B20();
WriteOneChar(0xCC);// 写指令,跳过 ROM,
WriteOneChar(0x44);// 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);// 写指令,跳过 ROM,
WriteOneChar(0xBE);// 写指令,读暂存存储器
a=ReadOneChar();//读低 8 位
b=ReadOneChar();//读高 8 位
t=b;//
t<<=8;//
t=t|a;//
tt=t*0.0625;//
t= tt*10+0.5;//
return(t); //获得 0.01°C 的精度并返回
}
LED 数码管的选择
LED 数码管分为共阴和共阳两种,以利用STC89C51 的 P0 口作为
LED 显示的数据部分,以 P2 口的七个口作为显示部分的位选,通过
三八译码器和4-16译码器扩展为17 位的位选分别接在一个四位数码
管和 13 个数码管的位选部分。详细电路图如图4-5 所示:
3
程序如下:
P2=0xF0;
P0=L1;
delay(1); //yearh
P2=0xF1;
P0=L2;
delay(1); //yearh
if(cursor==8)
{
P2=0x1F|a;
P0=L17;
delay(1);
}
else
{
P2=0x1F;
P0=L17;
delay(1);
}//week
if(cursor==6)
4
{
P2=0xF2|a;
P0=L3;
delay(1);
}
else
{
P2=0xF2;
P0=L3;
delay(1);
} //yearl
if(cursor==6)
{
P2=0xF3|a;
P0=L4;delay(1);
}
else
{
P2=0xF3;
P0=L4;
delay(1);
} //yearl
if(cursor==5)
{
P2=0xF4|a;
P0=L5;
delay(1);
}
else
{
P2=0xF4;
P0=L5;
delay(1);
} //month
if(cursor==5)
{
P2=0xF5|a;
P0=L6;
delay(1);
}
else
{
P2=0xF5;
P0=L6;
5
剩余23页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6421
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功