单片机课程设计实验报告基于STC89C52RC的电子万年历设计

上传人:cn****1 文档编号:490945055 上传时间:2023-10-18 格式:DOC 页数:31 大小:312.51KB
返回 下载 相关 举报
单片机课程设计实验报告基于STC89C52RC的电子万年历设计_第1页
第1页 / 共31页
单片机课程设计实验报告基于STC89C52RC的电子万年历设计_第2页
第2页 / 共31页
单片机课程设计实验报告基于STC89C52RC的电子万年历设计_第3页
第3页 / 共31页
单片机课程设计实验报告基于STC89C52RC的电子万年历设计_第4页
第4页 / 共31页
单片机课程设计实验报告基于STC89C52RC的电子万年历设计_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《单片机课程设计实验报告基于STC89C52RC的电子万年历设计》由会员分享,可在线阅读,更多相关《单片机课程设计实验报告基于STC89C52RC的电子万年历设计(31页珍藏版)》请在金锄头文库上搜索。

1、单片机实验报告题 目:基于STC89C52RC的电子万年历设计专 业: 通信工程 年 级: 2008级 班 级: 学生姓名: 学 号: 指导老师: 一、 设计任务与要求:利用STC89C52RC单片机设计一个具有如下功能的电子万年历:1、 能够显示年、月、日、时、分、秒、星期。2、 能正确显示闰年日期。3、 可更改年、月、日、时、分、秒、星期。4、 可设定指定日期、时间的闹钟。二、方案设计与论证按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、蜂鸣器电路、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。主控模块采用STC89C52RC单片机,按

2、键模块用5个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。图1基于AT89C52RC单片机的电子万年历系统框图三、 硬件单元电路设计与参数计算1、 主控模块我们选用STC89C52RC单片机作为中央处理器,如图2所示。图2STC89C52RC主控模块2、时钟振荡电路时钟振荡电路图3所示,时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于内部振荡模式。此电路在加电后延迟大约10ms振荡器起振,在XTAL2引

3、脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。图3STC89C52RC时钟振荡电路3、复位电路复位电路由电阻和极性电容组成,如图4所示,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us时,即可实现复位。此复位电路同时具备了上电复位和手动复位的功能,上电复位发生在开机加电时,由系统自动完成,手动复位通过一个按键来实现,在程序运行时,若遇到死机,死循环或程序“跑飞”等情况,通过手动复位就可以实现重新启动的操作。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮和一个电阻,如图所示,当人为按

4、下按钮时,则Vcc 的+5V电平就会直接加到RST端,由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。图4STC89C52RC复位电路4、DS1302时钟电路时钟电路主要由时钟芯片DS1302、晶振等几部分组成,DS1302采用3线串行接口,占用引脚少,如图5所示。图5DS1302时钟电路5、按键电路按键电路由5个轻触开关组成,如图6所示。按键用来调整时间和设定闹钟,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过检测这一低电平就可以判断是哪个键按下,从而作相应的操作。图6按键电路6、显示电路显示电路采用LCD1602液晶显示,图

5、中只画出了其相应的接口,如图7所示。3脚用于调节LCD1602的背光,4、5、6为LCD1602的控制口,用于控制其写入或是读出指令,7至14脚为LCD1602的数据口,将数传送到LCD1602中。图7LCD1602接口电路7、蜂鸣器电路蜂鸣器电路如图8所示。通过控制三极管的导通和截止来实现蜂鸣器的响与不响。图8蜂鸣器电路四、软件设计与流程图1、程序主流程图主程序首先初始化定时器、LCD1602及DS1302,然后就开始查询按键,有键按下则开始调整时间和设置闹钟,若没有按下,则执行下面的时间、日期及闹钟时间的显示,最后依次循环这些相同的操作,相应流程图如图9所示:开始初始化按键是否按下显示时间

6、、日期及闹钟时间时间、日期、闹钟设定结束是否图9程序主流程图按键的检测主要是通过查询的办法来实现,利用按键进行间调整及闹钟设置,闹钟开关键是开启和关闭闹钟功能;设置1键按下则开始设置时间及日期,同时被选择的时间和日期开始闪烁,第一次按下设置1键时,设置年,第二次按下设置月,后面依次设置日、星期、时、分、秒;闹钟设置键按下则开始设置闹钟时间及日期,同时被选择的时间和日期开始闪烁,第一次按下闹钟设置键时,设置年,第二次按下设置月,后面依次设置日、星期、时、分、秒;若按下下调键是减1操作,按下上调键是加1操作,无论是对时钟和闹钟的年份或月份进行加减,都会使日期归1。五、仿真电路图基于STC89C52

7、RC单片机的电子万年历硬件仿真电路图如图10所示,系统由STC89C52RC单片机、按键扫描电路、显示电路、时钟电路、晶振电路、复位电路、蜂鸣器电路组成。图10 电子万年历仿真图六、结论与心得通过这次课程设计,我对单片机的理论知识有了进一步的掌握,对单片机的原理和实际应用有了更多地理解和掌握。我对单片机的C语言编程有了更深刻的认识和更扎实的掌握,通过不断修改,不断尝试,对源代码各个模块的函数都有了一个非常深入的掌握。在收获知识的同时,还收获了阅历,收获了成熟。在此过程中,不仅培养了独立思考、动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会了很多学习的方法。而这

8、是以后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。 七、源程序1、键盘扫描程序头文件keyscan.h:/*-矩阵键盘实验程序通过反转法循环扫描矩阵键盘-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned int /*- 函数声明-*/ uchar keyscan(void);/键盘扫描void delay(uint i); /演示程序/*- 主函数-*/*- 延时程序-*/void delay1(uint i) /延时函数w

9、hile(i-);/*- 键盘扫描程序-*/uchar keyboard(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P1=0x0f; /行线输出全为0 cord_h=P1&0x0f; /读入列线值 if(cord_h!=0x0f) /先检测有无按键按下 delay1(100); /去抖 if(cord_h!=0x0f) cord_h=P1&0x0f; /读入列线值 P1=cord_h|0xf0; /输出当前列线值 cord_l=P1&0xf0; /读入行线值P1=0X0F;delay1(20);while(P1!=0x0f); /

10、return(cord_h+cord_l);/键盘最后组合码值 switch(cord_h+cord_l) /*case 0xee:return(12);break;/0按下相应的键显示相对应的码值case 0xde:return(8);break;/1 按下相应的键显示相对应的码值 case 0xbe:return(4);break;/2case 0x7e:return(0);break;/3case 0xed:return(13);break;/4case 0xdd:return(9);break;/5case 0xbd:return(5);break;/6case 0x7d:return

11、(1);break;/7case 0xeb:return(14);break;/8case 0xdb:return(10);break;/9case 0xbb:return(6);break;/acase 0x7b:return(2);break;/bcase 0xe7:return(15);break;/ccase 0xd7:return(11);break;/dcase 0xb7:return(7);break;/ecase 0x77:return(3);break;/fdefault:return(0xff);break; */case 0xee:return(0);break;/0按下

12、相应的键显示相对应的码值case 0xde:return(1);break;/1 按下相应的键显示相对应的码值 case 0xbe:return(2);break;/2case 0x7e:return(3);break;/3case 0xed:return(4);break;/4case 0xdd:return(5);break;/5case 0xbd:return(6);break;/6case 0x7d:return(7);break;/7case 0xeb:return(8);break;/8case 0xdb:return(9);break;/9case 0xbb:return(10);break;/acase 0x7b:return(11);break;/bcase 0xe7:return(12);break;/ccase 0xd7:return(13);break;/dcase 0xb7:return(14);break;/eca

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号