基于单片机的电子钟C语言程序
基于单片机的多功能数字时钟设计
技术平台
采用碱性电解液电沉积活性锌粉,选取电解液浓度1.25g/cm3,电流密度150mA/cm2,电解槽温度只需控制在室温,锌粉洗涤后真空干燥,所制得的锌粉比表面积大于0.8m2/g,具有较高的电化学活性,能满足锌银电池生产需要,生产效率也达到批量生产要求。
参考文献:
[1]侯新刚,王胜,王玉棉.超细活性锌粉的制备与表征[J].粉末冶金工业,2004,14(1):10-13.
[2]李永祥,黄孟阳,任锐.电解法制备树枝状锌粉工艺研究[J].四川有色金属,2011,(3):45-50.
[3]胡会利,李宁,程瑾宁,等.电解法制备超细锌粉的工艺研究[J].粉末冶金工业,2007,17(1):24-29.
基于单片机的多功能数字时钟设计
刘晓萌
(安徽职业技术学院铁道学院/合肥铁路工程学校,安徽 合肥 230011)
摘 要:常见的数字钟有时间、闹钟等功能。本文基于单片机、温度传感器、液晶显示屏、时钟芯片等硬件设计了多功能数字时钟,软件部分采用C语言编程实现。该多功能数字时钟包含万年历、节日、节气、温度信息显示等功能,并且在断电的情况下也能正常工作。
关键词:单片机;多功能数字时钟;C语言编程
0 引言
人类对于时间的需求从古到今始终存在。古代有浑天仪、日晷,近代出现了机械时钟。如今,传统的计时工具,甚至是电子钟都已经满足不了人们多元化的时间需求。
数字时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的应用空间[1]。使用数字时钟,用户可以获取精确到秒的时间信息,或是对时钟进行自定义的操作,为现代社会提供了极大的方便[2]。
51单片机时钟C语言代码
51单片机时钟C语言代码
#include
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint);
void keyscan();
void display(uchar,uchar,uchar,uchar,uchar,uchar);
uchar
num,num1,num2,num3,shishi,shige,fenshi,fenge,mshi,mge;
void main()
{
TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display(shishi,shige,fenshi,fenge,mshi,mge);
keyscan();
}
}
void display(uchar shishi,uchar shige,uchar fenshi,uchar fenge,uchar mshi,uchar mge)
{
dula=1;
P0=table[shishi];
51单片机时钟代码(带秒表闹钟功能).
s1num++;
while(!s1);
di();
if(s1num==1)
{
TR0=0;
write_com(0x80+0x40+13);
delay(5);
write_com(0x0f);
delay(5);
}
if(s1num==2)
{
write_com(0x80+0x40+10);delay(5);
}
di();
if(s1num==1)
{
sec++;
if(sec==60)
sec=0;
write_time(10,sec);
write_com(0x80+0x40+13);delay(5);
}
if(s1num==2)
{
min++;
if(min==60)
min=0;
write_time(7,min);
write_com(0x80+0x40+10);delay(5);
}
if(s4num==4)
{
s4num=0;
write_com(0x0c);
TR0=1;
}
}
}
if(s4num!=0)
{
if(s5==0)
51单片机数码管显示时钟(C语言)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RST = 0;//传送数据结束 _nop_(); EA = 1; }
/******************************************************************************
* *函数名
: Ds1302Read
* 函数功能 *输 入
: 读取一个地址的数据 : addr
* 输出
:无
*******************************************************************************
/
void main() {
Ds1302Init(); Timer0Configuration(); while(1) {
Ds1302ReadTime(); disp[7] = DIG_CODE[TIME[0]&0x0f]; disp[6] = DIG_CODE[TIME[0]>>4]; disp[5] = 0X40; disp[4] = DIG_CODE[TIME[1]&0x0f]; disp[3] = DIG_CODE[TIME[1]>>4]; disp[2] = 0X40; disp[1] = DIG_CODE[TIME[2]&0x0f]; disp[0] = DIG_CODE[TIME[2]>>4]; }
基于51系列单片机与DS1302时钟芯片的电子时钟C语言Proteus仿真报告
基于单片机的电子时钟
:
班级:
学号:
指导教师:
完成日期:
I / 20
目录
摘要
一、引言 (1)
二、基于单片机的电子时钟硬件选择分析 (2)
2.1主要IC芯片选择 (2)
2.1.1微处理器选择 (2)
2.1.2 DS1302简介 (4)
2.1.3 DS1302引脚说明 (4)
2.2电子时钟硬件电路设计 (5)
2.2.1时钟电路设计 (6)
2.2.2整点报时功能 (7)
三、Protel软件画原理图 (8)
3.1系统工作流程图 (8)
3.2原理图 (9)
四、proteus软件仿真与调试 (9)
4.1电路板的仿真 (9)
4.2软件调试 (9)
五、源程序 (10)
六、课设心得 (13)
II / 20
七、参考文献 (13)
基于单片机电子时钟设计
摘要
电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。
本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。
本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。
该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
基于C51单片机的数字时钟课程设计(C语言带闹钟)
单片机技术课程设计
数字电子钟
学院:
班级:
姓名:
学号:
教师:
摘要
电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。
关键词:
电子钟 AT89C52 硬件设计软件设计
目录
NO TABLE OF CONTENTS ENTRIES FOUND.
一、数字电子钟设计任务、功能要求说明及方案介绍
1.1 设计课题设计任务
设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明
设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明
单片机C语言_电子时钟程序
#include
#define uint unsigned int
#define uchar unsigned char
unsigned char key2;
bit ding=1;
unsigned char Getkey(void);
uchar a,n=0,shi,fen,miao;
void delay01s(void);
uchar LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar LED1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//有小数点的void init(); //函数声明
void Delay(unsigned char z);//函数声明
void display(); //函数声明
//函数声明
void main() //函数声明
{
P1=0xfe;//对P1口赋初值
init(); //函数调用
while(1)
{
//函数调用
key2=Getkey();
switch(key2)
{
case 1:
shi++;
if(shi==24)
{
shi=0;
}
break;
case 2:
fen++;
if(fen==60)
{
fen=0;
}
break;
case 3:
if(fen!=0)
fen--;
if(fen==24)
{
fen=0;
}
break;
case 4:
ding=~ding;
default:
break;
}
display(); //函数调用
}
}
void init()
51单片机带字库液晶12864ds1302数字时钟c源程序(无按键修改功能)
51单片机+带字库液晶12864+DS1302数字时钟C 源程序(无按键修改功 能)过两天的搜索与调试,在别人程序的基础上,不断修改,终于调试成功了 这个程序。目前还不能修改时间与日期,只是以预定时间以始。
适用于开发板:51单片机(AT89S52 +带字库液晶
12864(ST7920)+DS1302实时时钟)
实现功能:
简单,数字时钟 +日期(以后会不断完美)。
C 语言源程序如下:
#include
52.h>
#include #define uchar unsigned char #define uint unsigned int /*DS1302 端 口设置 */
sbit SCK=P3A 6;
sbit SDA=P3A4;
sbit RST = P3A5;
bit
ReadRTC_Flag;
/* 12864 端口定义 */ #define LCD_data P0 sbit LCD_RS = P2A4;
sbit LCD_RW = P2A5; sbit LCD_EN = P2A 6;
//液晶使能控制
sbit PSB 二卩2八1; //并口控制 //DS1302 时钟 //DS1302 IO // DS1302 复位 //读DS1302全局变量
//带字库液晶 12864数据口
// 寄存器选择输入
// 液晶读/写控制
sbit RES=P2A3;
uchar code dis1[] = {"电子设计天地"};// 液晶显示的汉字uchar code dis2[] = {"有志者,事竟成!"};
uchar code dis4[] = {'0','1','2','3','4','5','6','7','8','9'};unsigned char temp;
基于单片机的智能闹钟设计
基于单片机的智能闹钟设计
摘要:本文通过单片机来实现电子打铃系统。基于单片机的智能闹钟设计包括:电源电路,单片机最小系统及扩展LCD显示电路,4*4矩阵键盘电路,打铃系统电路。本设计采用C语言编程,使用模拟软件驱动电路以实现其设计的各项功能。本文主要介绍了在设计过程中智能数字闹钟的软、硬件部分及在设计调试过程中遇到的一些问题以及解决方法。
关键词:单片机;智能数字闹钟;电子打铃系统
1
Intelligent alarm clock design based on MCU Abstract:In this paper, through the microcontroller to achieve electronic bell system. Includes a smart alarm clockdesign based on SCM: power supply circuit, MCU minimum system and the expansion of LCD display circuit,4*4 matrix keyboard circuit, bell system circuit. This design uses the C language programming, the use of simulation software with the driving circuit designed to achieve the various functions. This paper mainly introduces the soft,hardware part of intelligent digital alarm clock in the design process and some problems in the design of the process of debugging and solutions. Keywords: Single-Chip Microcomputer; Intelligent digital alarm clock; bell system
电子钟C语言源程序
/*************** writer:shopping.w ******************/ #include
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit IO = P1^0;
sbit SCLK = P1^1;
sbit RST = P1^2;
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2;
uchar *WEEK[]=
{
"SUN","***","MON","TUS","WEN","THU","FRI","SAT"
};
uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};
uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};
uchar DateTime[7];
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void Write_A_Byte_TO_DS1302(uchar x)
{
uchar i;
for(i=0;i<8;i++)
{
IO=x&0x01;SCLK=1;SCLK=0;x>>=1;
}
}
uchar Get_A_Byte_FROM_DS1302()
{
uchar i,b=0x00;
for(i=0;i<8;i++)
{
b |= _crol_((uchar)IO,i);
SCLK=1;SCLK=0;
基于单片机的电子钟设计
基于单片机的电子钟设计
摘要:
电子钟是一种普遍使用的时钟类型。通过单片机,可以实现数字
时钟的各种功能,例如:时间显示、闹钟功能、温度显示等。本文介
绍了基于单片机的电子钟设计方案,其中包括硬件系统的设计和程序
代码的实现。该电子钟的基本功能包括:时钟模式、闹钟模式、温度
显示和日期显示。设计方案使用的单片机是AT89C52,时钟模块为
DS1302。实验结果表明,该电子钟系统具有稳定性高、精度高、实用
性强等特点。
关键词:单片机、电子钟、DS1302
1. 概述
电子钟是目前流行的现代时钟类型之一。通过单片机,可以实现
数字时钟的各种功能,例如:时间显示、闹钟功能、温度显示等。作
为一种普遍应用于家庭以及公共场所的计时工具,电子钟能够提高人
们的时效性、管理效率。
本文将介绍基于单片机的电子钟设计方案,其中包括硬件系统的
设计和程序代码的实现。该电子钟的基本功能包括:时钟模式、闹钟
模式、温度显示和日期显示。设计方案使用的单片机是AT89C52,时钟模块为DS1302。实验结果表明,该电子钟系统具有稳定性高、精度高、实用性强等特点。
2. 硬件设计
2.1 系统原理
系统的核心是AT89C52单片机,其包括了8051架构下所有标准
的特殊功能寄存器以及升级的功能模块。DS1302是常用的实时时钟模块,它包含一个时钟/日历的B类时钟芯片、一个31个字节的静态RAM 以及一个摆振电路。通过与AT89C52的串行通信接口,可以实现时钟
芯片与单片机的通信。
2.2 电路设计
电路设计包括AT89C52单片机、DS1302时钟芯片、4个7段数码管以及相关的外围元件。其中,输入电源电压为5V直流电压,4个7段数码管均采用共阴极的连接方式。
基于单片机C语言电子时钟完整版(闹钟,整点报时)
《单片机技术》课程设计说明书
数字电子钟
系、部:电气与信息工程学院
学生姓名:
指导教师:职称
专业:
班级:
完成时间:2013-06-07
摘要
电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。
关键词电子钟;AT89S52;硬件设计;软件设计
ABSTRACT
Clock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.
单片机电子钟c语言程序
单片机电子钟程序设计实习报告
单片机LCD1602电子钟毕业论文
这次嵌入式系统综合实习已经结束了,哎..... 在网络发现很多计算机专业的毕业生都是以电子钟为题的毕业论文,个人感觉做一个电子钟程序设计的技术含量,技术水平都不高。呵呵个人还是比较偏向于软件开发的,比较喜欢vc++开发。
一、引言
1.1课题的背景及目的
随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行对时间进行调整以及把时、分、秒用LCD显示的电子钟。
电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌
握各种组合逻辑电路与时序电路的原理与使用方法
1.2课题的内容要求及研究方法
①时间以24小时为一个周期;
②显示时、分、秒;
③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;
本文先按照设计的一般步骤,先选定用单片机实现的方案,了解设计要求,再分别从硬件系统设计和软件系统设计两个宏观方面着手.然后大量阅读相关资料,硬件方面,熟练单片机工作基本原理,查出相关元器件的参数,八个八段数码管,继电器等性能.然后画出系统框图和单元电路原理图,再对系统工作原理按照单元电路作简单的说明。软件方面,熟悉编程语言,查找相关子程序.熟悉使用Keil uVision2开发软件及STC-ISP下载软件.把原器件按电路原理图安装.最后再对硬件和软件系统进行调试和仿真。课题的内容是要求设计一款电子钟,而且要求计时准确,显示直观,清晰,时能够精确到秒。最后设计出来的产品,要求电路简洁,稳定性好。
基于单片机的电子钟C语言程序
基于单片机的电子钟C语言程序June 8th, 2022, what a day of hard work.
基于51单片机的电子钟C语言程序
include<reg51.h>
include<absacc.h>
defineucharunsignedchar
defineuintunsignedint
/七段共阴管显示定义/
ucharcodedispcode={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 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调整定义
/函数声明/
voiddelayuintk;//延时子程序
voiddelay1ucharh;
voidtime_pro;//时间处理子程序
voiddisplay;//显示子程序
voidkeyscan;//键盘扫描子程序
//
/延时子程序/
//
voiddelay1ucharh
{
ucharj;
whileh--=0
{
forj=0;j<125;j++
{;}
}
}
voiddelayuintk
{
uinta,b,c;
forc=k;c>0;c--
单片机c 语言编程时钟及闹钟程序
一·功能
1、计时功能,数码管显示数值从00:00:00--23:59:59循环替换,且周期时间与实际时间吻合。
2、定时闹钟功能,按下“定时”键后,可以设定所需要的任意时间,定时完成后,当到达设定时间后,蜂鸣器发声。
3、调整时间功能,根据此项功能可将时钟调至正确的时间。
4、查看定时功能,当设定完成后可以查看上次定时的时间,且能在此基础上进行重新定时。
二·按键说明
设定键:按一次开始设定时间,并将设定过程显示在数码管上。若未按此键,则其他按键无效。设定过程中,再按一次此键,定时结束,数码管显示返回时钟。当第一次按下设定键时,显示值为00:00:00,在此基础上调节定时时间。第一次设定完成后,以后再按设定键,显示初值则为上次定时的时间。
确定键:在定时过程中按下此键,则保留当前设定的时间为定时时间。若定时过程未按此键,定时无效。
向上键:按下此键,使得当前设定值在现有数值上加一,当加至满位时,当前值变为零。
向下键:按下此键,使得当前设定值在现有数值上减一,当减至零时,当前值变为满位减一。
向左键:按下此键,使得设定值移向左边一位,若已经在最左边,则移至最右边。
向右键:按下此键,使得设定值移向右边一位,若已经在最右边,则移至最左边。三·具体操作演示
(一)·定时及查看定时演示
1.仿真开始。如图:
2、按键如图:
3、按下设定键,开始设定时间,如图:
4、如图所示,当前设定时位。按向上键,使数值加一。
5、按下向右键,设定位移至分位。
6、按下向下键,使数字减一。
7、按确定键,确定当前设定的时间。再按设定键,退出定时,开始时钟显示。
51单片机数码管电子时钟C程序
//**单片机stc89c52, 8位共阴数码管12M晶振
//*******P0 位选,P2 段选❖******//
#include 〃reg52・ h〃
#define uchar unsigned char
#define uint unsigned int
uchar code tab[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x40, Oxff}; uchar n;
uchar hh, mm, ss;
uchar nhh, nmm, nss;
uint year;
uchar day, mon, week;
uchar hhs, hhg, mms, mmg, sss, ssg;
uchar days,dayg, mons, mong;
uchar nhhs, nhhg, nmms, nmmg, nsss, nssg;
uchar setl=l, set2=l;
sbit dula=P3 3;
sbit fm=P3 2;
sbit kl二P3"4;
sbit k2二P3"5;
sbit k3二P3飞;
sbit k4二P3"7;
uchar tablel[] = {31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 〃闰年uchar table2[] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //非闰年void jishi ();
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于 5 1 单片机的电子钟 C 语言程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
/* 七段共阴管显示定义*/
ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};
/* 定义并初始化变量*/
ucharseconde=0;
ucharminite=0;
ucharhour=12;
ucharmstcnt=0;
sbitP1_0=PM0;//seco nd 调整定义
sbitP1_ 仁P1A1;//mi nite 调整定义
sbitP1_2=P1A2;//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--);
} /************************* /* 时间处理子程序*/
*/
voidtime_pro(void)
{
if(seconde==60)// 秒钟设为60 进制
{seconde=0;
minite++;
if(minite==60)// 分钟设为60 进制
{minite=0;
hour++;
if(hour==24)// 时钟设为24 进制
{hour=0;}
}
}
}
/*****************************/
/* 显示子程序*/ voiddisplay(void)
{
P2=0xfe;
P0=dispcode[hour/10];// 显示小时的十位delay1(4);
P2=0xfd;
P0=(dispcode[(hour%10)])|0X80;// 显示小时的个位delay1(4); P2=0xfb;
P0=dispcode[minite/10];// 显示分的十位delay1(4);
P2=0xf7;
P0=(dispcode[minite%10])|0X80;// 显示分的个位delay1(4); P2=0xef;
P0=dispcode[seconde/10];// 显示秒的十位delay1(4);
P2=0xdf;
P0=dispcode[seconde%10];// 显示秒的个位delay1(4);
}
/*******************************/
/* 键盘扫描子程序*/
/*******************************/ voidkeyscan(void)
{
if(P1_0==0)// 按键 1 秒的调整
{
delay(2);
if(P1_0==0)
//delay(300);
{
seconde++;
if(seconde==60)
{seconde=0;}
}
}
if(P1_1==0)// 按键 2 分的调整
{
delay(2);
if(P1_1==0)
// delay(300);
{
minite++;
if(minite==60)
{minite=0;}
}
}
if(P1_2==0)// 按键 3 小时的调整
{
delay(2);
if(P1_2==0)
//delay(300);
{
hour++;
if(hour==24)
{hour=0;}
}
}
}
voidtimerO(void)interruptlusingO〃定时器0方式1, 50ms中断一次
{
TH0=0x3c;
TMOD=0x11;
mstcnt++;
if(mstcnt==20)
{
seconde++;
mstcnt=0;// 注意点。对计数单元的清零十分的重要,本次调试中就是
}// 因为忽略了这一点,给我早成了很大的被动。
}
/**************************/
/* 主函数*/
/**************************/ voidmain(void) {P1=0xff;// 初始化p1 口,全设为 1 TMOD=0x11;//time0 为定时器,方式 1 TH0=0x3c;// 预置计数初值
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
while(1)
{
keyscan();// 按键扫描time_pro();// 时间处理display();// 显示时间
}
}