当前位置:文档之家› 智能电子钟 (LCD显示)

智能电子钟 (LCD显示)

智能电子钟 (LCD显示)
智能电子钟 (LCD显示)

课程设计

课程名称单片机原理与接口技术题目名称智能电子钟

学生学院材料与能源学院

专业班级

学号

学生姓名

指导教师

2016年06月15日

广东工业大学课程设计任务书

智能电子钟(LCD显示)题目名称

学生学院材料与能源学院

专业班级

姓名

学号

一、课程设计的内容

用STC89C52RC单片机制作一智能电子钟:

1.设计并绘制硬件电路图;

2.绘制PCB板图(条件许可的话可进行PCB板的制作)并焊接好元器件;

3.编写程序并将调试好的程序固化到单片机中。

二、课程设计的要求与数据

以STC89C52RC单片机为核心,制作一个LCD显示的智能电子钟:

(1)计时:秒、分、时、天、周、月、年。

(2)自由调整时间。

(3)定时输出,可任意关断,重置。

(4)倒计时功能,最高可定时100小时。

(5)计时功能,最高可计时100小时。

(6) 计时精度:误差≤1秒/月(具有微调设置)。

(7) 键盘采用动态扫描方式查询。所有的查询、设置功能均由矩阵键盘完

成。

三、课程设计应完成的工作

1. 完成下载线的制作,为程序下载到单片机芯片中做好准备;

2. 完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序

固化到单片机中,最后进行硬件与软件的调试;

3. 撰写设计说明书。

四、课程设计进程安排

摘要

随着时代的进步和发展,单片技术已经普及到我们的生活、工作、科研等各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的LCD 显示时钟的设计,时间可由键盘调整。主要用到的芯片有单片机STC89C52RC、液晶显示屏LCD1602A模块、时钟芯片DS1302模块。

关键词:单片机STC89C52RC、LCD1602A模块、DS1302模块

目录

1 系统需要分析 (5)

1.1 智能电子钟研究背景及意义 (5)

1.2 系统实用功能分析 (5)

2 设计要求与方案 (6)

2.1 设计要求 (6)

2.1.1 基本要求............................................................................. 错误!未定义书签。

2.1.2发挥部分.............................................................................. 错误!未定义书签。

2.2 系统基本方案选择 (6)

2.2.1 芯片的选择 (6)

2.2.2 显示模块选择方案 (7)

2.2.3 时钟信号的选择方案 (7)

2.3 电路设计最终方案决定 (7)

3 系统硬件设计与实现 (8)

3.1 智能电子钟设计框图 (8)

3.2 系统硬件概述 (8)

3.3 硬件电路结构设计 (8)

3.3.1 单片机主控制模块的设计 (8)

3.3.2 显示模块的设计 (8)

3.3.3 LCD原理说明...................................................................... 错误!未定义书签。

3.3.4 开关模块说明 (9)

4 系统软件设计 (13)

4.1程序流程框图 (13)

4.2 LCD的初始化及显示程序 (14)

5 系统调试 (14)

5.1 软件调试 (14)

5.2 硬件调试 (14)

参考文献 (14)

附录 (15)

1 系统需要分析

1.1智能电子钟研究背景及意义

20世纪末,电子技术得到了飞速发展,在此推动下现代电子产品几乎渗透到了社会的各个领域,有力地推动和提高了社会生产力的发展和信息化程度,同时现代电子产品性能进一步提升,产品的更新迭代也越来越快。时间对人们来说是那么宝贵,工作的忙碌和繁杂易使人们忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己和他人造成很大的麻烦。平时我们要求上班准时,约会或者召开会议必然要提及时间,火车要准时到达,航班要准时起飞,工业生产中的很多环节也需要时间来确定工序替换时刻,等等。所以说能随时知道准确的时间是我们生活中必不可少的一件事情。

想知道时间,收表当然是很好的选择,但是在忙碌中,我们还需要一个“助理”时不时的给我们提醒时间。所以,手表最好有一个定时系统,随时提醒忘记时间的人。最早能够定时、报时的时钟属于机械式钟表,但这种时钟收到机械结构、动力和体积的限制,在功能性以及造价上都没有办法与电子时钟相媲美。

