标题: 复位后单片机电子秒表从0-9计时,增加一个按键 求思路 [打印本页]

作者: 分期卖猪肉    时间: 2020-5-24 13:32
标题: 复位后单片机电子秒表从0-9计时,增加一个按键 求思路
要求:
       复位后电子秒表从0-9计时,增加一个按键,当按下按键后,电子秒表数字清0,然后继续开始正常计时。为什么我设计不行?求大神帮忙弄一个程序或者帮忙修改一下

666.png (99.61 KB, 下载次数: 104)

这是本人程序,麻烦帮忙改一下

这是本人程序,麻烦帮忙改一下

777.png (166.25 KB, 下载次数: 98)

777.png

作者: 分期卖猪肉    时间: 2020-5-24 13:33
难度实在太大,初学者求大神帮忙
作者: LanSeXinQing    时间: 2020-5-24 21:40
加一个按键检测,程序思路是清除某个全局变量,放开后进行累加.
作者: benclee    时间: 2020-5-24 22:44
你这是用定时器了还是没有用定时器
作者: 分期卖猪肉    时间: 2020-5-24 22:56
打错了不用增加按键,就是我程序貌似有问题实现不了要求,很奇怪,不知道哪里错了
作者: wulin    时间: 2020-5-25 12:59
分期卖猪肉 发表于 2020-5-24 22:56
打错了不用增加按键,就是我程序貌似有问题实现不了要求,很奇怪,不知道哪里错了

楼主的程序没有什么问题,可以正常工作。会不会是数码管选错了。


  1. #include<reg51.h>
  2. #define SEG P0
  3. void delay1s();
  4. void main(void)
  5. {
  6.         unsigned char code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7.         unsigned char second;
  8.           TMOD=0x10;  
  9.         while(1)
  10.         {
  11.                 for(second=0;second<10;second++)       
  12.                 {
  13.                         SEG=disp[second];
  14.                         delay1s();
  15.                 }
  16.         }  
  17. }
  18. void delay1s()
  19. {
  20.         unsigned char i;
  21.         for(i=0;i<20;i++)
  22.         {
  23.                 TH1=0x3c;
  24.                 TL1=0xb0;
  25.                 TR1=1;
  26.                 while(!TF1);
  27.                 TF1=0;
  28.         }
  29. }
复制代码




作者: 大长虫    时间: 2020-5-25 16:13
解决了吗?哪里的问题?

作者: 分期卖猪肉    时间: 2020-5-25 19:35
大长虫 发表于 2020-5-25 16:13
解决了吗?哪里的问题?

不知道为什么显示不了,好奇怪
作者: 分期卖猪肉    时间: 2020-5-25 19:39
wulin 发表于 2020-5-25 12:59
楼主的程序没有什么问题,可以正常工作。会不会是数码管选错了。

你好请问一下图中的RP1和RN1在单片机中叫什么?作用是什么来的?
作者: 丶念    时间: 2020-5-25 19:44
大哥你的定时器中断函数呢?你在delay1s()中赋值也没用呀
作者: 分期卖猪肉    时间: 2020-5-25 20:08
wulin 发表于 2020-5-25 12:59
楼主的程序没有什么问题,可以正常工作。会不会是数码管选错了。

你好请问你这图完整是怎么样的 我想看看我的电阻阻值和元器件有没有错误
作者: 分期卖猪肉    时间: 2020-5-25 20:12
这线路图有错误吗


作者: wulin    时间: 2020-5-25 20:36
分期卖猪肉 发表于 2020-5-25 20:08
你好请问你这图完整是怎么样的 我想看看我的电阻阻值和元器件有没有错误

仿真.zip (59.19 KB, 下载次数: 10)

作者: xiaoyige    时间: 2020-5-25 20:43
在 for 循环中增加 if(按键按下) second=0; 即可,例如 P2_1  if(P2_1==0)  second=0; 注意 这里需要检测低电平信号。 楼主用的复位按键实现软件复位,相当于软件从头开始屏跑,觉得,这个复位按键不需要软件支持。至于为什么不行,可能protues软件没实现你的硬复位
作者: 分期卖猪肉    时间: 2020-5-25 22:14
我是想在电路图的原基础上增加一个电子元件,然后实现按下复位,开始计时,我程序不是很懂貌似实现不了,不知道为什么,电子线路图也不知道为什么实现不了,实在不好意思半桶水
作者: 烈火    时间: 2020-5-26 08:17
定时器程序这样改:
void delay1s() interrupt 3
{
        unsigned char i;
        for(i=0;i<20;i++)
        {
                TH1=0x3c;
                TL1=0xb0;
                TR1=1;
                while(!TF1);
                TF1=0;
        }
作者: 分期卖猪肉    时间: 2020-5-26 10:31
烈火 发表于 2020-5-26 08:17
定时器程序这样改:
void delay1s() interrupt 3
{

在我的程序基础上完整的程序有吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1