已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书课程名称基于proteus的单片机项目时间教程设计题目 电子万年历设计与调试 专业 班级姓名 学号教师 职称系20年 月 日目 录第1章 方案论证与比较31.1控制器选择31.2显示设备选择41.3输入器件选择41.4温度传感器51.5时间控制芯片6第2章 仿真电路设计72.1控制系统框图72.2仿真电路设计72.3 主要元器件清单8第3章 软件程序设计103.1 液晶显示模块103.2 温度控制模块143.3 时间控制模块193.4 按键扫描模块23设计总结29参考文献30第1章 方案论证与比较以单片机为控制器设计的电子万年历单片机最小系统、利用温度传感器采集外界温度,利用时钟控制芯片进行时间控制,利用输入器件进行参数调整,并通过显示设备进行参数显示。1.1控制器选择方案一:at89s52(图1-1)是atmel公司一款高性能8位单片机,兼容标准的mcs51指令系统级80c51引脚结构,片内含8k的可反复擦写的flash只读存储器,256b的内部数据存储器,具有4个并行i/o口,1个全双工串行口, 3个16位的定时/计数器,6个中断源,2个中断优先级,广泛应用于各种控制系统中。 图1-1方案二:stc89c52rc(图1-2)是宏晶科技公司的一款高性能低功耗8位单片机,兼容标准的8051内核,片内含8k的可反复擦写的flash只读存储器,256b的内部数据存储器,具有4个并行i/o口,1个全双工串行口, 3个16位的定时/计数器,6个中断源,2个中断优先级,广泛应用于各种控制系统中。 图1-2方案选择:二者在结构和功能上基本一样,与at89s52相比,stc89c52rc具有更好的性价比,实用性好,因此选择stc89c52rc为控制器。1.2显示设备选择方案1:led数码管(图1-3)是由led发光二极管组合显示字符的显示器件。它使用了8个led发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称为7段发光二极管。数码管静态显示特点是数码管恒定亮,亮度较高,显示某个数值,直到显示字符的编码改变为止。这种显示方式由于太占据i/o线,所以用于1个或较少数码管显示的场合。数码管动态显示特点是数码管轮流点亮,显示亮度不够,所以通常加驱动电路,由于此中显示方式可以节省i/o口,所以用于多个数码管显示的场合。 图1-3方案2:lcd液晶屏(如图1-4)是一种专门用于显示字母、数字、符号等ascii码的显示器件。lcd1602是一种常用的字符型液晶显示器,控制器大部分为hd44780,接口标准为sip16引脚,分电源、通讯数据和控制3部分。lcd1602芯片和背光电路工作电压与单片机兼容,可以很方便的与单片机连接。 图1-4方案选择:led数码管占i/o线较多设计不方便,lcd1602可以显示跟多内容节省i/o口可以很方便的与单片机连接故选lcd1602液晶屏。 1.3输入器件选择方案1:独立按键(如图1-5)的使用较简单,其特点是每个按键单独占用一根i/o口线,每个按键不会影响其它i/o口线的状态。方案2:矩阵按键(如图1-6)采用行列式结构并按照矩阵形式排列,可以节省i/o口。 图1-5图1-6按键选择:由于电路需要按键功能较多所以选择独立按键更加方便。 1.4温度传感器 方案1:数字温度传感器(ds18 b20)(如图1-7)是dallas公司生产的1-wire,即单总线器件,具有线路简单、体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线可以接多个相同数字温度计的优点,十分方便。方案2:ds1621是dallas(如图1-8)公司生产的一种功能较强的数字式温度传感器和恒温控制器。与同系列的ds1620相比控制更为简单,接口与12c总线兼容,且可以使用一片控制器控制多达8片的ds1621,其数字温度输出达9位,精度为0.5。通过读取内部的计数值和用于温度补偿的每摄氏度计数值,利用公式计算还可提高温度值的精度。ds1621可工作在最低2.7v电压下,适用于低功耗应用系统。利用ds1621和一片51单片机即可构成一个简洁但功能强大的低电压温度测量控制系统 图1-7 图1-8 1.5时间控制芯片方案1时钟芯片ds12887是一个内嵌锂电池的并行通讯芯片,该器件提供完整的实时时钟/日历、定时闹钟,还包含三个可屏蔽中断(共用一个中断输出)以及可编程方波输出。ds12887内部还提供114字节静态ram ,这些存储器是内部锂电池供电的,因此数据不会丢失。ds12c887对于少于31天的月份,其日期能够在月末自动调整,带有闰年的月份可以自动补偿。该器件可配置为24小时或12小时格式。精确的温度补偿电路用于监视的vcc状态。一旦检测到主电源失效,器件可自动切换到备用电源。支持intel和motorola模式。主要特点是:rtc计算秒、分、时、星期、日、月、年信息,具有润年补偿,有效期至2099年; 用二进制或bcd表示时间 ; 具有am、pm标示的12小时模式或24小时模式 ; 可选择intel或motorola总线时序 ; 内部包含128字节存储单元,其中114字节供用户自由使用; 三路中断可分别通过软件屏蔽与检测 ; 闹钟可设置为每秒一次至每星期一次 ; 可编程的方波输出信号; 自动电源失效检测和切换电路。方案2 ds1302是一种可编程的串行实时时钟芯片,内部具有实时时钟、日历和用户可用ram,可计算2100年之前的秒、分、时、日、月、周、年,且对月末日期、闰年天数可自动调整,ram容量为318bit,以spi串行总线方式向单片机传送单字节或多字节的实时时间数据,当主电源断电时备用电源可继续保持时钟连续运行。方案选择:第2章 仿真电路设计2.1控制系统框图根据控制系统要求设计的电子万年历控制系统由单片机stc89s52rc构成的最小系统,由独立按键构成的按键扫描电路、由lcd1602构成的显示电路,由ds1302构成的时间控制电路以及由ds18b20构成的温度采集电路等,控制系统框图如图2-1所示。图2-1 控制系统框图2.2仿真电路设计设计的电子万年历仿真图如图2-2所示,其中单片机最小系统由单片机、时钟电路、复位电路和电源组成,按键扫描电路由选择、调整和确定三个独立按键构成,温度采集电路由单总线温度传感器ds18b20和上拉电阻组成,时钟控制电路由时间ic总线协议的时钟芯片ds1302和晶振构成,液晶显示电路由lcd1602液晶和排阻以并行连接方式与单片机相连,滑动变阻器用来调节液晶显示亮度。图2-2 电子万年历仿真图2.3 主要元器件清单电子万年历元器件清单如表2-1所示:表2-1 电子万年历元器件清单序号元器件名称规格型号数量标号备注1单片机stc89s52rc1u1dip封装2液晶lm016l1lcd1并行接口3按键四脚4功能控制4晶振12mhz1x1时钟电路532768hz1x2时钟控制6电容30pf2c1 c2瓷片,时钟电路10uf1c3电解,复位电路7电阻10k1r1复位4.7k1r2上拉8温度传感器ds18b201u2温度采集9时钟控制芯片ds13021u3时间控制10排阻1k1rp1上拉电阻第3章 软件程序设计电子万年历程序采用自下而上的模块化编程方式,根据控制任务要求,将程序划分为主程序、液晶显示模块、温度采集模块、时间控制模块和按键扫描模块5个模块,其结构如图3-1所示:图3-1 程序结构图3.1 液晶显示模块液晶显示模块完成日期、时间和温度显示,主要有初始化函数、写命令函数、写数据函数和液晶显示函数4部分组成。(1)液晶写命令函数液晶写命令操作时序图如图3-2所示,由此设计的流程图如图3-3所示:图3-2 液晶写命令操作时序图(2)液晶写数据函数液晶写数据操作时序图如图3-4所示,由此设计的流程图如图3-5所示:图3-4 液晶写数据操作时序图 图3-3 写命令流程图 图3-5 写数据流程图(3)液晶初始化函数液晶初始化函数流程图如图3-6所示: 图3-6液晶显示函数流程图如图3-7所示: 图3-7 14液晶显示模块程序清单如下:/*头文件及宏定义*/#include#define uchar unsigned char/*变量声明及定义*/sbit rs=p22;sbit rw=p23;sbit e=p24;uchar lcd1=d: - - w: ;uchar lcd2=t: : : t: ;/*延时函数*/void delay()uchar x;for(x=100;x0;x-);/*液晶写命令控制函数*/void lcd_com(uchar com)rs=0;/命令rw=0;/写操作e=1;/使能有效p0=com;/送命令e=0;/使能无效delay();/延时rw=1;/复位rs=1;/*液晶写数据控制函数*/void lcd_dat(uchar dat)rs=1;/数据rw=0;/写操作e=1;/使能有效p0=dat;/送数据e=0;/使能无效delay();/延时rw=1;/复位rs=1;/*液晶初始化控制函数*/void lcd_init()lcd_com(0x38);/模式设置lcd_com(0x0c);/显示设置lcd_com(0x01);/清屏lcd_com(0x06);/输入模式/*液晶显示控制函数*/void disp_lcd()uchar i;lcd_com(0x80); /第一行地址for(i=0;i16;i+)lcd_dat(lcd1i);lcd_com(0xc0); /第二行地址for(i=0;i16;i+)lcd_dat(lcd2i);3.2 温度控制模块温度控制模块包括ds18b20初始化函数、写字节函数、读字节函数、温度控制函数4个部分。(1)初始化函数ds18b20初始化时序图如图3-8所示,流程图如图3-9所示。图3-8图3-9 初始化流程图(2)写字节函数ds18b20写字节函数时序图如图3-10所示,流程图如图3-11所示。图3-10 写字节时序图图3-11 写字节流程图(2)读字节函数ds18b20读字节函数时序图如图3-12所示,流程图如图3-13所示。图3-12 写数据时序图图3-13 写数据流程图(4)温度控制函数温度控制函数流程图如图3-14所示。图3-13 写数据流程图温度控制程序头文件如下:19#ifndef _ds18b20_h_#define _ds18b20_h_ void temperate();#endif温度控制程序清单如下:/*头文件及宏定义*/#include#define uchar unsigned char/*变量声明及定义*/uchar t,value=0x00,0x00;bit s;sbit dq=p17;extern uchar lcd2;/*延时控制函数*/void del(uchar t)/7usuchar i;for(i=t;i0;i-);/*18b20初始化控制函数*/uchar init_18b20()uchar status;dq=1;dq=0;del(100);/700usdq=1;del(5);/35usstatus=dq;del(25);/175usdq=1;del(30);/210usreturn status;/*读18b20控制函数*/uchar rd_18b20()uchar i,dat=0;for(i=0;i=1;dq=1;if(dq=1)dat|=0x80;del(5);/35usdq=1;return dat;/*写18b20控制函数*/void wr_18b20(uchar dat)uchar i;dq=1;for(i=0;i=1;/*温度控制函数*/void temperate()init_18b20();wr_18b20(0xcc);wr_18b20(0x44);init_18b20();wr_18b20(0xcc);wr_18b20(0xbe);value0=rd_18b20();value1=rd_18b20();if(value1&0xf8)=0xf8)s=1;value0=value0+1; if(value0=0x00)value1=value1+1;elsevalue1=value1;elses=0;t=(value04)|(value14);if(s=1)lcd213=-;elselcd213=t/100+0;lcd214=t%100/10+0;lcd215=t%10+0;3.3 时间控制模块时间控制模块包括读字节函数、写字节函数、读数据函数、写数据函数和初始化函数5部分组成。(1)读字节函数读字节操作时序图如图3-14所示,读字节函数流程图如图3-15所示:图3-14 读字节操作时序图 开始结束初始化写入1位数据clk=1,clk=0数据移位8位数据完成ny 图3-15 读字节函数流程图 (2)写字节函数写字节操作时序图如图3-16所示,读字节函数流程图如图3-17所示:图3-16 写字节操作时序图(3)读数据函数读数据函数流程图如图3-18所示:(4)写数据函数写数据函数流程图如图3-19所示: 图1-7 图1-8 图1-9(5)初始化函数初始化函数流程图如图3-20所示:时间控制模块头文件如下:30#ifndef _1302_h_#define _1302_h_ #define uchar unsigned charvoid set_1302(uchar wei,uchar beet);void time();#endif时间控制模块程序清单如下:/*头文件及宏定义*/#include#define uchar unsigned char#define uint unsigned int/*变量声明及定义*/sbit clk=p10;sbit sda=p11;sbit rst=p12;uchar *week=*,sun,mon,tus,wen,thu,fri,sat;uchar datetime7;extern bit flag;extern uchar lcd1,lcd2;/*1302写数据控制函数*/void wr_1302(uchar dat)uchar i;for(i=0;i=1;/*1302读数据控制函数*/uchar rd_1302()uchar i,b,t;for(i=0;i=1;t=sda;b|=t7;clk=1;clk=0;return b/16*10+b%16;/*读数据控制函数*/uchar rd_dat(uchar addr)uchar dat;rst=0;clk=0;rst=1;wr_1302(addr);dat=rd_1302();clk=1;rst=0;return dat;/*写数据控制函数*/void wr_dat(uchar add,uchar dat)rst=0;clk=0;rst=1;wr_1302(add);clk=0;wr_1302(dat);clk=0;rst=0;/*时间数据写入控制函数*/void set_1302(uchar wei,uchar beet)wr_dat(0x8e,0x00);wr_dat(wei,beet);wr_dat(0x8e,0x80);/*时间控制函数*/void time()uchar i;if(flag=0)for(i=0;i7;i+)datetimei=rd_dat(0x81+2*i);lcd113=*(weekdatetime5);lcd114=*(weekdatetime5+1);lcd115=*(weekdatetime5+2);lcd18=datetime3/10+0;lcd19=datetime3%10+0;lcd15=datetime4/10+0;lcd16=datetime4%10+0;lcd12=datetime6/10+0;lcd13=datetime6%10+0;lcd28=datetime0/10+0;lcd29=datetime0%10+0;lcd25=datetime1/10+0;lcd26=datetime1%10+0;lcd22=datetime2/10+0;lcd23=datetime2%10+0;3.4 按键扫描模块按键扫描模块包含延时消抖函数、按键处理函数、选择按键函数、调节按键函数和确定按键函数5个部分。(1)按键处理函数按键处理函数程序流程图如图3-22所示:图3-22 按键处理函数程序流程图(2)选择按键函数选择按键函数程序流程图如图3-23所示:(3)确定按键函数确定按键函数程序流程图如图3-24所示:图3-23 图 3-24(4)调节按键函数调节按键函数程序流程图如图3-25所示:图3-25按键处理模块头文件如下:#ifndef _key_h_#define _key_h_void key();#endif按键处理模块程序清单如下:/*头文件及宏定义*/#include#include1302.h/*变量声明及定义*/#define uchar unsigned charuchar k,set,shi,fen,miao,day,month,w,year;bit flag;extern uchar lcd1,lcd2,*week;/*按键消抖函数*/void del()uchar i,j;for(i=0;i10;i+)for(j=0;j250;j+); /*选择按键控制函数*/void key_xuan()flag=1;set+;if(set=7)set=0;/*调节按键控制函数*/void key_tiao()if(set=0)year+;if(year=100)year=0;lcd12=year/10+0;lcd13=year%10+0;if(set=1)month+;if(month=13)month=1;lcd15=month/10+0;lcd16=month%10+0;if(set=2)day+;if(month=0)|(month=2)|(month=4)|(month=6)|(month=7)|(month=9)|(month=11)&(day=32)day=1;if(month=3)|(month=5)|(month=8)|(month=10)&(day=31)day=1;if(year%4=0)&(month=2)&(day=30)day=1;if(year%4!=0)&(month=2)&(day=29)day=1;lcd18=day/10+0;lcd19=day%10+0;if(set=3)w+;if(w=8)w=1;lcd113=*(weekw);lcd114=*(weekw+1);lcd115=*(weekw+2);if(set=4)shi+;if(shi=24)shi=0;lcd22=shi/10+0;lcd23=shi%10+0;if(set=5)fen+;if(fen=60)fen=0;lcd25=fen/10+0;lcd26=fen%10+0;if(set=6)miao+;if(miao=60)miao=0;lcd28=miao/10+0;lcd29=miao%10+0;/*确定按键控制函数*/void key_ding()set_1302(0x80,(miao/10)4)|(miao%10);set_1302(0x82,(fen/10)4)|(fen%10);set_1302(0x84,(shi/10)4)|(shi%10);set_1302(0x86,(day/10)4)|(day%10);set_1302(0x88,(month/10)4)|(month%10);set_1302(0x8a,w);set_1302(0x8c,(year/10)4)|(year%10);set=0;flag=0;/*按键识别控制函数*/void key()p3=0xff;if(p3&0x07)!=0x07)del();if(p3&0x07)!=0x07)flag=1;k=p3&0x07;while(p3&0x07)!=0x07);switch(k)case 0x06:key_xuan();break;case 0x05:key_tiao();break;case 0x03:key_ding();break;default: break;3.5 主函数程序主函数程序首先进行液晶初始化,然后调用温度采集程序、时间控制程序和液晶显示函数,其流程图如3-25所示:主函数程序清单如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司燃气安全责任制度
- 二手车管理主体责任制度
- 学校用水设施责任制度
- 体育部工作责任制度汇编
- 酒店消防隐患责任制度
- 工地办公区卫生责任制度
- 常态化疫情防控责任制度
- 安全健康环境责任制度
- 冷库作业安全责任制度
- 经纪事务所法律责任制度
- DB22∕T 3259-2021 健康儿童及青少年心肌酶参考区间规范
- 2024年珠海辅警协警招聘考试真题附答案详解(完整版)
- 知到《微观经济学(重庆财经学院)》智慧树网课完整版章节测试答案
- 《自我管理》课件-2. 第一单元第二课 认清自身角色
- 交通运输执法培训知识课件
- 2025年9月17日事业单位联考《综合应用能力(A类)》试题及答案
- 5年(2021-2025)高考1年模拟化学真题分类汇编专题14 化学实验探究综合题(北京专用)(原卷版)(北京专用)
- 新疆可爱的中国课件
- 城市社会学-课件 第九章 城市社会发展
- 2024年吉林省高职高专单独招生考试数学试卷真题(精校打印)
- 2025年党员党的基本理论应知应会知识100题及答案
评论
0/150
提交评论