电子时钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人、家庭、车站、办公室等场所,成为人们日常生活中的必需品。由于集成电路的发展和石英晶振的广泛应用,使得电子时钟的精度远远超过老式钟表,钟表的数字化跟人们生产和生活带来了极大的方便,而且大大扩展了钟表的功能。诸如整点报时、定时报警、定时广播、自动启闭路灯、定时开关烘箱、同多动力设备、甚至各种定时电器的自动启动等,所有这些,都是以电子时钟为基础的。因此,研究电子时钟及其扩展应用,都有非常重要的现实意义。

1.2系统实用功能分析

本文研究的数字时钟是一种利用单片机原理实现对时、分、秒计时的装置,与机械时钟相比具有更高准确性和直观性,且无机械装置,具有更长的使用寿命。其实现了对时、分、秒的准确及时、计时及定时功能。

2 设计要求与方案

2.1 设计要求

以STC89C52RC单片机为核心,制作一个LCD显示的智能电子钟:

(1)计时:秒、分、时、天、周、月、年。

(2)自由调整时间。

(3)定时输出,可任意关断,重置。

(4)倒计时功能,最高可定时100小时。

(5)计时功能,最高可计时100小时。

(6) 计时精度:误差≤1秒/月(具有微调设置)。

(7) 键盘采用动态扫描方式查询。所有的查询、设置功能均由矩阵键盘完

成。

2.2 系统基本方案选择

2.2.1 芯片的选择

采用STC89C52,其是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM, MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

2.2.2 显示模块选择

采用LCD显示,电路较为简单,且在软件设计上也相对简单,功耗较低,能满足设计最优的要求。LCD1602A模块集成了驱动电路和背光等,能够显示16*02(16列2行)即32个字符。

2.2.3 时钟信号的选择

采用DS1302时钟芯片实现时钟计时。DS1302时钟芯片是一种高性能的时钟芯片,可自动实现对秒、分、时、日、周、月、年及闰年补偿的年进行计数,精度较高,256位的RAM作为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。且硬件电路较为简单,程序设计容易实现。

DS1302模块接有32.768K晶振和纽扣电池作为备用电源,可实现长时间不停地计时。

2.2.4 按键选择

选择4*4矩阵键盘作为功能实现和调节按键。矩阵键盘又称行列式键盘,它是用4条I/O线作为行线,4条IO线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键个数是4*4个。这种行列式键盘结构能够有效地提高单片机系统中I/O的利用率。

2.3 电路设计最终方案

宗上所述,对此次智能电子钟的方案选择为:采用STC89C52SC芯片作为主控制系统并提供定时,并由DS1302模块提供时钟,LCD1602A模块作为显示时间。

3 系统硬件设计与实现3.1 智能电子钟设计框图

3.2 系统硬件概述

该电路是由STC89C52SC单片机为控制核心,具有在线编程功能,低功耗,能在3V超低工作;晶振电路外接晶振;复位电路接按键复位系统;矩阵键盘由4*4行列式键盘构成;LCD显示模块由LCD1602A构成;时钟电路模块由DS1302芯片等组成。

3.3 硬件电路结构设计

3.3.1 单片机主控制模块的设计

图1为用proteus软件画的时钟系统原理图。

3.3.2 LCD显示模块

图2为LCD显示模块原理图。如图所示,时钟信号显示在LCD上,文字清晰可见而且

图1 时钟原理

省电也易于控制。数据的传输采用P0口,其引脚VSS接地,VDD接VCC,RS、RW、E端分别接单片机引脚P2.0、P2.1、P2.2。而VEE作为液晶显示器的灰度调节引脚,接一变阻器来改变其显示的清晰度。

3.3.3 矩阵键盘模块

图3为矩阵键盘模块。矩阵键盘又称行列式键盘,它是用4条I/O线作为行

线,4条IO线作为列线组成的键盘,8条线接到P1口上。在行线和列线的每一

个交叉点上,设置一个按键。这样键盘中按键个数是4*4个。这种行列式键盘结构能够有效地提高单片机系统中I/O的利用率。

矩阵键盘是嵌入式计算机系统中不可缺少的外围电路,是实现人机对话的纽带,借助键盘可以向计算机输入程序、置数、逻辑操作以及写入程序和程序检测等,可实现调试、计时、倒计时等功能。

图3 矩阵键盘

3.3.4 时钟系统模块

图4是时钟系统模块原理图。DS1302是美国 DALLAS 公司推出的一种

图4 时钟系统DS1302

高性能、低功耗的实时时钟芯片,附加31字节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.5~ 5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的RST端接P2.5口,SCLK端接P2.6口,I/O端接P2.7口,VCC1端接备用电源纽扣电池,VCC2接5.0V电源,X1、X2接32.768K 晶振。

