



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(完整)带温度显示的万年历_数码管显示(附电路图和源代码)(完整)带温度显示的万年历_数码管显示(附电路图和源代码) 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)带温度显示的万年历_数码管显示(附电路图和源代码))的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)带温度显示的万年历_数码管显示(附电路图和源
2、代码)的全部内容。40设计报告设计任务:设计一个智能化万年历时钟电路,led数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度.并能准确计算闰年闰月的显示.设计要求: 通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接p3.0、p3。1、p3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示:图3 仿真按键4)温度采集部分 :ds18b20温度传感器,测温范围 55+125,固有
3、测温分辨率0.5.独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。ds18b20的采集数据通过dq传入单片机,单片机读取数据后将数据输出!如图所示:程序如下:readonechar(void)unsigned char i=0;/ 定义i用于循环unsigned char dat = 0;/ 读取的8位数据for (i=8;i0;i-)/8次循环 dq = 0;/ 拉低dq总线开始读时序 dat=1;/ dat左移一位 dq = 1; /释放dq总线 if(dq)/ 如果dq=1,执dat|=0x80;(0x80即第7位为1,如果d
4、q为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; i0; i-)/ dq = 0;/ dq = dat0x01;/ tdelay(5);/ 延时以完成此次读时序,之后再读下一数据 dq = 1;/ dat=1;/ /读取温度readtemperature(void)
5、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=ta;/tt=t0.0625;/ t= tt*10+0。5;/
6、 return(t); /获得0。01c 的精度并返回 led数码管的选择led数码管分为共阴和共阳两种,以利用stc89c51的p0口作为led显示的数据部分,以p2口的七个口作为显示部分的位选,通过三八译码器和4-16译码器扩展为17位的位选分别接在一个四位数码管和13个数码管的位选部分。详细电路图如图4-5所示:程序如下: p2=0xf0;p0=l1;delay(1); /yearh p2=0xf1;p0=l2;delay(1); /yearhif(cursor=8)p2=0x1fa;p0=l17;delay(1);elsep2=0x1f;p0=l17;delay(1);/week if
7、(cursor=6)p2=0xf2|a;p0=l3;delay(1);elsep2=0xf2;p0=l3;delay(1); /yearl if(cursor=6)p2=0xf3|a;p0=l4;delay(1);elsep2=0xf3;p0=l4;delay(1); /yearl if(cursor=5)p2=0xf4|a;p0=l5;delay(1);elsep2=0xf4;p0=l5;delay(1); /month if(cursor=5)p2=0xf5a;p0=l6;delay(1);elsep2=0xf5;p0=l6;delay(1); /month if(cursor=4)p2=
8、0xf6a;p0=l7;delay(1);elsep2=0xf6;p0=l7;delay(1); /day if(cursor=4)p2=0xf7a;p0=l8;delay(1);elsep2=0xf7;p0=l8;delay(1); /day p2=0xff; if(cursor=3)p2=0xf8|a;p0=l9;delay(1);elsep2=0xf8;p0=l9;delay(1); /hour if(cursor=3)p2=0xf9|a;p0=l10;delay(1);elsep2=0xf9;p0=l10;delay(1); /hour if(cursor=2)p2=0xfaa;p0=
9、l11;delay(1);elsep2=0xfa;p0=l11;delay(1); /min if(cursor=2)p2=0xfb|a;p0=l12;delay(1);elsep2=0xfb;p0=l12;delay(1); /min if(cursor=1)p2=0xfc|a;p0=l13;delay(1);elsep2=0xfc;p0=l13;delay(1); /sec if(cursor=1)p2=0xfda;p0=l14;delay(1);elsep2=0xfd;p0=l14;delay(1); /sec p2=0xfe;p0=l15;delay(1); /temp p2=0x0f
10、;p0=l16;delay(1); /temp p2=0xff;图5 日期显示 仿真实验整个电路仿真图如下图6所示所示:图6 仿真电路图 实物的制作与调试(1) 原理图的绘制与pcb的制作(2) 原理图的绘制(3) 在protel99se中先新建一个工程,把所需要的元件载入到文档里面。(4) 按照所设计的电路画原理图(5) 通过电气检查是否有错,并修改完善。原理图如图7所示: 显示部分图7 原理图系统实现: 1、方案设计、方案比较方案一:采用实时时钟芯片实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取数据
11、进行显示,因此计时功能的实现无需占用cpu的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性ram,可用来存放需长期保存但有时也需变更的数据.由于功能完美,精度高,软件程序设计相对简单,且计时不占用cpu时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。方案二:软件控制利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时,该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术mcs-51汇编
12、语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现时, stc89c51单片机是低功耗的具有4kb在线可编程flash存储器的单片机.它与通用80c51系列单片机的指令第和引脚兼容。片内的flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大,而且也较容易购买.总结:所要实现的功能通过单片机编程就可以达到,不需要额外的时钟芯片来增加成本,并使外围电路更加简单明了。3、实验步骤(1)、给电路通上电源, led显示是否通电;(2)、电路板上分别选择模式、+ 和 按键,可以对时间和日期进行任意的调整,数码管分别显示日期和时间;调整模式按键按下表示对
13、时间开始进行调整,通过选位来确定所要调整的位置,分别可以加和减。(3)、用一个四位数码管和13个数码管,可显示时间和日期。实验实物图如图11-12所示:总结:经过测试,我所做的万年历相对稳定,并且能准确的计时以及调整时间,经过这次试验懂得了仿真与实物是有差别的,也学会了很多。实验总结:1、这次我的设计的任务是万年历时钟的设计,通过c51芯片程序控制显示万年历。本次实验是设计一个智能化万年历时钟电路,led数码管作为电路的显示部分,按钮作为调整时间和日期部分,可任意的对时间进行所需的调整,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度等功能,并能准确计算闰年闰月的显示。2、我采
14、用的是12mhz的晶振,再通过一系列的计算从而实现万年历时钟的基本功能。在实验调试过程中,出现了很多的问题,仿真时不需要数码管驱动依然能够实现所需的功能,但实验时出现了数码管亮度达不到要求的情况.我采用了以下方案来驱动数码管:1) 74ls138和74hc154作为位选驱动;2) 在p0口接的上拉电阻,在这个过程中又涉及了上拉电阻的大小,开始用10k的电阻,因为电阻过大,使电流不能达到要求,以至于不能增加数码管的亮度。最后我们换用1k的上拉电阻,成功的实现了我们所要得到的结果,数码管的亮度达到了所需的要求。3、在做板过程中出现的线断路问题;通过万用表的检测一一排除和焊接!4、本次实验让自己对单
15、片机的应用有了进一步的了解,对程序也有了更深的体会!元件清单 元件名称数量数码管17 个74hc1381 个74hc1541 个stc89c51 个排阻1 个按钮3 个电阻4 个12m晶振1 个ds18b201 个30p电容2 个附录 源程序如下所示:#define uchar unsigned char#define uint unsigned int#define dq p3_7includeat89x51。huint sec; 初始化秒uint min=50;/初始化分钟uint hour=9;/ 初始化时uint day=10;/ 初始化天uint month=6;/ 初始化月uint
16、 yearl=11;/ 初始化年低位uint yearh=20;/ 初始化年高位uint week=6;/ 初始化星期uint tcnt; / 定义tcnt变量uint cursor=0;/ 定义cursor变量uchar a=0xff;定义a变量uchar code seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴数码显示码值void delay(uint t) uint i; while(t-) for (i=0;i0;i)/8次循环 dq = 0;/ 拉低dq总线开始读时序 dat=1;/ dat左移一位 dq = 1;
17、/释放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; i0; i-)/ dq = 0;/ dq = dat0x01;/ tdelay(5);/ 延时以完成此次读时序,之后再读
18、下一数据 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();
19、/读高8位t=b;/t=9)cursor=0;/如果cursor大于9则cursor=0if(p1_0=0)cursor=0; p3_1=1; if(p3_1=0) delay(10); if(p3_1=0) /如果按键被按下 kdelay(); if(p3_1=0) /确定按键按下 if(cursor=1)sec+;/如果cursor=1则按键按下秒数加一if(sec=60)sec=0;/如果秒数等于60秒则回到0开始 if(cursor=2)min+;/如果cursor=2则按键按下分数加一if(min=60)min=0; 如果分数等于60分则回到0开始 if(cursor=3)hour+
20、;/如果cursor=3则按键按下时数加一if(hour=24)hour=0; /如果时数等于24时则回到0开始 if(cursor=4)day+;/如果cursor=4则按键按下天数加一if(day=31)day=0; /如果天数等于31天则回到0开始 if(cursor=5)month+;/如果cursor=5则按键按下月数加一if(month=13)month=0; /如果月数等于13月则回到0开始 if(cursor=6)yearl+;/如果cursor=6则按键按下年数低位加一if(yearl=100)yearl=0; /如果年数等于100则回到0开始 if(cursor=7)yea
21、rh+;/如果cursor=7则按键按下年数高位加一if(yearh=30)yearh=20; /如果年数大于30则回到0开始if(cursor=8)week+;/如果cursor=8则按键按下星期数加一if(week=8)week=1; /如果星期数等于8则回到0开始 while(p3_1=0); p3_2=1;/写入时先写1 if(p3_2=0)/按键按下 delay(10);/延时10个毫秒 if(p3_2=0)/确定按键按下 kdelay(); if(p3_2=0) if(cursor=1)sec-;/如果cursor=1则按键按下秒数减一if(sec=0)sec=59; /如果秒数小
22、于0则回到59开始 if(cursor=2)min-;/如果cursor=2则按键按下分数减一if(min=0)min=59; /如果分数小于0则回到59开始 if(cursor=3)hour-;/如果cursor=3则按键按下时数减一if(hour=0)hour=23; /如果时数小于0则回到23开始 if(cursor=4)day-;/如果cursor=4则按键按下天数减一if(day=0)day=31; /如果天数小于0则回到31开始 if(cursor=5)month-;/如果cursor=5则按键按下月数减一if(month=0)month=12; /如果月数小于0则回到12开始 if(cursor=6)yearl-;/如果cursor=6则按键按下年的低位数减一if(yearl=0)yearl=99; /如果年数小于0则回到99开始 if(cursor=7)yearh-;/如果cursor=7则按键按下年的高位数减一if(yearh=20)yearh=30; /如果年数小于0则回到30开始if(cursor=8)week-;/如果cursor=8则按键按下秒星期减一if(week=0)week=7; /如果星期数小于0则回到7开始while(p3_2=0); i=readtemperature(); display(segyearh/10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车绿色金融财产信托融资合同范本
- 2025年乡村民宿客栈绿色环保装修工程服务合同
- 2025年企业车辆租赁合同书及续租操作细则
- 2025年医药市场深耕与品牌影响力提升全面合作协议
- 茶叶品牌建设专业培训及咨询服务合同
- 2025年高品质玄武岩石材定制加工合作协议
- 2025年网络安全技术成果转化与应用授权及安全产品定制开发合同
- 2026届湖南省邵阳市邵东县创新实验学校高二化学第一学期期中综合测试试题含解析
- 麻醉药品、精神药品培训考核试题及答案
- 混凝土结构耐久性设计与评估方案
- 2025年9.3纪念抗日战争胜利80周年阅兵式观后感-钢铁长城下的历史沉思与青春誓言
- 2025至2030中国竹纤维行业市场行业市场深度研究及发展前景投资可行性分析报告
- 豆芽成长记录课件
- 皮肤 T 细胞淋巴瘤诊疗指南(2025年版)
- (完整版)钢结构厂房施工组织设计(含土建)
- 水饺加盟合同协议
- DLT 572-2021 电力变压器运行规程
- 加强师德师风建设学校师德师风警示教育讲座培训课件
- 中国传统文化完整版课件全套ppt教学教程汇总最新最全
- 汽车构造底盘介绍(课堂PPT)
- CRC的职责PPT课件
评论
0/150
提交评论