文档库 最新最全的文档下载
当前位置:文档库 › 基于AT89C51单片机的定时闹钟设计

基于AT89C51单片机的定时闹钟设计

基于AT89C51单片机的定时闹钟设计
基于AT89C51单片机的定时闹钟设计

学号: 班级: 姓名:

基于89C51单片机的电子闹钟设计

一、设计要求

(1)设计并实现一个具有计时功能的电子时钟系统,电子表的时间精确到秒,并可以显示年、月、日、时、分、秒。

(2)利用液晶显示器显示定时器的日期和时间。 (3)使用键盘进行设置时间和设置闹钟。

(4)定时时间到通过蜂鸣器报警和发光二极管闪烁通知,并持续60s 。

二、硬件设计

(1)系统设计框图

(2)选择硬件设备

单片机:选择AT89C51;

液晶显示器:具有16字符显示功能的1601 键盘:选择4行*4列的矩阵键盘 LED :选择红色的发光二极管 E 2

PROM :X2545

基本元件:蜂鸣器,电容,晶体振荡器 ,电阻,开关 电源:使用+5v 直流稳压源 基本模块的构成

①时钟信号发生单元如右图2 利用晶振和电容以及单片机内部 电路,构成晶体并联振荡器,产 生12MHz 的时钟频率 ②复位电路如右图3

利用一个简单的电容和按键实现

图2时钟信号发生单元

实现对系统的复位功能

由此基本模块可以实现最小的单片机系统

(3)电子时钟硬件原理图

图4硬件电路原理电路

(4)主要器件的原理

①液晶显示原理

液晶显示器种类繁多,按输出样式分为,图案式,数码式,点阵式。本设计方案利用的是点阵式液晶显示器,而液晶驱动方式又和数码管驱动截然不同,虽然比数码管需要更小的工作电压,但是其结构所需要的扫描方式较数码管来说,是比较复杂的,而且输入输出数据速度慢,市场上是常用点阵式液晶驱动器的,常用的有1601、1602……,“16”代表显示字符共有几列,“01”、“02”代表输出字符共有几行。下面是驱动1601的驱动方法。

驱动1601的一个很重要的方面就是液晶显示器的初始化,主要是利用控制、数据复用总线来输入指令,进行初始化。 基本操作

读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无

读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无 图3复位单元电路

利用Sta7可以用来检测当前驱动器是否处于忙状态,这样的话可以避免在忙状态的情况下,进行写数据会产生漏写的错误;或者可以利用延时,具体时间可以参照datasheet,一般都为几毫秒左右。

初始化设置

初始化时首先要进行写命令操作,然后按照datasheet的说明进行写指令

显示模式设置

2)屏幕移

3)设置内

部RAM地址

②键盘扫描原理

键盘分为编码键盘,和非编码键盘。编码键盘是靠硬件电路对每个键位进行编码,当有键按下时,输出固定的数码,并用来判断键位。常见的编码键盘如PC 键盘;非编码键盘是指,键盘不是靠固定的编码来实现对键位的识别的,而是靠一定的算法来对键位进行扫描,矩阵键盘就是常见的一种非编码键盘。

编码键盘一般需要较多的硬件电路,所以成本较非编码键盘较高,故一般的单片机系统都采用非编码键盘,目的是充分利用单片机的丰富的软件资源,弥补硬件的不足。

机械按键在按动的过程中,往往会产程抖动,这又是对一个控制系统的致命伤,因此必须采取措施消除抖动。目前,消除抖动的方法主要有两种:利用硬件RS 锁存器进行消除抖动,将复杂跳变的信号变成稳定的信号;利用软件算法实现对抖动的排除,灵活性大,较常用,一般的,抖动的持续时间为数毫秒,所以为了简单起见,本设计方案利用延时来消除抖动。

对于键盘的扫描常用的有逐行扫描法和线反转法。逐行或列扫描法的思路是,利用列线,做输入,行线做输出。首先使四根列线的某一根置零,当在此列的某一行有键按下时,该行线即为低电平,其余均为高电平,这样这个键就被编码;然后再使另一列线置零,检测下一列是否有键按下;不断这样循环,就可以对整个键盘进行逐列扫描了。线翻转法的思路是,把列线当做线,所以,对其中某条线置低电平,其余为高电平,然后去读行线状态,那么线的状态和行的状态相连就是当前按下的键的键值,例如,线的状态为1011,读得行的状态为1101,则当前按键的键值为10111101。 综观这两种方法,逐行扫描法,需要多次循环才能对整个键盘进行全扫描,速度慢,而且还有可能导致有些键检测不出,而线翻转法只需两句程序就可以扫描到键值,因此本设计采用先翻转法对键盘进行扫描。

③E 2

PROM 原理

三、软件仿真设计

(1)不同软件模块间的同步调度的总体设计

本系统的软件部分的功能模主要有初始化模块、定时器模块、液晶显示模块、键盘扫描模块、键盘识别模块、模式转换模块、常用调用子程序模块。

为了充分利用单片机的资源,对不同模块之间需要合理调度,对于只有一个任务的系统来说,实现该系统的程序往往是顺序执行的程序,各种模块之间也只是调用与被调用的关系,对于更复杂的系统,如菜单系统,也只不过是一个分支结构,菜单反复在死循环里检查输入状态,一旦选中某个选项,马上跳入分支当中顺序执行,执行完毕后立即返回到菜单检测模块。对于这样的系统,往往不用考虑模块之间的并行关系,只需考虑顺序执行即可。

但是对于本次实现的系统中定时器模块属于中断模块,独立于任何模块;液晶显示