3.3.5 蜂鸣器模块

图5 蜂鸣器模块

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。蜂鸣器I/O端接到P2.4口上,用三极管驱动,给低电平就能持续发声。

3.3.6 复位电路

图6 复位电路

图6为复位电路。只要按下按钮,给单片机RST口加上超过2个机器周期的高电平,就能把单片机复位。

3.3.7 晶振电路

图7为晶振电路。STC19C51RC单片机时钟信号由内部时钟方式产生,在XTAL1和XTAL2引脚外接晶振。图中,电容C1和C2的作用是稳定频率和快速起振,电容值22pF。晶振CXY的振荡频率为11.0592Hz。

图7 晶振电路4 系统软件设计

4.1

4.2 程序

具体程序见附录。

5 系统调试

5.1 软件调试

打开程序调试软件Keil uVision4,在里面新建一个工程,命名为:clock。接着新建文件,编写相应程序。编写好的程序进行编译。如有错误,按照提示修改错误,直到程序编译通过。

5.2 硬件调试

用proteus画好电路原理图,加上Keil uVision4生成的HEX文件进行仿真,并修改程序逻辑错误,直到仿真无错误。

参考文献

[1].李朝青.单片机原理及接口技术(第3版).北京航天航空大学出版社,2005

年10月.

[2].求是科技.单片机典型外围器件及应用实例.北京:人民邮电出版社,2006

年2月.

[3].谭浩强.C语言程序设计(第二版).北京:清华大学出版社,1999年12

月.

[4].阎石.数字电子技术基础(第五版).高等教育出版社,1983年4月.

附录

#include

#define uchar unsigned char

#define uint unsigned int

sbit rs=P2^0;

sbit rw=P2^1;

sbit e=P2^2; //1602

sbit rst=P2^5;

sbit sclk=P2^6;

sbit io=P2^7; //1302

sbit bee=P2^4; //蜂鸣器

uchar table[]=" 2016-06-12 MON"; //日期格式

uchar table1[]=" 00:00:00 A"; //时间格式

uchar time[]={11,1,11,11,00,00,00}; //年周月日时分秒

uchar code write_add[]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//1302写数据地址uchar code read_add[]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; //1302读数据地址

uchar n1,n2,y1,y2,r1,r2,s1,s2,f1,f2,m1,m2,xq;

uchar key;//矩阵键盘数值

uchar sp,sn1,sn2;

void delay(uint z) //延时函数

{

uint i,j;

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

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

}

void write_com(uchar com)//写1602命令{

rs=0;

rw=0;

e=0;

P0=com;

delay(5);

e=1;

delay(5);

e=0;

}

void write_data(uchar dat)//写1602数据{

rs=1;

rw=0;

e=0;

P0=dat;

delay(5);

e=1;

delay(5);

e=0;

}

void start() //1602初始化

{

write_com(0x01);//清屏

write_com(0x38);//16*2显示,5*7点阵,8位数据

write_com(0x0c);//显示开,光标关

write_com(0x06);//显示方式:AC加一,光标右移一格}

void show_init()//在1602显示时间格式

{

uchar num;

write_com(0x80);//第一行显示数据

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

{

write_data(table[num]);

};

write_com(0x80+0x40);//第二行显示

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

{

write_data(table1[num]);

}

}

void write_byte(uchar dat)//向1302写1byte数据

{

uchar i;

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

{

io=dat&0x01;

sclk=1;

sclk=0;

dat=dat>>1;

}

}

void write_1302(uchar add,uchar dat)//按地址向1302写数据{

rst=0;

sclk=0;

rst=1;

write_byte(add);

write_byte(dat);

sclk=1;

rst=0;

}

unsigned char read(uchar add)//按地址读取1302数据

{

uchar i,value=0x00;

rst=0;

sclk=0;

rst=1;

write_byte(add);

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

{

value=value>>1;

sclk=0;

if(io) value=value|0x80;

sclk=1;

}

sclk=1;

rst=0;

return(value);

}

void time_pors()//取时间函数{

m1=time[6]/16;//秒

m2=time[6]%16;

f1=time[5]/16;//分

f2=time[5]%16;

s1=time[4]/16;//时

s2=time[4]%16;

r1=time[3]/16;//日

r2=time[3]%16;

y1=time[2]/16;//月

y2=time[2]%16;

n1=time[0]/16;//年

n2=time[0]%16;

