基于单片机的定时闹钟设计报告_第1页
基于单片机的定时闹钟设计报告_第2页
基于单片机的定时闹钟设计报告_第3页
基于单片机的定时闹钟设计报告_第4页
基于单片机的定时闹钟设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子系统设计(单片机)课程设计总结报告题目:定时闹钟院(系)名称:信息与通信工程学院班级:20130815学生姓名:唐学远学生学号:2013081520指导教师:蒋伊琳哈尔滨工程大学2016年6月研究意义和实现功能指标以单片机为核心的数字时钟是很有社会意义和社会价值的。钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报 警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设 备、甚至各种定时电气的自动启用等功能。二、总体设计方案本LCD定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬 件电路,用汇编语言设计的程序来实现的。 根据C51

2、单片机的外围接口特点扩展 相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件 执行一定的程序来实现数字钟的功能。由于采用集成芯片性的单片机来制作电子 钟,这样设计制作简单而且功能多、精确度高,也可方便扩充其他功能,实现也 十分简单。本设计是利用AT89C51单片机为主控芯片,由LCD晶振、电阻、电 容、发光二极管、开关、喇叭、被控电器等元件组成硬件电路,通过编写软件程 序来实现和控制的数字定时闹钟三、硬件实现1、时钟电路AT89C51系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内 部产

3、生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内 部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的 基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机 系统工作的快慢;二是指系统的标准定时时钟,即定时时间。本LCD电子闹钟设计是采用内部时钟方式,用一个 10MHz晶振和两个30Pf 瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用其电路图见图3.2。2、led显示电路本设计采用了型号为1602的LCD LCD有LED数码显示更好的更的直观效果,也更加

4、经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型 液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶 可显示2行16列英文字符,有8位数据总线D0-D7,RS R/W, EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和 引脚一样(除了调背光的二个线脚).该模块也可只用表3.1 LCD显示屏引脚说明编号符号引脚说明编号符号引脚说明1VCC电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D

5、7双向数据口7D0双向数据口15BLK背光源地8D1双向数据口16BLA背光源正极D4-D7作为四位数据分两次传送。这样的 话可以节省MCU的I/O 口资源。VDD:电源正极,4.5 5.5V,通常使用 5V电压;VL LCD对比度调节端,电压调节范围为 0 5V。接正电源时对比度最弱,接地电源时 对比度最高,但对比度过高时会产生鬼影”, 因此通常使用一个10K的电位器来调整对比度或者直接串接一个电阻到地;RS MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;E:

6、LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0- D7: 8位数据总线,三态双向。如果 MCU的I/O 口资源紧张的话,该 模块也可以只使用4位数据线D4 D7接口传送数据。本充电器就是采用4位数据传送方式;BLA LED背光正极。需要背光时,BLA串接一个限流电阻接 VDD, BLK接 地,实测该模块的背光电流为 50mA左右;BLK LED背光地端。3、按键电路本实验用4个按键来调节设置时间,和 闹钟,一个复位开关来复位程序,按下 为低电平,松手时按键自动弹起,为高 电平,来给单片机指令。SWIo野o lb 比亠FSE1ALE口1.1tTE:-:4、总电路图TLCD1XTAL

7、1XTAL2WT4rm怛血畑 Fl.tfTXfl FajrnnQ FlJfflTTP14/ID FismP37/WFRN1_: OliYBTAL-D111 一*jI/ MjiI-SPQT- 屮 是否到闹钟时间N响铃,打开被控电器2、定时闹钟程序#include / reg52.h是 AT89C52的头文件#defi ne uint un sig ned int#defi ne uchar un sig ned charuchar code table=NOW TIME:;uchar code table1=SET NOW TIME:;uchar code table2=SET ALARM TI

8、ME:;uchar code alarm=ALARM TIME:;uchar code alarmoff=ALARM TIME: OFF;uchar code alarmo n=ALARM TIME: ON;sbit Icde n=P2A4;sbit lcdrs=P2A2;sbit lcdrw=P2A3;sbit K1= P1A0;sbit K2=PM1;sbit K3=P1A2;sbit K4=P1A3;sbit beep=P1A4;sbit Dia nQi=P1A5;sbit L1=P2A5;uchar flag ,nu m,co un t,k1 nu m,k2 nu m,k3 nu m,

9、k 4num; char miao,shi,fe n, ashi,afe n;uchar i;uchar flag1=0;void delay(ui nt z) /延时函数uint x,y;for(x=z;x0;x_)for(y=100;y0;y-);void di() /蜂鸣器子程序beep=1;delay(100);beep=0;void write_com(uchar com) /写命令函数 _lcdrs=0;lcdrw=0;lcde n=0;P0=com;dela y(5);lcde n=1;dela y(5);lcde n=0;void write_date(uchar date)

10、/写数据函数 _lcdrs=1;lcdrw=0;Icde n=0;P0=date;dela y(5);Icde n=1;dela y(5);Icde n=0;void write_sfm(uchar add,uchar date) /写时间函数uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge); _void TimeI ni t()/显示时间初始化write_com(0x01);write_com(0x80);for(num=0; num 9;

11、 nu m+)write_date(table nu m);delay(5);write_com(0x80+0x40+6);write_date(:);dela y(5);write_com(0x80+0x40+9);write_date(:);dela y(5);write_sfm(4,shi);write_com(0x80+0x40+4);write_sfm(7,fe n);write_com(0x80+0x40+7);write_sfm(10,miao);write_com(0x80+0x40+10);void SetNowTime() / 设置当前时间 if(K1=O)delay(5)

