找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2732|回复: 16
收起左侧

复位后单片机电子秒表从0-9计时,增加一个按键 求思路

[复制链接]
ID:759796 发表于 2020-5-24 13:32 | 显示全部楼层 |阅读模式
要求:
       复位后电子秒表从0-9计时,增加一个按键,当按下按键后,电子秒表数字清0,然后继续开始正常计时。为什么我设计不行?求大神帮忙弄一个程序或者帮忙修改一下

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

这是本人程序,麻烦帮忙改一下
777.png
回复

使用道具 举报

ID:759796 发表于 2020-5-24 13:33 | 显示全部楼层
难度实在太大,初学者求大神帮忙
回复

使用道具 举报

ID:326783 发表于 2020-5-24 21:40 | 显示全部楼层
加一个按键检测,程序思路是清除某个全局变量,放开后进行累加.
回复

使用道具 举报

ID:70069 发表于 2020-5-24 22:44 | 显示全部楼层
你这是用定时器了还是没有用定时器
回复

使用道具 举报

ID:759796 发表于 2020-5-24 22:56 | 显示全部楼层
打错了不用增加按键,就是我程序貌似有问题实现不了要求,很奇怪,不知道哪里错了
回复

使用道具 举报

ID:213173 发表于 2020-5-25 12:59 | 显示全部楼层
分期卖猪肉 发表于 2020-5-24 22:56
打错了不用增加按键,就是我程序貌似有问题实现不了要求,很奇怪,不知道哪里错了

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

  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. }
复制代码



回复

使用道具 举报

ID:682488 发表于 2020-5-25 16:13 | 显示全部楼层
解决了吗?哪里的问题?
回复

使用道具 举报

ID:759796 发表于 2020-5-25 19:35 | 显示全部楼层
大长虫 发表于 2020-5-25 16:13
解决了吗?哪里的问题?

不知道为什么显示不了,好奇怪
回复

使用道具 举报

ID:759796 发表于 2020-5-25 19:39 | 显示全部楼层
wulin 发表于 2020-5-25 12:59
楼主的程序没有什么问题,可以正常工作。会不会是数码管选错了。

你好请问一下图中的RP1和RN1在单片机中叫什么?作用是什么来的?
回复

使用道具 举报

ID:98195 发表于 2020-5-25 19:44 来自手机 | 显示全部楼层
大哥你的定时器中断函数呢?你在delay1s()中赋值也没用呀
回复

使用道具 举报

ID:759796 发表于 2020-5-25 20:08 | 显示全部楼层
wulin 发表于 2020-5-25 12:59
楼主的程序没有什么问题,可以正常工作。会不会是数码管选错了。

你好请问你这图完整是怎么样的 我想看看我的电阻阻值和元器件有没有错误
回复

使用道具 举报

ID:759796 发表于 2020-5-25 20:12 | 显示全部楼层
3K05S5K[){W54R0Q8716WJM.png 这线路图有错误吗

回复

使用道具 举报

ID:213173 发表于 2020-5-25 20:36 | 显示全部楼层
分期卖猪肉 发表于 2020-5-25 20:08
你好请问你这图完整是怎么样的 我想看看我的电阻阻值和元器件有没有错误

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

使用道具 举报

ID:761067 发表于 2020-5-25 20:43 | 显示全部楼层
在 for 循环中增加 if(按键按下) second=0; 即可,例如 P2_1  if(P2_1==0)  second=0; 注意 这里需要检测低电平信号。 楼主用的复位按键实现软件复位,相当于软件从头开始屏跑,觉得,这个复位按键不需要软件支持。至于为什么不行,可能protues软件没实现你的硬复位
回复

使用道具 举报

ID:759796 发表于 2020-5-25 22:14 | 显示全部楼层
我是想在电路图的原基础上增加一个电子元件,然后实现按下复位,开始计时,我程序不是很懂貌似实现不了,不知道为什么,电子线路图也不知道为什么实现不了,实在不好意思半桶水
回复

使用道具 举报

ID:744327 发表于 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;
        }
回复

使用道具 举报

ID:759796 发表于 2020-5-26 10:31 | 显示全部楼层
烈火 发表于 2020-5-26 08:17
定时器程序这样改:
void delay1s() interrupt 3
{

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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