xq=time[1];//星期

}

void show_date()//显示日期{

write_com(0x83);

write_data(0x30+n1);

write_data(0x30+n2);

write_com(0x86);

write_data(0x30+y1);

write_data(0x30+y2);

write_com(0x89);

write_data(0x30+r1);

write_data(0x30+r2); }

void show_xq()//显示星期{

write_com(0x8d);

if(time[1]==1)//SUN

{

write_data(0x53);

write_data(0x55);

write_data(0x4e);

}

if(time[1]==2)//MON

{

write_data(0x4d);

write_data(0x4f);

write_data(0x4e);

}

if(time[1]==3)//TUE

电子钟程序及原理图

. ..页脚.

基于51单片机电子钟设计 利用如图所示电路,设计一个电子钟,要求如下: 1)显示容:时-分-秒 2)具有闹铃设定功能、时间调整功能 3)具有按键设置功能 一、显示容 显示时间:用六位7段数码管 闹铃提示:用8个发光二极管 设置提示:用8个发光二极管 二、按键功能 P3.2——功能设置键; P3.3——显示区切换键; P3.4——“+”键; P3.5——“-”键。 设置提示显示要求: 1)正常显示状态,8个发光二极管全灭; 2)时间调整状态,P1.7亮; 3)闹铃设定状态,P1.7和P1.6亮。 显示时间要求: 1)显示时-分-秒,分三个显示区。 功能设置键K1是一个多功能键: 按第一次,进入时间调整状态 按第二次,进入闹铃设定状态 按第三次,退出设置状态,时钟正常显示。 备注:其他键在K1退出设置状态时无效。 显示区切换键K2: 在设置状态,用于切换不同的显示区,每按一次,将切换一次。 “+”键K3:在设置状态,用于对相应的显示区数字进行累加,每按一次,数字加1。“-”键K4:在设置状态,用于对相应的显示区数字进行自减,每按一次,数字减1。程序: K1 BIT P3.2 K2 BIT P3.3 K3 BIT P3.4 K4 BIT P3.5 L1 BIT P1.7 L2 BIT P1.6 KEZT EQU 30H HOUR EQU 31H MINU EQU 32H SECO EQU 33H NHOU EQU 34H NMIN EQU 35H K2ZT EQU 36H

TIME EQU 37H TIM EQU 40H NTIM EQU 50H LED EQU P1 ORG 0000H AJMP START ORG 000BH AJMP DINGSHI ORG 100H START: ACALL RESET LOOP: ACALL KEYSET ACALL DISPLAY ACALL ZHISHI AJMP LOOP ;************************************** DINGSHI: MOV TH0,#3CH MOV TL0,#0B0H INC TIME MOV A,TIME CJNE A,#20,DINGEND MOV TIME,#0 INC SECO MOV A,SECO CJNE A,#60,DINGEND INC MINU MOV SECO,#0 MOV A,MINU CJNE A,#60,DINGEND INC HOUR MOV MINU,#0 MOV A,HOUR CJNE A,#24,DINGEND MOV HOUR,#0 DINGEND: RETI ;**************************************** RESET: MOV TMOD,#01H ;T0工作在方式1,12MHZ MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV HOUR,#23 MOV MINU,#59 MOV SECO,#58 MOV NHOU,#12

数字时钟程序

#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]);

电子时钟单片机【完整版】

烟台南山学院 单片机课程设计题目电子时钟 姓名: 所在学院 所学专业: 班级: 学号: 指导教师: 完成时间:

随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。 由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。 在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。 本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。本系统为多功能数字钟的系统。本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。 关键词:单片机 AT89S52 电子时钟汇编语言

电子时钟程序

+-+ 机电工程系 课程设计报告题目: 专业: 班级: 学号: 姓名: 同组人: 指导老师: 答辩日期:

一、绪论 当今世界但片机以飞快的速度在发展,了解和掌握单片机技术是我们机电系学生应该学习的课程之一,基于本学期对单片机的学习,现在对单片机语言所写出的电子时钟展开说明,现在生活很多东西都是离不开电子了,许许多多的东西都被电子产品所代替,时钟就是一种在我们生活之中很普通的电子产品,它虽然在单片机机之中算是一种比较简单的东西,但它在我们生活在是普遍存在的,它能让我们对更多的电子产品有所了解,所以我们想要了解更多的电子产品,电子时钟也是我们应该了解的,所以我们对电子时钟展开课程设计,并对其工作原理及工作方式进行了解,这样能让我们初步学习到有关的电子产品。设计过程中我们将对生活中电子时钟的工作方式进行了解,接着我们要在学过的单片机语言基础上,对电子时钟这样的工作方式进行单片机解释,有单片机语言解释,为什么电子时钟要这样工作,接着我们有汇编语言写出电子时钟程序,在报告中我们将对单机汇编语言的有关语句进行解释,并对单片机的电路板的工作原理进行解释,并对电子时钟工作方式进行说明。 二、对本课程设计的分析 2.1 工作原理 当电子时钟上电时候将在电子时钟上显示23-30-00,带表现在是时间,电子时钟将按正常的时间一样走动,有对应的四个按钮用来调整时钟所对应的时间,第一个按钮对应设置按钮,当它按下去时候,时钟将停止走动,这时候将进入调时间模式,第二个按键用来选择调的是时还有分还秒,第三个按键用来加运算的,

第四个按键用来减运算的。 2.2 P3口对应的按键操作功能系统框图 开始 P3.0是否按 下 P3.1是否按 下 YES P3.2是否按下 P3.3是否按下NO P3.3是否按下21H 是否为几 YES P3.2是否按下P3.3是否按下P3.2是否按下NO 时加一 YES NO 时减一 是否为一 YES NO 分加一 分减一 是否为2NO YES YES NO 秒加一 秒减一 说明:以上框图是系统版上对应的四个按键对电子时钟的操作功能,在什么情况下,对应的按键实现什么样的功能。 三、 主要电路模块的实现方案比较及选择

电子时钟程序设计

1.设计目的 电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究电子时钟及扩大其应用,有着非常现实的意义。 2.设计内容 设计思想 针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚

结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

设计元件 元件 规格 数量 单片机 AT89C51 1 晶振 12MHz 1 晶振电容 30pF 2 按键 4 准备器件、搭接电 路 熟悉硬件 了解各引脚功 能 分块设计各部分电 路 将分块的电路组合 认真学习单片机汇编 语言 完成整体电路图 确定变成结构和思 路 综合各程序完成整体 程序 编辑各个程序模块 用Proteus 画出电路图 调试程序,进行修改 对仿真中出现的问题 进行改正 画出仿真图进行仿 真 仿真成功 软硬件结合,完成任务 书要求 验证硬件电路 成功 进行扩展

电子时钟设计方案及程序

