单片机课程设计电子日历.docx
- 文档编号:9760210
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:22
- 大小:122.40KB
单片机课程设计电子日历.docx
《单片机课程设计电子日历.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子日历.docx(22页珍藏版)》请在冰豆网上搜索。
单片机课程设计电子日历
湖南科技大学
信息与电气工程学院
《课程设计报告》
题目:
电子日历
专业:
通信工程
班级:
3班
****************************
学号:
**********
**************************
2016年6月16日
单片机原理与应用课程设计评阅书
题目
电子日历
姓名
黄夏妮
专业班级
通信3班
学号
1304040322
指导教师评语:
成绩评定为:
指导教师(签字):
年月日
信息与电气工程学院
课程设计任务书
2015—2016学年第二学期
专业:
通信工程班级:
3班学号:
**********姓名:
黄夏妮
课程设计名称:
单电片机原理与应用
设计题目:
电子日历
完成期限:
自2016年6月6日至2016年6月17日共2周
设计依据、要求及主要内容(可另加附页):
设计依据:
本方案以STC15F2K60S2单片机作为主控核心,与时钟芯片、LED显示、按键等模块组成硬件系统,通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。
设计要求:
(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)利用LED分别显示当前时间和日历。
(3)利用尽可能少的开关实现:
校正日历和时间
(4)定制闹钟(时、分、表)
设计内容:
该课程设计是利用STC15F2K60S2单片机内容的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并通过按键实现时间和暂停、启动控制等。
我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。
文章首先介绍了单片机的基本知识,然后同时给出了框图,流程图等。
论文涵盖了从系统设计,编程,原理图等产品开发的基本过程。
指导教师(签字):
批准日期:
年月日
摘要
本设计是根据我们所学的单片机课程,按照大纲要求利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类对时钟进行不断研究,不断创新纪录。
而本设计以数字集成电路技术为基础,单片机技术为核心,软件设计采用模块化结构,C语言编程,系统通过数码管显示数据,设置了可以显示公历日期(年、月、日、时、分、秒)、闹钟响应以及便携设置时间的电子日历和电子钟。
在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块;其次,详细的阐述了程序的各个模块和实现过程。
关键词:
电子日历 单片机 STC15F2K60S2
一、前言…………………………………………………………………………1
二、设计目的……………………………………………………………………1
三、设计要求……………………………………………………………………1
四、设计总体方案
1、基本框架………………………………………………………………1
2、设计总原理图…………………………………………………………2
五、单位模块设计
1、STC15F2K60S2单片机………………………………………………3
2、数码管显示电路………………………………………………………3
3、矩阵键盘接口电路……………………………………………………4
六、程序设计…………………………………………………………………4
七、个人总结…………………………………………………………………13
八、参考资料…………………………………………………………………13
一、前言
随着社会的不断发展及人们生活水平的不断提高,单片机控制已经越来越普及,它已经成为人们生活中必不可少的工具之一,它已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,其中电子日历就是一个典型的例子。
本设计采用STC15F2K60S2单片机作为电子日历的控制模块。
单片机可把由74LH594中的数据利用软件来进行处理,从而把数据传输到显示模块,实现日历和闹铃的显示。
以数码管为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠键盘来实现各种显示要求的选择与切换。
二、设计目的
(1)掌握数字电子钟的设计方法和制作过程。
(2)掌握常用数字集成电路的功能和使用。
(3)了解各芯片的逻辑功能、引脚安排和使用方法。
(4)熟悉了解通过软件控制试验箱来实现所需的功能。
三、设计要求
(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。
(2)利用LED分别显示当前时间和日历。
(3)利用尽可能少的开关实现:
校正日历和时间
(4)定制闹钟(时、分、表)
四、设计总体方案
1、基本框架
2、设计总原理图
本系统采用PCF8563时钟芯片进行计时,STC15F2K60S2单片机通过IIC总线进行数据读写,并采用IO方式控制两片74HC595芯片驱动8位数码管,数码管可以实时显示秒,分,小时,日期,月份和年等信息,并且实现闹铃功能时,数码管闪烁显示。
阵列式键盘采用行列扫描方式,可以实现秒,分,小时,日期,月份和年信息的校准,以及时钟显示与日历显示的切换功能。
五、单位模块设计
1、STC15F2K60S2单片机
STC系列单片机是深圳宏晶科技公司研发的增强型8051内核单片机,相对于传统的8051内核单片机,在片内资源、性能以及工作速度上都有很大的改进,尤其采用了基于Flash的在线系统(ISP)技术,使得单片机应用系统的开发变得简单了,无须仿真器或专用编程器就可进行单片机应用系统的开发。
本STC15系列单片机采用STC-Y5超告诉CPU内核,在相同频率下,速度比早期1T系列单片机(如STC12、STC11、STC10系列)的速度快20%。
2、数码管显示电路
这是由两个74HC595芯片控制数码管显示电路。
74HC595是具有8位移位寄存器和一个存储器,三态输出功能,串行输入并行输出的芯片。
移位寄存器和存储器分别具有独立的时钟信号。
数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
用两个75HC595芯片分别控制数码管的位选和段选,实现数码管对时间的显现。
3、矩阵键盘接口电路
矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此,同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
六、程序设计
#defineMAIN_Fosc22118400L
#include"STC15Fxxxx.H"
#defineTimer0_Reload(65536UL-(MAIN_Fosc/1000))
#defineDIS_DOT0x20
#defineDIS_BLACK0x10
#defineDIS_0x11
u8codet_display[]={
//0123456789ABCDEF
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//black-HJKLNoPUtGQrMy
0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50
0x37,0x6e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};
u8codeT_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
sbitP_HC595_SER=P4^0;//pin14SERdatainput
sbitP_HC595_RCLK=P5^4;//pin12RCLkstore(latch)clock
sbitP_HC595_SRCLK=P4^3;//pin11SRCLKShiftdataclock
u8LED8[8];
u8display_index;
bitB_1ms;
u8hour,minute,second;
u8hour1,minute1,second1;
u16year,month,day;
u16msecond,delay,flag;
u8KeyCode;
u8cnt10ms;
u8IO_KeyState,IO_KeyState1,IO_KeyHoldCnt;
u8cnt50ms;
u8m;
voidIO_KeyScan(void);//50mscall
voidDisplayRTC(void)
{
if(m==0)//
{
if(hour>=10)LED8[0]=hour/10;
elseLED8[0]=DIS_BLACK;
LED8[1]=hour%10;
LED8[2]=DIS_;
LED8[3]=minute/10;
LED8[4]=minute%10;
LED8[5]=DIS_;
LED8[6]=second/10;
LED8[7]=second%10;
}
elseif(m==1)//
{
LED8[0]=2;
LED8[1]=0;
LED8[2]=year/10;
LED8[3]=year%10;
LED8[4]=month/10;
LED8[5]=month%10;
LED8[6]=day/10;
LED8[7]=day%10;
}
elseif(m==2)//
{
if(hour>=10)LED8[0]=hour1/10;
elseLED8[0]=DIS_BLACK;
LED8[1]=hour1%10;
LED8[2]=DIS_;
LED8[3]=minute1/10;
LED8[4]=minute1%10;
LED8[5]=DIS_;
LED8[6]=second1/10;
LED8[7]=second1%10;
}
if(hour==hour1)//
if(minute==minute1)
if(second==second1)
{
P17=0;
for(delay=0;delay<=50000;delay++);
P17=1;
}
}
voidRTC(void)
{
if(++second>=60)
{
second=0;
if(++minute>=60)
{
minute=0;
if(++hour>=24)
{
hour=0;
day++;
if(day>30)
{
day=0;
month++;
if(month>12)
{
month=0;
year++;
}
}
}
}
}
}
voidmain(void)
{
u8i,k;
P0M1=0;P0M0=0;
P1M1=0;P1M0=0;
P2M1=0;P2M0=0;
P3M1=0;P3M0=0;
P4M1=0;P4M0=0;
P5M1=0;P5M0=0;
P6M1=0;P6M0=0;
P7M1=0;P7M0=0;
AUXR=0x80;//Timer0setas1T,16bitstimerauto-reload,
TH0=(u8)(Timer0_Reload/256);
TL0=(u8)(Timer0_Reload%256);
ET0=1;//Timer0interruptenable
TR0=1;//Tiner0run
EA=1;
display_index=0;
hour=11;
minute=59;
second=58;
hour1=12;
minute1=01;
second1=00;
year=16;
month=6;
day=13;
m=0;
RTC();
DisplayRTC();
//for(i=0;i<8;i++)LED8[i]=DIS_BLACK;
for(i=0;i<8;i++)LED8[i]=i;
k=0;
KeyCode=0;
cnt10ms=0;
IO_KeyState=0;
IO_KeyState1=0;
IO_KeyHoldCnt=0;
cnt50ms=0;
while
(1)
{
if(B_1ms)
{
B_1ms=0;
if(++msecond>=1000)
{
msecond=0;
RTC();
DisplayRTC();
}
if(++cnt50ms>=50)
{
cnt50ms=0;
IO_KeyScan();
}
if(KeyCode>0)
{
if(KeyCode==17)//hour+1
{
if(m==0)
{
if(++hour>=24)hour=0;
}
elseif(m==1)
{
if(++year>=100)year=0;
}
elseif(m==2)
{
if(++hour1>=24)hour1=0;
}
DisplayRTC();
}
if(KeyCode==18)//hour-1
{
if(m==0)
{
if(--hour>=24)hour=23;
}
elseif(m==1)
{
if(--year>=100)year=99;
}
elseif(m==2)
{
if(--hour1>=24)hour1=23;
}
DisplayRTC();
}
if(KeyCode==19)//minute+1
{
if(m==0)
{
second=0;
if(++minute>=60)minute=0;
}
elseif(m==1)
{
month++;
if(month>=30)month=0;
}
elseif(m==2)
{
if(++minute1>=60)minute1=0;
}
DisplayRTC();
}
if(KeyCode==20)//minute-1
{
if(m==0)
{
second=0;
if(--minute>=60)minute=59;
}
elseif(m==1)
{
month--;
if(month>30)month=29;
}
elseif(m==2)
{
if(--minute1>=60)minute1=59;
}
DisplayRTC();
}
if(KeyCode==21)//second+1
{
if(m==0)
{
if(++second>=60)hour=0;
}
elseif(m==1)
{
if(++day>=30)day=0;
}
elseif(m==2)
{
if(++second1>=60)second1=0;
}
DisplayRTC();
}
if(KeyCode==22)//second-1
{
if(m==0)
{
if(--second>=60)second=59;
}
elseif(m==1)
{
if(--day>=30)day=29;
}
elseif(m==2)
{
if(--second1>=60)hour1=59;
}
DisplayRTC();
}
if(KeyCode==32)
{
m++;
if(m>2)m=0;
}
KeyCode=0;
}
}
}
}
/**********************************************/
u8codeT_KeyTable[16]={0,1,2,0,3,0,0,0,4,0,0,0,0,0,0,0};
voidIO_KeyDelay(void)
{
u8i;
i=60;
while(--i);
}
voidIO_KeyScan(void)//50mscall
{
u8j;
j=IO_KeyState1;
P0=0xf0;
IO_KeyDelay();
IO_KeyState1=P0&0xf0;
P0=0x0f;
IO_KeyDelay();
IO_KeyState1|=(P0&0x0f);
IO_KeyState1^=0xff;
if(j==IO_KeyState1)
{
j=IO_KeyState;
IO_KeyState=IO_KeyState1;
if(IO_KeyState!
=0)
{
F0=0;
if(j==0)F0=1;
elseif(j==IO_KeyState)
{
if(++IO_KeyHoldCnt>=20)
{
IO_KeyHoldCnt=18;
F0=1;
}
}
if(F0)
{
j=T_KeyTable[IO_KeyState>>4];
if((j!
=0)&&(T_KeyTable[IO_KeyState&0x0f]!
=0))
KeyCode=(j-1)*4+T_KeyTable[IO_KeyState&0x0f]+16;
}
}
elseIO_KeyHoldCnt=0;
}
P0=0xff;
}
voidSend_595(u8dat)
{
u8i;
for(i=0;i<8;i++)
{
dat<<=1;
P_HC595_SER=CY;
P_HC595_SRCLK=1;
P_HC595_SRCLK=0;
}
}
voidDisplayScan(void)
{
Send_595(~T_COM[display_index]);
Send_595(t_display[LED8[display_index]]);
P_HC595_RCLK=1;
P_HC595_RCLK=0;
if(++display_index>=8)display_index=0;
}
voidtimer0(void)interruptTIMER0_VECTOR
{
DisplayScan();
B_1ms=1;
}
七、个人总结
本项目已经经过调试运行最终实现了功能要求,通过多次测试表明,电子日历的各项性能完全达到设计要求。
对电子日历的发展具有实际推广价值。
在未来的几年中电子日历装置一定会被广泛的应用各种场所,人们对这种电子日历系统一定会倍加青睐。
电子日历制造成本低,环保,方便,省电,安全。
总控制单元的硬件电路中多采用简易芯片,简化了电路设计,系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子 日历