数字钟课程设计_第1页
数字钟课程设计_第2页
数字钟课程设计_第3页
数字钟课程设计_第4页
数字钟课程设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

Proteus与KeilC课程设计

题目:数字钟课程设计

院系:机电工程学院

专业:应用电子技术

班级:零九一班

姓名:

学号:

指导老师

0^:2

1弓I言

单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、

随机存储器、只读存储器、中断系统、定时器/计数器以及1/0接口电路等部件集

成在一个芯片上。

在我国,单片机的开发应用已有15年左右,已经形成一支庞大的技术开发队伍,

为我国单片机应用积累了丰富的经验。随着电子技术、计算机芯片技术和微电子

技术的飞速发展促进了单片机技术一日千里的变化。

随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系

统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广

大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑

成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加

入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。

21整体设计思路

这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:

图2.1整体设计思路

针对要实现的功能,拟采用STC89c51单片机进行设计,STC89C51单片现是

一款低功耗,高性能CM0S8位单片机,片内含4KB在线可编程(ISP)的可反复擦

写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,

兼容标准MCS-51指令系统及STC80C51引脚结构。这样,既能做到经济合理又能

实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,

又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、

调时显示、定时程序。本电子钟设计主要是依照图2.1中的流程做出来的,时间

分配比较均匀。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及

内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前

期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需

要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先

学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最

终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路

图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片

中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成

功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全

一样一般能实现想要的功能。

2主要元件的使用

下面就本次设计中用到的主要元件的所有功能进行简单的介绍,包括

STC89c51单片机、74LS07芯片、以及数码管的特性和用法。

3STC89c51单片机:

该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进

行一些扩展。单片机的结构如下:

图3.1.1单片机引脚图

在使用时VCC接电源电压,GND接地。PO,Pl,P2,P3可作为输入或输出端

口,RST是复位输入,篆复位电路。XTAL1和XTAL2接复位电路。这些可以在

硬件设计部分体现出来。

4电路设计

4.1整体设计

此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模

块:显示电路用六个数码管分别显示小时(年份)、分钟(月份)和秒(日):通

过动态扫描进行显示,从而避免了译码器的使用,使电路更加简单。单片机采用

AT89c51系列,这种单片机应用简单,适合电子钟设计。

电路的总体设计框架如下:

图4.1.1电路模块图

4.2分块设计

这部分介绍各模块电路的设计方法和成果,主要分为:输入部分、输出部分、

复位和晶振电路。

4.2.1输入部分

在电子钟的输入部分,设置相应的置数功能,通过外部设备的输入,如按键,

实现时间的修改。除此之外,调整闹铃、定时、日期时也需要按键进行输入。在

选用输入端口时,将P3引脚与按键相连进行输入。

设计的输入部分如下:

图4.2.1输入部分

4.2.2输出部分(显示电路)

该部分电路图如下所示:

图4.2.2显示部分

在实际电路中采用LCD显示屏相连进行显示,先把LCD显示屏的7、8、9、10、

11.12.13.14与RP8对应2~9相连,然后把LCD显示屏的2和15引脚各自相连

电源,1接地,3,15分别连接热敏电阻及晶体管的集电极。

4.2.3晶振与复位电路:

图4.2.3晶振与复位电路

5程序设计5.1程序思路

图5.1.1程序设计思路

结合电路,程序的总体思路是:

1.点复位键后,进行时间显示,从。时0分0秒开始。

2.按下按键1时,进行调时,此时按下4调整时,按下5调整分,若2秒钟未按

键,则不再等待,恢复走时,持续按键时大约0.3秒步进1,下同。

3.按下2键时进行闹铃调整,用4、5键分别调时和分,此时只有前四位进行显

示,即闹铃功能精确到分,2秒钟无按键则返回时间显示,时间到达闹铃所定时

间时P0.7揄出高电平,蜂鸣器响,按下按键2或3时蜂鸣器停止。

4、按3键时进行定时的设定,同样,分别通过4、5调整分和秒,若两秒未按键

则不进行定时,设定之后再次按下3键则进行倒计时,倒计时时间未到时若按下

1键则进行时间显示;若倒计时时间到则P0.7为高电平,蜂鸣器响。定时的最

