文档库 最新最全的文档下载
当前位置:文档库 › 基于51的1602数字时钟设计

基于51的1602数字时钟设计

基于51的1602数字时钟设计
基于51的1602数字时钟设计

#include

#define uchar unsigned char

#define uint unsigned int

sbit M=P1^0;

sbit A=P1^1;

sbit I=P1^2;

sbit Spker=P1^3;

sbit lcden=P1^4;

sbit rs=P1^5;

uchar Anum=0,Mnum=0,Inum=0,bs=0;

uint year=2000;

uchar count=0,miao=0,fen=0,shi=0,mouth=1,day=1,dayqd; uchar hmiao=0,miao1=0,fen1=0,shi1=0;

uchar miao2=0,fen2=0,shi2=0;

uchar code table[]= " Time";

uchar code table1[]=" 00:00:00";

uchar code table2[]=" Date";

uchar code table3[]=" Meter";

uchar code table4[]=" 00:00:00:00";

uchar code table5[]=" Beepoff";

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)

{

rs=0;

lcden=0;

P0=com;

delay(1);

lcden=1;

delay(1);

lcden=0;

}

void write_date(uchar date)

{

rs=1;

lcden=0;

P0=date;

delay(1);

lcden=1;

delay(1);

lcden=0;

}

void init()

{

uchar num;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

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

{

write_date(table[num]);

}

write_com(0x80+0x40);

for(num=0;num<12;num++)

{

write_date(table1[num]);

}

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

EA=1;

ET0=1;

ET1=1;

TR0=1;

TR1=0;

}

void write_sz(uchar add,uchar date)

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void write_year(uchar add,uint date)

{

uchar qian,bai,shi,ge;

qian=date/1000;

bai=date%1000/100;

shi=date%1000%100/10;

ge=date%1000%100%10;

write_com(0x80+0x40+add);

write_date(0x30+qian);

write_date(0x30+bai);

write_date(0x30+shi);

write_date(0x30+ge);

}

/*************************时间显示及时间调节*******************************/ void timeinit()

{

uchar num;

write_com(0x01);

write_com(0x80);

for(num=0;num<12;num++)

{

write_date(table[num]);

}

write_sz(4,shi);

write_com(0x80+0x40+6);

write_date(':');

write_sz(7,fen);

write_com(0x80+0x40+9);

write_date(':');

write_sz(10,miao);

}

void timekey()

{

if(A==0)

{ Anum++;

while(!A);

if(Anum==1)

{

TR0=0;

write_com(0x80+0x40+4);

write_com(0x0f);

}

if(Anum==2)

{

write_com(0x80+0x40+7);

}

if(Anum==3)

{

write_com(0x80+0x40+10);

}

if(Anum==4)

{

Anum=0;

write_com(0x0c);

TR0=1;

}

}

if(Anum!=0)

{

if(I==0)

{

while(!I);

if(Anum==1)

{

shi++;

if(shi==24)

shi=0;

write_sz(4,shi);

write_com(0x80+0x40+4);

}

if(Anum==2)

{

fen++;

if(fen==60)

fen=0;

write_sz(7,fen);

write_com(0x80+0x40+7);

}

if(Anum==3)

{

miao++;

if(miao==60)

miao=0;

write_sz(10,miao);

write_com(0x80+0x40+10);

}

}

}

}

/*************************日期显示及日期调节*******************************/ void dateinit()

{

uchar num;

write_com(0x01);

write_com(0x80);

for(num=0;num<12;num++)

{

write_date(table2[num]);

}

write_year(3,year);

write_com(0x80+0x40+7);

write_date(':');

write_sz(8,mouth);

write_com(0x80+0x40+10);

write_date(':');

write_sz(11,day);

}

void datekey()