图 5 X2425 原理图

X2425 E 2PROM 是一个512*8 bit 的掉电不丢数据的可擦除只读存储器。主要模块为,SPI 接口模块:进行数据的读写操作;看门狗模块,对于没有看门狗的单片机来说很有用;存储矩阵模块,即存储空间。

SPI 协议:高速同步串行口,它以主从方式工作,这种模式通常有一个主设备和一个从设备或多个从设备。

SDO 为主设备输出,从设备输入 SDI 为主设备输入,从设备输出

SCK 为上升沿触发的时钟信号线,由主

设备控制;

CS 为片选段,低电平有效,由主设备控制。

对于本设计课题,单片机为主设备,E 2PROM 为从设备,所以,SCK 由单片机发出,X2425上的SI ,SO 分别为从设备输入和输出,即单片机的串行输出和输入通道。

模块,键盘扫描模块,键盘识别模块,模式转换模块均为同步的模块(从宏观上讲,各个模块是同步执行的,从微观上讲,是各个模块之间通过一定的标志变量顺序执行的),而初始化模块,子程序调用模块为调用与被调用的模块,无需考虑它与其他模块之间的同步关系。

现在介绍本次设计的各相互同步模块之间的调度关系。定时器模块为本设计最为独立模块主要又定时器0和定时器1构成:定时器0工作在方式1,为50ms的定时器,中断服务程序中软计数为键盘扫描模块、计时器运算模块的执行标志变量置位。键盘扫描的执行可以是随机顺序执行或者时间片轮转方式执行,但是通过分析可以明确,随机顺序方法容易出现扫描失误。所以采用中断方式的时间片轮转法调度键盘扫描模块,实践证明30ms的周期扫描键盘调度较为合适,但是考虑到计时器的计数触发基本单元是依靠定时器0得到1s的脉冲,而定时器0为50ms的定时间隔,所以利用定时器0产生的每50ms的中断信号,进行为键盘扫描模块的执行标志变量置位。

键盘扫描执行完毕后,进行键位判断,对于模式键的识别时,要调用模式变换模块。

图7软件原理框图

(2)主要的功能模块设计说明

Ⅰ.应用的主要C语言关键字

A.位域的使用

设计中会用到很多标志变量,状态控制变量,如果单单利用CHAR型变量,会有0~255的个状态,会浪费很多存储器容量;所以这里使用位域,可以对一字节的

某一位或者几位来操作,可以节省很多空间,利用一字节就可以设计出很多标志变

量;然而对于状态变量,对状态变量会进行加减操作,往往还要判断是否溢出,而

使用几位的位域变量来说,他的状态只在那几位所允许的状态,如3位,状态为

0~7。

位域的声明方法:

Struct 位域结构名

{

类型说明符位域名:位域长度;

……;

……;

}

B.将数组声明成code类型的数据

(Const)数据类型名code 变量名[]={…,…,…,…,…,…}

这样做可以节省较少的RAM空间,利用较大的ROM空间。

Ⅱ.初始化模块

A.定时器模块初始化:

定时器0和定时器1的初始化:定时器0工作在方式1,初值为#3CB0,定时时间为50ms;定时器1工作方式1,初值为#FB1E,定时时间为1.25ms,产生400hz的脉冲。

B.液晶显示器驱动模块

显示模式初始化,数据总线初始化,光标显示初始化,当输入数据时,光标和显示右移。

C.标志变量初始化,系统变量初始化,状态变量初始化。

Ⅲ.定时器模块

键盘执行标志变量置位,计时器执行计数标志变量置位,闹钟检测模块执行标志变量置位

Ⅳ.液晶显示模块

反复对LcdStr字符数组进行扫描显示

Ⅴ.键盘扫描模块

利用线反转法进行扫描,调用keyscan()子程序。

Ⅵ.计时器模块

主要包括闹表检测,闹表输出系统,冒号闪烁,闰年检测和月份检测,时间运算及时间显示。另外还有加减校时系统,当本系统工作模式0时,可进行加减校时,并可以进行转换,进而加减校分。

Ⅶ.键位识别模块

当检测到有键按下时,读取返回键的编码,利用Switch语句进行分支判断,利用各个键的索引进行判断,分别调用不同的模块。

Ⅷ.模式变换模块

模式共有四个模式分别为模式0、模式1、模式2、模式3;

模式0:计时器模块,显示万年历功能,精确到秒,可以显示年月日,并可以进行加减校时,并可以像真正的电子时钟一样,“:”一闪一闪的显示,以体现秒的计时。模式1:闹表预置数定义,可以逐个置数,若置数值为非法值则显示错误信息,按确定键返回,继续输入当前的闹表预置数;在预置数时,可以按“+/-”来设置当前设置的闹钟索引。

模式2:可以直接定义当前的时间,只能定义时分秒,同样具有非法值检测,可以重新输入,输入正确后可以继续设置新值,或者转换到其他模式。

模式3:显示已设置闹表的时刻值,同样利用“+/-”可以进行显示当前闹表时刻值的索引,进行加减变化

对于这些模块中的可以输入的模块,可以利用“=”进行将已输入的值清空。

常用的调用子程序模块

常用的子程序有:延时子程序,键盘扫描子程序,清屏子程序,字符串复制子程序,显示子程序。

(3)程序流程图

执行

执行

图8软件控制程序流程图

四、系统总体功能实现

具体功能:

在开机时刻,欢迎界面滚动显示“welcome”,按“on/c”进入正常模式。

数字输入功能:在模式1,模式2可以进行手动输入时刻值。

