
宜宾学院物理与电子工程学院主题论文微计算机(年末)课程设计标题: 基于51-SCM的数字电子管万年历学院(系): 物理与电子工程学院等级: 2012硕迅励志班讲师: 文亮单位名称: 陈志峰学生编号: 120303025 2014年6月目录摘要2第1章导言31、10,000日历的背景31、20,000日历的应用4第2章设计原理5第3章实施过程63,1选项63,2系统框图63、3描述63、4电路模块描述73、5软件设计模块83、5、10,000年历算法83、5、2时间处理93、5、3日期处理10第4章最终结果11第5章增益和经验135,1设计过程中遇到的问题和解决方案135,2增益和经验13致谢14参考文献15摘要随着人们对时间概念的增强,的形成日历被广泛用于生活中的各种场合. 当前使用的万年历,即包括若干年或适合数年的日历. 一万年只是一个符号,表明时间跨度很大. 本课程设计中制作的“基于51单片机的数字万年历”是基于AT89C51单片机的简单万年历,在日历上显示(日历)年,月,日,时,分和秒功能. 以电子产品为载体的数码管. 使用AT89C51 MCU内部定时器/计数器T0模式2(8位自动重载初始值)来生成时间为250us的信号,然后计数4000次以生成1S时间来发出中断,然后将数据发送到数据处理后的微控制器数字管(共阴极数字管)显示(动态显示).
关键字: 51单片机,万年历,数码管,动态显示,计时/计数T0第1章简介1.万年历的背景万年历是中国古代传说中最古老的太阳历. 为了纪念日历编辑者的优点,该日历被命名为“万年历”. 根据传说,很久以前,有一个名叫万年的年轻人,他看到季节混乱,想解决这个问题. 一天,他上山去砍柴,坐在树荫下休息. 树影的运动启发了他. 他设计了一个日measuring来测量太阳和阴影. 但是,多云的天气,雨雾会影响测量. 后来,悬崖上的地泉引起了他的兴趣,他又做了一个五层漏水的锅. 随着时间的流逝,他发现每隔三百六十天,时间就会重复一次. 当时的君主叫祖仪,出乎意料的天气使他非常沮丧. 一位叫阿亨的大臣说,为了取悦皇帝,他将建立一个屋顶供奉众神. 祖义认为这是合理的,他率领这百名官员献祭天堂,但无济于事. 在了解了数千年之后,他不禁带着日d和漏水的锅去见了皇帝,并向祖毅解释了日月原理. 祖毅听到龙岩大跃的声音,感觉很好. 于是他离开了万年,在天坛前建造了日月亭,并建造了日d平台和漏水的亭子. 并派出十二个男孩服务一万年. 祖毅对万年说: “希望您能测量日月的规律性,计算准确的早晚时间,制作日历,使世界上的利民人民受益. ”一次,祖义的任务是告诉Heng了解万年测历的进度. 当他登上日月坛时,他看到天坛旁刻着的石墙: 日出和日落336,他又重新开始了.

