微机系统课程设计基于单片机的数字时钟设计_第1页
微机系统课程设计基于单片机的数字时钟设计_第2页
微机系统课程设计基于单片机的数字时钟设计_第3页
微机系统课程设计基于单片机的数字时钟设计_第4页
微机系统课程设计基于单片机的数字时钟设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、微 机 系 统 课 程 设 计 题目: 数字时钟 班级: 小组: 指导教师: 设计日期: 目录摘要 04引言05设计方案论证及选择-05硬件设计061 系统框图 062 控制部分电路 07 3 原件清单 09软件设计 10设计数字钟13 1 数字钟的操作如下 132 流程图 13结束语 21主要参考文献 21 附录 实物图 23 摘要 :近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家

2、用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本文介绍了基于单片机的数字钟的设计,详细讨论了它从软件上实现的过程,重点在时钟调整的方式:查询和中断的比较,然后,对数字钟的稳定性和精确性作了相关的讨论。在文章的最后,给出了采用中断方式实现的数字钟的源程序。 关键字:单片机,数字钟,数据缓冲区,中断,定时,消抖引言1.基于单片机的数字钟电路的设计 本系统采用单片机stc89c52控制,以stc89c52为核心,它完成整个系统的信息处理及协调功能,本次设计我们选用宏晶公司的stc89c52芯片,其功能强大,兼容性好,还支持软件

3、选择的空间和掉电两种节电方式。本设计的软件,硬件都采用模块化的设计方法,提高了设计的效率。 本次设计通过对一个实现定时、时钟显示、串口通信等功能的时间系统的设计,其中结合了数据转换显示、数码管显示、动态扫描、单片机定时中断等技术。系统由stc89c52、led数码管、按键、三极管、hd74ls244p、max2020pe、电阻等组成。能实现时钟时、分、秒的显示,同时具有时间设置功能。文章后附有电路图、原件清单,程序清单。设计方案论证及选择该课题主要有两种方案:一种是用数字电路通过硬件实现,另一种是用单片机通过软件编程实现。在以上两种方案中:第一种是直接采用的是数字电路,但是在外围电路和控制比较

4、麻烦,需要比较多的器件来控制;第二种是采用软件来实现一些特定功能,硬件电路只需要一些显示部件和控制部件,其他的都是由软件来实现。第一种一切都由硬件实现,几乎没有软件编程,但电路复杂、芯片多、后续制板及硬件调试麻烦而且成本高;第二种虽电路简单、芯片少、成本低,但编写程序相当复杂。经过一番利弊的权衡及对今后电子业发展趋势的考量,最后敲定用单片机方案实现。另外用单片机实现本设计也有两种可选的子方案:第一种,用软件编程实现 设计中的钟控功能;另一种则选用单片机加时钟芯片实现钟控功能。在本次主要的是时间的设计,因此对时间的精度要求是比较高的,竟量是误差减少到最小值,但是为了更好的练习复习自己在以前所学习

5、的编程能力,所以不采用单片机加时钟芯片的方案,直接用软件编程实现钟控功能。总的来看,单片机已成为工控领域、尖端武器、日常生活中最广泛使用的计 算机,且将进一步向着cmos化、低功耗、小体积、大容量、高性能、低价格方向发展,因此敲定用单片机加软编程方案符合今后电子业发展趋势;另外运用此方案既能将自己以前学过的模拟电路、数字电路、单片机、汇编语言、protel99等知识结合实践进行一次全面的检测,又能为将来实际制作电路积累宝贵的经验。 硬件设计 1. 系统框图 如图1:2. 控制部分电路 stc89c52单片机概述:stc89c52单片机是国宏晶公司生产的采用 高性能的静态stc89c52设计,是

6、一个低电压,高性能chmos 8位单片 机,片内含4kbytes的可反复擦写的只读flash程序存储器和128 bytes 的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失 性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理 器和flash存储单元。stc89c52是一个功能强大的单片机,但它只有40引脚,32个双向输入 /输出(i/o)端口,其中p1是一个完整的8位双向i/o口,两个外中断 口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比 较放大器。此外,由于器件采用了动态设计,可提供很宽的操作频率范 围(频率0hz24mhz)。即具备

7、可用软件设置的睡眠省电功能,系统的唤 醒方式式ram、定时/计数器、串行口和外中断口,系统唤醒后即进入继 续工作状态。省电模式中,片内ram将被冻结,时钟停止振荡,所有功 能停止工作,直至系统被硬件复位方可继续运行。在本设计中stc89c52的时钟电路采用内部时钟方式,此方式是在xtal1 和xtal2两端跨接晶体或陶瓷谐振器。在本设计中xtal1和xtal2两端跨接11.0592mhz晶体振荡器,其发出的脉冲直接送入内部时钟电路。手动复位的按键电平复位本设计中采用lcd液晶显示屏max232cpe串口转并口3. 原件清单 usb端口 1 个六引脚开关 1个四引脚按键 4个九针串口 1 个发光