模式切换模式:按“除”号进行切换模式加减校时、校分的功能,并可以正常溢出返回初值。利用“*”进行时分切换校准。

在闹表设置和显示的模式中,可以利用“+”,“-”进行选择设置闹表预置数的索引。

键盘各键位的功能

五、程序清单

/*电子时钟设计实验(fosc=6MHZ)*/

#include "reg51.h"

//extern char *strcpy (char *s1, char *s2);

sbit P3_0=P3^0;

sbit RS=P3^3; /* 寄存器选择信号*/

sbit RW=P3^4; /* 读/写控制信号 */

sbit E =P3^5; /* 使能信号 */

sbit CON=P3^6;

sbit CLK=P3^7;

sbit Acc_b=ACC^7;/* 定义累加器的第七位*/

sbit P0_0=P0^0;

sbit sign=PSW^5;

unsigned char key_value;

struct fg

{

unsigned tim:1;//秒增一允许标志位

unsigned dip:1;//欢迎界面标志位

unsigned key:1;//有键按下标志位

unsigned key1:1;//键盘扫描调度时钟标志位

unsigned mode:2;//状态模式控制

unsigned error:1;//写数据超出范围错误标志位

unsigned smart:1;//闹表信号翻转标志位

}flag;

struct ffg

{

unsigned f1:1;//

unsigned clk:1;//

unsigned dm:1;//校时较分标志位

unsigned clock:3;//设置闹表时间索引

unsigned fclk:1;//

unsigned f:1;//

}ffg,ffg1;

struct year

{

unsigned ren:1;

unsigned even:1;

unsigned er:1;

unsigned odd:1;

unsigned fff:4;

}y;

unsigned char time,n,nn,sec,min,hour ,day, month ,cmin[8]={0},chour[8]={0}; unsigned int year;

const char code dday[]={32,31,30,29};

const char code error[]="pleaseinputagain";

const char code clock[]="CLOCK:[ ]";

const char code time1[]="settime:";

const char code curclk[]="CURCLOCK:[ ]";

unsigned int code tab[]={0xD7,0xEb,0xDB,0xBB,0x0ED,0x0DD,0x0bd,0x0EE,

0x0DE,0x0BE,0x077,0x0E7,0x0B7,0x07B,0x07D,0x07E}; /*键码表*/

unsigned char code lt[]={0x7f,0x0bf,0x0df,0x0ef}; /*行扫描码*/

unsigned char code digit[]={0xc0,0xf9,0xa4,0xb0};

void delay(unsigned char n)

{

unsigned char i,j;

while(n--)

{

for(i=0;i<9;i++)

for(j=0;j<11;j++)

;

}

}

void strcpy(char *p1,char *p2)

{

while(*p2!='\0')

{

*(p1++)=*p2;

p2++;

}

*p1='\0';

}

void Print(void) /*写指令子程序 */ {

unsigned char j;

RW=0; /*RW=0,写指令*/

E=1;

E=0;

for(j=0;j++<100;); /* 延时 */

return;

}

void clear(char * p)

{

char * pstr;

pstr=p;

while(*pstr!='\0')

{

*(pstr++)=' ';

}

pstr=p;

}

void _clo_ck() interrupt 3

{

//ffg.clk=~ffg.clk;

CLK=~CLK;

TH1=0xFB;

TL1=0x1E;

return;

}

void timeint() interrupt 1 using 3 /*定时器0 中断程序,使用第3组寄存器*/ {

time--; /*循环次数减1*/

n-- ;

flag.key1=1;

if(time==0) /*若循环值为0,则对P1.0取反*/

{ // ci bu wei fu zhu gong neng bu shi bi xu de

time=20;/*恢复循环初值*/

flag.tim = 1;

}

if(n==0)

{

n=10;

flag.smart=1;

sign=~sign;

}

TH0=0x3c; /*恢复计数初值*/

TL0=0x0b0;

return; /*中断返回*/

}

char scankey(void)

{

unsigned int i,a,b,y;

P2=0x0f; /*行线输出低电平,并判断是否有键按下*/

i=0; /*行计数器清零*/

b=lt[i];

for(i;i<4;i++) /*取行扫描码*/

{ b=lt[i];

P2=b; /*送行扫描码到P2口*/

a=P2; /*读入列值*/

a=a&0x0f; /*保留低4位*/

if(a!=0x0f)

break;

}

if(i<=3)

{ /*循环到该列有键按下为止*/

b=b&0x0f0; /*取行扫描码的高4位*/

b=b|a; /*合并成为按键的扫描码*/

i=0; /*计数器清零*/

for(; b!=tab[i]; i++); /*在键值表中查找相应的键值*/

for(y=0; y<2000; y++); /*延时,去抖动*/

key_value = i;

for(P2=0x0f; P2!=0x0f;); /*判断按键是否结束*/

for(y=0; y<2000; y++); /*延时*/

flag.key = 1;

}

return(key_value);

}

display(unsigned char temp)

{

unsigned k;

for(k=0;k++<100;);

RS=1; /*送出一个字母*/

RW=0;

E=1;

P1=temp;

for(k=0;k++<100;); /* 延时 */

E=0;

}

lcd_init(void)

{

unsigned char i,j;

RS=0; /*向LCD写入3条30H?使之复位 */ RW=0;

P1=0x30;

for(i=3;i>0;i--)

{E=1;

E=0;

for(j=0;j++<100;); /* 延时 */

}

P1=0x38; /* 设置8位数据总线方式 */

print();

P1=1; /* 清屏指令01H */

Print(); /* 调向LCD写指令子程序*/

P1=6; /* 设置输入方式:AC加1计数,光标右移1个字符 */ Print(); /* 设置显示方式:开显示,光标显示;闪烁*/

P1=0x0c;

Print();

E=1;

E=0;

//j=0; /*显示计数器*/

RS=0;

RW=0;

P1=1; /* 设置8位数据总线方式 */

print();

E=1;

E=0;

}

