当前位置:文档之家› 数字定时闹钟程序

数字定时闹钟程序

数字定时闹钟程序
数字定时闹钟程序

数字定时闹钟程序

#include

#include

unsigned char code dis_week[]={"SUN,MON,TUE,WED,THU,FRI,SAT"}; unsigned char code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5}; //星期月参变数

unsigned char data dis_buf1[16]; //lcd上排显示缓冲区

unsigned char data dis_buf2[16]; //lcd下排显示缓冲区

unsigned char data year,month,date,week;//年、月、日、星期

unsigned char data armhour,armmin,armsec;//闹钟时、分、秒

unsigned char data hour,min,sec,sec100; //时、分、秒、百分之一秒unsigned char data flag,vkey,skey;//设置状态计数标志、按键先前值、按键当前值

bit alarm; //标识是否启用闹钟,1--启用,0--关闭

sbit rs = P2^0; //LCD数据/命令选择端(H/L)

sbit rw = P2^1; //LCD读/写选择端(H/L)

sbit ep = P2^2; //LCD使能控制

sbit PRE = P3^4; //调整键(k3)

sbit SET = P3^5; //调整键(k4)

sbit SPK = P3^7;

void delayms(unsigned char ms); //延时程序

bit lcd_busy(); //测试LCD忙碌状态程序

void lcd_wcmd(char cmd); //写入指令到LCD程序

void lcd_wdat(char dat); //写入数据到LCD程序

void lcd_pos(char pos); //LCD数据指针位置程序

void lcd_init(); //LCD初始化设定程序

void pro_timedate(); //时间日期处理程序

void pro_display(); //显示处理程序

void pro_key(); //按键处理程序

void time_alarm(); //定时报警功能(闹钟)

unsigned char scan_key(); //按键扫描程序

unsigned char week_proc(); //星期自动计算与显示函数

bit leap_year(); //判断是否为闰年

void lcd_sef_chr(); //LCD自定义字符程序

void update_disbuf(unsigned char t1,unsigned char t2[],unsigned char dis_h,unsigned char dis_m,unsigned char dis_s);

//更新显示缓冲区函数

// 延时程序

void delay(unsigned char ms)

{ while(ms--)

{ unsigned char i;

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

{

_nop_(); //执行一条_nop_()指令为一个机器周期

_nop_();

_nop_();

_nop_();

}

}

}

//测试LCD忙碌状态

bit lcd_busy()

{

bit result;

rs = 0;

rw = 1;

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

result =(bit)(P0&0x80); //LCD的D0--D7中,D7=1为忙碌,D7=0为空闲

ep = 0;

return result;

}

//写入指令到LCD

void lcd_wcmd(char cmd)

{

while(lcd_busy()); //当lcd_busy为1时,再次检测LCD忙碌状态,lcd-busy 为0时,开始写指令

rs = 0;

rw = 0;

ep = 0;

_nop_();

_nop_();

P0 = cmd;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 0;

}

//写入数据到LCD

void lcd_wdat(char dat)

{

while(lcd_busy()); //当lcd_busy为1时,再次检测LCD忙碌状态,lcd-busy 为0时,开始写数据

rs = 1;

rw = 0;

ep = 0;

P0 = dat;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 1;

_nop_();

_nop_();

_nop_();

_nop_();

ep = 0;

}

//LCD数据指针位置程序

void lcd_pos(char pos)

{

lcd_wcmd(pos|0x80); //数据指针=80+地址码(00H~27H,40H~67H)

}

//设定二个自定义字符,(注意:LCD1602中自定义字符的地址为0x00--0x07,即可定义8个字符)

//这里我们设定把一个自定义字符放在0x00位置(000),另一个放在0x01位子(001)

void lcd_sef_chr()

