单片机数码管动态显示时钟C语言,8位数码管显示电子时钟c51单片机程序

/*

8位数码管显示 时间格式 05—50—00 标示05点50分00秒

S1 用于小时加1操作

S2 用于小时减1操作

S3 用于分钟加1操作

S4 用于分钟减1操作

*/本文引用地址:http://www.eepw.com.cn/article/170901.htm

#includereg52.h>

sbit KEY1=P3^0; //定义端口参数

sbit KEY2=P3^1;

sbit KEY3=P3^2;

sbit KEY4=P3^3;

sbit LED=P1^2; //定义指示灯参数

code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9

unsigned char StrTab[8]; //定义缓冲区

unsigned char minute=19,hour=23,second; //定义并初始化为 12:30:00

void delay(unsigned int cnt)

{

while(--cnt);

}

/******************************************************************/

/* 显示处理函数 */

/******************************************************************/

void Displaypro(void)

{

StrTab[0]=tab[hour/10];

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一份C语言代码,实现单片机控制6位数码管显示时钟功能。请注意,由于不知道您使用的具体单片机型号和数码管型号,此代码仅供参考,您需要根据自己的实际情况进行修改。 ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int // 定义数码管段码表 uchar code smgduan[17] = { 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, // 7 0x7f, // 8 0x6f, // 9 0x77, // A 0x7c, // B 0x39, // C 0x5e, // D 0x79, // E 0x71, // F 0x00 // 空 }; // 定义显示位选择数组 uchar code wduan[6] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf}; // 定义变量 uchar hour = 12; // 时 uchar minute = 30; // 分 uchar second = 0; // 秒 // 定义函数 void delay(uint xms) { uint i, j; for (i = xms; i > 0; i--) { for (j = 110; j > 0; j--) { ; } } } void display() { uchar shiwei, gewei, baiwei, qianwei, wanwei; shiwei = hour / 10; gewei = hour % 10; baiwei = minute / 10; qianwei = minute % 10; wanwei = second / 10; P0 = wduan[0]; P2 = smgduan[shiwei]; delay(5); P0 = wduan[1]; P2 = smgduan[gewei]; delay(5); P0 = wduan[2]; P2 = smgduan[10]; delay(5); P0 = wduan[3]; P2 = smgduan[baiwei]; delay(5); P0 = wduan[4]; P2 = smgduan[qianwei]; delay(5); P0 = wduan[5]; P2 = smgduan[wanwei]; delay(5); } void main() { TMOD = 0x01; // 定时器0工作在模式1 TH0 = 0xfc; // 定时器0初值 TL0 = 0x66; // 定时器0初值 TR0 = 1; // 启动定时器0 ET0 = 1; // 使能定时器0中断 EA = 1; // 开启总中断 while (1) { display(); // 显示时钟 } } void timer0() interrupt 1 { TH0 = 0xfc; // 定时器0初值 TL0 = 0x66; // 定时器0初值 second++; // 秒加1 if (second == 60) // 如果秒数等于60,则分加1,清零秒数 { second = 0; minute++; } if (minute == 60) // 如果分数等于60,则时加1,清零分数 { minute = 0; hour++; } if (hour == 24) // 如果时数等于24,则小时清零 { hour = 0; } } ``` 这是一个简单的单片机时钟程序,使用了定时器、中断、数码管等知识。您需要根据自己的实际情况进行修改,如数码管的引脚连接、定时器的初值、数码管显示的内容等。希望能对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值