void init(void)

{

P0=0xc0;

n=10;

nn=12;

flag.tim = 0;

ffg.f1=1;

ffg.clock=0;

}

time_init(void)

{

TMOD=0x11; /*设置计数器 0 工作方式1*/

TH0=0x3c; /*送计数器初值*/

TL0=0x0b0;

TH1=0xFB;

TL1=0x1E;

ET1=1;

TR1=1;

EA=1; /*开中断*/

ET0=1;

TR0=1;

time=20; /*设置循环次数初值*/

// TR0=1; /*开始计时*/

}

main() /*主程序*/

{

unsigned char i,j,k,m,p=0,vp;

char LcdStr[16]={" welcome "}; /* 定义数组并初始化*/ char *pstr=LcdStr;

m=10;

lcd_init();

init();

time_init();

j=0; /*显示计数器*/

CON = 0;

for(i=0;i<16;i++) /*显示字母*/

{

// busy(); /*判忙*/

RS=1; /*送出一个字母*/

RW=0;

E=1;

P1=LcdStr[i];

for(k=0;k++<100;); /* 延时 */

E=0;

j++; /*显示计数器加1*/

// if(j==8) /* 不到显示位置9跳转*/

// {

// for(k=0;k++<100;);

// RS=0;

// P1=0x0c0; /* 设置地址40H至AC,调整显示位置为9*/ // Print();

// }

}

day=31;

month=12;

year=2009;

hour = 23;

min =57;

sec = 50;

while(1)

{

if(flag.smart==1)

{

flag.smart=0;

P3_0=~P3_0;

ffg.f=~ffg.f;

CON=~CON;

for(i=0;i<8;i++)

{

if(hour==chour[i]&&min==cmin[i])

break;

}

if(i<8)

{

if(sign==0)

{

P0=digit[flag.mode];

}

else

P0=0xff;

}

else

{

P3_0=0;

CON=0;

P0=digit[flag.mode];

}

}

if(flag.tim==1)

{

flag.tim = 0;

sec = sec+1;

sign=~sign;

if(year%4==0&&year%100!=0||year%400==0)

y.ren=1;

else

y.ren=0;

if(month==1||month==3||month==5||month==7||month==9||month==10||month==12) {

y.even=1;

y.odd=0;

y.er=0;

}

else if(month!=2)

{

y.even=0;

y.odd=1;

y.er=0;

}

else

{

y.even=0;

y.odd=0;

y.er=1;

}

if(sec>=60)

{

sec =0;

min = min+1;

if(min>=60)

{

min = 0;

hour = hour+1;

if(hour>=24)

{

hour = 0;

day++;

if(y.ren==0)

{

if(day>=(dday[0]*y.even+dday[1]*y.odd+dday[3]*y.er))

{

day=1;

month++;

if(month>=13)

{

month=1;

year++;

}

}

}

else

{

if(day>=(dday[0]*y.even+dday[1]*y.odd+dday[2]*y.er))

{

day=1;

month++;

if(month>=13)

{

month=1;

year++;

}

}

}

}

}

}

if(flag.mode==0&&flag.dip==1)//flag.dip控制欢迎界面的切换,一次性切换

{

LcdStr[0] = year/1000+'0';

LcdStr[1] = year%1000/100+'0';

LcdStr[2] = year%1000%100/10+'0';

LcdStr[3] = year%1000%100%10+'0';

LcdStr[4] = month/10+'0';

LcdStr[5] = month%10+'0';

LcdStr[6] = day/10+'0';

LcdStr[7] = day%10+'0';

LcdStr[8] = hour/10+'0';

LcdStr[9] = hour%10+'0';

LcdStr[11] =min/10+'0';

LcdStr[12] = min%10+'0';

if(sign==0)

{

LcdStr[10] = ':';

LcdStr[13] = ':';

}

else

{

LcdStr[10] = ' ';

LcdStr[13] = ' ';

}

LcdStr[14] = sec/10+'0';

LcdStr[15] = sec%10+'0';

}

}

for(i=0;i<16;i++)

{

display(LcdStr[i]);

}

if(flag.dip==0) //实现在欢迎模式下,循环显示 "welcome" {

p++;

if(p==8)

p=0;

P1=0x07;

Print();

E=1;

E=0;

delay(10);

}

if(flag.key1==1)

{

flag.key1=0;

scankey();

if(flag.key==1)

{

flag.key=0;

switch(key_value)

{

case 0: ;

case 1: ;

case 2: ;

case 3: ;

case 4: ;

case 5: ;

case 6: ;

case 7: ;

case 8: ;

case 9:

if(flag.mode==1&&flag.error==0)

{LcdStr[nn]=key_value+'0';

nn++;

if(nn>=16)

nn=12;

}

else if(flag.mode==2&&flag.error==0)

{

LcdStr[m] = key_value+'0';

m++;

if(m>=16)

m = 10;

}

break;

case 10://+

if(flag.mode==0)

if(ffg.dm==0)

{

hour++;

if(hour>=24)

hour=0;

}

else

{

min++;

if(min>=60)

{

min=0;

hour++;

if(hour==24)

hour=0;

}

}

else if(flag.mode==1)

{

LcdStr[12]=' ';

LcdStr[13]=' ';

LcdStr[14]=' ';

LcdStr[15]=' ';

strcpy(LcdStr,clock);

ffg.clock++;

LcdStr[7]=ffg.clock+'0';

}

else if(flag.mode==3)

{

ffg1.clock++;

LcdStr[10]=ffg1.clock+'0';

LcdStr[12]=chour[ffg1.clock]/10+'0';

LcdStr[13]=chour[ffg1.clock]%10+'0';

LcdStr[14]=cmin[ffg1.clock]/10+'0';

LcdStr[15]=cmin[ffg1.clock]%10+'0';

}

break;

case 11 ://on

if(flag.dip==0)

{

vp=8-p;

while(vp--)

{

P1=0x07;

Print();

E=1;

E=0;

}

p=0;

}

flag.dip=1;

/*if(flag.dip==1)

{

P1=0x0c;

Print();

基于51单片机实现的简单闹钟设计

【摘要】众所周知闹钟对我们日常生活来讲是一个很重要的工具,因而我利用单片机AT89C52制作一个简单的倒计时定时闹钟。本设计利用单片机的内部中断资源和按键的基本使用方法构思而成。利用按键设定需要定时的时间长短,利用中断设置20次中断定义一秒,然后利用程序设计时间倒数。并使用4个8段数码管显示分和秒,并且定时结束后使用电铃警示。硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情况。 【关键字】 单片机AT89C51 倒计时定时中断 protues仿真 一、设计项目简介 基于51单片机进行简单闹钟设计。四位数码管从左往右分别代表十分位,分位,十秒位,秒位。按动对应按键能增加各个位的数值,按动开始计时按键能开始倒计时。 二、硬件设计 1.总体设计思路 控制芯片使用比较熟悉的AT89C52单片机芯片,数码管使用四位相连的8段共阴数码管,并且使用74HC573锁存器控制数码管的显示。在定时过程使用s1控制十分位,s2控制分位,s3控制十秒位,s4控

制秒位,s5开始倒计时。 基本思路设计如下: 2. AT89C52芯片介绍 80C52是INTEL 公司MCS-51系列单 片机中基本的产品,它采用INTEL 公司可靠的CHMOS 工艺技术制造的 高性能8 位单片机,属于标准的MCS-51的HCMOS 产品。它结合了HMOS 的高速和高密度技术及CHMOS 的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。 80C52内置8位中央处理单元、256字节内部数据存储器RAM 、8k 片内程序存储器(ROM )32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡

基于51单片机的数字钟

专业课程设计报告 专业班级 课程 题目基于51单片机的数字钟的设计报告学号 学生姓名 指导教师 成绩 2013年6月20日

基于A T89C51的数字钟总体设计说明书 目录 1. 51单片机设计数字钟设计的现实意义 (2) 2. 总体设计 (2) 2.1.开发与运行环境 (2) 2.2.硬件功能描述 (2) 2.3.硬件结构 (3) 3. 硬件模块设计 (3) 3.1.描述 (3) 3.1.1. AT89C51单片机简介 (3) 3.1.2. 键盘电路的设计 (4) 3.1.3. 显示器的选择 (5) 3.1.4. 蜂鸣器驱动电路 (5) 3.1.5. 各部分功能 (6) 4. 嵌入式软件设计 (7) 4.1.流程逻辑 (7) 4.2.算法 (7) 4.2.1. 中断定时器的设置 (27) 4.2.2. 闹钟子函数 (28) 4.2.3. 计时函数 (29) 4.2.4. 键盘扫描函数 (31) 4.2.5. 时间和闹钟的设置 (32) 5. 实验器材清单 (33) 6. 测试与性能分析 (33) 6.1.测试结果 (33) 6.2.优点 (33) 6.3.结论 (34) 7. 心得体会 (36) 8. 致谢 (36) 9. 参考文献 (37)

1.51单片机设计数字钟设计的现实意义 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 2.总体设计 2.1.开发与运行环境 在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 2.2.硬件功能描述 硬件部分设置了的三个按键S1、S2、S3、S4。当按键S1第一次按下时,停止计时进

基于ATC单片机定时闹钟设计

塔里木大学信息工程学院 《单片机原理与外围电路》课程论文 题目:单片机定时闹钟设计 姓名:海热古丽·依马木 学号: 15 班级:计算机15-1班

摘要:本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功能,即还能设定和修改当前所显示的时间。?本次设计的定时闹钟在硬件方面就采用了AT89C51芯片,用6位LED数码管来进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过S1、S2、S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发出报警声。在软件方面采用汇编语言编程。整个定时闹钟系统能完成时间的显示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。 关键词:单片机、AT89C51、定时闹钟、仿真? Abstract:T his design is a single-chip timing alarm system, can not only realize the function of system requirements, and there are additional functions, which can set up and modify the display time. Timing alarm clock this design adopts the AT89C51 chip on the hardware side, with 6 LED digital tube to display. LED P0 export driven, by using dynamic scanning display, can accurately display always - sub - seconds seconds. Through the S1, S2, S3, and S4 four function keys can be achieved on the time changes and timing, timing to the horn can send out alarm sound. Using assembly language programming in the software. The timing clock system has functions of time display, timing and timing alarm clock, reset and other functions, and the system simulation to obtain correct results. Keywords: single chip microcomputer, AT89C51, alarm clock,

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

基于单片机的数字钟设计-(1)

基于单片机的数字时钟摘要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。 关键词:数字钟,单片机,数码管

Abstract Author:cheng dong Tutor:wang xin Electronic technology has been developed rapidly in the 20 century,with its modern electronic products, pushed by almost permeated every area of society has vigorously promoted social productive forces development and improvement of social informatization level, also make modern electronic product performance further improved, and the rhythm of upgrade its products is becoming more and more quickly. The most common SCM module is a digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds, the timing device with mechanical clock compared with higher accuracy and intuitive and no mechanical device, has more longer service life, so it has been widely used. This topic research is the digital clock design based on SCM, AT89C51 SCM as the main control chip system, external LED display circuit, key circuits, crystals circuit, reset circuit module constitute a simple digital clock. Through the key circuits can respectively the diffculties, minutes and seconds setting and real-time adjustment, and the result showed that in the digital tube. Key words:digital clock SCM ; digital

基于单片机的定时闹钟课程设计报告书

任务书 一、设计目的 本设计主要是对51单片机的一个方面的扩展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,经过多次验证,此设计灵活简便,可以实现显示、定时、修改定时、定时时间到能发出报警声的功能。 二、设计要求 1、能显示时时—分分—秒秒。 2、能够设定定时时间,并修改定时时间。 3、定时时间到能发出警报声。

目录 1.绪论 (1) 2.方案论证 (1) 3.方案说明 (2) 4.硬件方案设计 (2) 4.1单片机STC89C52 (2) 4.2 时钟电路 (4) 4.3数码管显示电路 (4) 4.4键盘电路 (6) 4.5报警电路 (7) 5.软件方案设计 (7) 5.1系统软件设计 (7) 5.2键盘程序 (7) 5.3 LED (8) 5.4音响报警电路 (8) 5.5 程序流程图 (8) 6.调试 (9) 7.小结 (10) 8.参考文献 (11) 9.附录:定时闹钟源程序 (12)

1.绪论 系统采用单片机STC89C52作为本设计的核心元件,在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示器。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。 外围器件有LED显示驱动器及相应的显示数字电子钟设计与制作可采用单片机来完成。由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机STC89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB的Flash 存储器,且允许在系统内改写或用编程器编程。另外, STC89C52的指令系统和引脚与8051完全兼容,片内有512B的RAM、32条I/O口线、3个16位定时计数器、4个外部中断、一个7向量4级中断结构(兼容传统51的5向量2级中断结构)等。 在LED显示器中,分成静态显示和动态显示两类,在这个设计的最小系统中主要用了它的动态显示功能,动态显示器利用了人视觉的短暂停留,在数据的传输中是一个一个传输的,且先传输低位。 2.方案论证 单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。 本系统采用单片机STC89C52作为本设计的核心元件,利用两个4位7段共阴LED作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,蜂鸣器发出报警声,提示预先设定时间到。 电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示、报警电路,芯片选用STC89C52单片机。 系统基本框图如图2.1所示:

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

基于51单片机的数字钟设计

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。

1 引言 (3) 2 单片机介绍 (4) 3 数字钟硬件设计 (4) 3.1系统方案的确定 (4) 3.2功能分析 (4) 3.3数字钟设计原理 (5) 3.3.1键盘控制电路 (5) 3.3.2晶振电路 (6) 3.3.3复位电路 (7) 3.3.4数码显示电路 (7) 4.数字钟的软件设计 (8) 4.1程序设计内容 (8) 4.2源程序 (9)

1 引言 在单片机技术日趋成熟的今天,其灵活的硬件电路和软件电路的设计,让单片机得到广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。单片机小的系统结构几乎是所有具有可编程硬件的一个缩影,可谓是“麻雀虽小,肝胆俱全”,单片机的学习和研究是对微机系统学习和研究的简捷途径。基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子[1],用数字电路实现对时、分、秒数字显示的计时装置。因为机具有体积小、功耗低、功能强、性价比高、易于推广应用的优点,在自动化装置、智能仪器表、过程控制、通信、家用电器等许多领域得到日益广泛的应用[2],因此具有很大的研究价值。

基于51单片机电子闹钟的设计(1)

单片机原理与接口技术课程设计题目:多功能电子闹钟 院系:电气与电子工程系 专业:电气工程及其自动化 班级:电气工程1503 姓名: 学号: 指导教师: 二零一七年十二月

多功能电子闹钟 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示,使用74LS245芯片进行驱动。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil 单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:单片机定时器中断闹钟 LED

目录 第1章方案的选择和论证 (1) 1.1单片机型号的选择 (1) 1.2按键的选择 (1) 1.3显示器的选择 (1) 1.4计时部分的选择 (1) 1.5发音部分的设计 (2) 1.6显示器驱动电路 (2) 1.7电源的选择 (2) 第2章数字电子钟的设计原理和方法 (3) 2.1设计原理 (3) 2.2硬件电路的设计 (3) 2.2.1 AT89C51单片机简介 (3) 2.2.2 键盘电路的设计 (3) 2.2.3 段码驱动电路 (4) 2.2.4 蜂鸣器驱动电路 (4) 2.3软件部分的设计 (5) 2.3.1 主程序部分的设计 (5) 2.3.2 中断定时器的设置 (5) 2.3.3 闹钟子函数 (6) 2.3.4 计时函数 (6) 2.3.5 键盘扫描函数 (8) 2.3.6 时间和闹钟的设置 (8) 第3章实验结果 (10) 总结 (11) 致谢 (12) 参考文献 (13) 附录 (14)

定时闹钟设计课程设计报告

定时闹钟设计 摘要: 本设计目的是利用单片机设计制作一个简易的定时闹铃时钟,可以放在宿舍或教室使用,在夜晚或黑暗的场合也可以使用。可以设置现在的时间以及闹铃的时间并且显示出来,若时间到则发出一阵声响。 本次设计的定时闹钟在硬件方面就采用了AT89C52芯片,用6位LED数码管进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过五个功能按键可以实现对时间的修改、定时和闹铃终止,闹钟设置的时间到时蜂鸣器可以发出声响。在软件方面用C51编程。整个定时闹钟系统能完成时间的显示,调时和设置闹钟、停止响铃等功能,并经过系统仿真后得到了正确的结果。 关键词:定时闹钟;蜂鸣器;AT89C52;74HC245;

目录

第1章绪论 设计目的 本次课程设计的主题是定时闹钟,其基础部分是一个数字钟。电路系统由秒信号发生器、“时、分、秒”计数器、显示器组成。其中秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,这里用51单片机的定时器来实现。利用定时器获得每一秒的时刻,然后在程序中,我们就可以给秒进行逐秒赋值,满60秒则进位为1分,满60分则进位为1小时,满24小时则时间重置实现一天24小时的循环。译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过一个六位八段数码管显示出来。 这里利用51单片机的相关知识,来实现电子闹钟的相关功能。实验使用了 AT89C52、74HC245等芯片,通过单片机的P0、P3管脚来驱动数码管显示出相应的时刻。本文将讲述AT89C52、74HC245等芯片的基本功能原理,并重点介绍该电子闹钟的设计。 设计要求和任务 使用6位七段LED显示器来显示现在的时间;显示格式为“时时分分秒秒”;具有4个按键来做功能设置,可以设置现在的时间及显示闹铃设置时间;时间到则发出一阵声响,可通过按键复位;对单片机系统设计的过程进行总结,认真书写课程设计报告并按时上交。 利用51单片机结合七段LED显示器设计一个简易的定时闹铃时钟,可以放在宿舍或教室使用,由于用七段LED显示器显示数据,在夜晚或黑暗的场合也可以使用。可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响。 论文主要内容 论文分别叙述从硬件和软件上实现该设计的过程。第2章为总体设计方案。第3章主要介绍设计实现需要解决的硬件问题。依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明。第4章从软件的角度说明实现该设计需要解决的问题。

#基于单片机AT89C51的电子时钟的课程设计

苏州市职业大学 课程设计任务书课程名称:单片机原理和使用课程设计 起讫时间:2011年6月22日----6月28日 院系:电子信息工程系 班级:09电子3班 指导教师:金小华 系主任:张红兵 一、课程设计课题 基于单片机的电子时钟的设计

1.掌握使用proteus软件的方法。 2.理解单片机的时钟显示方法。 3.明确设计指标,写出设计方案,设计出硬件原理图。 4.基于硬件的软件设计和调试。 5.将结果向指导教师演示,由教师提问验收通过; 6.打印程序清单,撰写程序说明,完成课程设计报告书,进行分组讨论 设计心得。

1.第一天:明确课程设计任务和目标,熟悉单片机系统调试软件仿真实 现。 2.第二天:明确设计指标,设计电路原理图。 3.第三、四天:基于硬件的软件设计和调试。 4.第五天:学生演示设计调试结果,教师提问验收。打印程序清单,撰 写程序说明,完成课程设计报告书。 四、课程设计说明书内容(有指导书的可省略) 1,单片机结构、原理。 2,电子时钟硬件设计(原理图,原理图分析)。 3,软件设计(软件简介,调试过程)。 4,硬件、软件程序清单。

苏州市职业大学课程设计说明书 名称基于单片机的电子时钟的设计 2011年6月22日至2011年6月28日共一周院系电子信息工程系 班级09电子3班 姓名于宁 学号097302340 系主任张红兵 教研室主任陆春妹 指导教师金小华

目录 第一章电子时钟 (1) 1.1电子时钟简介 (1) 1.2电子时钟的基本特点 (1) 1.3电子时钟的原理 (1) 第二章单片机识的相关知识 (2) 2.1单片机简介 (2) 2.2单片机的发展史 (2) 2.3单片机的特点 (3) 2.489C51单片机介绍 (3) 第三章控制系统的硬件设计 (6) 3.1单片机型号的选择 (6) 3.2数码管显示工作原理 (6) 3.3键盘电路设计 (7) 3.4系统工作原理 (7) 3.5整个电路原理图 (9) 第四章控制系统的软件设计 (10) 4.1程序设计 (10) 4.2程序流程图 (13) 4.3伟福硬件仿真器简介 (14) 4.4仿真图及结果分析 (15) 第五章附录程序 (17) 第六章结束语 (19) 参考文献 (20)

基于51单片机的数字时钟的设计

基于51单片机的数字时钟的设计 摘要:现代生活中,对于数字电子钟的使用情况已经远远大于对于机械表的使用。数字时钟不仅仅是使用方便,而且由于单片机的引入,额外增加了自动控制和闹钟报时等功能,十分便利。本次毕业设计,是以STC89C52芯片为核心,添加适当外围电路,辅以C语言,所形成的数字电子钟。除了51单片机芯片,还主要用到了时钟芯片DS1302和型号是1602的液晶显示屏。 关键词:STC89C52;数字电子钟;C语言。

Design of Digital Clock System Based on MSC-51 Singlechip Abstract: In modern life, the use of digital electronic clock has been far greater than for the use of mechanical watches. Digital Clock is not just easy to use, and because of the introduction of single-chip, additional automatic control and alarm clock timekeeping functions, is very convenient. The graduation project is based STC89C52 chip as the core, adding the appropriate external circuit, supplemented by the C language, the formation of digital electronic clock. In addition to 51 single-chip, is also largely used in the clock chip DS1302 and models are 1602 LCD display. Keywords: STC89C52; digital electronic clock; C language.

智能定时闹钟 毕业设计

毕业论文(设计) 智能定时闹钟 -----温度、定时硬件设计 院系:工程学院年级专业:电气工程及其自动化0801 提交日期:答辩日期: 答辩委员会主席(签名): 评阅人(签名): 年月日

摘要 随着科技的快速发展和生活水平的不断提高,人们对时钟的精确度和实用性要求越来越高。本文采用宏晶单片机STC10F08XE,通过DS1302时钟芯片进行定时,并通过LCD 1602字符液晶显示器显示。采用C语言程序编写,将设计出更准确定时、更省电的数字时钟。单片机数字时钟具有设置时间、日期、星期的基本功能,并且能够显示年、月、日、时、分、秒、星期,温度。单片机数字钟不管在性能还是在样式上都发生了质的变化,实践证明单片机数字时钟具有更加准确性、精密性等功能。本设计是定时闹钟的设计,由单片机 AT89C51 芯片和宏晶单片机STC10F08XE为核心,辅以必要的电路,构成的一个单片机智能定时闹钟。用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用 AT89C51,它是低功耗、高性能的 CMOS 型 8 位单片机。 关键字:数字时钟;DS1302;LCD1602;STC10F08XE

Abstract In daily life, time is science, technology and everyday life is one of the most basic physics, we often deal with temporal clocks, such as hand watch, wall clock, even on a computer program, the clock on the phone can be generalized a clock display on the clock, along with the rapid development of technology and the continuous improvement of living standards, people on the clock's accuracy and practical demand is higher and higher. Based on the single chip microcomputer principle, USES the monolithic integrated circuit STC10F08XE series, through the hardware circuit and software production procedure formulation, will design a more accurate timing, electricity -saving digital clock, SCM in performance or digital clock no matter in style have undergone a qualitative change, digital clock has proved microcontroller more accuracy, precision sex etc. Function. This design is the design of timing alarm clock, the single chip microcomputer AT89C51 single chip microcomputer chip and macro crystal STC10F08XE as the core, with the necessary auxiliary circuit, constitute a single chip microcomputer intelligent timing of alarm clock . By single chip design system to be completed, because its main through the realization of the function of software programming to complete, then reduce the complexity of the hardware circuit, and the cost is reduced, so in this design using AT89C51 single-chip, it is low power, high-performance CMOS type eight microcontroller. Key Words:Digital clock ; DS1302; LCD1602;STC10F08XE

【精品完整版】基于51单片机的数字电子钟设计

本科毕业论文(设计) 题目基于51单片机的数字电子钟设计 院(系)电子工程与电气自动化学院 专业电气工程及其自动化 学生姓名 学号 10028116 指导教师王静洪作奎职称硕士讲师 论文字数 9682 完成日期:2014年5月20日

巢湖学院本科毕业论文(设计)诚信承诺书 本人郑重声明:所呈交的本科毕业论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 本人签名:日期: 巢湖学院本科毕业论文 (设计)使用授权说明 本人完全了解巢湖学院有关收集、保留和使用毕业论文 (设计)的规定,即:本科生在校期间进行毕业论文(设计)工作的知识产权单位属巢湖学院。学校根据需要,有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许毕业论文 (设计)被查阅和借阅;学校可以将毕业论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编毕业,并且本人电子文档和纸质论文的内容相一致。 保密的毕业论文(设计)在解密后遵守此规定。 本人签名:日期: 导师签名:日期:

巢湖学院2014届本科毕业论文(设计) 基于51单片机的数字电子钟设计 摘要 随着时代的发展,生活节奏的加快,人们的时间观念愈来愈强,同时伴随着自动化、智能化及微电子技术的发展,人们用于计时的工具也在不断的更新,单片机等技术的出现使得数字电子钟有了新的发展方向。基于此本设计以单片机STC89C52为控制核心,采用美国DALLAS公司生产的实时时钟芯片DS12C887和液晶芯片LCD1602,该设计具有电路设计简单,结构合理,能够精确显示时间、星期、日期等优点,并且能够实时更新显示。本设计同时具有闹铃设置功能以及到时报警功能,按键操作简单方便。更重要的是时钟芯片DS12C887具有误差小,内部自带锂电池使得断电时时间不停,再次上电后时间仍然能够准确显示在液晶上的特点。 关键词:单片机;电子钟;DS12C887;LCD1602

基于单片机的数字时钟之C51单片机

山东大学威海分校 基于单片机的数字时钟 C51单片机 王若愚 学号200800800307 2010/7/18

概述 AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 功能特性概述 AT89S51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。

AT89S51硬件电路原理 复位及振荡电路 复位电路由按键复位和上电复位两部分组成,如图2所示。AT89S系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC 充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为8.2K和10uF。 按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。 MCS51 LITE使用22.1184MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路, 所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

定时闹钟课程设计

扬州大学水利与能源动力工程学院课程设计报告 题目:定时闹钟 课程:单片机原理及应用课程设计 专业:电气工程及其自动化 班级:电气1201 姓名:陈明飞 学号:121704102

第一部分 任 务 书

《单片机原理及应用》课程设计任务书 一、课题名称 详见《单片机课程设计题目(一)》:主要是软件仿真,利用Proteus软件进行仿真设计并调试; 《单片机课程设计题目(二)》:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。 二、课程设计目的 课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。 《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。 三、课程设计内容 设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。 1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。 2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。 3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。 4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。 四、课程设计要求 详见《单片机课程设计题目(一)》 《单片机课程设计题目(二)》 五、进度安排

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

相关文档
相关文档 最新文档