{ //第一个自定义字符

lcd_wcmd(0x40); //"01 000 000" 第1行地址 (D7D6为地址设定命令形式 D5D4D3为字符存放位置(0--7),D2D1D0为字符行地址(0--7))

lcd_wdat(0x1f); //"XXX 11111" 第1行数据(D7D6D5为XXX,表示为任意数(一般用000),D4D3D2D1D0为字符行数据(1-点亮,0-熄灭)

lcd_wcmd(0x41); //"01 000 001" 第2行地址

lcd_wdat(0x11); //"XXX 10001" 第2行数据

lcd_wcmd(0x42); //"01 000 010" 第3行地址

lcd_wdat(0x15); //"XXX 10101" 第3行数据

lcd_wcmd(0x43); //"01 000 011" 第4行地址

lcd_wdat(0x11); //"XXX 10001" 第4行数据

lcd_wcmd(0x44); //"01 000 100" 第5行地址

lcd_wdat(0x1f); //"XXX 11111" 第5行数据

lcd_wcmd(0x45); //"01 000 101" 第6行地址

lcd_wdat(0x0a); //"XXX 01010" 第6行数据

lcd_wcmd(0x46); //"01 000 110" 第7行地址

lcd_wdat(0x1f); //"XXX 11111" 第7行数据

lcd_wcmd(0x47); //"01 000 111" 第8行地址

lcd_wdat(0x00); //"XXX 00000" 第8行数据

//第二个自定义字符

lcd_wcmd(0x48); //"01 001 000" 第1行地址

lcd_wdat(0x01); //"XXX 00001" 第1行数据

lcd_wcmd(0x49); //"01 001 001" 第2行地址

lcd_wdat(0x1b); //"XXX 11011" 第2行数据

lcd_wcmd(0x4a); //"01 001 010" 第3行地址

lcd_wdat(0x1d); //"XXX 11101" 第3行数据

lcd_wcmd(0x4b); //"01 001 011" 第4行地址

lcd_wdat(0x19); //"XXX 11001" 第4行数据

lcd_wcmd(0x4c); //"01 001 100" 第5行地址

lcd_wdat(0x1d); //"XXX 11101" 第5行数据

lcd_wcmd(0x4d); //"01 001 101" 第6行地址

lcd_wdat(0x1b); //"XXX 11011" 第6行数据

lcd_wcmd(0x4e); //"01 001 110" 第7行地址

lcd_wdat(0x01); //"XXX 00001" 第7行数据

lcd_wcmd(0x4f); //"01 001 111" 第8行地址

lcd_wdat(0x00); //"XXX 00000" 第8行数据

}

//LCD初始化设定

void lcd_init()

{

lcd_wcmd(0x38); //设置LCD为16X2显示,5X7点阵,八位数据借口

delay(1);

lcd_wcmd(0x0c); //LCD开显示及光标设置(光标不闪烁,不显示"-")

delay(1);

lcd_wcmd(0x06); //LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)

delay(1);

lcd_wcmd(0x01); //清除LCD的显示内容

delay(1);

}

//闰年的计算

bit leap_year()

{

bit leap;

if((year%4==0&&year%100!=0)||year%400==0)//闰年的条件

leap=1;

else

leap=0;

return leap;

}

//星期的自动运算和处理

unsigned char week_proc()

{ unsigned char num_leap;

unsigned char c;

num_leap=year/4-year/100+year/400;//自00年起到year所经历的闰年数

if( leap_year()&& month<=2 ) //既是闰年且是1月和2月

c=5;

else

c=6;

week=(year+para_month[month]+date+num_leap+c)%7;//计算对应的星期

return week;

}

//更新显示缓冲区

void update_disbuf(unsigned char t1,unsigned char t2[],unsigned char dis_h,unsigned char dis_m,unsigned char dis_s)

{ dis_buf1[0]=t1; //

dis_buf1[1]=0x20; //空格

dis_buf1[2]=50; //'2'

dis_buf1[3]=48; //'0'

dis_buf1[4]=year/10+48;

dis_buf1[5]=year%10+48;

dis_buf1[6]=0x2d;

dis_buf1[7]=month/10+48;

dis_buf1[8]=month%10+48;

dis_buf1[9]=0x2d; //'-'

dis_buf1[10]=date/10+48;

dis_buf1[11]=date%10+48;

dis_buf1[12]=0x20;

dis_buf1[13]=dis_week[4*week];

dis_buf1[14]=dis_week[4*week+1];

dis_buf1[15]=dis_week[4*week+2];

dis_buf2[0]=t2[0];

dis_buf2[1]=t2[1];

dis_buf2[2]=t2[2];

dis_buf2[3]=t2[3];

dis_buf2[4]=t2[4];

dis_buf2[5]=t2[5];

dis_buf2[6]=0x20; //空格

if (alarm)

dis_buf2[7]=0x01; //alarm=1,显示闹钟启用标致(第二个自定义字符) else

dis_buf2[7]=0x20; //alarm=0,不显示闹钟启用标致

dis_buf2[8]=dis_h/10+48;

dis_buf2[9]=dis_h%10+48;

dis_buf2[10]=0x3a; //':'

dis_buf2[11]=dis_m/10+48;

dis_buf2[12]=dis_m%10+48;

dis_buf2[13]=0x3a;

dis_buf2[14]=dis_s/10+48;

dis_buf2[15]=dis_s%10+48;

}

