ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:206.26KB ,
资源ID:12477404      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12477404.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于c语言单片机智能电子日历课程设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于c语言单片机智能电子日历课程设计.docx

1、基于c语言单片机智能电子日历课程设计基于c语言单片机智能电子日历课程设计课程设计报告课程名称:单片机课程设计报告题目:智能电子日历学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013 年 12 月 25 日课程设计任务书报告题目智能电子日历完成时间2周学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个智能电子日历,要求如下: 以AT89C51单片机为核心,制作一个LED显示的智能电子日历。 (1)显示:年、月、日、星期。 (2)闰年自动判别。 (3)五路定日输出,可任意关断(最大可到16路)。 (4)自定任意日自动开/关屏。(5)所有功能设置均由功能键K1、

2、K2、K3、K4完成。工作内容及时间进度安排第15周:周1-周3 :立题、论证方案设计周4-周5 :预答辩第16周:周1-周3 :仿真实验周4-周5 :验收答辩课程设计成果1与设计内容对应的软件程序2课程设计总结报告摘要本设计是根据我们所学的单片机课程,按照大纲要求对我们进行的一次课程检验,是进行单片机课程训练的必要任务,也对我们掌握单片机应用有很大的帮助。单片机技术作为电子专业的基础课程之一,对我们将来的工作以及生活和学习都有很密切的联系;近年来随着电子技术和微机计算机的迅速发展,单片机的性能不断更新和提高,应用领域也不断扩大,已经在工业控制、尖端科技、智能仪器、汽车电子系统、办公自动化系统

3、、通信产品等等领域有广泛的应用,成为现代电子系统中最重要的智能化核心器件。关键词 :单片机,电子技术,智能化一、概述5二、方案设计与论证51单片机芯片选择52时间计算模块53显示模块6三、单元电路设计6 1单片机最小系统电路72数码管电路83按键电路9 四、程序设计101程序总体思路和分析102程序清单11五、结论与心得19六、参考文献20一、概述本系统以STC89C52单片机为控制核心,通过单片机计时器模拟时间输出,并将时间通过数码管实时显示出来,通过相应的按键调整相应的数值和功能。所以本设计可以分为以下几个模块:显示模块、按键模块、定日输出模块。下面对各个模块进行逐一分析。二、方案设计与论

4、证时间计算模块有两种方式,一种利用现成的时间计时芯片实时读取时间,然后显示;第二种是利用STC89C52单片机内部的定时/计数功能,实现时间的计算。1单片机芯片选择方案一:采用89C52作为硬件核心 采用Flash ROM,内部具有4KB ROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在先编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89S52作为硬件核心片内ROM全部采用Flash ROM;能以3V的超低压工作,同时也与MCS-51

5、系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成一定的损坏。所以选择采用AT89S52作为主控制系统。2时间计算模块 方案一:DS1302芯片DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,才用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月、年,一个月小于31天时可以自动调整,且具有闰年补偿功

6、能。工作电压宽带2.55.5V。采用双电源供电,可以设置备用电源充电方式,提供了对后备电源进行涓流充电的能力。利用单片机的控制功能就可以实现实时计时的功能,而且消耗的系统资源少,程序简单。方案二:单片机内部定时器/计数器STC89C52单片机内部带有定时器/计数功能,此定时功能时通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592MHz的晶振就能实现零误差的计时,因此可以利用此功能实现计时。从任务要求来看,CPU的系统消耗很少,有足够的内部资源利用定时器实现计时功能和处理其他算法。任务要求不需要有掉电保护功能,这样可以减少工作量和系统成本。3显示模块方案一:使用液晶显示屏显示

7、时间数字液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影响稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。但由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。方案二:使用传统的LED数码管显示数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精度可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少。根据以上的论述,采

8、用方案二。我们采用八段四位一体数码管动态显示,由于显示位数较多,故应使用显示驱动,在本设计中采用三极管来作为驱动。4按键模块方案一:使用独立式键盘独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。方案二:使用矩阵式键盘矩阵式键盘是由行线和列线组成,按键位于行、列交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数目较多的场合。根据以上的论述,所以采用方案二。三、单元电路设计1单片机系统介绍AT89S52是一种低功耗高性能CHMOS 8位单片机,管脚如图所示。片内含4Kbytes ISP的可反复擦写1000次Flash只

9、读程序存储器,128bytes的随机存取数据存储器(RAM)。其特点如下:-兼容MCS-51指令系统;-最大的工作频率为33MHz;-具有双工UART串行通道;-内部集成看门狗计时器,不需要再外接看门狗计时器单元电路;-双数据指示器;-支持ISP(在线更新程序)功能,其优势在于改写单片机存储器内的程序不需要把芯从工作环境中剥离;-电源关闭标识;-全新的加密算法,使程序的保密性大大加强;-电压范围宽达4-5.5V,而89C52在低于4.8V或高于5.3V则无法工作;-烧写寿命长,其标称为1000次,实际至少是1000-10000次,这样有利于初学者反复烧写,减低学习成本;AT89S52 是一种低

10、功耗、高性能的CMOS 8位单片机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和82C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。AT89S52提供了8K字节Flash ,256字节RAM,32线I/O口,3个16位定时器/计数器,6向量两极中断,一个双工串行口,片内根据振荡器和始终电路等标准功能。此外,AT89S52设有静态逻辑,并支持软件选择的两种节电运行方式、空闲方式使CPU停止工作,而允许RAM、定时器/计数器、串行口和中断系统继续工作。掉