{

if(A==0)

{ Anum++;

while(!A);

if(Anum==1)

{

write_com(0x80+0x40+3);

write_com(0x0f);

}

if(Anum==2)

{

write_com(0x80+0x40+8);

}

if(Anum==3)

{

write_com(0x80+0x40+11);

}

if(Anum==4)

{

Anum=0;

write_com(0x0c);

}

}

if(Anum!=0)

{

if(I==0)

{

while(!I);

if(Anum==1)

{

year++;

write_year(3,year);

write_com(0x80+0x40+3);

}

if(Anum==2)

{

mouth++;

if(mouth==13)

mouth=1;

write_sz(8,mouth);

write_com(0x80+0x40+8);

}

if(Anum==3)

{

day++;

if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)

dayqd=32;

else if(mouth==2)

{

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

dayqd=30;

else

dayqd=29;

}

else

dayqd=31;

if(day==dayqd)

day=1;

write_sz(11,day);

write_com(0x80+0x40+11);

}

}

}

}

/*************************闹钟显示及闹钟设置*******************************/ void beepinit()

{

uchar num;

write_com(0x01);

write_com(0x80);

for(num=0;num<10;num++)

{

write_date(table5[num]);

}

if(bs==1)

{

write_com(0x80+10);

write_date('n');

write_date(' ');

write_com(0x80+10);

}

if(bs==0)

{

write_com(0x80+10);

write_date('f');

write_date('f');

write_com(0x80+10);

}

write_sz(4,shi2);

write_com(0x80+0x40+6);

write_date(':');

write_sz(7,fen2);

write_com(0x80+0x40+9);

write_date(':');

write_sz(10,miao2);

}

void beepkey()

{

if(A==0)

{ Anum++;

while(!A);

if(Anum==1)

{

write_com(0x80+0x40+4);

write_com(0x0f);

}

if(Anum==2)

{

write_com(0x80+0x40+7);

}

if(Anum==3)

{

write_com(0x80+0x40+10);

}

if(Anum==4)

{

write_com(0x80+10);

}

if(Anum==5)

{

Anum=0;

write_com(0x0c);

}

}

if(Anum!=0)

{

if(I==0)

{

while(!I);

if(Anum==1)

{

shi2++;

if(shi2==24)

shi2=0;

write_sz(4,shi2);

write_com(0x80+0x40+4);

}

if(Anum==2)

{

fen2++;

if(fen2==60)

fen2=0;

write_sz(7,fen2);

write_com(0x80+0x40+7);

}

if(Anum==3)

{

miao2++;

if(miao2==60)

miao2=0;

write_sz(10,miao2);

write_com(0x80+0x40+10);

}

if(Anum==4)

{

bs++;

if(bs==2)

bs=0;

if(bs==1)

{

write_com(0x80+10);

write_date('n');

write_date(' ');

write_com(0x80+10);

}

if(bs==0)

{

write_com(0x80+10);

write_date('f');

write_date('f');

write_com(0x80+10);

}

}

}

}

}

/*************************闹铃*******************************************/

void speaker()

{

while(I==1&&miao!=miao2+10)

{

Spker=0;

delay(10);

Spker=1;

delay(10);

}

}

/*************************模式选择***************************************/ void Mkey()

{

if(M==0)

{

while(!M);

Mnum++;

if(Mnum==4)

Mnum=0;

if(Mnum==0)

timeinit();

if(Mnum==1)

dateinit();

if(Mnum==2)

Mnum = 3;

// meterinit();

if(Mnum==3)

beepinit();

}

}

void main()

{

init();

while(1)

{

if(shi==shi2&&fen==fen2&&miao==miao2&&bs==1)

speaker();

if(Anum==0)

Mkey();

if(Mnum==0)

timekey();

if(Mnum==1)

datekey();

if(Mnum==2)

Mnum = 3;

// meterkey();

if(Mnum==3)

beepkey();

}

}

/*************************时间计时***************************************/ void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

day++;

if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)

dayqd=32;

else if(mouth==2)

{

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

dayqd=30;

else

dayqd=29;

}

else

dayqd=31;

if(day==dayqd)

{

day=1;

mouth++;

if(mouth==13)

{

mouth=1;

year++;

if(Mnum==1)

write_year(3,year);

}

if(Mnum==1)

write_sz(8,mouth);

}

if(Mnum==1)

write_sz(11,day);

}

if(Mnum==0)