//时间和日期处理程序

void pro_timedate()

{

sec++;

if(sec > 59)

{sec = 0;

min++;

if(min>59)

{min=0;

hour++;

if(hour>23)

{hour=0;

date++;

if

(month==1||month==3||month==5||month==7||month==8||month==10||month== 12)

if (date>31) {date=1;month++;} //大月31天

if (month==4||month==6||month==9||month==11)

if (date>30) {date=1;month++;} //小月30天

if (month==2)

{if( leap_year()) //闰年的条件

{if (date>29) {date=1;month++;}} //闰年2月为29天

else

{if (date>28) {date=1;month++;}} //平年2月为28天

}

if (month>12) {month=1;year++;}

if (year>99) year=0;

}

}

}

week_proc();

if (sec==armsec && min==armmin && hour==armhour)

{if (alarm)

TR1=1; //闹钟启用时,报警时间到,启动Timer1

}

}

//显示处理程序

void pro_display()

{ unsigned char i;

lcd_pos(0x00);

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

{lcd_wdat(dis_buf1[i]);}

lcd_pos(0x40);

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

{lcd_wdat(dis_buf2[i]);}

}

//Timer0中断处理程序,秒的产生

void timer0() interrupt 1

{

TH0=0xdc; //Timer0置10ms定时初值dc00H(2^16=65536D,dc00H=56320D) TL0=0x00; //定时时间=(65536-56320)*(1/11.0592)*12=10ms (f0=11.0592Mhz)

sec100++;

if(sec100 >= 100) //1秒时间 (100*10ms=1000ms=1s)

{sec100 = 0;

pro_timedate();//调用时间和日期处理程序

}

if (sec&0x01) //"WATCH"闪一秒,停一秒

update_disbuf(0x00," ",hour,min,sec); //0x00表示显示00位置的自定义字符

else

update_disbuf(0x00,"WATCH",hour,min,sec);

pro_display(); //调用显示处理函数

}

//按键扫描程序

unsigned char scan_key()

{

skey=0x00; //给变量vkey置初值

skey|=PRE; //读取PRE键的状态

skey=skey<<1; //将PRE键的状态存于skey的B1位

skey|=SET; //读取SET键的状态,并存于skey的B0位

return skey; //返回skey的键值(即PRE,SET的状态)

}

//外部中断INT0中断处理程序

void int0() interrupt 0

{

TR0=0; //禁止Timer0

IE=0; //禁止中断

lcd_wcmd(0x0e); //显示光标"_",整个光标不闪烁

alarm=1;

update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新显示数据,0x50表示要显示"P"

pro_display(); //调用显示处理程序

lcd_pos(0x47); //使光标位于第一个调整项下

flag=0;

vkey=0x03;

while(flag^0x0a)

{skey = scan_key(); //扫描按键状态

if (skey^vkey) //若skey与vkey相同,跳出循环,相异执行循环体

{ delay(10); //去按键抖动

skey = scan_key(); //转回扫描按键状态

if (skey^vkey) //若skey与vkey相同,跳出循环,相异执行循环体

{ vkey=skey; //将skey的值付给vkey

if (skey==0x01) //PRE键按下

{ flag++; //调整标志位加1

switch (flag) //将光标置于相应调整位置

{

case 1: lcd_pos(0x49);break; //光标置小时报警设置位置

case 2: lcd_pos(0x4c);break; //光标置分钟报警设置位置

case 3: lcd_pos(0x4f);break; //光标置秒时报警设置位置

case 4: update_disbuf(0x50,"time: ",hour,min,sec);

pro_display();

lcd_pos(0x05);break; //光标置年调整位置

case 5: lcd_pos(0x08);break; //光标置月调整位置

case 6: lcd_pos(0x0b);break; //光标置日调整位置

case 7: lcd_pos(0x49);break; //光标置时调整位置

case 8: lcd_pos(0x4c);break; //光标置分调整位置

case 9: lcd_pos(0x4f);break; //光标置秒调整位置

default:break;

}

}

if (skey==0x02) //SET键按下

{ pro_key(); //转设置按键处理程序

}

}

}

}

lcd_wcmd(0x0c); //设置LCD开显示及光标不闪烁,不显示"-"

lcd_wcmd(0x01); //清除LCD的显示内容

IE=0x8f; //CPU开中断,INT0,INT1,开中断

TR0=1; //Timer0启动

}