11、电方式下,片内振荡器停止工作,由于之中被冻结,一切能都停止,只有片内RAM的内容被保存,直到硬件复位才恢复正常工作。AT89S52结构框图:1数码管电路介绍由于七段数码显示器在显示字形代码时需要有足够的功率,单片机口线的驱动能力明显不够,所以需在显示器前加显示驱动器,以提高其输出功率,满足显示器的需求。在本设计中,我采用三极管作为显示电路的8路正向驱动器。LED显示器俗称数码管,在其内部是由8个发光二极管加限流电阻组成,其连接方式有共阴和共阳两种,在共阴极接法中,因公共端接地,只要给某一段加高电平,该段就会亮。而在本设计中采用的是共阳极接法,公共端接+5V电源,在某一段上加低电平,该段就会亮。

12、在本次设计中,为了使硬件电路更简单化,我采用四位一体的LED数码管,显示原理与单个LED的显示原理完全相同。但在它的内部把四个数码管的段控端对应的连在了一起与单个的数码管相比其外部电路连接更加简单,故它只有8个段控端和4个位控端,4个位控端分别对四个数码管进行控制。 3按键模块 在单片机控制电路中,可把单片机使用的键盘分为独立式和矩阵式两种。独立式实际上就是一组独立的按键,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,这种接法简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵。本设计中键盘数目较少,且为安装方便,因此在本设计中采用独立式接法。如图所示。控制电

13、路按从一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,另一项是键功能的实现。第一项工作是使用接口电路实现的,而第二项工作则是通过执行中断服务程序来完成。四、程序总体思路和分析1程序总体思路和分析主函数的流程图: 2程序清单#include #include unsigned int time=0;unsigned char num=0;unsigned char key=0;unsigned char time_key=0;/*/unsigned int year=1; /年unsigned char yue=1; /月unsigned char day=

14、1; /日unsigned char week=1;/*/unsigned char LED=0;unsigned char flag_led=0;unsigned char strl_led = 0,0,0,0,0,0,0,0;unsigned char day_add;unsigned char SURE;/*/unsigned char code str = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;unsigned char su = 10,10,10,10,10,10,10,10;void delay_SMG(uns

15、igned char t) unsigned char d; for(;t0;t-) for(d=0;d50;d+);/*/*DIS_LED*/void DIS_play() unsigned char k; unsigned char dis; dis = 0x01; for(k=0;k8;k+) P0 = dis; P2 |= 0xc0; P2 &= 0x1f; if(k=2 | k=4 | k=6)P0 = strsuk & 0x7f; else P0 = strsuk; P2 |= 0xe0; P2 &= 0x1f; dis = dis 6) flag_led = 0; break;

16、case 0xbe: key = 2; if(flag_led = 0) SURE = 3; if(flag_led != 0) SURE+; /确定按键 if(SURE 1)SURE = 0; break; case 0xde: key = 3; if(flag_led 0) /按下模式选择键 day_add+; if(yue=1 | yue=3 | yue=5 | yue= 7 | yue=8 | yue= 10 | yue=12) if(day_add 31)day_add = 31; if(yue=4 | yue=6 | yue=9 | yue= 11) if(day_add 30)d

17、ay_add = 30; if(yue=2) if(year%4 =0 & year%100 !=0) | (year%400 =0) ) if(day_add 28)day_add = 28; else if(day_add 29)day_add = 29; break; case 0xee: key = 4; if(flag_led 0) /按下模式选择键 if(day_add 0) day_add-; break; else if(time_key 50)time_key = 100; else time_key = 0;void main() TMOD = 0x01; TH0 = (6

18、5536 - 1000) / 256; TL0 = (65536 - 1000) % 256; EA = 1; ET0 = 1; TR0 = 1; init_all(); while(1) DIS_play(); DIS_led(); void time_1() interrupt 1 TH0 = (65536 - 1000) / 256; TL0 = (65536 - 1000) % 256; time+; if(time = 2000) time = 0; week+; if(week = 8) week=1; day+; if(yue=1 | yue=3 | yue=5 | yue= 7

19、 | yue=8 | yue= 10 | yue=12) if(day = 32) day = 1; yue+; if(yue = 2) if(year%4 =0 & year%100 !=0) | (year%400 =0) ) if(day = 30) day = 1; yue+; else if(day = 29) day = 1; yue+; if(yue=4 | yue=6 | yue=9 | yue= 11) if(day = 31) day = 1; yue+; if(yue = 13) yue = 1; day = 1; year+; IN_key(); if(SURE = 1

20、) /按下确认键 确认日期 if(flag_led 0) strl_ledflag_led = day_add; flag_led = 0; SURE = 0; day_add = 0; if(strl_led1 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 1; else if(strl_led2 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 2; else if(strl_led3 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 3; else if

21、(strl_led4 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 4; else if(strl_led5 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 5; else if(strl_led6 = day) if(SURE = 3) LED = 0; /按下关断键 else LED = 6; else LED = 0; SURE = 0; if(LED != 6) su1 = year / 10 % 10; su2 = year % 10; su3 = yue / 10; su4 = yue %

22、 10; su5 = day / 10; su6 = day % 10; su7 = week % 10; else if(LED = 6) su0 = su1 = su2 = su3 = su4 = su5 = su6 = su7 = 10; 五、结论与心得随着放假日子的到来,我的课程设计终于完成了,课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我们才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。感谢我的老师黄老师,让我系统学习了有关单片机知识。他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪。 从项目的开始到完成,廖老师都始终给予我细心的指导和不懈的支持。一年以来,廖老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀。在此真诚的感谢廖老师,并致以诚挚的谢意和崇高的敬意。在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。六、参考文献1 李光飞.单片机课程设计实例指导

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1