单片机课程设计实验报告-基于STC89C52RC的电子万年历设计.doc
- 文档编号:147518
- 上传时间:2022-10-04
- 格式:DOC
- 页数:31
- 大小:252KB
单片机课程设计实验报告-基于STC89C52RC的电子万年历设计.doc
《单片机课程设计实验报告-基于STC89C52RC的电子万年历设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计实验报告-基于STC89C52RC的电子万年历设计.doc(31页珍藏版)》请在冰豆网上搜索。
单片机实验报告
题目:
基于STC89C52RC的电子万年历设计
专业:
通信工程
年级:
2008级
班级:
学生姓名:
学号:
指导老师:
一、设计任务与要求:
利用STC89C52RC单片机设计一个具有如下功能的电子万年历:
1、能够显示年、月、日、时、分、秒、星期。
2、能正确显示闰年日期。
3、可更改年、月、日、时、分、秒、星期。
4、可设定指定日期、时间的闹钟。
二、方案设计与论证
按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、蜂鸣器电路、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。
主控模块采用STC89C52RC单片机,按键模块用5个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。
图1 基于AT89C52RC单片机的电子万年历系统框图
三、硬件单元电路设计与参数计算
1、主控模块
我们选用STC89C52RC单片机作为中央处理器,如图2所示。
图2 STC89C52RC主控模块
2、时钟振荡电路
时钟振荡电路图3所示,时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于内部振荡模式。
此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。
图3 STC89C52RC时钟振荡电路
3、复位电路
复位电路由电阻和极性电容组成,如图4所示,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us时,即可实现复位。
此复位电路同时具备了上电复位和手动复位的功能,上电复位发生在开机加电时,由系统自动完成,手动复位通过一个按键来实现,在程序运行时,若遇到死机,死循环或程序“跑飞”等情况,通过手动复位就可以实现重新启动的操作。
手动按钮复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮和一个电阻,如图所示,当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端,由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
图4 STC89C52RC复位电路
4、DS1302时钟电路
时钟电路主要由时钟芯片DS1302、晶振等几部分组成,DS1302采用3线串行接口,占用引脚少,如图5所示。
图5 DS1302时钟电路
5、按键电路
按键电路由5个轻触开关组成,如图6所示。
按键用来调整时间和设定闹钟,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过检测这一低电平就可以判断是哪个键按下,从而作相应的操作。
图6 按键电路
6、显示电路
显示电路采用LCD1602液晶显示,图中只画出了其相应的接口,如图7所示。
3脚用于调节LCD1602的背光,4、5、6为LCD1602的控制口,用于控制其写入或是读出指令,7至14脚为LCD1602的数据口,将数传送到LCD1602中。
图7 LCD1602接口电路
7、蜂鸣器电路
蜂鸣器电路如图8所示。
通过控制三极管的导通和截止来实现蜂鸣器的响与不响。
图8 蜂鸣器电路
四、软件设计与流程图
1、程序主流程图
主程序首先初始化定时器、LCD1602及DS1302,然后就开始查询按键,有键按下则开始调整时间和设置闹钟,若没有按下,则执行下面的时间、日期及闹钟时间的显示,最后依次循环这些相同的操作,相应流程图如图9所示:
开始
初始化
按键是否按下
显示时间、日期及闹钟时间
时间、日期、闹钟设定
结束
是
否
图9 程序主流程图
按键的检测主要是通过查询的办法来实现,利用按键进行间调整及闹钟设置,闹钟开关键是开启和关闭闹钟功能;设置1键按下则开始设置时间及日期,同时被选择的时间和日期开始闪烁,第一次按下设置1键时,设置年,第二次按下设置月,后面依次设置日、星期、时、分、秒;闹钟设置键按下则开始设置闹钟时间及日期,同时被选择的时间和日期开始闪烁,第一次按下闹钟设置键时,设置年,第二次按下设置月,后面依次设置日、星期、时、分、秒;若按下下调键是减1操作,按下上调键是加1操作,无论是对时钟和闹钟的年份或月份进行加减,都会使日期归1。
五、仿真电路图
基于STC89C52RC单片机的电子万年历硬件仿真电路图如图10所示,系统由STC89C52RC单片机、按键扫描电路、显示电路、时钟电路、晶振电路、复位电路、蜂鸣器电路组成。
图10电子万年历仿真图
六、结论与心得
通过这次课程设计,我对单片机的理论知识有了进一步的掌握,对单片机的原理和实际应用有了更多地理解和掌握。
我对单片机的C语言编程有了更深刻的认识和更扎实的掌握,通过不断修改,不断尝试,对源代码各个模块的函数都有了一个非常深入的掌握。
在收获知识的同时,还收获了阅历,收获了成熟。
在此过程中,不仅培养了独立思考、动手制作的能力,在各种其它能力上也都有了提高。
更重要的是,在课程序设计里,我们学会了很多学习的方法。
而这是以后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
七、源程序
1、键盘扫描程序头文件keyscan.h:
/*-----------------------------------------------
矩阵键盘实验程序
通过反转法循环扫描矩阵键盘
------------------------------------------------*/
#include
#defineucharunsignedchar
#defineuintunsignedint
/*------------------------------------------------
函数声明
------------------------------------------------*/
ucharkeyscan(void);//键盘扫描
voiddelay(uinti);//演示程序
/*------------------------------------------------
主函数
------------------------------------------------*/
/*------------------------------------------------
延时程序
------------------------------------------------*/
voiddelay1(uinti)//延时函数
{
while(i--);
}
/*------------------------------------------------
键盘扫描程序
------------------------------------------------*/
ucharkeyboard(void)//键盘扫描函数,使用行列反转扫描法
{
ucharcord_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);
//return(cord_h+cord_l);//键盘最后组合码值
switch(cord_h+cord_l)
{
/*case0xee:
return(12);break;//0按下相应的键显示相对应的码值
case0xde:
return(8);break;//1按下相应的键显示相对应的码值
case0xbe:
return(4);break;//2
case0x7e:
return(0);break;//3
case0xed:
return(13);break;//4
case0xdd:
return(9);break;//5
case0xbd:
return(5);break;//6
case0x7d:
return
(1);break;//7
case0xeb:
return(14);break;//8
case0xdb:
return(10);break;//9
case0xbb:
return(6);break;//a
case0x7b:
return
(2);break;//b
case0xe7:
return(15);break;//c
case0xd7:
return(11);break;//d
case0xb7:
return(7);break;//e
case0x77:
return(3);break;//f
default:
return(0xff);break;*/
case0xee:
return(0);break;//0按下相应的键显示相对应的码值
case0xde:
return
(1);break;//1按下相应的键显示相对应的码值
case0xbe:
return
(2);break;//2
case0x7e:
return(3);break;//3
case0xed:
return(4);break;//4
case0xdd:
return(5);break;//5
case0xbd:
return(6);break;//6
case0x7d:
return(7);break;//7
case0xeb:
return(8);break;//8
case0xdb:
return(9);break;//9
case0xbb:
return(10);break;//a
case0x7b:
return(11);break;//b
case0xe7:
return(12);break;//c
case0xd7:
return(13);break;//d
case0xb7:
return(14);break;//e
ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 实验 报告 基于 STC89C52RC 电子 万年历 设计