write_sz(4,shi);

}

if(Mnum==0)

write_sz(7,fen);

}

if(Mnum==0)

write_sz(10,miao);

}

}

/*************************秒表计时***************************************/ void timer1() interrupt 3

{

TH1=(65536-10000)/256;

TL1=(65536-10000)%256;

hmiao++;

if(hmiao==100)

{

hmiao=0;

miao1++;

if(miao1==60)

{

miao1=0;

fen++;

if(fen1==60)

{

fen1=0;

shi1++;

if(shi1==24)

{

shi1=0;

}

if(Mnum==2)

write_sz(3,shi1);

}

if(Mnum==2)

write_sz(6,fen1);

}

if(Mnum==2)

write_sz(9,miao1);

}

if(Mnum==2)

write_sz(12,hmiao);

}

微机原理课程设计数字时钟程序

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 电子信息科学与工程 课程名称:微型计算机原理及应用 学年学期: 2 01 1 —2012 学年第1 学期 指导教师: 20 0 1 1年 1 2月 课程设计成绩评定表

目录 一、课设题目及目的………………………………….4 二、设计任务………………………………………….4 三、总框图及设计流程 (4) 四、?源程序清单 (6) 五、?调试结果及显示 (19) 六、?个人贡献………………………………………….19 七、课程设计总结及体会 (21) 一、课设题目及目的 实习题目:数字时钟程序 实习目的:通过实习,使我们进一步弄懂所学到的课本知识,巩固和深化对8086系统的指令系统、中断系统、键盘/显示系统、程序设计、应用开发等基本理论知识的理解,提高汇编语言应用于技术的实践操作技能,掌握汇编语言应用系统设计、研制的方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。

二、课设任务 本课题为利用汇编语言设置时钟程序,其显示效果为:截取系统时间,能以时、分、秒(其中时为24小时制)的形式显示,并且通过合理的操作能修改时和分的内容来修改时间。再有,可以给它设定一个ALARM时间,到这个时间它就能产生信号,起到定时作用,。除此之外还能显示日期,日期分为年、月、日,其显示方式为xxxx年xx 月xx日。 ' *

DB '***********PRESS ESCBUTTON TO EXIT**************',0AH,0DH,'$' TN DB'PLEASE INPUT THE NEW TIME(HH:MM:SS):',0DH,0AH,'$' TMDB'PLEASE INPUT THE ALARM TIME (HH:MM:SS):',0DH,0AH,'$' MUSICMESS DB'PLEASE CHOOSE THE TYPE OF MUSIC:1(FAST) 2(MIDDLE) 3(SLOW)',0DH,0AH,'$' MESS2DB'TIME IS:',0AH,0DH,'$' MESS3DB 'TODAY IS:',0AH,0DH,'$' DBUFFER1DB20DUP('') T_BUFFD B 40 ;在数据段开一段时间显示缓冲区 DB ? DB 40DUP(?) HOR DB? MIN DB? SEC DB? TEMPHOR DB ? TEMPMIN DB? TEMPSEC DB? MUSIC DW 800;存放音乐的频率数DATA ENDS STACK SEGMENT DB 100 DUP(?) STACK ENDS CODESEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: CALL CLEAR ;调用清屏子程序 DISPLAY:;时间显示部分 MOV AX,DATA MOVDS,AX MOVBX,OFFSETT_BUFF;送T_BUFF的偏移地址到BX MOV AH,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中 INT 21H ;判断时间是否相等SUB DH,1;秒数+1修正 CALL CHECK ;.........................................................................

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。 时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。 开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;clr P3.7 ; CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入"熄灭符"数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护

时钟系统设计

《单片机原理及接口》 课程设计报告 题目:时钟系统设计 专业名称:电子信息工程 班级: 092 学号: 910706220 姓名: 2011年 12月