8、二极管 1 个、瓷片电容0.1u f 4个瓷片电容 33pf 2个电解电容10uf 1个max232cpe芯片 1个晶振11.0592 1 个at89c51 芯片 1 个lcd1602液晶显示 1 个mhdr1x9排阻 1 个滑动电阻10k 1个电阻:1k 1 个10k 1个4.7k 2个 5.1k 3 个软件设计程序代码:#include <reg52.h>#define uchar unsigned char#define uint unsigned intuint num,k1num,count;uchar hour,min,sec;sbit lcde = p27;sbit

9、lcdrs = p26;sbit lcdrw = p25;sbit k1 = p10;sbit k2 = p11;sbit k3 = p12;uchar code table = " 2011-03-29 tue"uchar code table1 = " 00:00:00"void delay (unsigned int i) uchar j;for (i;i>0;i-)for (j=110;j>0;j-);void write_com(uchar com) lcdrs = 0;lcdrw = 0;p0 = com;delay(5);lcd

10、e = 1;delay(5);lcde = 0;void write_data(uchar d)lcdrs = 1;lcdrw = 0;p0 = d;delay(5);lcde = 1;delay(5);lcde = 0;void write_hms(uchar da,uchar add)uchar shi,ge;shi = da/10;ge = da%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);void keyscan() if (k1 = 0)delay(5);if (k1 = 0)k1num+;

11、while(!k1);if (k1num = 1)tr0 = 0;write_com(0x80+0x40+10);write_com(0x0f);if (k1num = 2)write_com(0x80+0x40+7);write_com(0x0f);if (k1num = 3)write_com(0x80+0x40+4);write_com(0x0f);if (k1num = 4)k1num = 0;write_com(0x0c);tr0 = 1;if (k1num != 0)if (k2 = 0)delay(5);if (k2 = 0)while(!k2);if (k1num = 1)se

12、c+;if (sec = 60)sec = 0;write_hms(sec,10);write_com(0x80+0x40+10);if (k1num = 2)min+;if (min = 60)min = 0;write_hms(min,7);write_com(0x80+0x40+7);if (k1num = 3)hour+;if (hour = 24)hour = 0;write_hms(hour,4);write_com(0x80+0x40+4);if (k3 = 0) delay(5);if (k3 = 0)while(!k3);if (k1num = 1)sec-;if (sec

13、= -1)sec = 59;write_hms(sec,10);write_com(0x80+0x40+10);if (k1num = 2)min-;if (min = -1)min = 59;write_hms(min,7);write_com(0x80+0x40+7);if (k1num = 3)hour-;if (hour = -1)hour = 23;write_hms(hour,4);write_com(0x80+0x40+4);void init()delay(20);write_com(0x38);delay(1);write_com(0x0c);delay(1);write_c

14、om(0x06);delay(1);write_com(0x01);delay(1);tmod = 0x01;th0 = (65536-50000)/256;tl0 = (65536-50000)%256;ea = 1;et0 = 1;tr0 = 1;void main() init();write_com(0x80);for (num=0;num<15;num+)write_data(tablenum);delay(10);write_com(0x80+0x40);for (num=0;num<12;num+)write_data(table1num);delay(10);whi

15、le(1)keyscan();void timer0_irq(void) interrupt 1th0 = (65536-50000)/256;tl0 = (65536-50000)%256;count+;if (count = 20)count = 0;sec+;if (sec = 60)sec = 0;min+;if (min = 60)min = 0;hour+;if (hour = 24)hour = 0;write_hms(hour,4);write_hms(min,7);write_hms(sec,10);设计如下数字钟1数字钟的操作如下: 按键r 状态1:r2,调整数字钟的时钟数

16、据。 状态2:r3,调整数字钟的时钟数据。 状态3: r4, 调整数字钟的时钟数据。按键rst 状态4:rst,对数字钟进行复位清零操作在进行调整或设置状态时,显示对应状态的数据并且对应的各调整位数码dp点亮。这样可以使调整更加可视化。按键完成选择操作,和秒表的清零、调整操作。在进入了时间调整状态或定时设置状态时,按此键可以加一,或在秒表启动后处于停止状态时,按此键可以完成清零操作。按键秒表启止键,此键必须在秒表状态进入了之后才有效。 2流程图: 在以下流程图中只描述了基本的功能,如给显示位加点,中断程序状态调整,加一操作,显示状态的切换,在流程图中都没有描述。但其设计就是基于以上介绍的显示指针,和状态指针的思想。在程序中用r0,r1充当此指针。程序设计的基本流程图如下结束语在这次难得的实训中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了

温馨提示

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

评论

0/150

提交评论