12、;if(K1=O)while(!K1);di(); shi+;if(shi=24)shi=0;write_sfm(4,shi); write_com(0x80+0x40+4); _ if(K2=0) delay(5);if(K2=0)while(!K2);di();fen+;if(fen=60)fen=0;write_sfm(7,fe n); write_com(0x80+0x40+7); if(K3=0)delay(5);if(K3=0)while(!K3);di();k1n um=0;TR0=1;TimeI nit();void SetAlarmTime() / 设置闹钟时间函数 flag

13、=O;if(K1=O)delay(5);if(K1=O)while(!K1);di();ashi+;if(ashi=24)ashi=0;write_sfm(4,ashi); write_com(0x80+0x40+4);if(K2=0)delay(5);if(K2=0)while(!K2);di();afen+;if(afe n=60)afen=0;write_sfm(7,afe n); write_com(0x80+0x40+7); _if(K3=0)delay(5);if(K3=0)while(!K3);di();k3n um=0;EA=1;flag=1;TimeI nit();void

14、DisplayAlarmTime() / 显示闹钟函数write_com(0x01);write_com(0x80);for(num=0;num 11; nu m+)write_date(alarm nu m);delay(5);write_com(0x80+0x40+6);write_date(:);dela y(5);write_sfm(4,ashi);write_com(0x80+0x40+4);write_sfm(7,afe n);write_com(0x80+0x40+7); _void keysca n()/键盘扫描函数if(K1=0)delay(5);if(K1=0)TR0=0;

15、while(!K1);di();k1nu m+;if(k1 num!=0)/如果1键按下write_com(0x80);for(num=0;num13;num+)/ 显示 SetNowTime write_date(table1 num); delay(5);SetNowTime();/ 进入 SetnowTime函数elseif(K2=0)delay(5);if(K2=0)while(!K2);di();k2nu m+;if(k2num=1)/ 如果2键按下,则显示进入显示当前时间函数EA=0;DisplayAlarmTime();k2n um=2;if(k2 num=3)k2n um=0;

16、EA=1;TimeI nit();elseif(K3=0)delay(5);if(K3=0)while(!K3);di();k3nu m+;write_com(0x01); _if(k3num=1)/如果3键按下EA=0;write_com(0x80);for(num=0;num15;num+)/ 显示 SetAlarmTime write_date(table2 nu m); delay(5); write_com(0x80+0x40+6);/在第二行显示时间格式write_date(:);delay(5);write_sfm(4,ashi);write_com(0x80+0x40+4);w

17、rite_sfm(7,afe n); write_com(0x80+0x40+7);SetAlarmTime();/ 进入 SetAlarmtimeha 函数 elseif(K4=0)/设置闹钟模式,有三种模式,不响,delay(5);if(K4=0)while(!K4);k4nu m+;if(k4num=1)/ 不响flag=0 ; k4num=2;/秒响一声if(k4 num=3)beep=1; delay(500);beep=0;flag=1;flag1=0; k4num=4;if(k4num=5)k4num=O;/ 一秒响三声flag=1;flag仁1;beep=1;delay(IOO

18、);beep=O;delay(IOO);beep=1;delay(IOO);beep=O;delay(IOO);beep=1;delay(IOO);beep=O;delay(IOO);if(flag=1 &shi=ashi&fen=afe n)Dia nQi=1;delay(1OO);/蜂鸣器一秒连续响三声if(flag1=1)beep=1; delay(1OO); beep=O;delay(1OO); beep=1;delay(1OO); beep=O;delay(1OO); beep=1;delay(1OO); beep=O;delay(500);if(K4=0&flag=1)/检测4键是

19、否被按下,按下则跳 出,蜂鸣器停止发声delay(5);if(K4=0&flag=1) while(K4=!K4);flag=0;k4num=0;if(flag 1=0) beep=!beep;/delay(500);if(K4=0&flag=1)/蜂鸣器长一秒响一声检测4键是否按下,按下则跳出, 蜂鸣器停止发声初始化II设置16X2显示,5X7点阵,8位数据接口/设置开显示,不显示光标delay(5);if(K4=0&flag=1)while(K4=!K4); flag=0;k4num=0;void in it() lcd1602beep=0;Dia nQi=0; lcde n=0;shi=

20、0;fen=0;miao=0;ashi=0;afen=0; coun t=0;k1n um=0;write_com(0x38); write_com(0x0c);write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清0,数据指针清0Timel nit();TM0D=0x01;TH0=(65536-41665)/256;TL0=(65536-41665)%256;EA=1;ET0=1;TR0=1;void mai n()/ 主函数Dia nQi=0;beep=0;in it();write_com(0x80);flag=0;while(1)keysca n();void timer0()i nterrupt 1/中断服务子程序TH0=(65536-41667)/256;TL0=(65536-41667)%256;coun t+;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论