1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2449|回復: 5
收起左側

單片機如何用雙位數碼管顯示計數?目前程序總是一閃而過

[復制鏈接]
ID:341474 發(fā)表于 2019-10-15 16:02 | 顯示全部樓層 |閱讀模式
如題 ,求大神幫忙修改,原想法是從1到60計數,現在個位數能正常,但十位數就是一閃而過,從閃過的數字看是想要的,但是現在怎么修改一下,不要閃,能停留到下個數更新
51hei圖片20191015155938.png

單片機源程序如下:
  1. #include "stc15.h"
  2. #define  uchar unsigned char
  3. #define  uint unsigned int
  4. #define  SECOND 100
  5. uchar  tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   //定義共陽極字段碼表(1-9-0)
  6. uint count=0;
  7. uint jishu=0;
  8. uint shiwei;
  9. uint gewei;
  10. sbit L1=P3^5;
  11. sbit L2=P3^6;
  12. sbit L3=P3^7;
  13. sbit miao1=P4^0;
  14. sbit miao2=P4^1;
  15. sbit fen1=P4^2;
  16. sbit fen2=P4^3;
  17. sbit shi1=P4^4;
  18. sbit shi2=P4^5;
  19. struct time{
  20.   uchar hour;
  21.         uchar min;
  22.         uchar sec;

  23. };
  24. struct time clocktime _at_ 0x30;
  25. /***********************************延時函數*********************************************/
  26. void delay(uchar s){
  27. uchar k,z;
  28.         for(k=0;k<s;k++)
  29.         for(z=110;z>0;z--);
  30. }
  31. /************************************T0中斷函數*****************************************/
  32. timer0() interrupt 1 using 2{
  33. TH0=0xd8;
  34.         TL0=0xf0;
  35.         if(++count == SECOND){
  36.         shiwei=jishu/10;
  37.                 gewei=jishu%10;
  38.                 if(shiwei>=1){
  39.                   miao1=1;
  40.                         miao2=0;
  41.                         P2=tab[shiwei];
  42.                         delay(1000);
  43.                         miao2=1;
  44.                         miao1=0;
  45.                         P2=tab[gewei];
  46.                         delay(1000);
  47.                 }
  48.                 else{
  49.                 miao1=0;
  50.                         P2=tab[gewei];
  51. //                        delay(10);
  52.                 }

  53.                 jishu=jishu+1;
  54.                
  55.                 count=0;
  56.                 L1=~L1;

  57.                

  58.                 if(++clocktime.sec == 60){
  59.                 clocktime.sec=0;L2=~L2;
  60.                         if(++clocktime.min==60){
  61.                         clocktime.min=0;L3=~L3;
  62.                                 if(++clocktime.hour==24){
  63.                                 clocktime.hour=0;P3=0x00;
  64.                                 }
  65.                         }
  66.                 }
  67.         }
  68. }
  69. /************************************主函數*********************************************/
  70. void main(){
  71.   TMOD=0x01;
  72.         TH0=0xd8;TL0=0xf0;
  73.         IE=0x82;TR0=1;

  74.         while(1)
  75.         {

  76.         }
  77.       

  78. }
復制代碼


回復

使用道具 舉報

ID:277550 發(fā)表于 2019-10-15 20:20 | 顯示全部樓層
十位顯示后,延時一下。。。。。。。。。另外,不應該在中斷中寫較多的邏輯代碼


~~~~~~~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

ID:88481 發(fā)表于 2019-10-15 22:36 | 顯示全部樓層
delay()延時不應放在中斷內,顯示會受中斷打斷
回復

使用道具 舉報

ID:624801 發(fā)表于 2019-10-16 00:12 | 顯示全部樓層
調試的時候按Ctrl+f5
回復

使用道具 舉報

ID:623789 發(fā)表于 2019-10-16 00:29 | 顯示全部樓層
P2=tab[shiwei];
delay(1000);
miao2=1;
miao1=0;
P2=tab[gewei];
你這里P2先賦值十位,延時一陣子就賦值個位,個位把十位覆蓋了
回復

使用道具 舉報

ID:123289 發(fā)表于 2019-10-16 23:15 | 顯示全部樓層
能畫出流程圖嗎?估計你畫不出來。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表