久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1118|回復: 19
打印 上一主題 下一主題
收起左側

各位大俠麻煩幫我看下這個計數器程序為什么最大計數只能到535,而不是到9999

[復制鏈接]
跳轉到指定樓層
樓主
#include <AT892051.H>
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P3^0;         //數碼管位定義
sbit LED2=P3^1;
sbit LED3=P3^4;
sbit LED4=P3^5;
sbit K4=P3^2;
sbit K3=P3^3;
sbit K1=P3^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};        //第10為不顯示


void delay(uint x)               
{
        uint y,z;                         
        for(y=x;y>0;y--)
                for(z=110;z>0;z--);
}

void display(uint num)         //動態掃描顯示程序
{
        uchar qian,bai,shi,ge;
        qian=num/1000;
        bai=num%1000/100;
        shi=num%100/10;
        ge=num%10;
        if (qian==0)
                {           //如果小時十位是0的話,不顯示
                        qian=10;
                        if (bai==0)
                                {           //如果小時十位是0的話,不顯示
                                        bai=10;
                                        if (shi==0)
                                                {           //如果小時十位是0的話,不顯示
                                                        shi=10;
                                                }
                                }
                }

        LED4=0;
        P1=table[qian];
        delay(4);
        LED4=1;
        P1=1;
       
        LED3=0;
        P1=table[bai];          
        delay(4);
        LED3=1;
        P1=1;
       
       
        LED2=0;
        P1=table[shi];
        delay(4);
        LED2=1;
        P1=1;
       
        LED1=0;
        P1=table[ge];
        delay(4);
        LED1=1;
        P1=1;

}
void main()
{
         uint num=0;
    while(1) {
      display(num);

      if (K3==0) {
        display(num);
        if (K3 == 0) {
          while(K3==0) display(num);
          while(K4==1) display(num);
          num++;
          while(K4==0) display(num);
        }
      }

      if (K1==0)
                        {delay(4);
                         if (K1==0)
                         {num=0;}}

                if (K4==0)
                {
        display(num);
        if (K4==0)
                  {
          while(K4==0) display(num);
          while(K3==1) display(num);
          num--;
          while(K3==0) display(num);
        }
      }
                if (K1==0)
                        {delay(4);
                         if (K1==0)
                         {num=0;}}
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:352736 發表于 2024-9-21 11:46 | 只看該作者
麻煩各位大俠幫忙看下程序需要改哪里可以使計數最大到9999  !!!
回復

使用道具 舉報

板凳
ID:192020 發表于 2024-9-21 17:57 | 只看該作者
估計是從0然后按減1顯示535你就覺得最大計數535了,實際num是65535,對num做一些限定就好
回復

使用道具 舉報

地板
ID:1109793 發表于 2024-9-21 18:30 | 只看該作者
太復雜了,看讀懂啊。
535是個什么數字?UINT的最大是65535,大概你這是加到0XFFFF了吧,只是前邊的65沒顯示出來。你這好像也沒有限制最大數字啊,哪里來的9999?起碼要加一個if(num<9999)num++;else num = 0;這樣
回復

使用道具 舉報

5#
ID:1109793 發表于 2024-9-21 18:32 | 只看該作者
又看到你之前的帖子了,這是那個按鍵被拉低的問題解決了?
回復

使用道具 舉報

6#
ID:352736 發表于 2024-9-21 21:58 來自手機 | 只看該作者
xiaobendan001 發表于 2024-9-21 18:32
又看到你之前的帖子了,這是那個按鍵被拉低的問題解決了?

把k3改到p5^4可以計數了k3在p3口就不行
回復

使用道具 舉報

7#
ID:352736 發表于 2024-9-21 22:00 來自手機 | 只看該作者
qq475878026 發表于 2024-9-21 17:57
估計是從0然后按減1顯示535你就覺得最大計數535了,實際num是65535,對num做一些限定就好

就是按加鍵加到535就返回到1了
回復

使用道具 舉報

8#
ID:352736 發表于 2024-9-21 22:31 來自手機 | 只看該作者
xiaobendan001 發表于 2024-9-21 18:30
太復雜了,看讀懂啊。
535是個什么數字?UINT的最大是65535,大概你這是加到0XFFFF了吧,只是前邊的65沒顯 ...

按加鍵加到535后再按加鍵就顯示0了
回復

使用道具 舉報

9#
ID:573999 發表于 2024-9-22 00:29 | 只看該作者
先這樣查下,可以屏蔽掉按鍵功能,先排除顯示上是否有問題,直接給顯示賦值9999,看顯示是否正常,如果顯示ok,再看你的計數邏輯是否正常,最后再打開按鍵
回復

使用道具 舉報

10#
ID:352736 發表于 2024-9-22 07:44 | 只看該作者
xiaobendan001 發表于 2024-9-21 18:30
太復雜了,看讀懂啊。
535是個什么數字?UINT的最大是65535,大概你這是加到0XFFFF了吧,只是前邊的65沒顯 ...

void main()
{
         uint num=0;
    while(1) {
      display(num);

      if (K3==0) {
        display(num);
        if (K3 == 0) {
          while(K3==0) display(num);
          while(K4==1) display(num);
                                         {if(num==9999)num=0;}
          num++;
          while(K4==0) display(num);
        }
      }
加了還是不行, 還是加到535就返回0了
回復

使用道具 舉報

11#
ID:352736 發表于 2024-9-22 08:03 | 只看該作者
vimli 發表于 2024-9-22 00:29
先這樣查下,可以屏蔽掉按鍵功能,先排除顯示上是否有問題,直接給顯示賦值9999,看顯示是否正常,如果顯示ok,再 ...

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};        //第10為不顯示
unsigned char DisplayBuff[]={0xf9, 0xf9, 0xf9, 0xf9};

void delay(uint x)               
加了這段顯示是正常的
回復

使用道具 舉報

12#
ID:1109793 發表于 2024-9-22 08:59 | 只看該作者
wl20020807 發表于 2024-9-21 22:31
按加鍵加到535后再按加鍵就顯示0了

大概是你的千位顯示失敗了,否則應該是5535然后変0的。
回復

使用道具 舉報

13#
ID:352736 發表于 2024-9-22 09:09 | 只看該作者
xiaobendan001 發表于 2024-9-21 18:30
太復雜了,看讀懂啊。
535是個什么數字?UINT的最大是65535,大概你這是加到0XFFFF了吧,只是前邊的65沒顯 ...

if (K4==0)
                  {
          while(K4==0) display(num);
          while(K3==1) display(num);
                                {if(num==0)num=9999;}
          num--;
          while(K3==0) display(num);
        }
      }
減鍵也加了一句,可以正常計數了,最大計數9999(只有4位數碼管)謝謝指點!!!
回復

使用道具 舉報

14#
ID:161164 發表于 2024-9-22 10:52 | 只看該作者
顯示函數有問題


num的加減也要加限制



回復

使用道具 舉報

15#
ID:1109793 發表于 2024-9-22 13:37 | 只看該作者
lkc8210 發表于 2024-9-22 10:52
顯示函數有問題

NUM最大9999,那個%10是不是多余啊
回復

使用道具 舉報

16#
ID:352736 發表于 2024-9-22 14:00 | 只看該作者
wl20020807 發表于 2024-9-22 07:44
void main()
{
         uint num=0;

不好意思!把這個程序加在實際電路運行正常,加鍵計數超過535,計數正常了
回復

使用道具 舉報

17#
ID:352736 發表于 2024-9-22 14:03 | 只看該作者
lkc8210 發表于 2024-9-22 10:52
顯示函數有問題

謝謝指點!
回復

使用道具 舉報

18#
ID:352736 發表于 2024-9-22 20:53 | 只看該作者
lkc8210 發表于 2024-9-22 10:52
顯示函數有問題

大師現在加減計數正常了,現在顯示有點問題,就是顯示個位數時前面的十,百,千位是不顯示的,但十,百,千位的數碼管除a段外其余段位有一點微亮,用萬用表測試a段比其它b,c,e,f,g,d段電壓高0.5v左右,開始以為單片機有問題換了也一樣,原程序用的是AT89C2051,我用的STC89S52,應該程序在兩種型號的單片機上是通用的,麻煩大師幫看下是程序哪里的問題。
回復

使用道具 舉報

19#
ID:161164 發表于 2024-9-23 09:41 | 只看該作者

回復

使用道具 舉報

20#
ID:352736 發表于 2024-9-23 15:30 來自手機 | 只看該作者
lkc8210 發表于 2024-9-23 09:41

謝謝大師指點!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜网| 久久久久香蕉视频 | www.亚洲.com| 99久久精品免费看国产免费软件 | 在线看片网站 | 激情一区二区三区 | 国产在线91 | 国产精品黄色 | 黄色av网站在线观看 | 欧美日韩手机在线观看 | 超碰男人天堂 | 欧美在线观看一区 | 99热精品在线 | 超碰97免费在线 | 国产精品夜间视频香蕉 | 国产视频第一页 | 91免费电影 | 美女一区二区在线观看 | 精品一区二区三区中文字幕 | 国产一区二区三区视频免费观看 | 在线观看中文字幕 | 成人在线一区二区 | 国产在线视频99 | 欧美一区二区激情三区 | 91久久婷婷| 精品国产免费一区二区三区五区 | 婷婷久久久久 | 久久精品视频在线播放 | 日本中文字幕日韩精品免费 | 国产操操操 | 在线播放一区 | 97天天干 | 一区在线播放 | 最新超碰| 黄色毛片黄色毛片 | 天天草天天操 | 中文字幕一二三 | 在线中文字幕日韩 | 久久亚洲91| 欧美综合一区二区三区 | 成人免费在线 |