大值为59分59秒。

在程序设计时,尽・改进算法,算法的改进可以使相对误差减小,或者可以使

占用空间减小。另外,分块的设计思想要贯穿始终,整个程序较为繁杂,某些

程序段会反复用到,因此采取的方法是写出多个程序段,通过跳转指令进行调

用。

5.2程序设计步骤

在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的

地方。

首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分,

在这个设计中选择计数器TO。TO的工作方式有:

方式0:不推荐

方式I:16位计数器,常用

方式2:自动重装初值的8位定时/计数器

方式3:T0相当于两个独立的8位定时/计数器

此程序采用方式1,方式1的定时时间t为t=(216・M)*12/fosc。其中M为定时

器初值,fosc为12MHz,若M为0则t=65536*12/2*106=65.536ms。因此可取

50ms为计时单位,初值M应为50*10-3*106=216-M。

M=15536=11110010110000=3CB0o即定时器初值为TH0=03CH,TL0=0B0H。

定时器中断20次为一秒,这部分在中断程序中用到。

5.3程序的主要模块

5.3.1延迟程序

在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,此程序需要反复

调用。此段程序是很简单的,但就是在这段简单的程序上,也会出现问题,

5.3.2中断服务子程序:

中断服务程序中,总体思路是:由于初值是3CB0H,所以装满定时器需要

50ms的时间,从而20次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加

一,然后返回,若到,则秒赋值为0,分加一,依次类推。包括日期显示的功能也

是如此。另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存

器,需要时将其进行显示。基于以上考虑,以R3为倒计时中的秒,R4为倒计时的

分,当秒加1时R3减一,减到()之后,秒赋值为59,分减一,直到分为0。

流程框图如下:

图5.3.1中断程序思路

6.1软件介绍

在这部分工作中用到了keilC和Proteus两个软件,其中KeilC用来编译程序

并生成hex文件,装入Proteus仿真图的芯片中,通过仿真结果一步步进行调

整最后达到预期的功能。

9电子钟设计中遇到的问题及其解决方法

在电子钟设计中程序比较长,遇到了各种各样的问题,比如跳转距离过长

出现语法错误。因此修改程序的时间很长,有语法错误,也有仿真时功能无法实

现的问题,在此不能一一说明,只能对个别问题加以阐述。

由于在走时调整、闹铃调整及定时设定时.,按卜键时每0.2秒步进1,这就需

要每0.2秒对按键输入进行一次扫描,因此开始时,我用的是延迟().2秒再返回按

键扫描程序的方法,但是可以想到,进行单纯的延迟时,不会有显示,在仿真时

功能没有实现。后来我采用的是反复调用若干次显示程序以实现延迟,较好地解

决了这个问题。虽然现在回过头来发现这个问题很简单,但当时是百思不得其

解。我从中学到:任何简单的事情都会有出错的可能,有些时候人的思路中的一

些错误是自己难以发现的,在工作和生活中要多对自己的想法提出质疑。

不光是这种明显的问题很多,有些细微的问题也一样出现了,但解决起来

并不容易。

在最后的硬件实现阶段发现蜂鸣器不响,此时连接方法是蜂鸣器直接连接

在了P0.7引脚。考虑到单片机的输出电流比较小,虽然P0.7引脚的电平已经达到

2V以上,也无法驱动蜂鸣器。于是我设想加上驱动电路。

作此修改之后,蜂鸣器发出响声,但是又遇到了新的问题:蜂鸣器无法停止

响声!看上去这个问题很简单,只要有停止闹铃的按键输入时,在程序中加一句

将P0.7置零的语句就可以了。但事实并不是这么简单。通过苦思冥想,发现在主

程序中,对“定时时间是否已到”是不断进行扫描的,而倒计时是在中断服务子

程序中进行的,当倒计时为0分0秒时,主程序判断出来后会不停地调用声音程

序:

结论

本文介绍的是利用AT89c51单片机设计的有调时、定时、闹铃功能的电子钟。

并详细说明了软件和硬件设计方法及仿真、硬件实现。在设计过程中可以看出,

汇编语言有着其独特的魅力,它简单易学,语法错误容易纠正;用单片机实现电

