单片机电子万年历课程设计

课程设计报告

课程名称: 设计题目: 院 系:

设计时间:

目录

摘要

一、单片机原理及应用简介.........................................2 二、系统硬件设计.................................................2 2.1引脚功能及管脚电压..................................2 2.1.1 P0 口...........................................3 2.1.2 P1 口...............................................3

2.1.3 P2 口..............................................4 2.1.4 P3 口............................................4 2.1.5 RST.................................................4 2.1.6 ALE/PROG........................................4 2.1.7 PSEN...............................................5

2.1.8 EA/VPP.............................................5

2.1.9 XTAL1..............................................5 2.2.0 XTAL2..............................................5

三、系统总体方案 ................................................5

3.1.1微处理器................................................5 3.1.2显示电路................................................6 四、硬件电路的总体框图设计.......................................8 五、硬件电路原理图设计...........................................8 六、主程序流程图设计.............................................10 七、仿真过程.....................................................11 八、仿真结果.....................................................11 附一 源程序代码..................................................13 附二 参考文献....................................................36

摘 要

单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C52、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。

关键词 : 单片机 , 万年历

一、单片机原理及应用简介

随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU 和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA 、浮点运算单元等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业控制系统、数据采集系统、自动测试系统、万年历电子表等。

二、系统硬件设计

2.1引脚功能及管脚电压

AT89C52为8 位通用微处理器,采用工业标

AT89C52引脚图

准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会

2.1.3 P2 口

P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可

驱动(吸收或输出电流)4 个TTL 逻辑

门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。

Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

2.1.4 P3 口

P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级

可驱动(吸收或输出电流)4 个TTL 逻

辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL )。 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能

P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。

2.1.5 RST

复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。

2.1.6 ALE/PROG

当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉

冲用于锁存地址的低8 位字 节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。

对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG )。 如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条

MOVX 和MOVC 指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

2.1.7 PSEN

程序储存允许(PSEN )输出是外部程序存储器的读选通信号,当

AT89C52 由外部程序存储器取指令(或数

据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN 信号。

2.1.8 EA/VPP

外部访问允许。欲使CPU 仅访问外部程序存储器(地址为

0000H —FFFFH ),EA 端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA 端状态。

如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。

Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp ,当然这必须是该器件是使用12V 编程电压Vpp 。

2.1.9 XTAL1

振荡器反相放大器的及内部时钟发生器的输入端。

2.2.0 XTAL2

振荡器反相放大器的输出端。

三、系统总体方案

我选用的是单片机(AT89C52) 来实现电子万年历的功能。共具备两个功能: (1)显示年月日及分秒信息 (2)具有可调整日期和时间功能。

该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S 内。

3.1.1微处理器

在设计过程中我使用12MHZ 晶振与单片机AT89C52相连接, 通过软件编程的方法实现了以24小时为一个周期同时显示小时, 分钟和秒的要求, 该定时闹钟设有九个按键,使之具备了校时、定时功能。利用单片机定时器及计数器产生定时

效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

在PROTEUS

软件环境下的AT89C52芯片如图4所示:

图4 PROTEUS 软件环境下的AT89C52芯片

3.1.2显示电路

就时钟而言,通常可采用液晶显示或数码管显示。由于

一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器的接口要求较高,占用资源多。另外,AT89C52本身无专门的液晶驱动接口,因此,本设计采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合。初始化时,由软件编写的指令就集中在显示功能的设置上。LCD3 AMPIRE 128×64的指令可带一个、两个参数,或无参数。若指令中含有参数,则每条指令执行时均须先送入参数,再送入指令代码。由于状态位作用不一样,因此执行不同指令必须检测不同状态位。液晶显示模块 LCD3 AMPIRE 128×64如图5所示:

图5 显示电路AMPIRE 128×643按键电路

由于我设计的是电子万年历,需要实现多种功能的显示,并要能够切换显示和调节年月日,因此,在设计过程中按键的设计就显得尤为重要。

在设计过程中我一共采用了3个按键,尽量在小的空间里实现最多的功能。按键电路如图6所示:

图6 按键电路

四、硬件电路的总体框图设计

该设计的硬件电路的总体框图如图7所示:

图7 总体框图

五、硬件电路原理图设计

该万年历是以单片机AT89C52为核心来完成的。

在硬件电路中采用P1口作为6位液晶显示电路的驱动接口,这是由于P1口输出驱动电路工作处于开漏状态, 它的驱动能力强, 故只需外接上拉电阻便可以把LED 数码管点亮。因为共阴的LED 数码管它的驱动电流是分开的, 在单片机进行动态扫描的时候不会影响彼此的电流, 故该电路中的8位LED 数码管均用共阳阴极的数码管。电路原理图如图8所示:

六、主程序流程图设计

图9 主程序流程图

基本显示模块设计的重点是由显示代码取得相应的段码、显示段码数据的串行发送,程序流程如图1-11所示。其中时个位的段码必须加上小数点,即带小数点显示时个位,目的是以小数点符代替时间分割符“-”。

软件秒脉冲发生器其实质是利用了定时器0的定时溢出中断,将它设定为100ms 溢出中断,则10次中断的时间正好为1s 。将时间参数设计为100ms 的原因有两个:

1)根据系统时钟主频为6M 的特点,16位定时器最大定时时间为65536×2M (M 为机器周期,这里是2μS),即131ms ,取整数100便于计次数;

