单片机定时闹钟课程设计_第1页
单片机定时闹钟课程设计_第2页
单片机定时闹钟课程设计_第3页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、设计目的、设计要求 三、设计的总体结构3.1电路的总体原理框图3.2工作原理3.3元器件名称四、各部分电路设计4.1主电路4.2显示电路4.3内部时钟方式的电路4.4按键及蜂鸣器电路五、整体电路图六、设计总结6.1设计过程中遇到的问题及解决方法6.2设计体会6.3对设计的建议七、C语言程序八、附图、设计目的此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题 的能力和查阅资料的能力, 以及一定的自学能力和独立分析问题、 解决问题的能 力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题 目的分析与设计,达到技术性能要求。二、设计要求1、能显示时时分分秒秒。2、能够设

2、定定时时间、修改定时时间。3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。三、设计的总体结构3.1 电路的总体原理框图图3.1电路原理框图3.2工作原理当给电路足够的电源时,电路开始正常初始化,此时显示“00 : 00 : 00”, 若不进行时间调整和定时,时钟将正常计时下去。若按下按键1,由于按下次 数的不同,出现光标闪烁的位置不同,即可进行时间的时分秒的调整和定时时 间的时分秒的调整,按键2和3分别是进行时间的加和减,若确定好时间,时 钟将正常运行,到达定时时间后蜂鸣器将会响一段时间后停止。如果按复位键, 时钟将重新初始化,需要重新定制时间。如果不做任何改动,到下一个定时的

3、时间,时钟将会继续鸣叫。3.3元器件名称3.3.1 芯片 AT89C52AT89C52是 ATMEL 公司生产的低 电压,高性能 CMOS 单片 机.AT89C52提供以下标准功能:8字节FLASH闪速存储器,256字竹内部 RAM , 32个I/O 口线,3个16位定时/计数器,一个6向量两级中断结构, 一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。 空闲方式停止CPU的 工作,但允许RAM,定时/计数器串行通信口及中断系统继续工作。掉电方 式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一 个

4、硬件复位.3.3.2 LCD显示屏1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适 用于大规模集成电路直接驱动、易于实现全彩色显示的特点。晶模块内部的控 制器共有11条控制指令,如表所示:表3-1 :控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地 址0001字符发生存贮器地址8置

5、数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数至U CGRAM或DDRAM )10要写的数据内容11从 CGRAM 或 DDRAM读数11读出的数据内容指令3:光标和显示模式设置I/D :光标移动方向,高电平右移,低电平左移S: 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D :控制整体显示的开与关,高电平表示开显示,低电 平表示关显示C :控制光标的开与关,高电平表示有光标,低电平表示 无光标B :控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C :高电平时移动显示的文字,低电平时移动光标。指令

6、6:功能设置命令DL高电平时为4位总线,低电平时为8位总线N:低电 平时为单行显示F:低电平时显示5X 7的点阵字符。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。333蜂鸣器有源蜂鸣器是一种一体化结构的电子讯响器,是内部自带振荡电路,只需电平驱动就可以发生的蜂鸣器,而与其对应的无源蜂鸣器内部则无振荡电路。四、各部分电路设计4.1、主电路主电路主要就是芯片的运行,加载程序后,在外部时钟的作用下,将按照程序运行,从而可以实现设计的要求,进行时钟时间和定时时间的调整, 并且能 够在到达定时时间后控制蜂鸣器发出声响。U13D"

7、5F->XTAL1P0.07ADOPD.1/AD1PD.2/AD2XTAUP0.3/AD3P0.4/AD4P0.5/AD5PD.S/AD6RSTP0.7/AD7P2.0/ABP2.1/A9P2 2/A10PSENP2.3/A11ALEP24庞耳P2.5/A13P2.6/A14P27/A15P1 0/T2P30/RXDP1.1/T2EXP3.1JTXDP1.2P3.2/INTOP1.3P3.3/IIMT1P1.4P3.4/T0P1.5P3.G/T1P1.£P3.6AWrm 7 n-il;Pl./PJ. /HU191829"02ATC9C52<TEXT>393