//主程序,初始化及初值设定

void main()

{

lcd_init(); //初始化LCD

lcd_sef_chr(); //写入自定义字符号

hour=0;min=0;sec=0; //开机时的时,分,秒显示

armhour=0;armmin=0;armsec=0; //开机时的时,分,秒报警初值

year= 10; month=04;date=29; //开机时的年,月,日,星期显示

week_proc();

alarm=1; //初始开机,启用闹钟

IE = 0x8f; //CPU开中断,INT0,INT1,Timer0,Timer1开中断

IP = 0x04; //设置INT0为中断最高优先级

IT0=0;IT1=0; //外部INT0,INT1设置为电平触发方式(注意,触发不要选边沿方式,易误动)

TMOD = 0x11; //Timer0,Timer1工作于模式1, 16位定时方式

TH0 = 0xdc;TL0 = 0x00; //Timer0置10ms定时初值

TH1 = 0xff;TL1 = 0x00; //Timer1置初值

TR0 = 1; //Timer0启动

TR1 = 0;

while(1);

}

//设置按键处理程序

void pro_key()

{

switch (flag)

{

case 0:alarm=!alarm; //启用或关闭闹钟(alarm=1:启用,alarm=0:关闭) update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新显示数据

pro_display(); //调用显示处理

lcd_pos(0x47);break; //光标回到原调整位置

case 1:armhour++;

if (armhour>23) armhour=0;

update_disbuf(0x50,"alarm:",armhour,armmin,armsec); //更新显示数

pro_display(); //调用显示处理

lcd_pos(0x49);break; //光标回到原调整位置

case 2:armmin++;

if (armmin>59) armmin=0;

update_disbuf(0x50,"alarm:",armhour,armmin,armsec);

pro_display();

lcd_pos(0x4c);break;

case 3:armsec++;

if (armsec>59) armsec=0;

update_disbuf(0x50,"alarm:",armhour,armmin,armsec);

pro_display();

lcd_pos(0x4f);break;

case 4:year++;

if (year> 99) year= 0;

week_proc(); //星期自动运算

update_disbuf(0x50,"time: ",hour,min,sec);

pro_display();

lcd_pos(0x05);break;

case 5:month++;

if (month>12) month=1;

week_proc(); //星期自动运算

update_disbuf(0x50,"time: ",hour,min,sec);

pro_display();

lcd_pos(0x08);break;

case 6:date++;

if

(month==1||month==3||month==5||month==7||month==8||month==10||month== 12)

if (date>31) date=1; //大月31天

if (month==4||month==6||month==9||month==11)

if (date>30) date=1; //小月30天

if (month==2)

{if(leap_year()) //闰年的条件

{if (date>29) date=1;} //闰年2月为29天

else

{if (date>28) date=1;}} //平年2月为28天

week_proc(); //星期自动运算

update_disbuf(0x50,"time: ",hour,min,sec);

pro_display();

lcd_pos(0x0b);break;

case 7:hour++;

if (hour>23) hour=0;

update_disbuf(0x50,"time: ",hour,min,sec); pro_display();

lcd_pos(0x49);break;

case 8:min++;

if (min>59) min=0;

update_disbuf(0x50,"time: ",hour,min,sec); pro_display();

lcd_pos(0x4c);break;

case 9:sec++;

if (sec>59) sec=0;

update_disbuf(0x50,"time: ",hour,min,sec); pro_display();

lcd_pos(0x4f);break;

default: break ;

}

}