时钟系统设计 陈 (电子信息工程学系) 中文摘要:本设计基于单片机仿真技术,以单片机芯片AT89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分:硬件部分和软件部分,以单片机为核心,蜂鸣器,数码管,晶体管等为外围器件,设计一个正常走时,报时、初始化、闹钟的数字时钟。 关键词:单片机;数字时钟;AT89C52;闹钟 1、设计目标 设计一时钟系统,系统具有时钟功能,能准确显示时、分、秒,系统还应具有校正功能:能够修改当前的时间。 2、设计环境 Windows7 Keil uVision3 Proteus7.5 3、系统硬件设计 3.1单片机控制系统: 本设计基于单片机技术原理,以单片机芯片AT89C52作为核心控制器,通过硬件电路的制作 以及软件程序的编制,利用单片机的控制作用通过LCD来直接时、分、秒,并能对其分别进行设 置、修改;利用对蜂鸣器的控制来实现闹钟功能。同时使用C语言程序来控制整个时钟显示,使 得编程变得更容易,这样通过三个模块:键盘、芯片、显示屏即可满足设计要求。 3.2各部分功能实现: 单片机采用52系列单片机。由ATMEL公司生产的AT89S52是一种低功耗、高性能CMOS8位微控 制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工 业80C51产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使 得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能: 8K字节Flash,256字节RAM,32位I/O口线,2个数据指针,三个16位定时器/计数器,一个6向量2 级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时 器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一 切工作停止,直到下一个中断或硬件复位为止。而且,它还具有一个看门狗(WDT)定时/计数器, 如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复

数字时钟程序

#define uchar unsigned char #define unit unsigned int #include #include #include void 1cd_putchar(uchar 1cdchar) void 1cd_putsf(uchar code *chars) uchar code http[ ]={"current time is:"} sbit KEY1=P3^3; // sbit KEY2=p3^4; // ///////////////////////////////////////// uchar t50ms,ts,tm,th; uchar DISP_BUFFER[6]=0; void timer0(void) interrupt 1 using1 { THO=0x3c; TLO=0xbo; //50ms t50ms++; if(t50ms==20) { t50ms=0; ts++; if(ts==60) {tm=0; th++; if(th==24) {th=0; } } } } } void main (void) { p0=OXFF; P1=OXFF; P2=OXFF; P3=OXFF; TMOD=0X01;//T0 THO=0X3C; TLO=0XB0;//50ms EA=1 ETO=1; initialise();

