找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 2293 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-7-12 22:57

正文摘要:

谢谢大家

回复

ID:278457 发表于 2022-7-13 21:24
ID:398219 发表于 2022-7-13 20:08
定义就错了unsigned char 是0-255。要改unsigned int,那个小姐姐头像注释得好
ID:278457 发表于 2022-7-13 16:24
小弟谢谢,各位大神.
ID:195496 发表于 2022-7-13 12:36
这么简单的问题,只要动动手,很快就找到解决方法了
ID:965189 发表于 2022-7-13 11:16
把60换成9999它就从9999开始倒啦。
ID:161164 发表于 2022-7-13 11:06

ID:584814 发表于 2022-7-13 08:23
看来你也和格力一样掌握了核心科技,代码都不贴全而且只有图示
ID:1023753 发表于 2022-7-13 07:47
直接扩展不就行了  数组4位都有赋值
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. }

复制代码



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

Powered by 单片机教程网

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