//Timer1中断处理程序,产生报警的声音

void timer1() interrupt 3

{

TH1=0xff;

TL1=0x00;

SPK=~SPK;

}

//外部中断INT1中断处理程序,停止报警声音

void int1() interrupt 2

{

if(TR1)

TR1=0;

}

基于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个两级中断结构,一个全双工串行通信口,片内时钟振荡

可编程作息时间控制器设计(单片机)

2013~2014学年第2学期 《单片机原理与应用》 课程设计报告 学校:北华航天工业学院 题目:可编程作息时间控制器设计 专业:惺惺惜惺惺 班级:Bxxxxx 姓名:xxxxx 学号:惺惺惜惺惺信息学、、指导教师:xx 电子工程系 2013年6月14日

《可编程作息时间控制器设计》任务书 课题名称 可编程作息时间控制器设计 指导教师xx 执行时间2013~2014学年第一学期第16周学生姓名学号承担任务 Zzz Zxxxx 设计目的1、掌握汇编语言的基本结构及应用; 2、掌握各个部分功能的设计及应用; 3、学会使用protues软件进行电路仿真。 设计要求1、按照给定的时间模拟控制实现上下课打铃、灯光控制(屏 幕显示); 2、具有各日期和时钟显示。 摘要 本课题是应用AT89C52为核心控制器件的作息时间控制钟,由键盘、声音输出模块、电源转换模块和存储模块四部分组成。它利用AT89C52的定时/计数

器来计算时间,并用存储器记录数据,保证了系统的可靠性。AT89C52单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个设计的工作流程。整体性好,人性化强,可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,可对一些以24小时为周期的开关量进行自动控制。如上下课打铃及扩音设备的开与关。采用AT89C52单片机来实现对上述开关量的控制,设有8位数码管、可以实时显示时间、系统还设有输入键盘,用以修改实时实时时钟,体现了系统简单、工作稳定可靠、价廉、控制时间精确及系统体积小等特点。 首先设计各个模块的屏幕显示,其次是各个模块需要调用的小程序,有PC 机的日期和时钟,响铃声音,按键,屏幕显示以及延时的调用等等,最后是将各个功能模块与其中需要的小程序通过正确的汇编语言组建起来。这样便完成了源文件的建立。再通过.ASM源文件生成的.EXE可执行文件进行仿真。该仿真可以模拟实现:与PC机日期时钟保持一致的显示功能,仿照已设定的响铃时间进行打铃功能,根据已设定的早晚作息时间灯光控制的功能,键盘输入修正响铃时间,随时手动按键实现响铃的功能。 目录 摘要 .................................................................................................................. - 1 -目录 .................................................................................................................. - 2 -第一章绪论 ........................................................................................................ - 3 - 1.1 课题研究的目的与意义............................................................................ - 3 - 1.2 研究内容及采用方法................................................................................ - 3 - 1.2.1 主要研究内容................................................................................. - 3 - 1.2.2 主要采用方法................................................................................. - 3 - 1.3课题的研究原理......................................................................................... - 4 -第2章可编程作息时间控制器的方案设计 ...................................................... - 5 - 2.1总体方案组成框图及设计流程图........................................................... - 5 - 2.2具体步骤实施........................................................................................... - 7 - 2.2.1日期和时钟显示功能的设计......................................................... - 7 - 2.2.2 上下课打铃功能的设计............................................................... - 11 - 2.2.3 灯光显示功能的设计................................................................... - 13 - 2.2.4 修改响铃时间功能的设计........................................................... - 13 - 2.2.5 模拟手动控制功能的设计........................................................... - 14 -第3章可编程作息时间控制器的protues仿真 ............................................ - 16 - 3.1 仿真结果................................................................................................... - 16 - 3.2性能及误差分析....................................................................................... - 17 -附录 ..................................................................................... 错误!未定义书签。参考文献 ............................................................................... 错误!未定义书签。

基于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,

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

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