子钟的设计是比较方便和易于实现的。

通过电子钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单

片机实现预期的功能,对今后的工作有很大的帮助。电子钟各项功能的实现,为

自动控制的实现打下了理论基础,获得了实现方法。

当然,该电子钟还有很多不足之处,比如闹钟不能关闭,且只能定一个闹钟。在

今后的工作中还要对此加以研究,尽量实现更多的功能。

在今后的其他工作中,也可以把这次设计中的收获运用进去,这是我此次

毕业设计得到的最大财富。

1潘永雄.新编单片机原理与应用.第2版.西安:西安电子科技大学已版

社。

2何立民.我国单片机应用技术发展趋势及展望.自动化与仪表。

3向继文,廖立新基于AT89s51的电子钟系统设计.机电产品开发与创新,

4张静.基于单片机数字钟的设计.办公自动化杂志。

5樊金荣,谢智文.数字倒计时秒表的设计与实现.中南民族大学计算机科学

学院院报。

附录:

*1

TE

-

T-

l

-

T

\tt

l—

H

rF湍

-F黑

F

”盘

4J一

_,

数字钟原理图

原件清单:

万用板1

DC电源插座1

USB电源线1

自锁开关1

4.7K电阻3

AT89C52单片机1

40脚IC座1

DS1302芯片1

钮扣电池1

电池座1

8脚IC座1

LCD1602液晶显示屏1

10K可调电阻1

DSI8B20温度传感器1

1K排阻1

10K电阻1

10uF电容1

按键4

12M晶振1

22P电容2

8550三极管1

蜂鸣器1

LCD1

EBP加

亘X1

CRYSTAL,XTAL1PQD^DO

*TEXTiPD.MA01

P02*A»2

poaxoa

PD.4M0*

POSTADS

FQAfAOe

PO.TfiKO?

PNOTU:\

PZ.VAS

8UUB»ER

P22*10

-R2..■■-fTprn

PZJA11

-£=?-<:rP2.«M12

P2SDK13

PZ/BAU

P2.TM1S

P3ITRX0

FJ.WTXO

P3^fflTD

P33WH

P3WTD

P3ST1

7

C4.P1JSP3»WR

PINP3imF

g。i

ATOC51

cTEXTs

QX2

=:;LK7

80LK

XZTEXT^

OMD♦♦

>©130245R1^TAL77

<TExT:"r081SB2D

Proteus设“图

LCDi

Proteus仿

真图形

程序

#include<reg51.h>

//#include"DSI8B20_3.H"

#include<string.h>

#include<inlrins.h>

#defineuintunsignedint

#<lefineucharunsignedchar

#definewdI〃定义是否有温度功能=0时无温度,=1时有温度

故1神起丫1]0*80//1人口第一行的初始位置,因为1^口1602字符地址首位口7恒定为1(100000000=80)

#defineer0x80+0x40//LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)

〃液品屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)

sbiten=P2A7;

sbilrw=P2A6;〃如果硬件上rw接地,就不用写这句和后面的rw=O了

sbitrs=P2A5;

〃校时按键与C51的引脚连接定义

sbitset=P3A0;〃设置键

sbiladd=P3Al;〃加健

sbitdec=P3人2;〃减键

sbilsceNL_NZ=P3A3;〃查看农历/闹钟

sbitDQ=P3A7;//

sbitbuzzei-P2A0;〃蜂鸣器,通过三极管855()驱动,端口低电平响

sbilled=P2A4;//LCD背光开关

//DS1302时钟芯片与C51之间的引脚连接定义

sbitIO=P1A1;

sbitSCLK=PPO;

sbitRST=P1A2;

uchara.miao.shi.ten.ri.yue.nian.week.setii.temp;

uintflag;

//tlag用于读取头义件中的温度值,和显示温度值

bitc_inoon:

ucharnz_shi=12,nz_fen=0,nz_miao=0,setNZn;〃定义闹钟变量

ucharshangyimiao.bsn,lemp_hour;〃记录上一秒时间

ucharT_NL_NZ;〃计数器

bittirnerOn=0;〃闹钟启用标志位

bitbaoshi=0;〃整点报时标志位