大学英语四六级考试网上报名操作流程 友情提醒: 1.进行网上报名前请认真阅读操作流程; 2.本次报名系统开通时间为2012年9月11日9:00至9月18日16:00; 3.因以前没有设置登录密码,导致无法进入报名系统的同学,请尝试使用学号作为密码登录;4.如出现浏览器不兼容的情况,建议使用IE浏览器。 一、进入教务信息系统 登录南京晓庄学院教务处的网站(可通过学校主页进入,也可直接输入网址 https://www.doczj.com/doc/f66641151.html,),点击左侧“快速导航”中的“教务信息系统”图标,进入教务信息 系统页面,如图1所示。 图1 教务信息系统页面 二、进行四六级网上报名 在图1所示页面左侧的“登录系统”区域中输入学号、密码、验证码,如图2所示。

1 登录系统用户名、密码输入框图2 所示的界面。中的“登录”按钮,可进入如图3点击图2 3 教务信息网络登录后的界页图,展开该菜单,如图页面中左侧的“考试管理?等级考试管 理”菜单左侧的点击图3 所示。4 展开菜单图4 所示的页面。中展开的“学生报名”菜单,即可在右侧出现如图点击图45 2

报名选项界面图5 、报名考试1”链接,即出现右侧主界面中“学生网上英语等级考试报名”前方的“5点击图6如图所示的界面。

报名界面图6 3 前方的按钮即可实现大学根据自己需要报名的等级,如要报名四级,点击CET-4英语四级的报名,报名成功后在“报名情况”一栏中即出现“已报名”字样,如图7所示。 图7 报名界面 直接关于浏览器窗口即可完成报名工作。 2、取消报名 若报名之后,在规定的网上报名时间内出现各种原因不想参加考试,可以在登录后点击 相应等级后面的按钮。 3、更改报名级别 若报名之后,发现自己选择的报名等级有误,可以先取消报名,再重新选择其他等级进行报名(报考各测试等级的条件必须符合相关规定)。 4

可调电子时钟程序

#include unsigned char led[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0 x00,0xFF}; //用一维数组定义0-9 unsigned char a[4]; unsigned char second=0,minute=0,hour=12; unsigned char minute1=0,hour1=0,zdbs=0; unsigned char b[4]={0xFE,0xFB,0xEF,0xBF}; //扫描 unsigned char k=0; unsigned int temp; // 记录1000毫秒为1秒的变量 unsigned char M,S_flag,md=0; //M是模式,更新时间的4种模式加上正常模式S_flag闪烁标志 sbit K1=P3^0; //设置键 sbit K2=P3^1; //增加键 sbit K3=P3^2; //减少键 void delay(unsigned n) //0.2毫秒 { int x,y;

for(x=0;x

电子钟(带电路图及程序)

《单片机技术》课程设计任务 一、设计题目:基于单片机并行口的电子钟的设计 二、适用班级:电子0303 三、指导教师:王韧 四、任务与要求: 在智能化仪器仪表中,控制核心均为微处理器,而单片机以其高性能、高速度、体积小、价格低廉、稳定可靠而得到广泛应用,是设计智能化仪器仪表的首选微控制器,单片机结合简单的接口电路即可构成电子钟,它可广泛应用于工业、农业、日常生活等领域,与传统钟表相比较,它具有高精度、高可靠性、操作方便、价格便宜、智能化等特点,是钟表的一个发展方向,具有一定的实用价值。 1、本课题任务如下: 设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。 2、本课题要求如下: (1)在AT89S51的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P2.5~P2.0作LED的位控输出线(P2.5~P2.0对应于LED5~LED0),P1口外接四个按键A、B、C、D(对应于P1.0~P1.3)。 (2)、利用六个LED显示当前时间。 (3)、四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1。 (4)、单片机采用AT89S51,f osc=12MH Z。

基于STC89C52多功能电子时钟系统程序+原理图

一、设计任务 设计制作一台以控制器为核心的多功能电子时钟系统 二、设计要求: ①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。(PC主机端可利用高级语言进行人机界面设计) ②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。 ③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。高音频率为1KHz; ④.在系统校准模式时,系统具有快速校准时间的功能。 ⑤.在秒表计时模式时,可兼做比赛时间记录表。秒表记时的精度为0.1秒,由3个键分别控制秒表的启动、清零、记录功能,可连续记录3组时间,并能够显示记录时间。 ⑥.系统显示器采用LCD液晶显示器1602或其它显示器件,并采用键盘对相关数据进行设置与操作。 原理图 设计制作一台以控制器为核心的多功能电子时钟系统 二、设计要求: ①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。(PC主机端可利用高级语言进行人机界面设计)

(注:此三种模式可以通过SET键盘来回切换,在正常时钟模式,第二排显示S:time,校准模式显示S:adjst,秒表模式,是TN~T3:四个秒表模式); ②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。 (注:这个已经全部显示了,含星期) ③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。高音频率为1KHz; (注:这个都实现了,要验证的话就是将时钟调整到59分后验证即可) ④.在系统校准模式时,系统具有快速校准时间的功能。 (注:按SET键进入校正模式可以对时钟进行校正,UP向上,DOWN键向下,按STOP键保存退出,遗憾的是,这个正在调节的参数无法反白显示) ⑤.在秒表计时模式时,可兼做比赛时间记录表。秒表记时的精度为0.1秒,由3个键分别控制秒表的启动、清零、记录功能,可连续记录3组时间,并能够显示记录时间。 (注:按SET键进入秒表模式,按0K键启动,STOP键清零,按UP键记录,可以对100ms的定时器开始计时,最大999.9秒,按下UP键盘,则记录一个,总共记3个,T1-T3,按SET键退出) ⑥.系统显示器采用LCD液晶显示器1602或其它显示器件,并采用键盘对相关数据进行设置与操作。 乖乖,真的是1602显示的啊。 /******************************************/ /*File Name: main.c */ /*Function : The entrance of all fuctions */ /*Author : WuYingjian */ /*V ersion : V1.0 */ /*Date : 2012.11.03 */ /* All Rights Reserved. */ /******************************************/ #include #include #define uint unsigned int #define uchar unsigned char #define nop _nop_ void write_command(uchar tempdata);

单片机汇编程序电子闹钟完整版

单片机汇编程序电子闹 钟 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

电子闹钟课程设计 摘要:本课程设计主要是通过单片机系统,综合运用定时器、中断、数码显示等知识设计一个可定时的电子钟。它包括系统总体方案及硬件设计,软件设计,Proteus软件仿真等部分。 硬件设计的主要任务是根据总体设计要求,以及在所选机型的基础上,确定系统扩展所要用的存储器,I/O电路及有关外围电路等然后设计出系统的电路原理图。 合理的软件结构是设计出一个性能优良的单片机应用性系统软件的基础,因此必须充分重视。编写完程序后在用Proteus软件仿真检查设计是否合理。一.课程设计的概况 通过对51单片机的扩展,接键盘,显示器等相应的外围器件。在LED显示器中分成静态显示和动态显示两类,在本设计中主要用了它的动态显示功能,动态显示利用了人视觉的短暂停留,在数据的传输中是一个一个传输的,且先传输低位。键盘是由若干个按键组成的开关矩阵,是一种廉价的输入设备。键盘通常包括有数字键,字母键以及一些功能键。操作人员可以通过对键盘向计算机输入数据,地址,指令或其他的控制命令,实现简单的人机对话。这里采用非编码式键盘。通过51单片机的P1口扩展出独立连接式键盘。外围扩展复位,时钟电路,利用软件源程序代码实现相应的功能。 二.课程设计实现的功能: 1.能显示时时-分分-秒秒。 2.能够设定定时时间,修改定时时间。 3.定时时间到能发出警报声或者启动继电器,从而控制电器的起停。 三.设计方案 使用是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。 本系统采用单片机AT89C51作为本设计的核心元件,利用7段共阴LED作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间电器的起停时间到,从而控制电器的起停。

电子钟程序及原理图

基于51单片机电子钟设计 利用如图所示电路,设计一个电子钟,要求如下: 1)显示内容:时-分-秒 2)具有闹铃设定功能、时间调整功能 3)具有按键设置功能 一、显示内容 显示时间:用六位7段数码管 闹铃提示:用8个发光二极管 设置提示:用8个发光二极管 二、按键功能 P3.2——功能设置键; P3.3——显示区切换键; P3.4——“+”键; P3.5——“-”键。 设置提示显示要求: 1)正常显示状态,8个发光二极管全灭; 2)时间调整状态,P1.7亮; 3)闹铃设定状态,P1.7和P1.6亮。 显示时间要求: 1)显示时-分-秒,分三个显示区。 功能设置键K1是一个多功能键: 按第一次,进入时间调整状态 按第二次,进入闹铃设定状态 按第三次,退出设置状态,时钟正常显示。 备注:其他键在K1退出设置状态时无效。 显示区切换键K2: 在设置状态,用于切换不同的显示区,每按一次,将切换一次。 “+”键K3:在设置状态,用于对相应的显示区数字进行累加,每按一次,数字加1。 “-”键K4:在设置状态,用于对相应的显示区数字进行自减,每按一次,数字减1。程序: K1 BIT P3.2 K2 BIT P3.3 K3 BIT P3.4 K4 BIT P3.5 L1 BIT P1.7 L2 BIT P1.6 KEZT EQU 30H HOUR EQU 31H MINU EQU 32H SECO EQU 33H NHOU EQU 34H NMIN EQU 35H K2ZT EQU 36H TIME EQU 37H