2)如取的太短,如10ms ,则定时器频繁中断,干扰系统正常运行效果。

有了秒脉冲发生器,10次中断为1s ,秒指示灯闪亮1次,秒变量单元加1,60后分变量单元加1,如果为60分则时变量单元加1。任何一个变量的变化,则显示刷新一次(更新)。上述思想的实现均集成在定时器0的中断子程序中。 该设计显示模块流程图如图10所示:

图10 基本显示模块的程序流程图

七、仿真过程

1、仿真:打开WAVE6000,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确后运行,确保没有错误以后对正确的源程序进行保存,保存时给其命名,以便将来载入程序时容易找到。

2、打开PROTEUS 软件,并出画单片机电子万年历具体运行电路图。 3、检查所画电路运行图,确保没有错误以后,在PROTEUS 下对原理图进行加载WAVE6000下的源程序。

4、加载完成后,单击电路图框下的开始按钮,进行仿真,观察LED 数码管现实情况,此时LED 数码管开始显示数字。调节开关进行时间的调节。当秒的显示间隔快与或慢与实际间隔时,调节石英晶体震荡器的频率参数,从而使秒的间隔达到标准。然后检查电路其它问题,并对其的各参数进行调整,使之正确。

八、仿真结果

通过在WAVE6000下对源程序的编译,改正了其中的很多错误,然后运行,保证源程序的正确性。然后按原理图选择正确合理的电器元件,画出正确的电路图,

加载源程序运行,顺利实现了单片机数字电子钟的“小时”、“分钟”、“秒”的显示。该电子万年历的显示效果及电子万年历时间和日期的运行效果如图

12所示:

图12 电子万年历的运行效果

九、课程设计体会

通过这一周的课程设计,我学到了不少的知识。把以前没有学好的模拟电路的知识进行了补充和加强。这使我受益很大。加深了我对于单片机和数字电路的认识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应手。通过查阅大量的资料,我获得了以前在课堂上学不到的东西,我想这对于以后的毕业设计,或者工作也好,都是很有帮助的。我很认真地对待这个过程中的每一个细节,希望自己能做得更好。希望今后还有这样的机会,能够让我学到更多的知识。在此次的数字钟设计过程中, 更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。

在连接六进制, 十进制, 六十进制的进位及十二进制的接法中, 要求熟悉逻辑电路及其芯片各引脚的功能, 那么在电路出错时便能准确地找出错误所在并及时纠正了。

在设计电路中, 往往是先仿真后连接实物图, 但有时候仿真和电路连接并不是完全一致的 ,因此在实际的电路连接中往往容易遗漏。在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的。

对该设计的建议:

此次的电子万年历设计重在于仿真和接线, 虽然能把电路图接出来, 并能正常显示, 但对于电路本身的原理并不是十分熟悉. 总的来说, 通过这次的设计实验更进一步地增强了实验的动手能力。

学无止境,我们现在所做的一切都还只是一个开始。

附1 源程序代码

/****************************************/

/*不带字库的12864LCD+DS1302+DS18B20,显示温度、星期带按键、按键提示音的万年历*/

/*目标器件:89C52(51内部空间不够) */ /*晶振:12MHZ */ /*编译环境:Keil */

/****************************************/

/*********************************包含头文件********************************/ #include

#define uint unsigned int #define uchar unsigned char

uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; //flag用于读取头文件中的温度值,和显示温度值

/********************************命令字定义*********************************/ #define LCDLCDDisp_On 0x3f #define LCDLCDDisp_Off 0x3e #define LCDCol_Add 0x40 #define Page_Add 0xb8 #define Start_Line 0xc0