bitp_r=0;〃平年/涧年=0表示平年,=1表示润年

dataucharycar_moon.month_moon,day_moon,wcck;

sbitACC0=ACCA0;

sbitACC7=ACCA7;

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

ACC累加器=A

ACC.0=E0H

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

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

是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,

常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。

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

************************:!:******************宅**宅**本**云**拿为****拿*/

〃*公*****京阳历转换阴历表塞**a**************余**余*****拿********

codeucharyear_code(597]={

OxO4.OxAe.Ox53,//19010

0x0A,0x57,0x48,//I9023

0x55.0x26.0xBd,//19036

OxOd,0x26,0x50,//19049

0x0d.0x95.0x44,//190512

0x46,0xAA,0xB9,//190615

0x05.0x6A.0x4d.//190718

0x09.0xAd.0x42,//190821

0x24,0xAc,0xB6,//1909

0x04.0xAe.0x4A.//1910

0x6A,0x4d,0xBc,//191I

0x0A.0x4d,0x52,//I912

OxOd,0x25,0x46,//1913

Ux>d.Ux52.UxBA,//19I4

0x0B.0x54.0x4e,//1915

0x0d.0x6A.0x43,//19I6

0x29.0x6d,0x37,//I917

0x09,0x5B,0x4B,//1918

0x74.0x9B.0xCl.//1919

0x04,0x97,0x54,//1920

0x0A.()x4B,0x48,//1921

0X5B.0K25.0XBC,//1922

0x06.0xA5.0x50.//1923

0x06.0xd4.0x45,//1924

0x4A,0xdA,0xB8,//1925

0x02.0xB6.0x4d.//1926

0x09,0x57,0x42,//1927

0x24.0x97.0xB7,//1928

0x04.0x97.0x4A.//I929

0x66,0x4B,0x3c,//1930

0x0d,0x4A.0x51,//193I

0x0c.0>.A5,0x46,//1932

0x56.0xd4.0xBA.//1933

0x05,0xAd,0x4e,//1934

0x02.0xB6.0x44.//1935

0x39,0x37,0x38,//1936

0x09,0x2e,0x4B,〃】937

0x7C.0x96.0xBf.//1938

0x000x95,0x53,//1939

0x0d.0x4A.0x48.//1940

0x6d,0xA5,0x3B,//1941

OxOB.OK55.Ox4f.//1942

0x05,0x6A.0x45,//1943

0x4A,0xAd,0xB9.//1944

0x02,0x5d,0x4d,//1945

0x09,0x2d,0x42,//1946

0x2C.0x95.0xB6,//1947

0x0A,0x95,0x4A,//1948

0x7D.0x4A.0xDd,//1949

0x06,0xCA,0x51,//1950

0x0B.0x55.0x46,//1951

Ox55.Ox5A.OxBB,//1952

0x04,0xdA,0x4e,〃1953

0x0A.0x5B.0x43.//1954

0x35,0x2B,0xB8,//1955

0x05,0x2B.0x4C.//1956

0x8A,0x95,0x3f,//1957

0x0e,0x9^,0x52,7/19^8

0x06,0xAA.0x48,//1959

0x7A.0xd5,0x3C,//1960

0x0A.OxB5.0x4f.//I96I

0x04,0xB6,0x45,//1962

0x4A.0x57.0x39.//1963

0x0A.0x57.0x4d.//!964

0x05.0x26.0x42,//1965

0x3e,0x93,0x35,//I966

OxOd,0x95,0x49,//1967

0x75.0xAA.0xBe.//1968

0X05,0X6A,0X51,//1969

0x09.0x6d.0x46,//1970

0x54,0xAe,0xBB,//I97!

0x04,0xAd,0x4f,//1972

0x0A.0x4d.0x43,//I973

0x4d,0x26,0xB7,//1974

0x0d.0x25.0x4B.//1975

Ox8d,0x52,0xBf,//1976

0X0B.0K54.0X52,//1977

0X0B,0K6A,0X47,//1978

0x69.0x6d.0x3C,//1979

0x09,0x5B.0x50,//1980

0x04.0x9B,0x45,//198I

0x4A.0x4B.0xB9.//1982

0x0A,0x4B,0x4d,//1983

OxAB.Ox25.OxC2,//1984

0x06,0xA5,0x54,//1985

0x06.0xd4.0x49.//1986

0x6A,0xdA,0x3d,“1987

0x0A.0xB6.0x51,//1988

0x09,0x37.0x46,//1989

0x54,0x97,OxBB,//1990

0x04,0x97.0x4f.//I991

0x06,0x4B,0x44,//1992

Ox36.OxA5.Ox37.//1993

0x0e,0xA5,0x4A,//1994

0x86.0xB2,0xBf,//1995

0x05,OxAC,0x53,//1996

0x0A,0xB6,0x47,//1997

0x59,0x36,OxBC.//1998

0x09,0x2c,0x50.//1999294

0X0C.0K96.0X45,//2000297

0x4d,0x4A,0xB8,//2001

UxUd.Ux4A.Ux4C,〃2UU2

0x0d,0xA5,0x41,//2OO3

0x25.0xAA,0xB6.//20(>4

0x05.0x6A.0x49.//2OO5

0x7A,0xAd,0xBd,//20()6

OxO2.Ox5d.Ox52,//2007

0x09,0x2d,0x47,//2008

0X5C,()K95,0XBA,//2009

0x0A.0x95.0x4e.//20I0

0x0B,0x4A,0x43,//20I1

0x4B.0x55.0x37.//2012

0x0A,0xd5,0x4A,//2013

0x95.0x5A.0xBf.//2014

0x04,OxBA,0x53,//2015

0x0A.0x5B.0x48,Z/2016

0x65.0x2B.0xBC,//2017

0x05,0x2B,0x50,//2018

0x0A.0x93.0x45.//2019

0x47,0x4A,0xB9,//2020

0x06,0xAA.0x4C.Z/2021

0x0A,0xd5,0x41,//2022

0x24.0xdA.0xB6,//2023

0x04,0xB6,0x4A,//2024

0x69.0x57,0x3d.Z/2025

0x0A.0x4e.0x51.//2026

0x0(1,0x26,0x46,//2027

Ox5e,O〉:93,Ox3A.〃2O28

0x0d,0x53,0x4d,//2029

0x05.0xAA.0x43,//2030

0x36,0xB5,0x37,//203I

0x09.0x6d,0x4B.//2032

0xB4.0KAe.0xBf,//2033

0x04,0xAd.0x53,//2034

0x0A.0x4d.0x48.//2035

0x6d,0x25,0xBC,//2036

0x0d.0x25.0x4f.//2037

OxOd,0x52,0x44,//2038

0x5d.0xAA,0x38,42039

0x0B.0x5A.0x4C,//2040

0x05.0x6d.0x41,//2041

0x24,0xAd.0xB6.//2042

0x04,0x9B,0x4A,//2043

0x7A.0x4B.0xBe,//2044

0x0A,0x4B,0x5l,Z/2045

UxUA,0xA〉,Ux4b,〃2U46

0X5B,0K52,0XBA,//2047

0x06.0xd2.0x4e.//2048

0x0A.0xdA.0x42,//2049

0x35,0x5B,0x37,〃2050

0x09.0x37.0x4B.//2O5I

0x84,0x97,0xCl,//2O52

0x04.0x97,0x53,//2053

0x06,0x4B.0x48.//2054

0x66,0xA5.0x3C,〃2055

0x0e.0xA5,0x4t;//2056

0x06,0xB2,0x44,//2057

0x4A.0xB6.0x38.//2058

0x0A.0xAe,0x4C,//2059

0x09.0x2e.0x42,//2060

0X3C.0K97.0X35,//2061

0x0C,0x96,0x49,//2062

0x7d,0x4A.0xBd.//2063

0x0d,0x4A,0x51,//2064

0x0d.0xA5.0x45,//2065

0x55,0xAA,0xBA,//2066

0x05.0x6A.0x4e.//2067

OxOA.Ox6d.Ox43,//2068

0x45.0x2e.0xB7,//2069

0x05.0x2d.0x4B.//2070

0x8A,0x95,0xBf,//207I

0x0A.0x95.0x53,“2072

0X0B,0K4A,0X47,//2073

温馨提示

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

评论

0/150

提交评论