1cd_setxy(0,0); 1cd_putsf(http); TRO=1; while(1) { DISP_BUFFER[0]=th/10; DISP_BUFFER[1]=th%/10; DISP_BUFFER[2]=tm/10; DISP_BUFFER[3]=tm%/10; DISP_BUFFER[4]=ts/10; DISP_BUFFER[5]=ts%/10; 1cd_setxy(1,0); 1cd_putchar(DISP_BUFFER[0]+0X30; 1cd_putchar(DISP_BUFFER[1]+0X30; 1cd_putchar(':'); 1cd_putchar(DISP_BUFFER[2]+0X30; 1cd_putchar(DISP_BUFFER[3]+0X30; 1cd_putchar(':'); 1cd_putchar(DISP_BUFFER[4]+0X30; 1cd_putchar(DISP_BUFFER[5]+0X30; if(!KEY1) {TM++; delay_ms(100);} } } //display one char void 1cd_putchar(uchar 1cdchar) { output(1cdchar); } //display a sting void 1cd_putsf(uchar code *chars) { uchar i=0; while(chars[i]>=0x20&chars[i]<0x7f) {if (i<0x0f) {output (chars[i]); i++; } else { 1cd_setxy(1,0); while( (chars[i]>0x20&chars[i]<0x7f) ) {output(chars[i]);

网络时钟系统方案设计

时钟系统 技术方案 烟台北极星高基时间同步技术有限公司 2012年3月

第一部分:时钟系统技术方案 一、时钟系统概述 1.1概述 根据办公楼的实际情况,特制定如下施工设计方案: 时钟系统主要由GPS接收装置、中心母钟、二级母钟(中继器)、全功能数字显示子钟、、传输通道和监测系统计算机组成。 系统中心母钟设在中心机房内,其他楼各设备间设置二级母钟,在各有关场所安装全功能数字显示子钟。 系统中心母钟接收来自GPS的标准时间信号,通过传输通道传给二级母钟,由二级母钟按标准时间信号指挥子钟统一显示时间;系统中心母钟还通过传输系统将标准时间信号直接传给各个子钟,为楼宇工作人员提供统一的标准时间 二、时钟系统功能 根据本工程对时钟系统的要求,时钟系统的功能规格如下: 时钟系统由GPS校时接收装置(含防雷保护器)、中心母钟、扩容接口箱、二级母钟、数字式子钟、监控终端(也称监测系统计算机)及传输通道构成。其主要功能为: ☉显示统一的标准时间信息。 ☉向其它需要统一时间的系统及通信各子系统网管终端提供标准时间信息。 2.1 中心母钟 系统中心母钟设置在控制中心设备室内,主要功能是作为基础主时钟,自动接收GPS的标准时间信号,将自身的精度校准,并分配精确时间信号给子钟,二级母钟和其它需要标准时间的设备,并且通过监控计算机对时钟系统的主要设备进行监控。 中心母钟主要由以下几部分组成: ☉标准时间信号接收单元 ☉主备母钟(信号处理单元) ☉分路输出接口箱 ☉电源 中心母钟外观示意图见(附图) 2.1.1标准时间信号接收单元 标准时间信号接收单元是为了向时间系统提供高精度的时间基准而设置的,用以实现时间系统的无累积误差运行。 在正常情况下,标准时间信号接收单元接收来自GPS的卫星时标信号,经解码、比对后,经由RS422接口传输给系统中心母钟,以实现对母钟精度的校准。 系统通过信号接收单元不断接收GPS发送的时间码及其相关代码,并对接收到的数据进行分析,判断这些数据是否真实可靠。如果数据可靠即对母钟进行校对。如果数据不可靠便放弃,下次继续接收。

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。

XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: 89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: "EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG: 端口3的管脚设置: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。

基于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单片机的电子时钟的设计

目录 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硬件电路设计

数字电子时钟源程序

#include "2407c.h" //数字电子时钟按Key1启动、Key2暂停、Key3复位、Key4调时 #define disable() asm(" setc INTM") //禁止全局中断 #define enable() asm(" clrc INTM") //允许全局中断 unsigned int k=0,s=30,m=59,h=23,j=1; unsigned int d[8] = {0x0100,0x0200,0x030a,0x0400,0x0500,0x060a,0x0700,0x0800}; unsigned int w[8] = {0x0101,0x0204,0x030a,0x0400,0x0503,0x060a,0x0700,0x0804}; //系统初始化子程序 void chushihua (void) { asm (" clrc SXM"); //抑制符号位扩展 asm (" clrc OVM"); //累加器正常溢出 asm (" clrc CNF"); //B0被配置为数据存储空间 *WDCR=0x00E8; //关闭看门狗 *SCSR1=0X00FC; //CLKIN=10M,CLKOUT=CLK*4=40M *IMR=0x0002; //开INT2 *IFR=0xFFFF; //清全部中断,写1清0,参见P43 *MCRB=0xFE3C; //启用SPI功能引脚 *MCRA=0; //IOPA、IOPB配置为一般I/O功能 *MCRC=0; //IOPE、IOPF配置为一般I/O功能 *PFDATDIR=0x00FF; //IOPF设置为输入,并上拉 *SPICCR=0x0F; //SPI软复位、上升沿输出数据、16位数据长度 *SPICTL=0x0E; //禁止过冲中断、允许TALK(发送)数据、主机模式、禁止SPI中断//上升沿有延时 *SPIBRR=0x0F; //SPI波特率=SYSCLK/(SPIBRR+1)=2.5M *SPICCR=*SPICCR|0x80; //SPI恢复操作,准备发送、接收下一个字符 WSGR=0x00; //禁止所有的等待状态 } //延时子程序 void delay(unsigned int pp) { unsigned int k,i; for(k=0;k

电子时钟系统设计

课程设计任务书 题目电子时钟系统设计 专业、班级电信11-02学号 8 瑞 主要容、基本要求、主要参考资料等: 一、主要容: ①熟悉单片机应用系统的设计方法和规,达到综合的目的。 ②学习文件检索和查找数据手册的能力。 ③学习protel软件的使用。 ④学会整理和总结设计文档报告。 二、基本要求: ①以MCS-51系列单片机为核心,组成一个电子时钟系统。 ②系统显示由6位数码管显示组成,分别显示时间值的时、分、秒。 ③能够随时对当前时间进行调整。 ④能够随时输入定时(闹钟)时间。 ⑤定时(闹钟)时间到,发出闹钟提醒信号。 ⑥闹钟提醒信号的声音为断续形式,最长不超过1分钟。 三、主要参考资料: ①毅坤等单片微型计算机原理及应用电子科技大学 ②建忠编著单片机原理及应用电子科技大学 完成期限:2015年1月17日 指导教师签名: 课程负责人签名: 2015年1月4 日

目录 摘要 (1) 1 设计方案选择 (2) 1.1 单片机选型 (2) 1.2 按键模块 (2) 1.3 显示模块 (2) 1.4 计时参考模块 (3) 1.5 显示器驱动模块 (3) 1.6 闹钟响铃模块 (4) 1.7 电源模块 (4) 2 硬件接线及设计 (4) 2.1 单片机晶振配置 (5) 2.2复位电路设计 (5) 2.3 按键电路设计 (6) 2.4 蜂鸣器驱动电路设计 (6) 2.5 显示模块电路设计 (7) 3 软件部分 (7) 3.1 主函数流程图 (7) 3.2 定时器T0中断服务程序流程图 (8) 3.3 闹钟响应程序流程图 (9) 3.4 键盘扫描程序流程图 (10) 4 系统综述 (11) 4.1 上电界面 (11) 4.2 调时界面 (11) 4.3 闹钟设定界面 (11) 4.4 正常走时界面 (12) 4.5 闹钟响应 (12) 附录1 总体设计电路图 (15) 附录2 PCB图 (16) 附录3 元件清单 (17) 附录4 总程序 (18)

数字时钟能修改程序

数字时钟可修改程序 //已验证可行,消抖效果一般 //4位动态显示数字时钟程序 #include #include //#include #define uchar unsigned char #define uint unsigned int // sbit dp0 =P2^4; sbit dp1 =P2^5; sbit dp2 =P2^6; sbit dp3 =P2^7; sbit spk =P1^1; //P3^5; bit set,ms,df; uchar cnt[3],dpt=0,dpbuf[4]; //全局变量定义 // //显示字模表 code uchar tab[]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x09,0xef}; // void delay_10us(void) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } // 8 nop+ret=10 Cycle

// void timer0(void) interrupt 1 using 1 { //5mS timer interrupt // uchar k,j; TH0=0xee; //65536-4608 TL0=0x00; if(dpt<3) dpt++; else dpt=0; //动态显示计数器if(dpt==2) P0 = tab[dpbuf[dpt]]&0xf7; else P0 = tab[dpbuf[dpt]]; switch(dpt) { case 0: dp1 = dp2 = dp3 = 1; dp0=0; break; case 1: dp0 = dp2 = dp3 = 1; dp1=0; break; case 2: dp0 = dp1 = dp3 = 1; dp2=0; break; case 3: dp0 = dp1 = dp2 = 1; dp3=0; } if(set) //设置时钟状态 { cnt[0]++; if(cnt[0]>=100) //0.5秒闪烁切换 { cnt[0]=0; //开始进入下个0.5秒计时

机场航站楼时钟系统设计方案

机场航站楼时钟系统设计方案为适应明勇机场建设发展需要,保证民用机场航站楼弱电系统工程设计质量,特根据《MHT5019-2014民用机场航站楼时钟系统工程设计规范》设计出本时钟系统方案。 专用术语解析 1、母钟:接受标准卫星时间信息,与自身所设的时间信号源进行高科技的校正、处理后,发送时间信号给所属子系统的装置, 2、子钟:接收母钟所发送的信号,进行显示的装置 3、GPS时钟信号:全球定位系统发送的格林威治标准时间信号 一般规定 母钟:SYN4505型标准同步时钟 子钟:SYN6109型NTP子钟 a、常见的民用机场航站楼的时钟系统的作用,应能为机场工作人员、旅客及各计算机管理系统提供准确统一的时间服务。 b、一般机场只设常规子母钟系统,显示北京时间信息,有国际航班的机场,应增设世界钟显示有关城市的当地时间。 子钟的类型分为单面子钟和双面子钟,单面子钟可采用指针式或者数显式。双面子钟宜采用数显式。各类子钟的显示内容可根据实际情况而定,但至少宜显示时分秒,数显钟应进行无反光处理,以保证显示效果。 子钟安装位置 1、指挥调度中心、广播室、会议室、航行气象情报室、机组签

派室及其他对时间有特殊要求的地点宜装设子钟。 2、对时间有特殊要求地航班动态显示机房及其他设备机房等宜装设子钟。 3、在航站楼迎客、送客、候机、办理乘机手续、通道等场所醒目的地方宜装设子钟;在旅客餐厅、休息场所,也宜设置子钟。 4、行李分拣、提取大厅宜装设子钟。 5、由母钟统一校时的航显系统,在设置有能显示时间的航显终端的场所,应尽量减少或取消子钟的安装。 子钟的规格应根据安装的高度和视距的远近而定。安装高度一般距地面2.5m~5m,特殊场合可适当调整,但应满足美观。名目的使用要求。 供电要求 a、母钟和子钟的供电电源,一般由系统所在的电子设备机房的电源供给,当供电距离较远时,也可由就近的可靠电源提供

51单片机简易可调的数码管电子钟程序

#include sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管0-9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=30,hour=12,second; //定义并且初始化值12:30:00 void delay(unsigned int cnt)//延时函数 { while(--cnt); } void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示正常时间 StrTab[1]=tab[hour%10]; StrTab[2]=0xBF; StrTab[3]=tab[minute/10]; StrTab[4]=tab[minute%10]; StrTab[5]=0xBF; StrTab[6]=tab[second/10]; StrTab[7]=tab[second%10]; } main()//主函数 { TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; //定时器1用于动态扫描 TH1=0xF8; TL1=0xf0; ET1=1; TR1=1; EA =1; Displaypro();

电子时钟系统设计

《嵌入式系统》课程设计说明书 电子时钟系统 院部: 学生姓名: 指导教师:职称 专业: 班级: 学号:

湖南工学院嵌入式系统课程设计课题任务书 2.显示的时间为开发板当前的系统时间,显示的结果随着系统时间变化而变 I

摘要 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统( 包括硬、软件系统) 极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等Browser 。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式技术已成为信息产业中发展最快、应用最广的计算机技术之一,并被广泛应用于网络通信、消费电子、医疗电子、工业控制和交通系统等领域。 本次设计采用QT程序开发框架开发的模拟时钟程序,使用Linux系统到嵌入式终端移植和交叉编译环境搭建,最终成功实现了在嵌入式终端的运行。 关键词:嵌入式系统;QT;模拟时钟;Linux系统

目录 1绪论 (1) 1.1 设计背景 (2) 1.2 设计目的和意义 (2) 2 嵌入式Linux系统 (2) 2.1 嵌入式Linux概念 (2) 2.2 嵌入式Linux组成 (2) 3 Qt工具 (3) 3.1 Qt简介 (3) 3.2 Qt优点 (3) 4 模拟时钟的设计 (4) 4.1 代码的编写 (4) 4.2 代码的调试与运行 (4) 5 模拟时钟到开发板的下载 (6) 5.1 交叉编译环境的构建 (7) 5.2 模拟时钟到开发板的下载运行 (7) 结论 (10) 参考文献 (11) 致谢 (12) 附录 (13)

51单片机数码管时钟程序

本人初学51,编写简单时钟程序。仅供参考学习 #include #define uint unsigned int #define uchar unsigned char Uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1 }; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0xef}; void delay(uint); unsigned long i,num,t=1; void main() { TMOD=0X01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; while(1) { num=i/20;//i为秒位 if(i==1728000)//一天大概是这个秒吧,,,应该是,呵呵。就是世间到24时就归零。 i=0; //也可用下面这个部分来代替上面的。 /*if(i==20) { i=0; num++; if(num==5184000) num=0; }*/ //num=9; P2=7;//P2口为数码管控制端,我的是38译码器控制,就直接对其赋值来控制时,分,秒的显示; P0=table[i%100%10]; delay(t); P2=6; P0=table[i%100/10]; delay(t); P0=table_d[(num%60)%10]; P2=5; delay(t); P0=table[(num%60)/10]; P2=4;

基于单片机的数字时钟程序

钟〔★〕这里用了两种编写方法(即汇编语言与C语言) (1.开机时,显示12:00:00的时间开始计时; (2.P0.0/AD0控制“秒”的调整,每按一次加1秒; (3.P0.1/AD1控制“分”的调整,每按一次加1分; (4.P0.2/AD2控制“时”的调整,每按一次加1个小时; 2.电路原理图 3.系统板上硬件连线 (1.把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (2.把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上; 4.相关基本知识 (1.动态数码显示的方法 (2.独立式按键识别过程 (3.“时”,“分”,“秒”数据送出显示处理方法 5.程序框图 6.汇编源程序 SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H HOURK BIT P0.0 MINITEK BIT P0.1 SECONDK BIT P0.2 DISPBUF EQU 40H DISPBIT EQU 48H T2SCNTA EQU 49H T2SCNTB EQU 4AH TEMP EQU 4BH ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV SECOND,#00H MOV MINITE,#00H MOV HOUR,#12 MOV DISPBIT,#00H MOV T2SCNTA,#00H MOV T2SCNTB,#00H MOV TEMP,#0FEH LCALL DISP

51单片机时钟程序

51单片机时钟程序 #include #define uint unsigned int #define uchar unsigned char uchar code duan[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,}; uchar code we[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,}; uint z; void display(uchar miao,uchar fen,uchar xiaoshi); uchar t=0,miao,fen,xiaoshi,shi1,ge1,shi2,ge2,shi,ge,a; void delay(uint z) { uint x,y; for(x=80;x>0;x--) for(y=z;y>0;y--); } void InitTimer0() { TMOD=0x01; TH0=0x3C; TL0=0x0B0; EA=1; ET0=1; TR0=1; } void Timer0Interrupt() interrupt 1 { TH0=0x3C;

TL0=0x0B0; t++; } void main() { InitTimer0(); miao=0; fen=10; xiaoshi=21; while(1) { if(t==20) { t=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; xiaoshi++; if(xiaoshi==24)

基于DSP的时钟系统设计策画

创新设计与实践实训报告题目: 基于DSP的时钟系统设计 院系名称:电气工程学院专业班级:自动化F0702班 学生姓名:学号: 212 指导教师:教师职称:副教授 起止日期:10.12.20地点: 2 # 210

创新设计与实践任务书

目录 目录....................................................................................................................................................... I II 引言. (1) 1方案论证与比较 (2) 数字时钟方案 (2) 数码管显示方案 (2) 2.硬件设计 (3) 总体设计 (3) 模块设计 (4) 2.2.1位选芯片74HC138 (4) 2.2.2驱动芯片74HC273 (4) 2.2.3数码管显示 (5) 2.2.4控制部分 (5) 系统总原理图 (8) 3.软件设计 (10) 程序流程图 (10) 程序清单 (10) 结论 (12) 致谢 (13) 参考文献 (14) 目录....................................................................................................................................................... I II 引言. (1) 1方案论证与比较 (2) 数字时钟方案 (2) 数码管显示方案 (2) 2.硬件设计 (3) 总体设计 (3) 模块设计 (4) 2.2.1位选芯片74HC138 (4) 2.2.2驱动芯片74HC273 (4) 2.2.3数码管显示 (5) 2.2.4控制部分 (5) 系统总原理图 (8) 3.软件设计 (10) 程序流程图 (10) 程序清单 (10) 结论 (12) 致谢 (13) 参考文献 (14)

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