草木树木在四点钟枯萎,一年有十二发. 看到这一点,阿衡知道成功研究了10,000年的. ”称其为春节. “冬天一年又一年,每年春天来临. 后来,经过多年的长期观察和仔细的计算,得出了一个准确的太阳历. 当他把太阳历介绍给下任君主时,他已经被银须所覆盖. 君主深受感动,为纪念一万年的成就,他将太阳历命名为“万年历”,并将万万年命名为太阳,月亮和生日星,现在使用的万年历包括数年或适合几年,一万年只是一个符号,表示时间跨度很长,我在本课程设计中制作的“基于51单片机的数字万年历”是基于AT89C51单片机的简单万年历,在基于电子产品的数码管上显示(日历)年,月,日,时,分和秒功能1.万年历的应用在时间的概念上,万年历广泛用于生活中的各种场合. 如年历的出版,日历,电子表,手机日历软件,计算机日历软件等.
随着科学技术的发展,现代万年历可以同时显示多个日历,例如公历,阴历和主历. 它还可以包含与年历,禁忌,假期和提醒有关的各种功能信息;它的载体包括年历. 出版物,电子产品,计算机软件和手机应用程序非常丰富,这给人们使用带来了极大的方便. 太阳历可能是我们祖先使用的最早的日历. 它基于太阳定律. 古人以为太阳绕地球旋转一周,一年到今天,我们知道这是地球围绕太阳公转的时期,但古人却知道相反的情况. 根据学者的研究,战国时期仍然有太阳历,每年十个月,命名为天干,一个月的六十三分,分为三十天,十天以陆地分支命名,因此三百零零年. 十个月之内的六十天,再加上过去五到六天没有的“浪费天数”为一年365天或366天. 在这种情况下,首先将太阳术语安排在“夏至”和“冬至”中,然后安排在“春分”和“秋分”中. 该季节的返回年份分为春季和秋季,然后将春季,夏季,秋季和冬季分为二十四个节气. 在古代文献“关子”中有此历法的痕迹,该文献与彝族和西南少数民族的火炬节有关. 岭南乡亲仍然散布“冬至新年”的说法,说乡亲们对这个历法记忆犹新. 古人曾经把冬至“一阳两新”视为元旦. 阴历是基于月球的盈亏变化. 阴历月的时间为二十九或三十天,而一年的长度仅为该月的整数倍,与返回的年份无关. 这个月与四个季节无关.