目录 第1章绪论 (1) 1.1设计目的 (1) 1.2设计要求和任务 (1) 1.2.1设计要求: (1) 1.2.2设计任务: (1) 1.3论文主要内容 (1) 第2章系统总体设计 (2) 2.1系统设计需求 (2) 2.2总体设计方案 (2) 2.3系统软件 (3) 2.4系统硬件 (3) 第3章系统硬件设计 (4) 3.1系统硬件模块及功能 (4) 3.2主控模块 (4) 3.2.1主芯片AT89C52 (4) 3.2.2时钟电路设计 (7) 3.2.3 74HC245芯片 (7) 3.3 LED显示模块 (9) 3.4 按键模块 (9) 3.5警报模块 (10) 第4章系统软件设计 (11) 4.1系统软件设计概述 (11) 4.2主程序设计 (11) 4.3单片机的中断系统 (11) 4.3.1中断源 (11) 4.3.2中断的优先级别 (12) 4.4主程序 (12) 第5章系统测试 (13) 5.1测试内容 (13) 5.2测试环境 (13) 5.3测试步骤 (13) 5.3.1测试环境的构建 (13) 5.3.2测试内容 (14) 5.4测试结果 (14)

基于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硬件电路设计

单片机LCD定时闹钟程序

#include //包含单片机寄存器的头文件 #include //包含_nop_()函数定义的头文件 //1602端口定义 sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚 sbit BF=P1^7; //忙碌标志位,,将BF位定义为P0.7引脚 //AD端口定义 sbit CLK=P2^3; sbit start=P2^4; sbitoe=P2^5; sbiteoc=P2^7; sbitout_pulse=P2^6;//5us脉冲 sbit p30=P3^0; #define uchar unsigned char #define uint unsigned int uchar n=0; uchar flag=0;//1s标志位 /***************************************************** 函数功能:延时1ms ***************************************************/ void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++) ; } /***************************************************** 函数功能:延时若干毫秒 入口参数:n ***************************************************/ void delay(unsigned int n) { unsignedinti; for(i=0;i

定时闹钟设计-毕业设计

河南工业职业技术学院 毕业设计报告 定时闹钟 姓名: 学号: 专业班级: 指导老师: 所在学院: 年月日

本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。电子钟设计可采用数字电路实现,也可以采用单片机来完成。数字电子钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。AT89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进—步可以扩充控制电器的启停。 设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计。采用四个开关来控制定时闹钟的工作状态,分别为:A、设置时间和闹钟的小时;B、设置小时以及设置闹钟的开关;C、设置分钟和闹钟的分钟;D、设置完成退出。 课设准备中我根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用proteus软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。 设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出蜂鸣声音,持续一分钟。显示采用的六位数码管电路,如果亮度感觉不够,可以通过提升电阻来调节,控制程序中延迟时间的长短,可以获得不同的效果。也可以改蜂鸣器为继电器,通过控制继电器从而进一步扩展的来控制一些家电开关。

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

任务书 一、设计目的 本设计主要是对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所示:

LCD电子定时闹钟的设计及制作

摘要 时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求。本设计采用单片机芯片进行计时,由于AT89C51系列单片机的体积小,成本低,控制器运算能力强,处理速度快,可以精确计时,对于社会生产有着十分重要的作用。 在此次设计中,AT89C51单片机芯片是主要的元器件,通过它来控制电路的LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件组成的硬件电路,再利用软件来执行一定的程序来实现LCD电子定时闹钟计时功能和定时闹铃的设置和控制。由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。 关键词:单片机计时AT89C51

ABSTRACT Time is the indispensable in the modern society, whether a parameter normally live or social production all need to control over time, some occasions to its accuracy and high requirements. This design USES the monolithic integrated circuit chips for timing, due to the volume of the series microcontroller AT89C51 is small, low cost, operation ability, controller processing speed, can accurate timing for social production, plays a very important role. In this design, AT89C51 chip is the main components, by which it can control circuit of LCD, crystals, resistor, capacitor, light-emitting diodes, switch, loudspeaker elements such as hardware circuit, reuse of software to perform certain procedures to achieve LCD electronic timing alarm clock function and regular alarm Settings and control. Because the system which is less, SCM used components is occupied I/O mouth not much, so system has certain expansibility. Key word:SCM Timing AT89C51

智能定时闹钟 毕业设计

毕业论文(设计) 智能定时闹钟 -----温度、定时硬件设计 院系:工程学院年级专业:电气工程及其自动化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