/*********************************端口定义**********************************/ sbit LCDMcs=P0^4; //左半屏使能,当LCDMcs=1,左半屏显示

sbit LCDScs=P0^3; //右半屏使能,当LCDScs=1,右半屏显示 sbit LCDEnable=P0^5; //使能 sbit LCDDi=P0^7; //数据/命令选择(RS ) sbit LCDRW=P0^6; //读/写信号 sbit LCRst=P0^2; //复位脚 sbit LCLight=P0^1; //背光脚

sbit DQ = P3^7; // 定义DQ 引脚为P3.3 //DS1302时钟芯片与C51之间的引脚连接定义 sbit IO=P1^1; sbit SCLK=P1^0; sbit RST=P1^2;

sbit ACC0=ACC^0; sbit ACC7=ACC^7;

/************************************************************ ACC 累加器=A ACC.0=E0H

ACC.0就是ACC 的第0位。Acc 可以位寻址。

累加器ACC 是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,

是单片机中一个非常关键的单元,很多运算都要通过ACC 来进行。以后在学习指令时, 常用A 来表示累加器。但有一些地方例外,比如在PUSH 指令中,就必须用ACC 这样的名字。

一般的说法,A 代表了累加器中的内容、而ACC 代表的是累加器的地址。 ***************************************************************/

//校时按键与C51的引脚连接定义 sbit key1=P3^0; //设置键 sbit key2=P3^1; //加键 sbit key3=P3^2; //减键 sbit buzzer=P3^6;//蜂鸣器

/**********************************字模表***********************************/

/*****************************固定字符******************************/ char code xnian[]={ /*-- 文字: 年 --*/

课程设计报告

课程名称: 设计题目: 院 系:

设计时间:

目录

摘要

一、单片机原理及应用简介.........................................2 二、系统硬件设计.................................................2 2.1引脚功能及管脚电压..................................2 2.1.1 P0 口...........................................3 2.1.2 P1 口...............................................3

2.1.3 P2 口..............................................4 2.1.4 P3 口............................................4 2.1.5 RST.................................................4 2.1.6 ALE/PROG........................................4 2.1.7 PSEN...............................................5

2.1.8 EA/VPP.............................................5

2.1.9 XTAL1..............................................5 2.2.0 XTAL2..............................................5

三、系统总体方案 ................................................5

3.1.1微处理器................................................5 3.1.2显示电路................................................6 四、硬件电路的总体框图设计.......................................8 五、硬件电路原理图设计...........................................8 六、主程序流程图设计.............................................10 七、仿真过程.....................................................11 八、仿真结果.....................................................11 附一 源程序代码..................................................13 附二 参考文献....................................................36

摘 要

单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C52、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。

关键词 : 单片机 , 万年历

一、单片机原理及应用简介

随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU 和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA 、浮点运算单元等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业控制系统、数据采集系统、自动测试系统、万年历电子表等。

二、系统硬件设计

2.1引脚功能及管脚电压

AT89C52为8 位通用微处理器,采用工业标

AT89C52引脚图

准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会

2.1.3 P2 口

P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可

驱动(吸收或输出电流)4 个TTL 逻辑

门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。

Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

2.1.4 P3 口

P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级

可驱动(吸收或输出电流)4 个TTL 逻

辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL )。 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能

P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。

2.1.5 RST

复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。

2.1.6 ALE/PROG

当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉

冲用于锁存地址的低8 位字 节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。

对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG )。 如有必要,可通过对特殊功能寄存器(SFR )区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条

MOVX 和MOVC 指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

2.1.7 PSEN

程序储存允许(PSEN )输出是外部程序存储器的读选通信号,当

