数字万年历课程设计报告
- 格式:doc
- 大小:3.32 MB
- 文档页数:35
WORD格式可编辑面向对象课程设计题目万年历程序设计系部商学系专业信息管理与信息系统班级信息N122 学号学生姓名指导教师编写日期 2015.01.15第一章需求分析 (3)第二章概要设计 (4)第三章详细设计与编码 (6)第四章调试分析 (10)第五章用户使用说明 (13)第六章设计心得 (14)第一章需求分析如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。
万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。
我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对C#语言的学习,还可以通过自主的编程找到自身的缺点。
这对培养我们自身的创新能力和动手能力具有很大的作用。
第二章概要设计1.设计要求程序完成运行时,能过正确的表达出所输入年份的万年历。
2.总体设计<1>实现操作流程图<2>程序设计流程图第三章详细设计与编码<1>源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using System.Globalization;namespace AllAgesCalendar{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {string intmonth =monthCalendar1.TodayDate.Month.ToString();string intdaty =monthCalendar1.TodayDate.Day.ToString();if (monthCalendar1.TodayDate.Month < 10){intmonth = "0" +monthCalendar1.TodayDate.Month.ToString();}if (monthCalendar1.TodayDate.Day < 10){intdaty = "0" +monthCalendar1.TodayDate.Day.ToString();}string s = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.TodayDate),GetMonth(monthCalendar1.TodayDate),GetDay(monthCalendar1.TodayDate)); label1.Text = monthCalendar1.TodayDate.Year + "年" + intmonth + "月" + intdaty + "日" + " " + s + " " + getReturnYear(monthCalendar1.TodayDate) + "年";label1.ForeColor = Color.Green;}private void label1_Click(object sender, EventArgs e) {}ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();public string GetYear(DateTime time){StringBuilder sb = new StringBuilder();int year = calendar.GetYear(time);int d;do{d = year % 10;sb.Insert(0, ChineseNumber[d]);year = year / 10;} while (year > 0);return sb.ToString();}private static string ChineseNumber = "〇一二三四五六七八九";public string GetMonth(DateTime time){int month = calendar.GetMonth(time);int year = calendar.GetYear(time);int leap = 0;for (int i = 3; i <= month; i++){if (calendar.IsLeapMonth(year, i)){leap = i;break;}}if (leap > 0) month--;return (leap == month + 1 ? "闰" : "") + ChineseMonthName[month - 1];}public static readonly string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };public string GetDay(DateTime time){returnChineseDayName[calendar.GetDayOfMonth(time) - 1];}public static readonly string[] ChineseDayName = new string[] {"初一","初二","初三","初四","初五","初六¨´","初七","初八?","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六¨´","廿七","廿八","廿九","三十"};public string GetStemBranch(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string stemBranch =CelestialStem.Substring(calendar.GetCelestialStem(sexagenar yYear) - 1, 1) +TerrestrialBranch.Substring(calendar.GetTerrestrialBranch(s exagenaryYear) - 1, 1);return stemBranch;}public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";public string getReturnYear(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string Tree =TreeYear.Substring(calendar.GetTerrestrialBranch(sexagenary Year) - 1, 1);return Tree;}public const string TreeYear = "鼠牛虎兔龙蛇马羊猴鸡狗猪";private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e){string strYesr = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.SelectionStart),GetMonth(monthCalendar1.SelectionStart),GetDay(monthCalendar1.SelectionStart));toolTip1.ToolTipTitle =monthCalendar1.SelectionStart.ToShortDateString();toolTip1.Show(strYesr + " " +getReturnYear(monthCalendar1.SelectionStart) + "年", monthCalendar1, monthCalendar1.Location, 5000);}}}第四章调试分析<1>程序运行测试①进入程序界面:。
一、实训目的随着科技的不断发展,电子产品的应用越来越广泛。
数字万年历作为一种常见的电子设备,具有显示日期、星期、农历、节假日等多种功能,给人们的生活带来了极大的便利。
为了更好地掌握电子产品的设计原理和制作方法,提高自身的实践能力,本次实训旨在通过设计和制作数字万年历,使学生对电子技术、电路设计、编程等方面有一个全面的认识和掌握。
二、实训内容1. 数字万年历的设计(1)功能需求分析根据用户需求,数字万年历应具备以下功能:1)显示日期、星期、农历、节假日等信息;2)具有闹钟功能,可设定闹钟时间、闹钟音量等;3)具有定时关机功能,可根据用户需求设定关机时间;4)具备背光功能,便于夜间使用;5)具有定时更新功能,可自动更新农历、节假日等信息。
(2)硬件设计1)主控芯片:选用STM32F103系列单片机,具有丰富的片上资源,易于编程和控制。
2)显示模块:采用TFT LCD显示屏,显示效果清晰,支持触摸操作。
3)按键模块:采用独立按键,实现功能选择、闹钟设置、关机等操作。
4)时钟模块:采用DS3231实时时钟模块,提供高精度的时间测量和闹钟功能。
5)背光模块:采用LED背光,可调节亮度,满足不同环境需求。
6)电源模块:采用DC-DC转换器,将5V输入电压转换为3.3V输出电压,为电路提供稳定电源。
(3)软件设计1)系统初始化:初始化各个模块,包括显示模块、按键模块、时钟模块等。
2)主循环:根据用户操作,实现功能切换、闹钟设置、关机等功能。
3)闹钟功能:实现闹钟时间设置、闹钟音量调节、闹钟提醒等功能。
4)定时关机功能:根据用户设置,实现定时关机功能。
5)背光功能:实现背光亮度调节,满足不同环境需求。
6)定时更新功能:自动更新农历、节假日等信息。
2. 数字万年历的制作(1)焊接电路板:按照电路图,焊接各个模块,确保电路连接正确。
(2)编程:使用Keil uVision5开发环境,编写STM32F103单片机程序,实现数字万年历的功能。
《数字万年历》课程设计报告专业:自动化班级:*****姓名:*****指导老师:*****二零一一年六月摘要在当代繁忙的工作与生活中,时间与我们每个人都有非常密切的关系,每个人都被时间影响着,我们必须对时间有个度量,因此设计万年历来记录时间,本设计采用AT89C51和DS1302实时时钟芯片进行万年历电路设计和软件设计,该万年历能实现能够实现年、月、日、时、分的显示,也可以人为校正时间,初始时间:2000 01 01 12.00。
本次设计以12MHZ晶振与AT89C51相连,通过编程实现以24小时为一周期,利用单片机的定时器和计数器产生定时效果,通过编程产生数字时钟效果,然后用数码管动态扫描显示内部处理的数据。
通过端口读入当前外部控制状态来改变程序的不同状态从而实现不同功能。
本次万年历设计以单片机为核心软硬件结合,使硬件部分大为简化,也提高了系统的稳定性。
关键词:万年历单片机DS1302目录一、方案的确定 (3)1.1单片机芯片的选择方案 (3)1.2显示方案 (3)1.3时钟芯片的选择方案 (5)二、系统的硬件设计与实现 (6)2.1电路设计框图 (6)2.2主要单元电路的设计 (7)2.2.1单片机主控制模块的设计 (7)2.2.2时钟电路模块的设计 (8)三、系统的软件设计 (9)3.1程序流程框图 (9)3.1.1电子时钟计算程序图 (10)3.1.2调整流程图 (11)3.2程序设计 (12)四、致谢词 (15)参考文献 (15)附录:proteus仿真图 (16)一.方案的确定1.1单片机芯片的选择方案方案1:采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,实验室学生用的较多的也较为熟悉的处理单元。
方案2:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,但AT89S52性价比不高。
万年历设计1、设计目的:1、学会对单片机外围电路的使用。
2、熟悉使用proteus电路仿真软件。
3、熟悉使用KILE C语言编程软件。
4、了解数字万年历的工作原理及其组成。
2、设计任务:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能3、方案比较:用单片机设计电子时钟通常有两种方法:一是通过单片机内部的定时器或者计数器。
这种方法硬件线路简单,采用软件编程实现时钟计数,一般称为软时钟。
系统的功能一般与软件设计有关,通常用在对时间精度要求不高的场合;二是采用时钟芯片,它的功能强大,功能部件集成在芯片内部,自动产生时钟等相关功能。
硬件成本相对较高,软件编程简单。
通常使用在对时钟精度要求较高的场合。
本次设计采用第一种方法4、设计方案4.1 设计原理:本方案有的时间脉冲由单片机内部的定时器/计数器产生,所以硬件电路相对简单,由单片机产生时钟信号,通过程序分别产生年月日时分秒,同时可以区分闰年闰月,加送数码管显示,同时加上按键电路,可以对年月日时分秒进行调整,还有清零。
4.2硬件设计:图1如图1该电路由51单片机为核心,使用数码管显示,按键电路进行调整,考虑到单片机P0口的驱动能力不足的情况,使用上拉电阻提升驱动能力。
4.3软件设计:仿真开始,先初始化系统时间加送数码管显示,然后判断按键是否按下,如果按下,就表明要对时间进行调整,接下来则显示调整完的时间,如果没有按下,则显示初始时间。
5、设计结果图2如图2所示,数码管阵列第一列显示年月日,第二列显示时分秒,按键电路从上到下分别为复位,秒分时日月年的调整按键。
每当秒到60则分进位,同理,分满时进位,时满日进位,日满月进位,月满年进位,还可以区分闰年闰月。
6、总结和个人体验通过该课程设计很好的掌握了KILE,proteus两个和专业相关的软件,极大的拓宽了自己的知识宽度,期间产生的问题都与老师一起讨论得到了很好的解决,这对自己的问题阐述能力以及解决问题的能力都有很大的提升。
信息与电子工程学院课程设计报告目录一、课程设计概述 (3)1、课程设计背景 (3)2、课程设计内容 (3)二、方案的选择及确定 (3)2.1设计思路 (3)2.2设计方案 (3)2.3 方案比较论证 (3)三、系统硬件设计 (4)3.1总体硬件设计 (4)3.2 单片机主控制模块的设计 (4)3.3 时钟电路模块的设计 (5)3.4 温度采集模块设计 (6)3.5 功能按钮设计 (6)3.6 16*2 LCD1602液晶显示电路设计 (7)3.7总体电路图 (7)四、系统软件设计 (8)4.1 系统模块的功能分划分 (8)4.2 总体程序流程框图 (9)4.3 时钟调整时间的流程图 (9)4.4 修改键“UP”的功能流程图 (10)4.5温度转换流程图 (11)五、系统调试过程 (13)六、遇到的问题及解决方法/总结 (13)七、参考文献 (13)八、附录 (13)1、仪器与设备 (13)2、元器件清单 (14)3、原理图 (14)4、PCB图 (15)5、实物图 (15)6、操作说明书 (16)一、课程设计概述1、课程设计背景随着计算机技术的和控制系统的广泛应用,以及设备向小型化、智能化发展,单片机作为高新技术之一,以其体积小、功能强、价格低、使用灵活等优势,显示出了很强的生命力。
进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。
因其功耗低、超高型、低成本、功能完整,在国内越来越受到用户的重视和广泛使用。
2、课程设计内容要求设计的单片机作息时间控制钟完成以下功能:①实时显示当前温度;②实时显示当前时间;③实时显示当前日期;④能修改当前时钟二、方案的选择及确定2.1设计思路用STC89C52RC处理产生内部时钟数据或者读取外部时钟数据和采集外部传感器的信息进行处理,并暂时寄存在其内部的储存器中,再通过单片机调用内部RAM 的数据并送到LCD或者LED数码管上显示出来。
第一部分:正文一,课程设计名称:1.万年历2.(a) (b)* **** *** ***** ***** ************** ***** ***** *** **** * ********* **** **** *** *** ** ** * * ** ** *** *** **** **** *********二,使用工具软件:Microsoft Visual Basic 6.0 中文版。
三,课程设计内容简介:(1)万年历的课程设计的基本结构流程:从main函数开始,比如输入2001年,调用函数yearshow,它是控制总循环次数12个月的,在yearshow里有调用了以个函数是monthshow,是控制每个月如何输出显示的,在这个函数里有调用了getmonthweekday函数,它是获得每个月一号是星期几的函数,此函数分为两部分,以2000年1月1号是星期六为准;做十一次运算便可得知2月到12月各个月的1号为星期几。
而在这个函数又调用了getyearday这个函数,是返回天数的函数,它有调用了isleap函数,计算时平年还是闰年是,时闰年返回366,平年返回355。
到这步开始就返回值了,首先isleap告诉getyeardays2000是闰年和平年,于是getyeardays得到366getyearweekday,getyearweekday 就计算sum=366且返回(366+6)%7=2给getmonthweekday,w=2,getmonthweekday中若计算1月1号则为星期二,2月-12月中如3月则要加上以月和二月的天数载加上2对7取余数,这个数返回给monthshow,若这个数是w=0;不输出空格,不等于0就输出w-1个空格,以便日期和星期对应,如此循环十二个月就计算完了,一边计算一遍显示。
(2)(a)图形的课程设计的基本结构流程(3)(b)图形的课程设计的基本结构流程(4)运行环境:Win32 Console Application四,得意之处.1把程序分解成多个小函数,那么问题就分解成几个小问题。
《数字万年历》学号:B10040221 姓名:李重阳本设计采用AT89C51和DS1302实时时钟芯片进行万年历电路设计和软件设计,该万年历能实现能够实现年、月、日、时、分的显示,也可以人为校正时间,初始时间:2000 01 01 12.00。
本次设计以12MHZ晶振与AT89C51相连,通过编程实现以24小时为一周期,利用单片机的定时器和计数器产生定时效果,通过编程产生数字时钟效果,然后用数码管动态扫描显示内部处理的数据。
通过端口读入当前外部控制状态来改变程序的不同状态从而实现不同功能。
本次万年历设计以单片机为核心软硬件结合,使硬件部分大为简化,也提高了系统的稳定性。
一.方案的确定1.1单片机芯片的选择方案采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容1.2显示方案硬件方案:采用51单片机作为核心控制单元,采用7SEG-MPX6对时间进行显示,同时为了节省I/O口线采用MAX7221,方案设计的电路图如下图所示:1.3时钟芯片的选择方案采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高, RAM 做为数据暂存区,工作电压2.5V ~5.5V 范围内,2.5V 时耗电小于300nA 。
二.系统的硬件设计与实现2.1电路设计框图:2.2主要单元电路的设计2.2.1单片机主控制模块的设计MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
单片机的最小系统如下图所示,2.2.2时钟电路模块的设计下图为DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
北京工商大学《数字电子技术基础》课程设计报告学院:计算机与信息工程学院专业:信实学生姓名:薛子朦学号:1004060121课程设计题目: 1.具有运算及存储功能的计算机2.数字万年历设计时间:2012/12.23 至 2012/12.26题目要求:一 .运算存储计算机自行设计指令,实现两个数字相加或相减的运算,指令得到译码后控制存储器的相关元件,使数据输入目的地并用代码存在存储器里,用 0、1 字符串来表示;最后运算的结果要有所表示;可参考冯诺依曼计算机体系结构。
二.数字万年历实现万年历数字显示功能,能显示准确的年(平年闰年)、月(大小月)、星期、日、小时、分钟、秒,并能实现上闹钟功能。
一、设计目的1、掌握不同集成芯片的逻辑功能及使用方法2、掌握加法器、存储器的工作原理3、掌握数字电子钟及万年历的组成及工作原理4、数字电子钟及万年历的设计与制作5、熟悉 multisim 电子电路设计及仿真软件的应用6、灵活运用课本知识解决实际问题7、锻炼主动思考的思维方式二、设计思路 --- 运算、存储计算机1.74LS283 超前进位并行加法器的串接可以计算八位二进制数的加法运算2.将输出的八位二进制数转换成三位十进制数,通过数码管显示3.通过 8421BCD码编码器,将十进制数转化成四位二进制数4.选择 74LS283超前进位并行加法器的组合形成 8421BCD码加法器5.编码器与 74LS283 加法器相接,通过 8421BCD 码加法器串接可以计算三位十进制数的加法运算,输出结果通过数码管显示八位二进制加数三位十进制加数与被加数输入与被加数输入八位二进制数加法运算三位十进制BCD码加法运算九位二进制数到三位十进制BCD码的转换三位数码管显示输出四位数码管显示输出设计思路 --- 数字万年历1、设计 60 进制秒计数器,用来实现秒-分及分 -时的计数功能2、设计 24 进制时计数器,用来实现时-日的计数功能3、设计 31、30、29、 28 制天计数器,用来实现不同月份的月计数功能4、设计 12 机制月计数器,用来实现月-年计数功能5、设计 7 进制周计数器,用来实现日-周计数功能6、设计闰年平年不同月份不同进制逻辑电路7、设计调整时间电路8、整合所有电路并根据演示需要增加控制开关三、系统综述(运算、存储计算机)控制电路是总体电路的枢纽,是控制电路开启和关闭的部分。
万年历课程设计报告一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。
2. 学生能够运用所学知识,独立制作并使用简易的万年历。
3. 学生了解我国农历与公历的区别及相互转换方法。
技能目标:1. 培养学生运用数学知识解决实际问题的能力,提高逻辑思维和推理能力。
2. 培养学生动手操作和团队协作能力,通过制作万年历的过程,锻炼实践操作技能。
情感态度价值观目标:1. 培养学生对时间管理的重视,树立珍惜时间的观念。
2. 增强学生对传统文化的认识,激发对中国古代天文历法的兴趣。
3. 培养学生积极探究、合作交流的良好学习态度,提高学习自信心。
课程性质分析:万年历课程属于数学与生活相结合的综合性课程,旨在让学生在实际问题中运用数学知识,提高解决实际问题的能力。
学生特点分析:考虑到学生所在年级的特点,课程内容应以直观、生动、有趣的方式进行设计,注重培养学生的动手操作能力和团队协作精神。
教学要求:1. 教师应充分准备教学资源,提供丰富的实例,引导学生主动参与学习过程。
2. 教学过程中,教师要以学生为主体,关注学生的个体差异,给予个性化指导。
3. 教师要关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容1. 年、月、日的关系及其换算方法- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 闰年和平年的判断方法2. 简易万年历的制作- 万年历的基本结构- 制作步骤及注意事项- 万年历的使用方法3. 我国农历与公历的转换方法- 农历与公历的对应关系- 农历日期的推算方法- 二十四节气的计算与应用教学大纲安排:第一课时:导入万年历的概念,介绍年、月、日的关系及其换算方法,讲解闰年和平年的判断方法。
第二课时:指导学生动手制作简易万年历,掌握万年历的基本结构和使用方法。
第三课时:学习我国农历与公历的转换方法,了解二十四节气的计算与应用。
教材章节:《数学》教科书:第四章 时间与测量,第四节 万年历的制作与应用。
目录目录 (1)第一章设计目的与要求 (3)1.1设计目的 (3)1.2设计要求 (3)第二章课程设计分析 (4)2.1设计背景 (4)2.2程序开发环境 (4)2.3课程设计主要内容 (4)第三章总体设计 (5)3.1整体流程图 (5)3.2功能模块图 (6)3.3各模块功能详细说明 (6)3.3.1 查询星期模块 (6)3.3.2 判断模块 (6)3.3.3 查询月历模块 (6)3.3.4 显示模块 (7)3.3.5 显示模块 (7)3.3.6 退出模块 (7)3.4各模块函数说明 (7)3.4.1查询星期模块程序: (7)3.4.2 判断模块程序 (7)3.4.3 查询月历模块 (7)3.4.4 显示模块程序 (9)3.4.4 重载模块程序 (10)3.4.4类成员与成员函数 (11)第四章程序调试与功能实现 (13)4.1系统使用说明 (13)4.2系统运行结果及运行截图 (13)4.2.1 系统总体选择图 (13)4.2.2 当前月份日历并可以翻页 (13)4.2.3 某一年的日历 (14)4.2.4输出所要查询的日期并可以翻页 (15)4.2.5 输出所查询的日期星座 (17)4.3主函数代码 (17)第五章课程设计心得与体会 (20)参考文献 (21)附录:源代码 (22)第一章设计目的与要求1.1 设计目的通过显示年日历程序的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。
通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C++面向对象程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C++语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C++语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
课程设计(基于51单片机的电子万年历)题目:万年历课程设计院(系)成都农业科技职业学院信息技术分院专业应用电子技术班级14电子2班学生姓名黄攀学号************指导老师陈一虎、雷永辉日期2016年6月目录绪论 (Ⅰ)1项目概述(项目组成,功能) (1)1.1硬件部分 (2)1.2软件部分 (2)2项目原理分析 (3)2.1原理框图 (3)2.2原理分析 (3)2.3系统关键元器件选择 (4)2.4项目印制板设计过程心得 (5)3系统的软件设计与实现 (6)3.1程序流程框图 (6)3.2 子程序的设计 (7)4项目软硬件联调 (10)4.1印制板图 (10)4.2原理图 (10)4.3 DXP图 (11)4.4系统调试 (11)5总结 (12)参考文献 (12)信息技术分院课程设计–集成电路设计VHDL教程绪论电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。
数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。
可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。
所有这些,都是以钟表数字化为基础的。
因此,研究数字时钟及扩大其应用有着非常现实的意义。
本设计就是数字时钟简单的扩展应用。
1项目概述本设计基于AT89s51单片机,结合DS1302时钟芯片设计了一个数字万年历,显示部分用数码管动态显示,初始时间可由按键设置,此外还具有温度显示功能,掉电保护功能。
万年历还具有节能模式,具有很强的实用性。
关键词:单片机万年历数码管显示温度万年历设计项目组成与功能1.1硬件部分硬件部分主要由AT89S52单片机,LED显示电路,以及调时按键电路等组成。
一、实习背景随着科技的发展,电子产品的普及,人们对生活品质的要求也越来越高。
为了培养自己的动手能力,提高综合素质,我在本次实习中选择了数字万年历的制作。
数字万年历是一种结合了电子技术、编程和艺术设计的产品,它能够显示日期、星期、农历等信息,方便人们的生活和工作。
通过本次实习,我对数字万年历的制作过程有了更加深入的了解,也锻炼了自己的实际操作能力。
二、实习目的1. 学习数字万年历的制作原理,掌握电子元器件的选用和焊接技术。
2. 熟悉编程软件的使用,掌握单片机编程的基本方法。
3. 提高自己的动手能力和团队合作精神。
4. 培养自己的创新意识和解决问题的能力。
三、实习内容1. 硬件部分(1)元器件选型:根据数字万年历的功能需求,选择了以下元器件:STC89C52单片机、LCD显示屏、DS1302时钟芯片、按键模块、电阻、电容、二极管等。
(2)电路设计:根据元器件的特性和功能,设计了数字万年历的电路图。
电路图主要包括单片机、时钟芯片、显示屏、按键模块等部分。
(3)焊接:按照电路图进行元器件的焊接,确保电路连接正确。
2. 软件部分(1)编程环境:使用Keil uVision4软件进行编程。
(2)编程方法:根据数字万年历的功能需求,编写了以下程序:a. 初始化程序:设置单片机的工作模式、时钟频率、端口初始化等。
b. 时钟程序:读取DS1302时钟芯片的时间信息,显示在LCD显示屏上。
c. 显示程序:根据日期、星期、农历等信息,在LCD显示屏上显示相应的信息。
d. 按键扫描程序:扫描按键状态,实现日期、星期、农历等信息的切换。
3. 系统调试(1)硬件调试:检查电路连接是否正确,元器件是否损坏。
(2)软件调试:在Keil uVision4软件中编译程序,下载到单片机中,观察LCD显示屏的显示效果。
四、实习成果通过本次实习,我成功制作了一款数字万年历。
该万年历能够显示日期、星期、农历等信息,具有以下特点:1. 操作简便:用户可以通过按键切换日期、星期、农历等信息。
一、实训背景随着科技的飞速发展,电子产品的普及,人们对信息获取和展示的需求日益增长。
数字万年历作为一种实用性强的电子设备,其设计制作在当今社会具有重要意义。
为了提高自身动手能力、设计能力和创新思维,我参加了本次数字万年历实训课程。
二、实训目的1. 熟悉数字万年历的设计原理和制作流程;2. 掌握电子元器件的选择和电路设计;3. 提高编程能力和嵌入式系统应用能力;4. 培养团队合作精神和创新能力。
三、实训内容1. 硬件设计:根据数字万年历的功能需求,选择合适的电子元器件,如单片机、显示屏、按键等,并设计相应的电路图。
2. 软件设计:编写单片机程序,实现万年历的功能,包括日期显示、星期显示、闰年判断、节假日提醒等。
3. 系统集成:将硬件和软件进行集成,调试并测试系统功能。
4. 优化与改进:针对实际运行中存在的问题,对系统进行优化和改进。
四、实训过程1. 硬件设计阶段:在老师的指导下,我了解了数字万年历的基本硬件结构,并学会了如何选择合适的电子元器件。
根据功能需求,我选择了AT89C52单片机作为核心控制单元,并选择了1602液晶显示屏和按键作为输入输出设备。
通过查阅相关资料,我完成了电路图的设计。
2. 软件设计阶段:我学习了C语言编程,并掌握了单片机程序设计的基本方法。
在编写程序时,我实现了以下功能:(1)初始化:设置单片机的工作状态,初始化LCD显示和按键扫描。
(2)日期显示:读取实时日期,并在LCD上显示年、月、日。
(3)星期显示:根据日期计算出星期,并在LCD上显示。
(4)闰年判断:根据年份判断是否为闰年。
(5)节假日提醒:根据预设的节假日信息,在LCD上显示提醒信息。
3. 系统集成阶段:将硬件和软件进行集成,调试并测试系统功能。
在调试过程中,我发现了以下问题:(1)按键响应不及时:经过检查,发现按键扫描程序存在bug,导致按键响应不及时。
经过修改程序,问题得到解决。
(2)LCD显示不清晰:发现LCD显示模块的背光亮度不足,导致显示不清晰。
一、实验目的1. 掌握数字万年历的基本原理和设计方法。
2. 熟悉单片机编程和硬件电路设计。
3. 提高动手能力和问题解决能力。
二、实验原理数字万年历是一种能够显示年、月、日、星期、时、分、秒等信息的电子设备。
它主要由单片机、时钟芯片、显示模块、按键模块等组成。
本实验采用MSP430F149单片机作为核心控制单元,通过编程实现对万年历功能的实现。
三、实验设备1. MSP430F149单片机实验板2. 1602液晶显示屏3. DS1302时钟芯片4. 按键模块5. 电源模块6. 连接线四、实验步骤1. 设计硬件电路根据实验要求,设计万年历的硬件电路。
主要包括以下部分:(1)单片机模块:使用MSP430F149单片机作为核心控制单元。
(2)时钟芯片模块:使用DS1302时钟芯片提供时间基准。
(3)显示模块:使用1602液晶显示屏显示年、月、日、星期、时、分、秒等信息。
(4)按键模块:使用按键模块实现时间调整、功能选择等操作。
2. 编写程序根据硬件电路设计,编写万年历的程序。
主要步骤如下:(1)初始化硬件设备,包括单片机、液晶显示屏、时钟芯片等。
(2)从时钟芯片读取当前时间,并显示在液晶显示屏上。
(3)编写按键处理程序,实现时间调整、功能选择等功能。
(4)编写显示程序,实现年、月、日、星期、时、分、秒等信息的显示。
(5)编写时钟芯片校准程序,实现时间的精确控制。
3. 调试程序将编写好的程序烧录到MSP430F149单片机中,通过调试工具进行调试。
主要调试内容包括:(1)检查液晶显示屏显示是否正常。
(2)检查按键功能是否正常。
(3)检查时间调整、功能选择等功能是否正常。
(4)检查时钟芯片校准是否准确。
五、实验结果与分析1. 实验结果经过调试,万年历实验板能够正常显示年、月、日、星期、时、分、秒等信息,并且可以通过按键进行时间调整、功能选择等操作。
2. 实验分析(1)万年历的硬件电路设计较为简单,主要涉及单片机、时钟芯片、液晶显示屏、按键模块等。
课程名称:微机原理课程设计题目:万年历随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。
由其是单片机技术的应用产品已经走进了千家万户。
电子万年历的出现给人们的生活带来的诸多方便。
本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。
本设计以数字集成电路技术为基础,单片机技术为核心。
本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。
本设计是一种基于STC89C51单片机控制,DS1302报时的数字时钟设计。
它具有多项显示和控制功能。
能用LCD实时显示当前年、月、日、星期、时间;可对时间进行调整;具有调整时间和日期功能。
本设计通过一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。
关键词:STC89C52单片机、LCD液晶显示、DS1302时钟芯片一、设计任务与要求 ........................................................................... - 4 -1.1 设计任务 .................................................................................................... - 4 -1.2 设计要求 .................................................................................................... - 4 -1.3 发挥部分 .................................................................................................... - 4 -二、方案总体设计 ........................................................................................... - 5 -2.1 显示部分 .................................................................................................... - 5 -2.2 时钟信号的选择 ........................................................................................ - 5 -2.3 总体方案 .................................................................................................... - 5 -三、硬件设计 ....................................................................................... - 7 -3.1 单片机最小系统 ........................................................................................ - 7 -3.2 DS1302时钟电路 ..................................................................................... - 10 -3.3 LCD液晶显示模块.................................................................................. - 11 -3.4 按键电路 .................................................................................................. - 12 -3.5 电源指示灯部分 ...................................................................................... - 14 -四、软件设计 ..................................................................................... - 15 -4.1 主程序流程图显示 .................................................................................. - 15 -4.2 时间设定程序流程图 .............................................................................. - 16 -五、系统仿真与调试 ......................................................................... - 17 -5.1 Proteus仿真软件简介 ............................................................................. - 17 -5.2 仿真及实物 .............................................................................................. - 18 -六、设计总结 ..................................................................................... - 20 -七、参考文献 ..................................................................................... - 21 -一、设计任务与要求1.1 设计任务基于52单片机的DS1302万年历;1.2 设计要求基于52单片机,利用DS1302时钟芯片生成万年历,使用液晶显示年月日时分秒,显示值可通过按键修改。
课程设计报告课程:面向对象程序设计设计项目:万年历学号:姓名:班级:指导教师:1.设计内容:显示公元后任何年份的日历,日历以月份顺序排列,每月一星期顺序排列,类似于一般挂历上的格式。
2.设计目的与要求:达到熟练掌握c++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的设计问题。
3.工具与准备工作:在开始实验前,应回顾或复习相关内容。
需要一台计算机,其中装有Visual C++ 6.0 ,Visual C++ 2005,Dev-C++或MinGW Developer Studio等集成开发环境软件。
4. 系统分析与设计:万年历具有以下特点:平年365天(52周+1天),闰年366天(52周+2天),平年2月28天,闰年2月29天;每400年整一闰,或每4年且不为百年的一闰。
由以上特点以及1900年的元旦刚好是星期一这一已知条件,在程序中定义Date类的声明如下:class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。
};5.具体实现步骤:#include <iostream>#include <iomanip>using namespace std;class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。
数字万年历课程设计报告课程名称:微机原理课程设计题目:万年历摘要随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。
由其是单片机技术的应用产品已经走进了千家万户。
电子万年历的出现给人们的生活带来的诸多方便。
本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。
本设计以数字集成电路技术为基础,单片机技术为核心。
本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。
本设计是一种基于STC89C51单片机控制,DS1302报时的数字时钟设计。
它具有多项显示和控制功能。
能用LCD实时显示当前年、月、日、星期、时间;可对时间进行调整;具有调整时间和日期功能。
本设计通过一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。
关键词:STC89C52单片机、LCD液晶显示、DS1302时钟芯片目录一、设计任务与要求 ........................................................................... - 6 -1.1 设计任务 .............................................................................................. - 6 -1.2 设计要求 .............................................................................................. - 6 -1.3 发挥部分 .............................................................................................. - 6 -二、方案总体设计 ..................................................................................... - 7 -2.1 显示部分 .............................................................................................. - 7 -2.2 时钟信号的选择 .................................................................................. - 8 -2.3 总体方案 .............................................................................................. - 8 -三、硬件设计 ..................................................................................... - 10 -3.1 单片机最小系统 ................................................................................ - 10 -3.2 DS1302时钟电路............................................................................... - 17 -3.3 LCD液晶显示模块............................................................................ - 19 -3.4 按键电路 ............................................................................................ - 21 -3.5 电源指示灯部分 ................................................................................ - 25 -四、软件设计 ..................................................................................... - 26 -4.1 主程序流程图显示 ............................................................................ - 26 -4.2 时间设定程序流程图 ........................................................................ - 27 -五、系统仿真与调试 ......................................................................... - 29 -5.1 Proteus仿真软件简介 ....................................................................... - 29 -5.2 仿真及实物 ........................................................................................ - 31 -六、设计总结 ..................................................................................... - 34 -七、参考文献 ..................................................................................... - 35 -一、设计任务与要求1.1 设计任务基于52单片机的DS1302万年历;1.2 设计要求基于52单片机,利用DS1302时钟芯片生成万年历,使用液晶显示年月日时分秒,显示值可通过按键修改。
1.3 发挥部分1)添加了闹钟功能,可设置三个闹钟,闹钟时间可修改;2)闹钟铃声设置了四种,用户可自由选择;3)设计了菜单模式方便用户的操作;二、方案总体设计2.1 显示部分方案一:led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
颜色有红,绿,蓝,黄等几种。
led数码管广泛用于仪表,时钟,车站,家电等场合。
选用时要注意产品尺寸颜色,功耗,亮度,波长等。
方案二:采用LCD显示。
LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。
鉴于上述原因,我们采用方案二。
2.2 时钟信号的选择数字时钟是本设计的核心的部分。
根据需要可采用以下两种方案实现:方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此方案虽然减少芯片的使用,节约成本,但是,实现的时间误差大。
方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压 2.5——5.5V,2.5V时耗电小于300nA。
基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。
2.3 总体方案设计总体框架图如图1所示,按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。
主控模块采用STC89C51单片机,按键模块用4个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。
STC89C52R 复位电路晶振电路时钟电路按键扫描LCD液晶显图1 基于STC89C52单片机的电子万年历系统框图按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD 显示模块、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。
主控模块采用STC89C51单片机,按键模块用4个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。
三、硬件设计硬件设计是在单片机最小系统的基础上增加DS1302时钟电路、1602液晶电路、按键电路和电源指示灯模块,各模块详细介绍如下。
3.1 单片机最小系统STC89C52为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,每一条I/O线都能独立地作输出或输入。
单片机的最小系统如下图所示,18引脚和19引脚接晶振电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。
如下图所示:图2 单片机管脚定义1)P0口:P0口为一个8位漏级开路双向I/O 口每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。