定时闹钟课程设计

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

第一部分 任 务 书

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

C51定时闹钟程序

#include //头文件 #include #define uchar unsigned char//宏定义 #define uint unsigned int sbit key1=P3^5; //位声明 sbit key2=P3^6; sbit key3=P3^7; sbit fmq=P2^0; uchar code table[]={0x3f,0x06,0x5b,//数码管显示的数值 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0xbf,0x86,0xdb,//带小数点的数值 0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; void jia(); //函数声明 void jian(); uchar table_1[6]; //定义数组,数组内含有6个数值 uchar table_2[6]; uchar shi=23,fen=59,miao=50; //显示初始值 uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;//定义全局变量uchar flag,flag1,cnt,count;//定义全局变量 void delay(uchar i) //延时函数,用于动态扫描数码管 { uchar x,y; for(x=i;x>0;x--) for(y=110;y>0;y--); } void init() //初始化函数 { TMOD=0X01; //工作方式1 TH0=(65536-50000)/256; //定时时间为:50ms TL0=(65536-50000)%256; ET0=1; //打开定时器 EA=1; //开总中断 TR0=1; //启动定时器 } void display() //显示子函数,用于显示时间数值 { uchar i,j; table_1[0]=miao%10; //分离秒的各位与十位 table_1[1]=miao/10; table_1[2]=fen%10+11; //分离分的各位与十位 table_1[3]=fen/10; table_1[4]=shi%10+11; //分离时的各位与十位 table_1[5]=shi/10; j=0x7f; //从秒到时的扫描

定时闹钟课程设计大作业(DOC)

微型计算机控制技术大作业 设计题目:定时闹钟课程设计 院系:计算机科学与信息工程学院 学生姓名:曹紫莹 学号:201103010036 专业班级:计算机科学与技术(嵌入式方向)11-1 指导教师:赵凯 2014.06.07

目录 1、课程内容要求及目的 (1) 1.1设计题目 (1) 1.2 设计要求 (1) 1.3能显示时时-分分-秒秒。 (1) 1.4能够设定定时时间、修改定时时间。 (1) 2、设计实现方案 (2) 2.1原理 (2) 2.2 原理及工作过程说明 (2) 3、硬件设计 (3) 3.1 主控芯片AT89C51的设计 (3) 3.2 时钟电路部分设计 (4) 3.3 LCD显示电路部分 (5) 4、软件设计 (6) 4.1 软件设计概述 (6) 4.2 主函数的设计 (6) 4.3.1 程序初始化 (7) 4.3.2 闹钟的实现 (8) 4.3.3 显示程序 (8) 5、实验总结及心得体会 (23) 6、参考文献 (24)

基于单片机的定时闹钟 1、课程内容要求及目的 1.1设计题目 基于单片机的定时闹钟 1.2 设计要求 1、能显示时时-分分-秒秒。 2、能够设定定时时间、修改定时时间。 3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。 1.3LCD电子闹钟的特点和功能介绍 时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。而LCD电子定时闹钟是以单片机为基础的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为24小时,另外应有校时功能和一些显示日期、闹钟等附加功能。一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”,“星期”计数器、校时电路、报时电路和振荡器组成。目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手。 由于时钟的实用性和在人们生活中的重要性,所以尝试设计以单片机为核心的数字时钟是很有意义的。钟表原先的报时功能已经原不能满足人们日益增长的

定时闹钟设计(1)

定时闹钟的设计 学生姓名: 学生学号: 指导教师: 所在学院: 专业班级: 中国· 2014年 6 月 信息技术学院 课程设计任务书 信息技术学院院专业级,学号姓名 一、课程设计课题: 定时闹钟的设计 二、课程设计工作日自 2014 年 6 月 15 日至 2014 年 7 月 1 日 三、课程设计进行地点: 四、程设计任务要求: (详细内容见课程设计文档) 1.课题来源: 指导老师下发 2.目的意义: 此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力,以及一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题目的分析与设计,达到技术性能要求。 3.基本要求: 设计基于单片机的定时闹钟,可以实现时分秒的显示、以及定时等基本功能。能够设定定时时间,并实现修改定时的功能。定时时间到应能发出报警声。