希腊和回历日历属于这种类型的日历. 在这一年中,“双泉”和“盲年”也是不可能的. 第2章设计原则一年365天分为12个月. 在这12个月中,有7个月是31天,有4个月是30天,还有1个月是28天或29天. 通过用软件编程语言描述这种算法,然后使用硬件电路实现功能和显示,设计了一种简单的电子万年历. 这种设计的原理非常简单,即AT89C51微控制器内部定时器/计数器T0的模式2(8位自动重载初始值)用于产生时间为250us的信号,然后1S的4000次后产生中断. 单片机对数据进行处理后,将其发送到数字管(共阴极数字管)进行显示(动态显示). 并增加时间调节功能(调节位选择,可根据具体要求进行正负调节). 原理是将识别信号发送到单片机的P端口,单片机软件对该信号进行处理并实现功能. 本设计使用14个共阴极数码管,可通过P0端口(P0.0-A,P0.1-B,...,P0.7-DP),P1端口和P2端口部分位置选择动态显示进行选择. 在显示时,只需将相应的段代码发送到数码管,并选择相应的位,并使用余辉效果和视觉停留效果即可实现显示. 实现过程3,1方案选择方案1: 使用日历时钟芯片DS1302产生时间,数据经过单芯片处理后发送到数码管显示器.
解决方案2: 使用纯单片机,使用AT89C51单片机中的定时/计数器和中断产生时间,并经单片机处理后发送到数码管进行显示. 解决方案1尽管定时准确并且软件部分的设计简单,但是电路复杂并且成本不适合初学者. 因此本设计采用方案二. 3,2系统框图如图3-1所示: 图3-1系统框图3,3说明该系统由51系列单片机AT89C51,按钮,数字显示三个模块组成. 单片机包括时钟电路和复位电路. 按钮部分可以实现时间的调整. 三个独立按钮的功能是: 调整选择,加法和减法. 显示部分使用14位共阴极数字管,其中P0端口用于段选择,P1端口和P2端口用于位选择动态显示. 3、4电路模块说明3、4、1复位时钟电路(如图3-4-1所示)图3-4-1复位时钟电路如图3-4-1所示数码管万年历程序,本设计采用晶体12MHZ的晶体振荡器(机器周期为1us),复位电路为按键复位. 3. 4,2显示电路(如图3-4-2所示)图3-4-2显示电路如图3-4-2所示,这次设计的显示模块使用14位共阴极数字管动态显示. 其中,P0端口用于段选择(P0.0-A,P0.1-B,...,P0.7-DP),P1和P2端口用于位选择(P1.2秒低位,P1 0.3秒高,P1.4分钟低,P1.5分钟高,P1.6小时低,P1.7小时高,P2.0天低,P2.1天高,P2. 2个月低点,P2.3个月高点数码管万年历程序,P2.4,P2.5年低点P2.6,P2.7年高点.

3、4、3键调节电路(如图3-4-3所示)图3-4-3键调节电路如图3-4-3所示,系统连接有三个独立的键,分别连接到P3. .0,P3.1和P3.2的功能用于调整位置选择,加法和减法(均在低电平有效). 3、4、4完整的硬件电路图(如图3-4-4所示)图3-4-4完整的硬件电路图3、5,软件设计模块3、5、1永久日历的算法万年历主要包括时间处理和日期处理,软件框图如图3-5-1所示: 图3-5-1软件算法流程图图3-5-2时间处理流程图3、5、2时间此设计的处理时间处理非常简单,用一句话来总结: 计时器计数已满时,加一以清除它. 流程图如图3-5-2所示. 具体过程如下: 3、5、3日期处理图3-5-3(a)year年算法图3-5-3(b)ap年和大小月份算法流程图日期处理主要包括大小月份的处理,和leap年(2月)处理. 处理方法如图3-5-3(a \ b)所示. 具体过程如下: 第4章最终结果在Proteus中对该设计进行仿真为了验证结果,具体的仿真电路图和结果如图4-1、4-2、4-3、4-4所示: 4-1仿真电路图图4-2仿真初始化显示图4-3重置初始值仿真图4-4调整位置选择仿真第5章增益和经验5. 1设计过程中遇到的问题和解决方案存在很多问题在设计过程中遇到的. 具体问题和解决方法如下: 问题1: 编译程序时出现170多个错误.
解决方案: 检查问题时,发现许多问题是由P端口引起的. 经过多次修改后,发现原始大小写在Keil编译环境中不区分大小写,但是在编译C程序时定义了端口. 必须大写. 问题2: 在仿真过程中根本没有结果. 解决方案: 通过对程序的进一步分析和电路图的验证,我发现我犯了一个非常低级的错误. 这是使用P0端口的通用I / O端口,但未连接上拉电阻,因此用于段选择驱动器的P0无法正常驱动数字管. 因此根本没有结果. 因此增加了上拉电阻. 问题三: 最后,有结果,但字符混乱. 解决方案: 添加上拉电阻后,最终会出现结果,但显示不正确. 经过分析,可以得出结论,所选的数字管不是公共阴极,然后在Proteus组件库中找到多个二极管,并且将引脚随机连接到高电平和低电平以进行仿真判断. 最后,选择了共阴极数码管,连接电路后得到仿真结果. 问题四: 这是一个纯粹的经验问题. 解决方案: 完成所有模拟和PPT后,我将其打包并存档到U盘,然后清空计算机上的数据. 结果,USB驱动器损坏了,唯一的解决方案是重做它. 幸运的是,源程序仍然存在! 5. 2收获和经验在整个过程中,我犯了很多低级的错误. 我实际上知道这些错误是什么. 也许我不能以试卷或家庭作业问题的形式将它们弄错,但是在实际应用中,我在阅读过程中阅读,记住或什至记住的这些预防措施会变成错误,从而导致设计失败.

因此,要真正学习,您必须亲自完成. 最后一个问题可以归因于习惯问题,也可以归因于经验问题. 虽然重做该电话花了很多时间,但我至少积累了一种经验. 即,必须将设计数据存档以防止发生事故. 致谢花了将近两个月的时间才能完成本论文的撰写. 在撰写论文的过程中,我遇到了无数的困难和障碍,所有的困难和障碍都是在同学和老师的帮助下度过的. 特别要感谢我的论文指导老师温良华先生的无私的指导和帮助,以及对论文的修改和改进的不懈帮助. 在此,我要对那些帮助和指导我的老师表示最感谢的感谢!感谢本文所涉及的学者. 本文引用了几位学者的研究文献. 没有每位学者的研究结果的帮助和启发,对我而言,完成本文的写作将非常困难. 感谢我的同班同学和朋友给我提供了许多您在撰写论文过程中要求的材料,并在撰写论文和对灯进行排版的过程中提供了热情的帮助. 由于我的学术水平有限,论文不可避免地存在缺陷,我敦促老师和校友批评和纠正我!参考文献1何立民. SCM应用程序集合. 北京航空航天大学出版社,1999.2张义刚,彭希元. 单片机原理与接口技术. 人民邮电出版社,2008.3胡景华,童树民,毕玉阁,吴佩. 基于Proteus的自动温室温度控制系统设计与仿真. 中国农业机械化. 2012年第5期. 附录: 特定程序#include
分配的值为0,它对应于确认(即年份的高位数)}} if(P3_1 == 0)//如果P3_1为低,则它对应于+模式{Kdelay( ); //如果(P3_1 == 0)反跳,//相应地调整以下内容,如果光标= 1,则它应对应于SEC秒加1 {if(cursor == 1){sec ++; if(sec == 60)sec = 0;} if(cursor == 2){min ++; if(min == 60)min = 0;} if(cursor == 3){小时++; if(hour == 24)hour = 0;} if(cursor == 4){day ++; if(day == 31)day = 0;} if(cursor == 5){month ++; if(month == 12)month = 0;} if(cursor == 6){yearl ++; if(yearl == 100)yearl = 0;} if(cursor == 7){yearh ++; if(yearh == 30)yearh = 20;}}} if(P3_2 == 0)//如果P3_1为低,则它对应于模式{Kdelay(); //去抖if(P3_2 == 0){if(cursor == 1){sec-;} if(cursor == 2){min-;} if(cursor == 3){hour-;} if(cursor == 4){day-;} if(cursor == 5){month-;} if(cursor == 6){yearl ;;} if(cursor == 7){yearh--;}}} //显示万年历数据显示(Seg [yearh / 10],Seg [yearh],Seg [yearl / 10],Seg [yearl],Seg [month / 10],Seg [month],Seg [day / 10],Seg [day],Seg [hour / 10],Seg [hour],Seg [min / 10],Seg [min],Seg [sec / 10],Seg [sec],Seg [i / 100],Seg [i] / 10]);}}无效的t0(无效)使用1 // // T0中断程序{tcnt ++; if(tcnt == 4000)//计时器的计时器计数,4000次250US为1S {tcnt = 0; //循环变量TCNT P3_3 =〜P3_3; a =〜a;秒++; if(sec == 60)//以下是万年历算法{sec = 0;最低++; //每60秒分钟增加1,如果(min == 60){min = 0;小时++; //每60分钟小时增加1,如果(hour == 24){hour = 0;天++; //每24小时递增1,并清除小时// //以下是for年和月份大小的算法,如果(month == 2 &&((yearl == 0 && yearh%4 == 0)||( yearl!= 0 && yearl%4 == 0))&& day == 30)day = 1;否则(day == 2 && day == 29)day = 1;否则((month == 4 || month == 6 || month == 9 || month == 11)&& day == 31)day = 1;否则(day == 32)day = 1;如果(day == 1){month ++;如果(month == 13){month = 1; yearl = 0;年++; if(yearh == 100){yearh = 20;}}}}}}}}单片机(最终)课程设计单片机(计时/计数,中断,数据处理)显示按钮第20页,共18页
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-168730-1.html
甲午海战时我们的装备也杠杠的
我没看懂MV前面写他粉丝怎么怎么欢迎