ORG 0000H AJMP START ORG 000BH AJMP DINGSHI ORG 100H START: ACALL RESET LOOP: ACALL KEYSET ACALL DISPLAY ACALL ZHISHI AJMP LOOP ;************************************** DINGSHI: MOV TH0,#3CH MOV TL0,#0B0H INC TIME MOV A,TIME CJNE A,#20,DINGEND MOV TIME,#0 INC SECO MOV A,SECO CJNE A,#60,DINGEND INC MINU MOV SECO,#0 MOV A,MINU CJNE A,#60,DINGEND INC HOUR MOV MINU,#0 MOV A,HOUR CJNE A,#24,DINGEND MOV HOUR,#0 DINGEND: RETI ;**************************************** RESET: MOV TMOD,#01H ;T0工作在方式1,12MHZ MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV HOUR,#23 MOV MINU,#59 MOV SECO,#58 MOV NHOU,#12 MOV NMIN,#0 MOV KEZT,#0 MOV K2ZT,#0 MOV TIME,#0 CLR F0

AT89C2051制电子钟时钟源程序

AT89C2051制电子钟时钟源程序 本程序来自于互联网,站长尚没试验,但是,该程序给出了详细的说明,相信对大家很有帮助!因此,站长向原作者表示真诚谢意! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; AT89C2051时钟程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; 定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用, ; P3.7为调整按钮,P1口为字符输出口,采用共阳显示管。 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 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 ; 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秒定时用初值(50MS×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 ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值(低8位修正值) MOV A,#3CH ;高8位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT0 ;20次中断未到中断退出 ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加1程序(加1秒操作) MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于60秒时中断退出 ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)

电子钟e程序

#include #define uchar unsigned char #define uint unsigned int sbit DATE=P3^7; //数据口 sbit CLK=P3^6; //时钟口 sbit RST=P1^3; sbit SCLK=P1^1; sbit IO=P1^2; sbit key1=P3^2; sbit key2=P3^3; sbit key3=P3^4; //sbit ground=P3^3; uchar sum1=0,i=0,days; uchar table[]={"日期年月日"}; uchar table1[]={"时间点分秒"}; uchar table3[]={" "}; uchar table4[]={"电子万年日历"}; uchar table5[]={"星期:"}; uchar *table2[]={"---","星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; uchar datetime[7];//读取的日期时间 uchar sum,j,week1,ground; uint temp; void delay(uint z);//延时函数; void write_a_byte_to_1302(uchar x) ; uchar week(uchar,uchar,uchar); // 星期转换 uchar read_a_byte_from_1302(); uchar read_date(uchar addr); //读取数据 void gettime(); void format_datetime(uchar y,uchar *a); void delay(uint z)//延时函数 { uint x,y; for(x=0;x

单片机电子日历(电子时钟)程序

51单片机电子日历(电子时钟)程序 经过两天的调试,完成了51单片机电子日历课程设计,现在把C程序源代码帖出来纪念一下:~ 硬件实验箱是伟福LAB2000实验箱。 程序代码: /****************************************************************************/ /* 电子日历,有时间显示、闹铃、日期、秒表及键盘设置功能*/ /* 功能键A: 设置位数字+1 闹钟模式下为闹钟开关秒表模式下为记时开关*/ /* 功能键B: 设置位数字-1 闹钟模式下为闹钟开关*/ /* 功能键C:设置模式及设置位选择秒表模式下为清零键*/ /* 功能键D:在四种工作模式下切换设置闹钟开关*/ /* 曹宇03电子0201029 */ /* 2006.6.3 更新*/ /* 中央民族大学*/ ***********************************************************************/ #include #include /***************这里设置程序初始化时显示的时间****************/ #define SET_HOUR 12 /*设置初始化小时*/ #define SET_MINUTE 00 /*设置初始化分钟*/ #define SET_SECOND 00 /*设置初始化秒数*/ /*************************系统地址****************************/ #define BASE_PORT 0x8000 /*选通基地址*/ #define KEY_LINE BASE_PORT+1 /*键盘行线地址*/ #define KEY_COLUMN BASE_PORT+2 /*键盘列线地址*/ #define LED_SEG BASE_PORT+4 /*数码管段选地址*/ #define LED_BIT BASE_PORT+2 /*数码管位选地址*/ #define LED_ON(x) XBYTE[LED_BIT]=(0x01<<1)

基于51单片机的电子钟C语言程序

基于51单片机的电子钟C语言程序 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /*定义并初始化变量*/ uchar seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uint k ); //延时子程序 void delay1(uchar h ); void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay1 (uchar h) { uchar j; while((h--)!=0) { for(j=0;j<125;j++) {;} } } void delay (uint k) { uint a,b,c; for(c=k;c>0;c--)

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #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[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,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]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

基于单片机的电子钟C语言程序

基于单片机的电子钟C语 言程序 This model paper was revised by the Standardization Office on December 10, 2020

基于51单片机的电子钟C语言程序 #include #include #defineucharunsignedchar #defineuintunsignedint /*七段共阴管显示定义*/ ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /*定义并初始化变量*/ ucharseconde=0; ucharminite=0; ucharhour=12; ucharmstcnt=0; sbitP1_0=P1^0;//second调整定义 sbitP1_1=P1^1;//minite调整定义 sbitP1_2=P1^2;//hour调整定义 /*函数声明*/ voiddelay(uintk);//延时子程序 voiddelay1(ucharh); voidtime_pro();//时间处理子程序 voiddisplay();//显示子程序 voidkeyscan();//键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ voiddelay1(ucharh) { ucharj; while((h--)!=0) { for(j=0;j<125;j++) {;} } } voiddelay(uintk) { uinta,b,c; for(c=k;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }

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