课程设计评审表 目录 1 设计任务要求…………………………………………………….……… 2 方案设计………………………………………………………….……… 3 单元电路设计…………………………………………………….……… 4 元件选择(要求计算元件参数)………………………………….……… 5 整体电路(标出原元件型号和参数、画出必要波形图)……………… 6 说明软件程序设计………………………………………………………. 7 困难问题及解决措施…………………………………………….……… 8 总结与体会………………………………………………………………. 9 致谢……………………………………………………………….……… 10参考文献……………………………………………………….………... 1. 设计要求 1.1 目的:

(完整版)单片机毕业课程设计—带有LCD的定时闹钟

郑州轻工业学院 软件学院 单片机与接口技术课程设计总结 报告 设计题目:带有LCD的定时闹钟 学生姓名: 系别: 专业: 班级: 学号: 指导教师:

2011年12月16日

郑州轻工业学院 课程设计任务书 题目带有LCD的定时闹钟 专业、班级学号姓名 主要内容: 设使用89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。 基本要求: .字符型LCD(16*2)显示器 .显示格式“时时分分”。 .由LED闪动来做秒计数表示。 .一旦时间到侧发动声响,同时继电器启动,可以扩充控制家电开启和关闭。 .程序执行后工作指示灯LED闪动,表示程序开始执行,LCD 显示“00 00”,按下操作键K1-k4动作如下: (1)K1—设置现在的时间。 (2)K2—显示闹钟设置的时间。

(3)K3—设置闹铃的时间。 (4)K4—闹铃ONOFF的状态设置,设置ON时连续三次发出“哗”的一声,off置为哗的一声。设置当前时间或闹 铃时间如下: (1)K1—时的调整。 (2)K2—分的调整。 (3)K3—设置完成。 (5)OFF发出“哗”K4---闹铃时间到时,发出一阵声响,按下本键可以停止声响。 除了显示当前时间的功能外,还可以扩充如下功能; .增加秒表计数。 .闹铃时间到侧产生音乐声。 .增加减计数功能。 .增加多组计数的功能。 参考文献 郭天祥 51单片机C语言教程-入门。 余发山单片机原理及应用技术。中国矿业大学出版社。 涂世亮,张友德。单片微机控制技术。清华大学出版社。

12小时制任意点定时数字闹钟设计方案

12小时制任意点定时数字闹钟设计方案 第一章绪论 1.1引言 在信息技术急速发展的今天,计算机科学日新月异。而单片机作为计算机科学的一个分支,在微机控制领域得到长足的发展。随着单片机的发展与科学技术的提高,单片机已经成为人类生产生活中不可缺少的工具。现在,单片机的应用已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理、广泛使用的各种智能IC卡、民用豪华轿车的安全保障系统、录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。 单片机要解决的问题多数是仍是老问题,新颖之处是比以前用较少的元件。尤其是设计逻辑关系复杂的控制系统,过去用通用的逻辑门集成电路芯片将需要几十片甚至上百片,而现在只用几片就能够实现,而且方便灵活,做设计修改或改动功能时,只消改写软件原文件重写芯片,免去了在硬件线路上大动干戈的苦差事。减少芯片个数主要是靠单片机的可编程性和高度集成化。使开发周期更短,制造成本更低,用电更省和可靠性更高。要求用各种逻辑门芯片实现的逻辑电路,可以用一片单片机芯片加上相应的控制软件就可以实现。 用单片机的另一个优点是设计软件将不断积累,不断模块化,形成标准化软件,大大提高了开发效率。 数字电子钟的设计方法有很多种,例如可以用中小规模的集成电路组成电子钟;

也可以用专用的电子钟芯片配以显示电路及所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟。这些方法各有特点,其中利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可以使用该电电子钟发出控制信号。 1.2论文的容和结构安排 该课程设计是利用74LS290单片机部的定时/计数器、中断系统、以及外围的按键和LED显示器等部件,设计一个12小时制任意点定时数字闹钟设计。设计的电子时钟通过数码管显示,并能通过按键实现任意点定时闹钟。 1.3工作原理 数字电子钟的逻辑框图如图1所示。它由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“12翻1”规律计数。计数器的输出分别经译码器送显示器显示。计时出现误差时,可以用校时电路校时。 图1

相关主题
文本预览
相关文档 最新文档