8、E35 343225无刁-28 .伯 IT4TE 17图4.1 主电路4.2、显示电路显示电路即可以让我们看到时间的调整和定时时间的调整,显示调整后的时间。图4.2显示电路4.3、内部时钟方式的电路单片机内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯 片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体和微调电容, 构成一个稳定的自激振荡器。时钟频率可以影响单片机的速度。单片机的各功能 部件的运行都以时钟控制信号为基准图4.3内部时钟方式的电路4.4、按键及蜂鸣器电路按键可以对时间进行调整,蜂鸣器可以在到达定时的时间时提醒我们图 4.5 按键及蜂鸣器电路五、整体电路图见

9、附图。六、设计总结6.1、设计过程中遇到的问题及解决方法 在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示;1. 做实物时无法驱动数码管显示,后来了解到可以加锁存器,如 74LS253,74LS573 等等,还可以加三极管用来加大电流。当然如果换成液晶显 示屏的话就不需要考虑驱动不了的问题了。2. 烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程 序烧进去。3. 仿真时没问题的电路,在做好实物时发现无法运行。原因可能是程序出 现问题,或者在连实物时线路连接错误等等都有可能。这是很难的一部分,需 要查找出原因。在做实物的过程中我进行的很多检查,有很多连接错误,最终 又

10、重新焊接的。4. 复位电路在实物中可以运行,但是在仿真中不能正常运行。目前还未找 到原因。6.2、设计体会这次设计中遇到了很多问题,例如刚开始我在在仿真时程序出现了每次按按钮时总是显示测量时需要关闭仿真的字样,试了很多方法都没有找到原因, 最后才知道是因为按钮太近的缘故。很多类似的经历让我明白:1. 在设计程序之前 ,务必要对所学单片机课程的内容有一个系统的了解,知道单片机片内片外的内容及其功能。2. 设计程序关键要有一个清晰的思路和一个完整的软件流程图。模块化的 设计思想在程序设计中的作用是重大的, 它可以为你提供一个比较清晰的思路, 并且很容易找到头绪,不至于在编写一个程序时感觉到无从下手

11、。3. 在设计程序时 ,不能妄想一次就将整个程序设计好," 反复修改 ,不断改进 "是程序设计的必经之路。程序刚开始编好时,一般情况下会存在很多错误,要 不断地修改,不断的改进才能达到预期的目的,编写程序的时间并不是很长, 主要是花很多时间去修改程序。4. 要养成注释程序的好习惯 ,让人一看就能明白你的思路 ,这样也为资料的 保存和交流提供了方便。刚开始我在编写程序时,很不习惯于写注释,感觉很 麻烦,而且没用,但是在修改的过程中我就遇到了较大的麻烦,以至于不得不 重新的作了注释,以增加程序的易读性,从而使修改过程变得容易一些。总之,通过这次课程设计不仅使我巩固了本课程所学的

12、基本知识,还使我 具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是 再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。6.3、对设计的建议 在设计前应该对所要实现的功能有一定的了解,定下有大概的流程图,把 设计模块化,写程序时也应该一个模块一个模块的写, 这样方便理解, 也方便以 后的检查。在仿真和实物的过程中要了解所使用芯片的功能及引脚的排列方式, 这样焊接时比较方便。七 、C 语言程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code tabl

13、e1="00:00:00"sbit Icde n=P2W ;/位定义sbit lcdrw=P2A5;sbit lcdrs=P2A4;sbit s1=P3A0;sbit s2=P3A1;sbit s3=P3A2;sbit beep=P3A7;/定义蜂鸣器uchar num,cou nt,s1 nu m;显示的位数;响应中断数;按键次数;uint i;char shi,fen,miao,shi1,fen1,miao1;void delay(ui nt z)/ 延时程序uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void wri

14、te_com(uchar com)/控制指令lcdrs=0; /低电平时选择指令寄存器lcdrw=0;/ 低电平时进行写操作delay(5);lcde n=1; /E端为使能端,当E端由高电平跳变成低电平时,液晶模块执 行命令P0=com;delay(5);lcden=0;void write_data(uchar date)/数 据指令lcdrs=1;lcden=1; /均为高时是读出数据的内容delay(5);P0=date;delay(5);lcden=0;void init()/ 初始化lcdrw=0;lcden=0;delay(15);write_com(0x38);/ 设置为 4

