找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1758|回复: 9
打印 上一主题 下一主题
收起左侧

单片机60秒倒计时可以了,把它变成9999倒计时 该怎么办?

[复制链接]
跳转到指定楼层
楼主
谢谢大家

%3W99DYA%1Y)6Z~C9)SS}2F.png (7.46 KB, 下载次数: 13)

%3W99DYA%1Y)6Z~C9)SS}2F.png

1.png (18.78 KB, 下载次数: 69)

1.png

2.png (12.69 KB, 下载次数: 62)

2.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2022-7-13 07:46 | 只看该作者

  1. #include <reg51.H>

  2. sbit P_HC595_SER   = P2^0;
  3. sbit P_HC595_SRCLK = P2^1;
  4. sbit P_HC595_RCLK  = P2^2;

  5. unsigned char code table[]={
  6. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  7. unsigned char code wela[]={
  8. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  9. unsigned char data dis_buf[8];                //缓存数组
  10. unsigned int Cnt_ms=0,Cnt_s=9999;

  11. /**************** 初始化定时器0函数 ******************/
  12. void Timer0Init(void)                //1毫秒@12.000MHz
  13. {
  14.         TMOD &= 0xF0;                //设置定时器模式
  15.         TMOD |= 0x01;                //设置定时器模式
  16.         TL0 = 0x18;                //设置定时初始值
  17.         TH0 = 0xFC;                //设置定时初始值
  18.         TF0 = 0;                //清除TF0标志
  19.         TR0 = 1;                //定时器0开始计时
  20.         ET0 = 1;
  21.         EA  = 1;
  22. }

  23. /**************** 向HC595发送一个字节函数 ******************/
  24. void Send_595(unsigned char dat)
  25. {               
  26.         unsigned char i;
  27.         for(i=0;i<8;i++)
  28.         {
  29.                 dat <<= 1;
  30.                 P_HC595_SER  = CY; //溢出位赋值数据输出端
  31.                 P_HC595_SRCLK = 1; //移位时钟
  32.                 P_HC595_SRCLK = 0;
  33.         }
  34. }
  35. /**************** 向HC595发送2个字节驱动码 ******************/
  36. void DisplayScan(void)
  37. {       
  38.         static unsigned char i;
  39.         Send_595(wela[i]);//向HC595发送位码
  40.         Send_595(dis_buf[i]);//向HC595发送段码
  41.         P_HC595_RCLK = 1;//锁存输出数据
  42.         P_HC595_RCLK = 0;
  43.         i=++i%4;
  44. }

  45. void main()
  46. {
  47.         P_HC595_SRCLK = 0;//初始化移位时钟端
  48.         P_HC595_RCLK  = 0;//初始化锁存输出端
  49.         Timer0Init();
  50.         while(1)
  51.         {
  52.                 dis_buf[0]=table[Cnt_s/1000%10];
  53.                 dis_buf[1]=table[Cnt_s/100%10];
  54.                 dis_buf[2]=table[Cnt_s/10%10];
  55.                 dis_buf[3]=table[Cnt_s%10];
  56.         }
  57. }

  58. void Timer0Interrupt(void) interrupt 1
  59. {
  60.         TL0 = 0x18;                //设置定时初始值
  61.         TH0 = 0xFC;                //设置定时初始值
  62.         if(++Cnt_ms>=1000)
  63.         {
  64.                 Cnt_ms=0;
  65.                 if(Cnt_s>0)Cnt_s--;
  66.         }
  67.         DisplayScan();
  68. }

复制代码



回复

使用道具 举报

板凳
ID:1023753 发表于 2022-7-13 07:47 | 只看该作者
直接扩展不就行了  数组4位都有赋值
回复

使用道具 举报

地板
ID:584814 发表于 2022-7-13 08:23 | 只看该作者
看来你也和格力一样掌握了核心科技,代码都不贴全而且只有图示
回复

使用道具 举报

5#
ID:161164 发表于 2022-7-13 11:06 | 只看该作者

回复

使用道具 举报

6#
ID:965189 发表于 2022-7-13 11:16 | 只看该作者
把60换成9999它就从9999开始倒啦。
回复

使用道具 举报

7#
ID:195496 发表于 2022-7-13 12:36 | 只看该作者
这么简单的问题,只要动动手,很快就找到解决方法了
回复

使用道具 举报

8#
ID:278457 发表于 2022-7-13 16:24 | 只看该作者
小弟谢谢,各位大神.
回复

使用道具 举报

9#
ID:398219 发表于 2022-7-13 20:08 | 只看该作者
定义就错了unsigned char 是0-255。要改unsigned int,那个小姐姐头像注释得好
回复

使用道具 举报

10#
ID:278457 发表于 2022-7-13 21:24 | 只看该作者
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表