- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计报告
万年历的设计
姓 名: 施韧
学 号: 0915321028
班 级: 09自动化
指导教师:晏来成
基于51单片机的万年历
摘要:
电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准功能AT89C52单片机,LCD显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用了1602液晶显示,并且使用蜂鸣器实现了整点报警的功能,温度测试的功能实现使用了DS18B20,并实现了温度过高或过低时的温度报警。
软件方面主要包括日历程序、时间调整程序,显示程序等。程序采用C语言编写。所有程序编写完成后,在KeilC51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真,并最终实现基本要求。
综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
一、设计要求
基本要求:
1,8 个数码管上显示,显示时间的格式为(假如当前时间是19:32:20)“19-32-20”;
2,具有日历功能;
③ 时间可以通过按键调整。
发挥部分:
④ 具有闹钟功能(可以设定多个)。
二:总体设计
电路设计框图
系统硬件概述
本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由单片机定时功能提供;温度的采集由DS18B20构成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围 -55℃~+125℃,固有测温分辨率0.5℃
液晶显示模块的设计
LCD1602有16个引脚,其中VCC、VSS分别为电源正负极;VO为液晶偏压信号输入端,图中W1可调节液晶明亮度; DB0—DB7 8位数据段;BLA、BLK背光源正负极;
RS数据/命令选择端;R/W读写选择端;E使能端
温度采集模块设计
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
PCB图
三电子时钟的软件设计
系统软件按键检测流程图
系统软件定时器程序流程图
子程序的设计
DS18B20温度子程序
void write_temp(uchar add,uchar dat)//向LCD写温度数据,并指定显示位置
{
uchar gw,sw,bw;
if(dat=0dat=128)
{
gw=dat%10;//取得个位数字
sw=dat%100/10;//取得十位数字
bw=dat/100 ;//取得百位数字
}
else
{
dat=256-dat;
gw=dat%10;//取得个位数字
sw=dat%100/10;//取得十位数字
bw=-3; //0x30-3表示为负号
}
write_1602com(er+add);//er是头文件规定的值0x80+0x40
write_1602dat(0x30+bw);//数字+30得到该数字的LCD1602显示码
write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码
write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码
write_1602dat(0xdf);//显示温度的小圆圈符号,0xdf是液晶屏字符库的该符号地址码
write_1602dat(0x43); //显示C符号,0x43是液晶屏字符库里大写C的地址码
}
1602子程序
void write_byte(uchar dat)//写一个字节
{
ACC=dat;
RST=1;
for(a=8;a0;a--)
{
IO=ACC0;
SCLK=0;
SCLK=1;
ACC=ACC1;
}
}
uchar read_byte()//读一个字节
{
RST=1;
for(a=8;a0;a--)
{
ACC7=IO;
SCLK=1;
SCLK=0;
ACC=ACC1;
}
return (ACC);
}
//----------------------------------------
void write_1302(
您可能关注的文档
最近下载
- IATF16949年度内部审核方案.docx VIP
- DL_T 5434-2021 电力建设工程监理规范.docx VIP
- 人教版数学一年级下册期末测试卷(三)及答案.0.pdf VIP
- 灯泡贯流式水轮发电机组水导轴承A级检修作业指导书.docx VIP
- 施工质量-管理体系.doc VIP
- 转业军人考试试题题库完整版.doc VIP
- 2025年中级银行从业资格之中级银行业法律法规与综合能力考试题库及答案【基础+提升】.docx VIP
- 海南省中医医术确有专长人员医师资格考核中医医术专长综述表.docx
- T0305系统项目测试总结报告.doc VIP
- 江苏省2025学位英语考试真题及答案解析2025.pdf VIP
文档评论(0)