15、位总线,单行显示delay(5);write_com(0x38);delay(5);write_com(0x38);write_com(0x38);重复多次以确定可以正确设置 write_com(0x08) ;/无光标正常显示write_com(0x01); 清显示write_com(0x06);光标和显示模式设置 di 1/D:光标移动方向,高电平 右移d0 S屏幕上所有文字是否左移或者右移。低电平表示光标闪烁write_com(0x0c);显示开关控制。d2 D:控制整体显示的开与关,高电 平表示开显示di C:控制光标的开与关,低电平表示无光标 B:控制光标是否 闪烁,低电平不闪烁wri

16、te_com(0x80+i);d7 为高时,显示数据存储地址TMOD=0x11;工作方式3TH0=(65536-50000)/256;定时时间为 50msTL0=(65536-50000)%256;EA= i ;/开总中断ET0=1;打开定时器TR0= 1 ;/启动定时器write_com(0x80+4); 秒的设定for(num=0;num<8;num+)write_data(table1num);delay(20);write_com(0x80+0x40+4);for(num=0;num<8;num+)write_data(table1num);delay(20);void w

17、rite_sfm(uchar add,uchar date)/调整时间uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);控制指令,0x40:字符发生器 RAM 地址设 置进行加write_data(0x30+shi);数据指令,功能设置命令d4 DL :高电平时为 4位总线d3 N :低电平时单行显示d2 F:低电平时显示5x7的点阵字符,高电平 时显示 5x10 的点阵字符。write_data(0x30+ge);void write_shed in gsfm(uchar add1,uchar date1)设定定时时间u

18、char shi1,ge1; shi1=date1/10;ge1=date1%10;write_com(0x80+add1);控制指令write_data(0x30+shi1);write_data(0x30+ge1);void keyscan()if(s1=0)delay(5);if(s1=0)s1num+;while(!s1);/s1 按下if(s1 num=1) 按下次数TR0=0;停止定时器工作write_com(0x80+0x40+11);调整时间设置,控制秒设定 write_com(0x0f); d3显示开关控制。d2 D:控制整体显示的开与关, 高电平表示开显示d1 C:控制光标

19、的开与关,高电平表示有光标d0 B:控制光标是否闪烁,高电平闪烁if(s1num=2)write_com(0x80+0x40+8); 控制分钟设定write_com(0x0f);控制光标闪烁if(s1num=3)write_com(0x80+0x40+5); 控制时设定 write_com(0x0f);if(s1num=4)TR0=1;启动定时器,定时时间的设定write_com(0x80+11); 控制秒的设定write_com(0x0f);/ 光标显示if(s1num=5)write_com(0x80+8);定时分钟的设定 write_com(0x0f);if(s1num=6)write_

20、com(0x80+5); 定时时的显示 write_com(0x0f);if(s1num=7)s1num=0; / 按键次数清零write_com(0x0c) ;/显示此时为无光标状态if(s1num!=0)/ 有按键时if(s2=0)delay(5);=h(s2HH0)宀wh=e (一S2)八if(slnumHHl)宀miao+if(miaoHH60)宀miaouo 八wmelsfm(lpmiao)1»10affidswMwmelcom (0X80+0X40+ 二)wBaSWMif(slnumHH2)fen+if(fenHH60)宀fenHO 八 wmelsfmsfen)八 wme

21、lcom (0X80+0X40+8)八if(snumHH3)宀shi+if(sh"H24)宀shno 八5if(s1num=4)TR0=1;定时器启动miao1+;if(miao1=60)miao1=0;write_shedingsfm(10,miao1); write_com(0x80+11);if(s1num=5)fen1+;if(fen1=60)fen1=0; write_shedingsfm(7,fen1); write_com(0x80+8);if(s1num=6)shi1+;if(shi1=24)shi1=0;if(s3=0)delay(5);if(s3=0)while (!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao); write_com(0x80+0x40+11);if(s1num=2)fen-;if(fen=-1)fen=59;if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+5);if(s1num=4)TR0=1;miao1-;if(miao1=-1)miao1=59;write_shedingsfm(10,miao1); write_com(0x80+11);if(s1num=5)fen

温馨提示

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

评论

0/150

提交评论