AT89C52 由外部程序存储器取指令(或数

据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN 信号。

2.1.8 EA/VPP

外部访问允许。欲使CPU 仅访问外部程序存储器(地址为

0000H —FFFFH ),EA 端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA 端状态。

如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。

Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp ,当然这必须是该器件是使用12V 编程电压Vpp 。

2.1.9 XTAL1

振荡器反相放大器的及内部时钟发生器的输入端。

2.2.0 XTAL2

振荡器反相放大器的输出端。

三、系统总体方案

我选用的是单片机(AT89C52) 来实现电子万年历的功能。共具备两个功能: (1)显示年月日及分秒信息 (2)具有可调整日期和时间功能。

该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S 内。

3.1.1微处理器

在设计过程中我使用12MHZ 晶振与单片机AT89C52相连接, 通过软件编程的方法实现了以24小时为一个周期同时显示小时, 分钟和秒的要求, 该定时闹钟设有九个按键,使之具备了校时、定时功能。利用单片机定时器及计数器产生定时

效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

在PROTEUS

软件环境下的AT89C52芯片如图4所示:

图4 PROTEUS 软件环境下的AT89C52芯片

3.1.2显示电路

就时钟而言,通常可采用液晶显示或数码管显示。由于

一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器的接口要求较高,占用资源多。另外,AT89C52本身无专门的液晶驱动接口,因此,本设计采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合。初始化时,由软件编写的指令就集中在显示功能的设置上。LCD3 AMPIRE 128×64的指令可带一个、两个参数,或无参数。若指令中含有参数,则每条指令执行时均须先送入参数,再送入指令代码。由于状态位作用不一样,因此执行不同指令必须检测不同状态位。液晶显示模块 LCD3 AMPIRE 128×64如图5所示:

图5 显示电路AMPIRE 128×643按键电路

由于我设计的是电子万年历,需要实现多种功能的显示,并要能够切换显示和调节年月日,因此,在设计过程中按键的设计就显得尤为重要。

在设计过程中我一共采用了3个按键,尽量在小的空间里实现最多的功能。按键电路如图6所示:

图6 按键电路

四、硬件电路的总体框图设计

该设计的硬件电路的总体框图如图7所示:

图7 总体框图

五、硬件电路原理图设计

该万年历是以单片机AT89C52为核心来完成的。

在硬件电路中采用P1口作为6位液晶显示电路的驱动接口,这是由于P1口输出驱动电路工作处于开漏状态, 它的驱动能力强, 故只需外接上拉电阻便可以把LED 数码管点亮。因为共阴的LED 数码管它的驱动电流是分开的, 在单片机进行动态扫描的时候不会影响彼此的电流, 故该电路中的8位LED 数码管均用共阳阴极的数码管。电路原理图如图8所示:

六、主程序流程图设计

图9 主程序流程图

基本显示模块设计的重点是由显示代码取得相应的段码、显示段码数据的串行发送,程序流程如图1-11所示。其中时个位的段码必须加上小数点,即带小数点显示时个位,目的是以小数点符代替时间分割符“-”。

软件秒脉冲发生器其实质是利用了定时器0的定时溢出中断,将它设定为100ms 溢出中断,则10次中断的时间正好为1s 。将时间参数设计为100ms 的原因有两个:

1)根据系统时钟主频为6M 的特点,16位定时器最大定时时间为65536×2M (M 为机器周期,这里是2μS),即131ms ,取整数100便于计次数;

2)如取的太短,如10ms ,则定时器频繁中断,干扰系统正常运行效果。

有了秒脉冲发生器,10次中断为1s ,秒指示灯闪亮1次,秒变量单元加1,60后分变量单元加1,如果为60分则时变量单元加1。任何一个变量的变化,则显示刷新一次(更新)。上述思想的实现均集成在定时器0的中断子程序中。 该设计显示模块流程图如图10所示:

图10 基本显示模块的程序流程图

七、仿真过程

1、仿真:打开WAVE6000,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确后运行,确保没有错误以后对正确的源程序进行保存,保存时给其命名,以便将来载入程序时容易找到。

2、打开PROTEUS 软件,并出画单片机电子万年历具体运行电路图。 3、检查所画电路运行图,确保没有错误以后,在PROTEUS 下对原理图进行加载WAVE6000下的源程序。

4、加载完成后,单击电路图框下的开始按钮,进行仿真,观察LED 数码管现实情况,此时LED 数码管开始显示数字。调节开关进行时间的调节。当秒的显示间隔快与或慢与实际间隔时,调节石英晶体震荡器的频率参数,从而使秒的间隔达到标准。然后检查电路其它问题,并对其的各参数进行调整,使之正确。

八、仿真结果

通过在WAVE6000下对源程序的编译,改正了其中的很多错误,然后运行,保证源程序的正确性。然后按原理图选择正确合理的电器元件,画出正确的电路图,

加载源程序运行,顺利实现了单片机数字电子钟的“小时”、“分钟”、“秒”的显示。该电子万年历的显示效果及电子万年历时间和日期的运行效果如图

12所示:

图12 电子万年历的运行效果

九、课程设计体会

通过这一周的课程设计,我学到了不少的知识。把以前没有学好的模拟电路的知识进行了补充和加强。这使我受益很大。加深了我对于单片机和数字电路的认识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应手。通过查阅大量的资料,我获得了以前在课堂上学不到的东西,我想这对于以后的毕业设计,或者工作也好,都是很有帮助的。我很认真地对待这个过程中的每一个细节,希望自己能做得更好。希望今后还有这样的机会,能够让我学到更多的知识。在此次的数字钟设计过程中, 更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。

