1、目录目录 .1一 设计内容及要求 .11.1 设计内容 .11.2 设计要求 .21.3 设计报告主要内容 .2二 总体设计方案 .22.1 设计方案原理图 .22.1.1 原理框图 .22.1.2 电路原理图 .42.1.3 方案讨论 .42.1.4 设计任务明晰 .52.2 程序框图 .52.3 调试 .72.3.1 软件调试 .72.3.2 仿真调试 .8三 项目设计总结或结论 .8参考文献 .9附录 .91一 设计内容及要求1.1 设计内容以 AT89C52 单片机为核心,外加 LCD1602。制作一 LCD 显示的智能电子钟。1.2 设计要求(1) 计时:秒、分、时、天、周、月、年。
2、(2) 闰年自动判别。(3)自定任意时刻自动开/关屏。(4) 计时精度:误差1 秒/月(具有微调设置) 。(5) 键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键 K1、K2 完成。1.3 设计报告主要内容单片机课程设计是以课题或项目设计方式开设的一门课程,具有较强的综合性、实践性,是工科、工程类院校电类的一门必修课。是将单片机原理的理论知识转化为应用技术的重要环节。这个环节不但可以加深对单片机原理的深入了解,而且还能培养学生的实践动手能力,开发学生的分析、解决问题的能力。2二 总体设计方案2.1 设计方案原理图2.1.1 原理框图按键实时时钟/日历电路定时电路LCD 显示电路AT89
3、C51电源图一 原理框图32.1.2 电路原理图XTAL218XTAL119ALE3031PSN29RST9P0./AD0390.1/138P0.2/AD2370.3/336P0.4/AD4350.5/534P0.6/AD630.7/732P1.011.2P1.231.34P1.451.56P1.671.78P3.0/RXD103.1/T 1P3.2/INT0123./IT113P3.4/T014P3.7/RD173.6/W163.5/T115P2.7/A1528P2.0/A8212.1/92P2./A10232.3/124P2.4/A12252.5/13262.6/1427U0AT89C51
4、D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L234567891RP110k63%RV11kLS1SPEAKER12MHz30pF30pF1uF图二 电路原理图2.1.3 方案讨论方案一:采用实时时钟芯片实时时钟芯片具有年、月、日、星期、时、分、秒计时功能和多点计时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用 CPU 时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具有永不停止的计时功能,具有可编程方波输出功能,可用作实时测控系统的采样信号等。有的实
5、时时钟芯片内还带有非易失性 RAM,可用来长期保存但有时也需变更数据,由于功能完善,精度高,软件程序设计简单,且计时不占用 CPU 时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。方案二:软件控制利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时和4秒表计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术的程序设计方法,因此,本系统设计采用此种软件控制方式来实现计时。而有 Atmel 公司的 AT89C52 是一种自带 8KB Flash 存储器的低电压、高性能的COMS 8 位微处理器。该器件采用 A
6、tmel 高密度非易失性存储器制造技术制造,与工业标准的 MCS-51 指令集和输出引脚相兼容。AT89C52 将多功能 8 位 CPU 和闪存集成在一个芯片中,是一个高效的微控制器,使用也更方便,寿命更长,可以反复擦除 1000 次。形成了强大的功能、使用灵活和具有较高性价比的微控制器。它的功能强大,而且也比较容易购买,故本设计选用单片机芯片为 AT89C52。2.1.4 设计任务明晰采用 AT89C52 单片机作为系统的控制核心。时钟数据通过市场上流行的时钟芯片DS1302 来获取。DS1302 是 DALLAS 公司推出的涓流过串行接口与计算机进行通信,使的管脚数量减少。实时时钟/日历电
7、路可以计算 2100 年之前的秒、分、时、日、星期、月、年的具有闰年自动判别调整功能。实时电路能够实现自定任意时刻自动开/关屏,采用 LCD LM016L 显示年、月、日、星期、时、分、秒。通过开关实现微调,确保计时精确:误差小于 1 秒/月。DS1302 时钟芯片的主要功能特性:(1) 能计算 2100 年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可以自动调整;时钟可设置为 24 或 12 小时格式。(2) 31B 的 8 位暂存数据存储 RAM.(3) 串行 I/O 口方式使得引脚数量最少。(4) DS1302 与单片机之间能简单地采用串行的方式进行通信,仅需 3 根
8、线。(5) 宽范围工作电压 2.0-5.5V。(6) 工作电流为 2.0A 时,小于 300nA。功耗很低,保持数据和时钟信息时功率小于 1mA。2.2 程序框图5图三62.3 调试2.3.1 软件调试目前设计过程中容易造成原件和仪器仪表的损坏,而借助 Keil 和 Proteus 进行单片机系统的开发,可以节省设计成本,提高设计速度。Keil 软件包是一个功能强大的开发平台,它包括项目管理器、CX51 编译器、AX51 宏汇编器、BL51/LX51 连接定位器、RTX51 实时操作系统、Simulator 软件模拟器及Monitor51 硬件目标调试器。它是一种集成化程度高的文件编译环境,主
9、要功能为编译 C语言源程序,汇编程序和混合语言源程序,连接和定位目标文件和库,创建 HEX 文件,调试目标程序等。Keil 是目前最好的 51 系列单片机开发工具之一。Keil 支持软件模拟仿真(Simulator)和用户目标测试(Monitor51)两种工作模式。前者不需要任何单片机硬件即可完成用户程序仿真、调试,后者利用软件目标板中的监控程序可以直接调试目标硬件系统。Proteus 是一个完整的嵌入式系统软件、硬件设计仿真平台,它包括原理图输入系统ISIS、带扩展的 Prospice 混合模拟仿真器、动态元件库、高级图形分析模块和处理器虚拟系统仿真模型 VSM。ISIS 是 Proteus
10、 系统的中心,具有超强的控制原理设计环境。Proteus VSM 最重要的特点是把微处理器软件作用在处理器上,并和该处理器的任何模拟和数字原件协同仿真,仿真执行目标码就像在真正的单片机系统上运行一样,VSM CPU 模型能完整仿真 I/O 接口、中断、定时器、通用外部设备口及其他与 CPU 有关的外部设备,甚至能仿真多个处理器。72.3.2 仿真调试XTAL218XTAL119ALE3031PSN29RST9P0./AD0390.1/138P0.2/AD2370.3/336P0.4/AD4350.5/534P0.6/AD630.7/732P1.011.2P1.231.34P1.451.56P1
11、.671.78P3.0/RXD103.1/T 1P3.2/INT0123./IT113P3.4/T014P3.7/RD173.6/W163.5/T115P2.7/A1528P2.0/A8212.1/92P2./A10232.3/124P2.4/A12252.5/13262.6/1427U0AT89C51D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L234567891RP110k63%RV11kLS1SPEAKER12MHz30pF30pF1uF图四 仿真图三 项目设计总结或结论一分耕耘,一分收获。只有亲自用实践来验证这句话,在能得其要领。经过
12、这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。在实验的开始几天,基本上没有收获,不知何从下手,不知所措。为了看得更远,不妨站在前人的肩膀上,我在整体思路模糊的情况下,在网上大量招资粮,各种与电子时钟相关的文章,我阅读了不少。随着涉猎的点滴积累,我对电子时钟的设计方案已经慢慢酝酿而成。有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时只是一句程序的修改或诞生,但那种收获的感觉很暖人心。8参考文献单片机原理与应用 倪云峰 主编51 单片
13、机 c 语言教程 郭天祥 主编51 单片机原理与应用 陈海宴 主编单片机 c 语言应用 100 历 王东锋 主编附录项目设计评 语项目设计成 绩指导教师(签字) 年 月 日程序#include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longuchar code table=“2011:01:01 000“;uchar code table1=“ 00:00:00 00:00“;uchar code table2=“0123456789“;sbit lcd_rs =P33;/定义 LC
14、D 端口sbit lcd_rw=P34;sbit lcd_en=P35;sbit Sclk=P26;9sbit Io=P27;sbit Rst=P25;sbit S1=P10;/菜单键sbit S2=P11;/加键sbit S3=P12;/减键sbit S4=P13;/退出菜单键sbit ss=P14;/秒表键,第一次启动,第二次暂停,第三次清零sbit FMQ=P23;void yue31();/31 天的月份函数 void yue30();/30 天的月份函数void yue29();/29 天的月份函数void yue28();/28 天的月份函数void Timing(); /闹钟设置
15、void miaobiao();/秒表函数uchar count, k1num;/声明秒的变量char shi,fen,miao;/声明时分秒uint nian, yue,ri,ji=0,mm=0;/声明年月日,秒表计数,和秒表按键次数uchar f,s;/定时器/void delay(uchar z)/延时函数 uchar x,y; for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/lcd 写指令 lcd_rs=0; lcd_rw=0; lcd_en=0; P0=com; delay(5); lcd_en=1; delay(5); lcd_en=0;void write_data(uchar date)/lcd 写数据 lcd_rs=1; lcd_rw=0;