找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1828|回复: 9
收起左侧

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

[复制链接]
ID:278457 发表于 2022-7-12 22:57 | 显示全部楼层 |阅读模式
谢谢大家
%3W99DYA%1Y)6Z~C9)SS}2F.png
1.png
2.png
回复

使用道具 举报

ID:213173 发表于 2022-7-13 07:46 | 显示全部楼层
无标题.jpg
  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 | 显示全部楼层
看来你也和格力一样掌握了核心科技,代码都不贴全而且只有图示
回复

使用道具 举报

ID:161164 发表于 2022-7-13 11:06 | 显示全部楼层
2022-07-13_110549.png
回复

使用道具 举报

ID:965189 发表于 2022-7-13 11:16 | 显示全部楼层
把60换成9999它就从9999开始倒啦。
回复

使用道具 举报

ID:195496 发表于 2022-7-13 12:36 | 显示全部楼层
这么简单的问题,只要动动手,很快就找到解决方法了
回复

使用道具 举报

ID:278457 发表于 2022-7-13 16:24 | 显示全部楼层
小弟谢谢,各位大神.
回复

使用道具 举报

ID:398219 发表于 2022-7-13 20:08 | 显示全部楼层
定义就错了unsigned char 是0-255。要改unsigned int,那个小姐姐头像注释得好
回复

使用道具 举报

ID:278457 发表于 2022-7-13 21:24 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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