4位数码管中间的冒号c语言,做了一个最简单的4位LED数码管时钟,求改进建议

#include

#include

#include

//74HC595 数码管的A-G

int latchPin = 2;

int clockPin = 3;

int dataPin = 1;

//数字,d1,d2,d3,d4

int d1 = 13;

int d2 = 12;

int d3 = 11;

int d4 = 10;

//DS1302

uint8_t CE_PIN   = 5;

uint8_t IO_PIN   = 6;

uint8_t SCLK_PIN = 7;

DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);

void setup()

{

pinMode(d1, OUTPUT);

pinMode(d2, OUTPUT);

pinMode(d3, OUTPUT);

pinMode(d4, OUTPUT);

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

rtc.write_protect(false);

rtc.halt(false);

}

void loop()

{

Time t = rtc.time();

//显示第一位数字

cls();

dig(1);

num(t.hr/10);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的6数码管电子时钟C语言程序,可以在51单片机上运行: ```c #include <reg51.h> // 导入51单片机头文件 #define uchar unsigned char // 定义无符号字符类型 sbit DIO=P1^0; // 定义数码管数据线 sbit CLK=P1^1; // 定义数码管时钟线 sbit LATCH=P1^2; // 定义数码管锁存线 uchar code NumTab[]={ // 数码管显示数字编码数组 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; uchar hour=0,min=0,sec=0; // 定义小时、分钟、秒钟变量 void delay_ms(unsigned int ms) // 延时函数,单毫秒 { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<110;j++); } void WriteData(uchar dat) // 向数码管写入数据 { uchar i; for(i=0;i<8;i++) { CLK=0; DIO=dat&0x01; dat>>=1; CLK=1; } } void Display(uchar *p) // 在数码管上显示时间 { uchar i; LATCH=0; for(i=0;i<6;i++) { WriteData(NumTab[*(p+i)]); } LATCH=1; } void InitTimer() // 初始化定时器 { TMOD=0x01; // 定时器1,工作模式1 TH0=0x4c; // 初始值,每50ms中断一次 TL0=0x00; TR0=1; // 启动定时器 ET0=1; // 允许定时器1中断 EA=1; // 允许总中断 } void Timer0() interrupt 1 // 定时器1中断处理函数 { TH0=0x4c; // 重新赋初值 TL0=0x00; sec++; // 秒加1 if(sec==60) // 如果秒钟达到60 { sec=0; min++; // 分钟加1 if(min==60) // 如果分钟达到60 { min=0; hour++; // 小时加1 if(hour==24) // 如果小时达到24 { hour=0; // 回到0点 } } } } void main() // 程序入口 { InitTimer(); // 初始化定时器 while(1) // 无限循环 { uchar time[6]={hour/10,hour%10, // 将时间转换成数码管显示的数字 min/10,min%10, sec/10,sec%10}; Display(time); // 在数码管上显示时间 delay_ms(5); // 延时5ms } } ``` 这个程序使用了定时器中断来实现时间的计时和更新,在每秒钟定时器中断处理函数中将秒、分、时加1,然后将时间转换成数码管显示的数字,最后在数码管上显示。程序中使用了一个延时函数来控制数码管的刷新频率,可以根据需要调整该延时时间。 关于仿真,您可以使用Proteus等仿真软件进行仿真。在仿真中,您需要添加51单片机、6数码管等元件,并将单片机程序烧录到单片机中。然后运行仿真,观察数码管上的时间变化是否与预期一致。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值