- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计要求: 制作一个LED显示的智能电子钟: (1) 计时:秒、分、时、日、月、年、星期。 (2) 闰年自动判别。 (3) 时间、年、月、日、星期交替显示。 (4)设定闹钟。 (5)用4个功能键操作来设置当前时间。功能键K1~K4功能如下。 K1—功能键,用于切换显示。 K2—选择键,用于选择要调整的数据。 K3—加按键,当确定要调整的数据后按下该键数据加一。 K4—减按键,当确定要调整的数据后按下该键数据减一。 方案论证:设计两种以上的实现方案并说明各自的优缺点,说明本次课程设计采用的方案及原因。 (1)基于DS1302的电子时钟(LED显示)的设计与仿真 (2)基于DS1302的电子时钟(LED显示)的设计与仿真 方案1硬件的设计与软件的设计都比方案2要简单,但 LCD价格比LED要高好多, 没有现成的LCD,如果现在去买要花费很多时间, 基于各方面的综合考虑选择方案2。 理论设计:用CAD软件绘制的硬件原理图及工作原理的分析;软件流程图及带注释的程序清单。 原理图 此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用8个数码管分别显示,通过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单,单片机采用80C51系列,这种单片机应用简单,适合电子钟设计。 电路模块图: 硬件电路原理图 PCB图 根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构:时钟显示是一个循环过程,系统以单片机8051为主控制器,不断读取实时时钟芯片DS1302提供的时间送LED显示,时间采用24小时模式,当需要调整时间或闹钟时,按下相应按键进入中断处理,整个系统的电源可由电池提供或者用USB电源线由电脑提供,系统总体结构如图所示: 系统总体结构图: 软件流程图: 带注释的程序清单 //*******************************///数码管电子时钟#include reg52.h//头文件 /*************************************宏定义#define uchar unsigned char #define uint unsigned int /****************************************///位定义 sbit k1=P3^0;//功能键 sbit k2=P3^1;//选择键 sbit k3=P3^2;//加一键 sbit k4=P3^3;//减一键 sbit sclk=P1^1;//信号线 sbit io=P1^2;//数据线 sbit rst=P1^0;//复位线 sbit beef=P3^7;//无源蜂鸣器 bit power,on,off;//闹钟电源、开关、临时关闭标志位 /***************************************显示数组 uchar code d[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x7f,0xff};//段选端数组 uchar code w[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//列选端数组 /**************************************自定义变量char second,minute,hour,day,month,week,year,minute2,hour2,count;//时间变量 uchar d0,d1,d2,d3,d4,d5,d6,d7,make,s; /**************************************函数声明 void ds1302_write(uchar add,uchar time);//向DS1302写入数据 void ds1302_read();//获取DS1302时间 void write_byte(uchar byte);//向DS1302写一字节 void time1(); //时间函数 void time2(); //日期函数 void time3(); //闹钟函数 void runnian(); //闰年判断函数 void delay(uint z);//延时函数 void ds1302_init(void); /*****************************************主函数/ void main() {
文档评论(0)