在连接六进制, 十进制, 六十进制的进位及十二进制的接法中, 要求熟悉逻辑电路及其芯片各引脚的功能, 那么在电路出错时便能准确地找出错误所在并及时纠正了。

在设计电路中, 往往是先仿真后连接实物图, 但有时候仿真和电路连接并不是完全一致的 ,因此在实际的电路连接中往往容易遗漏。在设计电路的连接图中出错的主要原因都是接线和芯片的接触不良以及接线的错误所引起的。

对该设计的建议:

此次的电子万年历设计重在于仿真和接线, 虽然能把电路图接出来, 并能正常显示, 但对于电路本身的原理并不是十分熟悉. 总的来说, 通过这次的设计实验更进一步地增强了实验的动手能力。

学无止境,我们现在所做的一切都还只是一个开始。

附1 源程序代码

/****************************************/

/*不带字库的12864LCD+DS1302+DS18B20,显示温度、星期带按键、按键提示音的万年历*/

/*目标器件:89C52(51内部空间不够) */ /*晶振:12MHZ */ /*编译环境:Keil */

/****************************************/

/*********************************包含头文件********************************/ #include

#define uint unsigned int #define uchar unsigned char

uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; //flag用于读取头文件中的温度值,和显示温度值

/********************************命令字定义*********************************/ #define LCDLCDDisp_On 0x3f #define LCDLCDDisp_Off 0x3e #define LCDCol_Add 0x40 #define Page_Add 0xb8 #define Start_Line 0xc0

/*********************************端口定义**********************************/ sbit LCDMcs=P0^4; //左半屏使能,当LCDMcs=1,左半屏显示

sbit LCDScs=P0^3; //右半屏使能,当LCDScs=1,右半屏显示 sbit LCDEnable=P0^5; //使能 sbit LCDDi=P0^7; //数据/命令选择(RS ) sbit LCDRW=P0^6; //读/写信号 sbit LCRst=P0^2; //复位脚 sbit LCLight=P0^1; //背光脚

sbit DQ = P3^7; // 定义DQ 引脚为P3.3 //DS1302时钟芯片与C51之间的引脚连接定义 sbit IO=P1^1; sbit SCLK=P1^0; sbit RST=P1^2;

sbit ACC0=ACC^0; sbit ACC7=ACC^7;

/************************************************************ ACC 累加器=A ACC.0=E0H

ACC.0就是ACC 的第0位。Acc 可以位寻址。

累加器ACC 是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,

是单片机中一个非常关键的单元,很多运算都要通过ACC 来进行。以后在学习指令时, 常用A 来表示累加器。但有一些地方例外,比如在PUSH 指令中,就必须用ACC 这样的名字。

一般的说法,A 代表了累加器中的内容、而ACC 代表的是累加器的地址。 ***************************************************************/

//校时按键与C51的引脚连接定义 sbit key1=P3^0; //设置键 sbit key2=P3^1; //加键 sbit key3=P3^2; //减键 sbit buzzer=P3^6;//蜂鸣器

/**********************************字模表***********************************/

/*****************************固定字符******************************/ char code xnian[]={ /*-- 文字: 年 --*/


相关内容

  • 万年历课程设计报告
  • 课程设计 (基于51单片机的电子万年历) 题目:万年历课程设计 院 (系)成都农业科技职业学院信息技术分院 专 业 应用电子技术 班 级 14电子 2班 学生姓名 黄攀 学 号 [1**********]1 指导老师 陈一虎.雷永辉 日 期 2016年6月 目 录 绪论--------------- ...

  • 单片机课程设计任务书biyao
  • 单片机课程设计任务书 一 设计题目和要求 1.数字音乐盒 设计要求: 1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少储存三首乐曲,每首不少于30秒) 2.采用LCD显示信息 3.开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称) 4.可通过功能键选择乐曲,暂停 ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...

  • 电子综合设计总结报告
  • 电子综合设计总结报告 课题:多功能电子数字时钟 成员:岳雪凌.闫蕾芳.周天琪 二零一三年六月二十日 于单片机的万年历设计 摘 要 随着科技的快速发展,时间的流逝,从观太阳.摆钟到现在电子钟,人类不断研究,不断创新纪录.目前,单片机技术的应用产品已经走进了千家万户.电子万年历的出现给人们的生活带来了诸 ...