c语言让数码管显示时间,请问51单片机肿么编写程序让8个数码管显示时间(时分秒)...
//*******时间程序**************//
//*******2010-7-14 00:31:39 *******//
//******* Z X C ******************//
//*******晶体振荡器 12.000MHZ 共阳数码管***//
//*******头文件*********************//
#include
#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
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(); //十进制转换模块
}
}
此程序已经硬件调试通过,希望采纳!
取消
评论
c语言让数码管显示时间,请问51单片机肿么编写程序让8个数码管显示时间(时分秒)...相关推荐
- c语言调用子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /**************************************************************************** ...
- 怎么做c语言的子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /**************************************************************************** ...
- 51单片机:中断实现按键按一下数码管从00加到99循环(C语言)
51单片机:中断实现按键按一下数码管从00加到99循环(C语言) 题目要求: 在51单片机上通过C语言编写代码,使用中断,按键按一下数码管上面的数字从00开始加1,实现00--99的循环 准备工作: ...
- 51单片机+L293D控制直流电机起保停+数码管PWM调速显示
51单片机+L293D控制直流电机起保停+数码管PWM调速显示 PWM速度10级可调 采用L293D驱动 数码管显示PWM当前占空比 可优化的地方是数码管可以采用其他驱动芯片来驱动,提高驱动能力和减少 ...
- 51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真
51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真 说明:为什么采用4位的数码管,因为Proteus里面没有3位的数码管器件可选,也可以采用2+1,或者1+1+1, ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
- c语言T1中断程序编写步骤,用51单片机中断编写的4x4键盘程序
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章 用51单片机中断编写的4x4键盘程序 作者:未知 来源:山涧一溪流 点击数:- 更新时间:2014年06 ...
- 带中文字库的240128的c语言程序,51单片机-240128液晶程序与调试
原标题:51单片机-240128液晶程序与调试 今天终于把金鹏OCMJ8X15D-2液晶(240128点阵带字库无触屏液晶)调好了. 这块液晶能显示8行15个汉字,还有放大字形,从16*16点放大到3 ...
- 51单片机红外通信及控制LED灯(LCD1602显示)
51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...
最新文章
- Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败
- @Quelifier的用法,
- TikTok Shop新增三大站点,已开放申请
- 三招看穿ERP软件是否可行
- jvm默认垃圾收集器
- 基于JAVA+SpringBoot+Mybatis+Vue+MYSQL的智慧养老管理系统
- linux tail 命令
- 用c语言在Clion平台编写system(“cls“)清屏函数无效甚至异常解决方法。
- 禁忌搜索算法(Tabu Search)
- 德标螺纹规格对照表_德标 国标,国际标准中英文对照表
- 【材料力学回顾】弯曲正应力公式
- Android Studio 配置Git,移动端h5页面开发教程百度云资源
- 互联网中的裂变是什么?
- View补间动画Animation运行原理
- Link第一次打包与部署笔记
- Luogu5234[JSOI2012]越狱老虎桥
- JDK 17:Java 17 中的新特性
- phpstudy安装php8.0和php8.1的方法(内含VC运行库)
- 干货分享 | GopherChina 2019北京大会PPT下载
- Centos75启动盘安装系统无法进入图形安装界面-提示dracut-pre-udev[348]:modprobe:ERROR: could not inset ‘edd‘
热门文章
- 亚马逊云科技云知识总结
- 【软件工程】什么是软件工程
- 尤雨溪:Vue Function-based API RFC
- 型号不同的计算机内存条可以通用么,不同频率的内存条可以混用吗
- Python实现抠图换背景
- 揪出毛孔粗大4个致命原因
- 机器学习笔记 - YOLOv7 论文简述与推理
- 【非洲秃鹫优化算法】基于非洲秃鹫优化算法求解单目标优化问题(AVOA)含Matlab源码
- 3.1 机器学习 --- 决策树
- 【下载源码】在线生成网页缩略图.超越Snap.com:WebSnap Beta 1.1 发布。感谢博客园的“萧寒”重写的底层。开源。