问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

你好,请问51单片机怎么编写程序让8个数码管显示时间(时分秒)的程序可以让我看看么??

发布网友 发布时间:2022-05-09 19:52

我来回答

1个回答

热心网友 时间:2023-10-16 05:28

//*******时间程序**************//
//*******2010-7-14 00:31:39 *******//
//******* Z X C ******************//
//*******晶体振荡器 12.000MHZ 共阳数码管***//
//*******头文件*********************//
#include <AT89X52.H>
#define uchar unsigned char
#define uint unsigned int
sbit H_KEY=P1^0; //时调整键
sbit M_KEY=P1^1; //分调整键
sbit S_KEY=P1^2; //秒调整键
void sec_tiao(); //秒调整函数
void min_tiao(); //分调整函数
void hou_tiao(); //时调整函数
//********数码管显示与数组关系******//
char DATA_sled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/* 0 1 2 3 4 5 6 7 8 9 */
uchar hour=21, min=00, sec=00; //时间初始化
uchar deda=0;
void delay(uchar count); //延时模块
void zhh(); //走时模块
void disp(); //十进制转换模块
/***采用定时器0中断,50MS更新一次***/
void init_timer()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE=0x82;
TR0=1;
}
//**************************//
void T0_srv(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
deda++;
}
/*************************
函 数 名:hou_tiao
功 能:时调整
说 明:
入口参数:无
返 回 值:无 ************/
//*******秒调整模块 S***********//
void sec_tiao()
{
while(!S_KEY) disp(); //等待秒调整键松开
deda=0;sec++; //毫秒清零、秒加1
if(sec==60) sec=0; //如果秒等于60,秒变0
}
//*******分调整模块 M***********//
void min_tiao()
{
while(!M_KEY) disp(); //等待分调整键松开
sec=0;min++; //秒清零、分加1
if(min==60) min=0; //如果分等于60,分变0
}
//*******时调整模块 H***********//
void hou_tiao()
{
while(!H_KEY) disp(); //等待时调整键松开
sec=0;hour++; //秒清零,时加1
if(hour==24) hour=0; //如果时等于24,时变0
}
/*********程序**************/
void zhh()
{
if(deda>=20){sec++;deda=0;}
if(sec==60){min++;sec=0;}
if(min==60){hour++;min=0;}
if(hour==24){hour=0;}
}
//******十进制转换模块*****//
void disp()
{
P0=DATA_sled[hour/10]; P2=0xfe; delay(1);
P0=DATA_sled[hour%10]; P2=0xfd; delay(1);
P0=DATA_sled[min/10]; P2=0xfb; delay(1);
P0=DATA_sled[min%10]; P2=0xf7; delay(1);
P0=DATA_sled[sec/10]; P2=0xef; delay(1);
P0=DATA_sled[sec%10]; P2=0xdf; delay(1);
}
//*******延时模块************//
void delay(uchar count)
{
uchar i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
//*******主程序*************//
void main()
{
init_timer(); //定时模块
while(1) //无限循环
{
if(!H_KEY) hou_tiao(); //时调整模块
if(!M_KEY) min_tiao(); //分调整模块
if(!S_KEY) sec_tiao(); //秒调整模块
zhh(); //走时模块
disp(); //十进制转换模块
}
}

此程序已经硬件调试通过,希望采纳!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找几本一流的小说。类型' 完结什么的无所谓. 不要幼稚就好 沈阳职高学校排名 沈阳哪个公办职高和中专好 沈阳有哪些职高学校比较好? gpw一代和二代的区别有哪些 罗技gpw一代和二代区别介绍 第一代和第二代的区别 gpw二代和一代有什么区别 二代和一代区别详情分享 设张举措的意思设张举措的解释设张举措接龙 设张的成语设张的成语是什么 人字地砖铺法怎么找平方 阿修罗是什么, 51单片机 可编程作息时间控制器设计 火影忍者中的三大瞳术各有什么能力? 洛克王国怎么打镇狱修罗王 关于51单片机中的计时小编程问题 求助~关于邮政储蓄小额贷款的问题~~~ 如何用c语言编程51单片机程序,满足从0-4小时计时,有清零,开始,暂停功能? 洛克王国蝎王醒觉的封印怎么打 51单片机计时编程 本人想在邮政储蓄小额贷款!入了黑名单还可以贷款吗? 我在邮政银行有小额贷款可以去兴业银行申请房贷吗? 奥拉星修罗和凯撒谁厉害? 洛克王国英魂修罗怎么用? 《修罗の笔》《催眠の奏》《森の记忆 》可以给我发过一分来么? 重点是《修罗之笔》要游戏啊 洛克王国镇狱修罗王怎么打 洛克王国镇狱修罗王打法攻 奥拉星修罗凯撒谁更好 求修罗都市三,给大哥跪了,跪求 温州乐清 洛克王国英魂修罗能被催眠吗 乐清 柳市哪里招暑假工 谁能告诉我51单片机简单的led数码管时钟程序 24小时制的(c语言版的) 51 单片机编程-按键按下时间控制LED 编程C51单片机程序 数字时钟 急求 急求!! 51单片机怎么用定时器记录两次外部中断的时间?C语言应该如何编程? 两位秒表 51单片机程序编程 51单片机4位LED电子钟怎么编程 golang 在Mac 上无法调试的问题,请问如何解决 golang有哪些不安全函数 陶瓷餐具什么牌子的比较好? 家里电脑QQ登不上去网页可以上这是怎么回事 问:陶瓷餐具那个品牌好? apm monaco品牌可以加盟吗 iPhone 7 Plus怎么设置uc浏览器不在锁屏时推送头条文章?和不在通知栏推送文章 手机里uc头条每天怎么不提醒消息了 怎么关闭uc浏览器通知栏的新闻。 哪些名人个子在1.8米以上 史上身高最高的皇帝是谁?有多高 贝多芬,托尔斯泰,米开朗基罗,各自经历了什么苦难?他们的伟大之处表现再什么地方? 北方战争取胜原因主要有哪些? 国家队乒乓球教练名单