单片机制作的时钟程序

发布者:advancement3最新更新时间:2015-07-03 来源: 51hei关键字:单片机  时钟程序  STC89C52 手机看文章 扫描二维码
随时随地手机看文章
今天完成的一个用单片机制作的时钟程序,
/****************************************************************
*工程名:带秒显示时钟单片机程序                    *
*单片机:STC89C52 *
*电路板:http://www.51hei.com/150a.htm *
*目  的:学习单片机编程 *
*是 间:2012-11-25星期五 *
*作  者:张杉峰 *
*修  订:功能有待完善,下边我还加上调整时间的功能 *
*****************************************************************/
#include
#define uint unsigned int
#define uchar unsigned char
sbit wei=P2^7;  //位锁存器使能端定义
sbit duan=P2^6;  //段锁存器使能端定义
sbit led=P1^4;  //这个是我买的实验板上的led使能端控制位
//定义需要的为变量...
uchar code duan_table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00
};//数码管从1——F显示编码表,记得最后一个分号哦...
uchar a,xiaoshi,fenzhong,miao,miao1,miao2,xiao1,xiao2,fen1,fen2; //定义要用到的变量,记得一个字符都不要写错哦...
void dispay(uchar miao1,uchar miao2,uchar fen1,uchar fen2,uchar xiao1,uchar xiao2); //显示函数什么,一定要记得什么哦...
void delay(uchar x);
void init()//初始化函数
{
TMOD=0X01; //定时计数器工作模式,工作于16位定时器计数器模式
TH0=(65536-50000)/256;  //十六位寄存器高八位赋初值
TL0=(65536-50000)%256;  //............低八位赋初值
EA=1; //开总中断
ET0=1; //开定时器计数器0中断
TR0=1; //启动定时器/计数器0
}
void main()
{
init();   //调用初始化函数
while(1)
{
if(a==20) //判断是否定时到1秒钟
{
a=0; //到一秒a清零
miao++; //让秒加1
if(miao==60) //判断秒是否到60
{
miao=0; //秒到60,让"miao"清零
fenzhong++; //让分钟自加1
if(fenzhong==60) //判断分钟是否到60
{
fenzhong=0;  //分钟到60,让"fenzhong"清零
xiaoshi++;   //让小时加1
if(xiaoshi==24) //判断小时是否到24
{xiaoshi=0;}  //到24,让"xiaoshi"清零,从零点从新走动...
}
}
xiao1=xiaoshi/10;
xiao2=xiaoshi%10;  //上面一行和这一行是把小时的两位分离出来,比如23,分解成2和3;下面几行一样就不解释了
fen1=fenzhong/10;
fen2=fenzhong%10;
miao1=miao/10;
miao2=miao%10;
}
dispay(miao1,miao2,fen1,fen2,xiao1,xiao2);
}
}
void dispay(uchar miao1,uchar miao2,uchar fen1,uchar fen2,uchar xiao1,uchar xiao2)
{
duan=1;
P0=duan_table[xiao1];
duan=0;
P0=0xff;
wei=1;
P0=0xfb;//第三个LED亮,小时高位
wei=0;
delay(2);
duan=1;
P0=duan_table[xiao2];
duan=0;
P0=0xff;
wei=1;
P0=0xf7;  //第四个LED亮,小时低位
wei=0;
delay(2);
duan=1;
P0=duan_table[fen1];
duan=0;
P0=0xff;
wei=1;
P0=0xef; //第五个LED亮,分钟高位
wei=0;
delay(2);
duan=1;
P0=duan_table[fen2];
duan=0;
P0=0xff;
wei=1;
P0=0xdf;  //第六个LED亮,分钟低位
wei=0;
delay(2);
duan=1;
P0=duan_table[miao1];
duan=0;
P0=0xff;
wei=1;
P0=0xbf; //第七个LED亮,秒高位
wei=0;
delay(2);
duan=1;
P0=duan_table[miao2];
duan=0;
P0=0xff;
wei=1;
P0=0x7f;
wei=0;
delay(2);
}
void delay(uchar x)
{
uchar bb,dd;
for(bb=x;bb>0;bb--)
for(dd=110;dd>0;dd--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
关键字:单片机  时钟程序  STC89C52 引用地址:单片机制作的时钟程序

上一篇:基于DS1302数字芯片的“电子台历”设计调试心得
下一篇:STC89C52单片机驱动CC1101无线模块的发送C语言程序

推荐阅读最新更新时间:2024-03-16 14:23

单片机与控制实验(1)——数码管显示
一、实验目的和要求   初步学习和掌握MCS-51的体系结构和汇编语言,了解Keil编程环境和程序下载工具的使用方法。了解数码管输出的原理及编程方式。 二、实验设备   单片机测控实验系统   STC-ISP程序下载工具   Keil开发环境 三、实验内容   使用MCS-51汇编语言编写程序,完成如下功能:   1. 使用三个数码管显示十进制数值(001~999,可任意设置);   2. 每隔1秒,该数值自动减一,直到归零;   3. 归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置);   4. 每隔1秒,新数值继续自动减一,直到再次归零;   5. 重新执行步骤1,循环往复。   6. 当开关S1
[单片机]
<font color='red'>单片机</font>与控制实验(1)——数码管显示
AVR单片机捕获中断实现红外线解码
摘要:AVR单片机是Atmel公司推出的一个单片机系列。由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法。 关键词:AVR;红外线解码;输入捕获中断 1 红外线编码 红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。本文就以这些电路的编码格式来讨论怎样使用AVR单片机的捕获中断功能来实现其解码。 红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。接收部分则是完成红外线的接收、放大、解调,
[单片机]
蓝桥杯STC15单片机复习——IO口的使用
前言 引脚图 点灯测试 由引脚图可以看出,STC15的外设资源与51单片机基本一致,常用的也是三组四组IO口(P0、P1、P2、P3),由于板子的电路设计,通过74LS138译码器进行P0的外挂模块的选择。 其中当P25 = 0、P26=0、P27=1;即选通Y4时,外挂的模块为LED灯,下面就开始点几个灯玩玩吧。 /* 彭某的蓝桥杯复习——LED 1、点亮一盏LED并闪烁 */ #include STC15F2K60S2.h #define uint unsigned int #define uchar unsigned char void ALL_Init(); void delay_
[单片机]
蓝桥杯STC15<font color='red'>单片机</font>复习——IO口的使用
单片机PID算法实现
在avr单片机上实现的100%通过测试,用单片机调的倒立摆非常稳定. #include stdio.h #include math.h struct _pid { int pv; //integer that contains the process value 过程量 int sp; //*integer that contains the set point 设定值 float integral; // 积分值 float pgain; float igain; float dgain; int deadband; //死区 int last_error; }; struct _pid
[单片机]
Keil C51单片机集成开发环境编程与调试教程
同 VC 之类的通用 C 语言集成开发环境(IDE)一样,Keil 也采用“工程” (Project)的方式管理源代码及相关文件,这种管理方式为由多个源代码文件组 成的大型程序开发提供了方便。不管是最简单的 C51程序,还是复杂的多文件 程序都需要以下步骤: 1)先建立新的工程文件; 2)在工程中新建源代码文件,或是将已经存在的源代码文件加入工程; 3)编译; 4)调试,修正错误再编译; 5)将生成的二进制文件*.hex 烧入单片机。 本教程重点介绍上述前 4 个步骤。 二、Keil中新建工程的步骤 1. 单击菜单“Project——New uVision Project……” 出现新建工程对话框: 在此对话框中选择存
[单片机]
Keil C51<font color='red'>单片机</font>集成开发环境编程与调试教程
使用单片机改造老式测量仪表
概述 在核污染的环境评测中,最常用的仪表是X、γ 辐射空气吸收剂量率仪。在这类仪表中,使用的测量原理主要有以下两种:一种方法是使用脉冲计数的方法,在这类方法中使用光电倍增管或使用计数管对核辐射脉冲计数,通过计数量的多少反映核辐射剂量的大小。另一种方法是将测量的辐射脉冲进行积分、放大后显示输出。在后一种方法中,由于综合考虑了反映核辐射能量脉冲的数量和幅值,所以较好地反映了核辐射的剂量和剂量率。这类仪表的系统结构如(图一)所示。 图一 存在的问题 在厂家多年生产这种类型仪表的生产实践中,发现使用该方法生产的仪表,存在以下的问题: 在积分放大电路中由于积分常数较大,而且电容的品质对仪表参数影响甚
[单片机]
使用<font color='red'>单片机</font>改造老式测量仪表
一种智能型兆欧表的设计
O 引言   绝缘电阻是电气安全检测项目中的一项重要内容,而测得试品绝缘电阻60s的值R60与15s的值R15的比值K=R60/R15被称为吸收比(对于大电容设备为lOmin之值与lmin之值的比值,称为极化指数),是检验绝缘是否严重受潮或存在局部缺陷的重要依据。兆欧表是测量绝缘电阻的专用仪表,应用广泛。而传统的手摇指针式兆欧表,必须用手摇发电机保证有120r/s的转速才能维持正常的输出电压,测量范围小、误差大、吸收比须在测量后另行计算,使用不便。   随着电子技术的不断进步,尤其是单片机(single-chlp microcontroller)的出现并不断发展,引起了仪器仪表结构的根本性变革。以单片机为主体取代传统仪器仪表的常
[测试测量]
基于AVR单片机数字功率跟随技术
  引言   目前地球的五大问题,包括能源失衡、产油国独裁、失控的气候变迁、能源匮乏、生物多样性消失等,都是因为人类大量使用并依赖传统的能源所造成,而且五大问题环环相扣、迫在眉睫,再不积极采取行动,全人类都将陷入无法想像的浩劫,所以发展替代能源已不仅仅是解决高油价的方案,而是人类能在地球上永续生存下去的最关键要素。煤炭、石油是我国利用的主要能源,它们的巨量消费不仅是大气污染的主要来源,还有其不可再生性,使得它们会逐渐被可再生能源所代替。我国大部分地区有着丰富的风能和太阳能资源,但限于科技的发展程度,它们一直未能得到有效地利用。近些年,随着电子技术和硅材料研究的不断进步,促进了对风能、太阳能的开发利用,市场前景相当广阔。在此前提下,研
[单片机]
基于AVR<font color='red'>单片机</font>数字功率跟随技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved