4883|2

280

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

最简单的单片机电子钟C程序 绝对经典 [复制链接]

最简单的单片机电子钟C程序 绝对经典先上原理图:


这是PCB:


这是组装好的电子钟:

  


/***************************************/
//clock.c
//单片机电子钟C语言程序  XSCLK V1.0
//MCU:AT89C2051  晶振频率:12MHZ
//编写:舒新生  日期:2007-11-23
/***************************************/
//最简单的单片机电子钟程序,学习单片机必经之路
//免费单片机辅导,尽最大努力回答您遇到的问题
//电话:13073399262  QQ:625608148(白天在线)
/***************************************/
#include           //头文件包含
                    
#define uchar unsigned char       //宏定义
#define uint  unsigned int
#define ON  0              //定义0为打开
#define OFF 1              //定义1为关闭
#define LEDBus P1            //定义p1口为数码管段码口
sbit MIAO =P1^2;             //秒点
sbit HOU_S=P3^0;            //时十位位选
sbit HOU_G=P3^1;            //时个位位选
sbit MIN_S=P3^2;            //分十位位选
sbit MIN_G=P3^3;            //分个位位选
sbit H_KEY=P3^4;            //时调整键
sbit M_KEY=P3^5;            //分调整键
bit  SHAN;               //闪烁标志位
uchar second,minute,hour;        //定义秒、分、时寄存器
uchar code LEDTab[]={0x14,0xd7,0x4c,  //数码管段码表0--9
0x45,0x87,0x25,0x24,0x57,0x04,0x05};
void delay(uchar t);          //延时函数
void init();              //初始化函数
void display();             //显示函数
void min_tiao();            //分调整函数
void hou_tiao();            //时调整函数
/***************************************
函 数 名:main
功    能:主函数
说    明:
入口参数:无
返 回 值:无
****************************************/
void main()
{
init();                //调用初始化函数
while(1)               //主程序循环
{
  if(!H_KEY) hou_tiao();       //如果时调整键按下(为0),调用时调整函数
  if(!M_KEY) min_tiao();       //如果分调整键按下(为0),调用分调整函数
  display();             //调用显示函数
}
}
/***************************************
函 数 名:init
功    能:初始化函数
说    明:初始化定时器及中断
入口参数:无
返 回 值:无
***************************************/
void init()
{
TMOD=1;TH0=0X3C;TL0=0XB0;       //定时器0模式1,50毫秒
ET0=1;TR0=1;EA=1;           //开定时器0中断、启动定时器0、开总中断
}
/***************************************
函 数 名:display
功    能:显示函数
说    明:
入口参数:无
返 回 值:无
***************************************/
void display()
{
LEDBus=LEDTab[minute%10];       //分个位送数码管显示
MIAO=SHAN;              //秒点闪烁
MIN_G=ON;               //打开分个位位选
delay(1);               //显示1毫秒
MIN_G=OFF;              //关闭分个位位选
LEDBus=LEDTab[minute/10];       //分十位送数码管显示
MIAO=SHAN;              //秒点闪烁
MIN_S=ON;               //打开分十位位选
delay(1);               //显示1毫秒
MIN_S=OFF;              //关闭分十位位选
LEDBus=LEDTab[hour%10];        //时个位送数码管显示
HOU_G=ON;               //打开时个位位选
delay(1);               //显示1毫秒
HOU_G=OFF;              //关闭时个位位选
if(hour/10)              //如果时十位为0,不显示十位数字
{
  LEDBus=LEDTab[hour/10];       //时十位送数码管显示
  HOU_S=ON;              //打开时十位位选
  delay(1);              //显示1毫秒
  HOU_S=OFF;             //关闭时十位位选
}
}
/***************************************
函 数 名:min_tiao
功    能:分调整
说    明:
入口参数:无
返 回 值:无
***************************************/
void min_tiao()
{
while(!M_KEY) display();       //等待分调整键松开
second=0;minute++;          //秒清零、分加1
if(minute==60) minute=0;       //如果分等于60,分变0
}
/***************************************
函 数 名:hou_tiao
功    能:时调整
说    明:
入口参数:无
返 回 值:无
***************************************/
void hou_tiao()
{
while(!H_KEY) display();       //等待时调整键松开
second=0;hour++;           //秒清零,时加1
if(hour==24) hour=0;         //如果时等于24,时变0
}
/***************************************
函 数 名:delay
功    能:延时函数
说    明:
入口参数:t:延时时间长短
返 回 值:无
***************************************/
void delay(uchar t)
{
uchar i;               //定义变量
for(;t>0;t--)             //如果t大于0,t减1(外层循环)
  for(i=124;i>0;i--);         //i等于124,如果i大于0,i减1
}
此帖出自单片机论坛

最新回复

马上要做一个相关的实验,很实用  详情 回复 发表于 2016-11-30 20:09
点赞 关注
 

回复
举报

11

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
最简单的单片机电子钟C程序
此帖出自单片机论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
马上要做一个相关的实验,很实用
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表