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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

自制了一個用數(shù)碼管顯示的單片機時鐘,有點小問題,希望解答

查看數(shù): 3576 | 評論數(shù): 10 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-3-27 11:54

正文摘要:

各位大神好,本人做了一個數(shù)碼管顯示的時鐘,但是現(xiàn)在有點小問題最后有仿真圖,下面一張圖片顯示效果,下面有仿真圖,protues8.6版本的,和開發(fā)板上的電路圖是一樣的 預實現(xiàn)功能: 時鐘24小時顯示,按下K1,時鐘 ...

回復

ID:89515 發(fā)表于 2021-3-28 08:51
mengzhixinheng 發(fā)表于 2021-3-28 08:26
剛才沒看程序,根據(jù)你的描述做出了判斷。現(xiàn)在看了一下發(fā)現(xiàn)你的程序根本無法實現(xiàn)按鍵功能。程序處于等待狀 ...

抱歉,沒想到你把按鍵程序獨立寫成了一個循環(huán)函數(shù)。那么按鍵功能自然可以實現(xiàn)了,既然顯示程序用了中斷延時,就把按鍵程序也用中斷延時就可以解決你的問題了。
ID:89515 發(fā)表于 2021-3-28 08:26
mengzhixinheng 發(fā)表于 2021-3-28 07:42
就是顯示沒有得到試試刷新嘛!你想一下怎么解決按下按鍵,立刻刷新程序的問題就行了。

剛才沒看程序,根據(jù)你的描述做出了判斷。現(xiàn)在看了一下發(fā)現(xiàn)你的程序根本無法實現(xiàn)按鍵功能。程序處于等待狀態(tài),如果不是因為顯示函數(shù)放在中斷中,顯示功能都無法實現(xiàn),太糟糕了。我不知道你為何等待,如果你非要這樣寫,那就把按鍵函數(shù)也放在中斷中,這樣至少可以達到你想要的目的,雖然這樣并不好!!!
ID:89515 發(fā)表于 2021-3-28 07:42
就是顯示沒有得到試試刷新嘛!你想一下怎么解決按下按鍵,立刻刷新程序的問題就行了。
ID:213173 發(fā)表于 2021-3-27 17:36
這個示例可能對你有所幫助
數(shù)碼管時鐘長短按調(diào)整點閃爍 鬧鐘38譯碼器 仿真.zip (126.38 KB, 下載次數(shù): 9)

ID:332444 發(fā)表于 2021-3-27 16:50
ID:876099 發(fā)表于 2021-3-27 16:49
lwh999995 發(fā)表于 2021-3-27 16:00
  • #include //代碼有點亂,我也只能隨意改改
  • #define uchar unsigned char
  • #define uint unsign ...

  • 其實可以直接說一下怎么改程序的
    ID:876099 發(fā)表于 2021-3-27 16:41
    munuc_w 發(fā)表于 2021-3-27 16:30
    應該是在調(diào)整時鐘的函數(shù)中沒有更新屏顯,注意:是調(diào)整后數(shù)據(jù)的顯示刷新。

    能不能提示一下怎么修改呢謝謝,因為最近一直在改這個
    ID:752974 發(fā)表于 2021-3-27 16:30
    應該是在調(diào)整時鐘的函數(shù)中沒有更新屏顯,注意:是調(diào)整后數(shù)據(jù)的顯示刷新。
    ID:207421 發(fā)表于 2021-3-27 16:00
    • #include <REG51.H>//代碼有點亂,我也只能隨意改改
    • #define uchar unsigned char
    • #define uint unsigned int
    • uint i,j,sec,sec1=0,sec2=0;
    • sbit k1=P3^1;//停止或啟動定時器
    • sbit k2=P3^0;//小時
    • sbit k3=P3^2;//分
    • sbit k4=P3^3;//秒
    • sbit BZ=P1^5;//為了不讓開發(fā)板的蜂鳴器響所以設(shè)置了一下,可以不用管BZ
    • uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7F,0x6F};
    • void display();
    • void button();
    • void init();
    • void button_int();
    • unsigned char num = 0;
    • void delay(uint t)
    • {
    •         while(t--);
    • }
    • void main()
    • {
    •         P3=0x0f;//0000 1111
    •         init();
    •         while(1)
    •         {
    •                
    •                 display();
    •                 if(P3!=0x0f)
    •                 {
    •                         delay(1000);
    •                         if(P3!=0x0f)
    •                         {
    •                                 button_int();
    •                                 display();
    •                                 while(P3!=0x0f);
    •                         }
    •                 }
    •                 delay(100);
    •                 P0=0x00;
    •         }
    • }
    • //a=10,b=11,c=12,d=13,e=14,f=15
    • void button_int()
    • {
    •         if(P3==0x0d)//0000 1101 - P3^1 - K1
    •         {
    •                 num = 2;
    •                 TR0=~TR0;
    •         }
    •         if(TR0==0)
    •         {
    •                 if(P3==0x0e)//0000 1110  - P3^0 - K2 - num = 2 - set sec2
    •                 {
    •                         num = 2;
    •                         sec2++;
    •                         if(sec2==24)
    •                         {
    •                                 sec2=0;
    •                         }
    •                 }
    •                 if(P3==0x0b)//0000 1011  - P3^2 - K3 - num = 3 - set sec1
    •                 {
    •                         num = 3;
    •                         sec1++;
    •                         if(sec1==60)
    •                         {
    •                                 sec1=0;
    •                         }
    •                 }
    •                 if(P3==0x07)//0000 0111  - P3^3 - K4 - num = 4 - set sec
    •                 {
    •                         num = 4;
    •                         sec=0;
    •                 }
    •         }
    • }
    • void T0_time()interrupt 1
    • {
    •         TH0=0xfc;
    •         TL0=0x67;
    •         i++;
    •         if(i>=1000)
    •         {
    •                 i=0;
    •                 sec++;
    •                 if(sec==60)
    •                 {
    •                         sec=0;
    •                         sec1++;
    •                         if(sec1==60)
    •                         {
    •                                 sec1=0;
    •                                 sec2++;
    •                                 if(sec2==24)
    •                                 {
    •                                         sec2=0;
    •                                 }
    •                         }
    •                 }
    •         }
    • }
    • void init()
    • {
    •         BZ=0;
    •         TMOD=0x01;
    •         TH0=0xfc;
    •         TL0=0x67;
    •         ET0=1;
    •         EA=1;
    •         TR0=1;
    • }
    • void display()
    • {
    •         if(TR0==0)
    •         {
    •                 if(num==4)//P3^3 - K4 - num = 4 - set sec
    •                 {
    •                         P2=0x00;P0=table[sec%10];delay(500);
    •                         P2=0x04;P0=table[sec/10%10];
    •                 }
    •                 if(num==3)//P3^2 - K3 - num = 3 - set sec1
    •                 {
    •                         P2=0x0c;P0=table[sec1%10];delay(500);
    •                         P2=0x10;P0=table[sec1/10%10];
    •                 }
    •                 if(num==2)//P3^0 - K2 - num = 2 - set sec2
    •                 {
    •                         P2=0x18;P0=table[sec2%10];delay(500);
    •                         P2=0x1c;P0=table[sec2/10%10];
    •                 }
    •         }else{
    •                 num = 0;
    •                 switch(j)
    •                 {
    •                         case 0:P2=0x00;j++;P0=table[sec%10];break;
    •                         case 1:P2=0x04;j++;P0=table[sec/10%10];break;
    •                         case 2:P2=0x08;j++;P0=0x40;break;
    •                         case 3:P2=0x0c;j++;P0=table[sec1%10];break;
    •                         case 4:P2=0x10;j++;P0=table[sec1/10%10];break;
    •                         case 5:P2=0x14;j++;P0=0x40;break;
    •                         case 6:P2=0x18;j++;P0=table[sec2%10];break;
    •                         case 7:P2=0x1c;j=0;P0=table[sec2/10%10];break;
    •                         default:break;
    •                 }
    •         }
    • }




    評分

    參與人數(shù) 1黑幣 +20 收起 理由
    admin + 20 回帖助人的獎勵!

    查看全部評分

    ID:207421 發(fā)表于 2021-3-27 15:54
    1. 按鍵把定時器0都關(guān)閉了,數(shù)碼管無法顯示。
    2. 最好加一個定時器刷新數(shù)碼管。
    代碼太亂,我也只能隨意改改了:
    • #include <REG51.H>
    • #define uchar unsigned char
    • #define uint unsigned int
    • uint i,j,sec,sec1=0,sec2=0;
    • sbit k1=P3^1;//停止或啟動定時器
    • sbit k2=P3^0;//小時
    • sbit k3=P3^2;//分
    • sbit k4=P3^3;//秒
    • sbit BZ=P1^5;//為了不讓開發(fā)板的蜂鳴器響所以設(shè)置了一下,可以不用管BZ
    • uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7F,0x6F};
    • void display();
    • void button();
    • void init();
    • void button_int();
    • unsigned char num = 0;
    • void delay(uint t)
    • {
    •         while(t--);
    • }
    • void main()
    • {
    •         P3=0x0f;//0000 1111
    •         init();
    •         while(1)
    •         {
    •                
    •                 display();
    •                 if(P3!=0x0f)
    •                 {
    •                         delay(1000);
    •                         if(P3!=0x0f)
    •                         {
    •                                 button_int();
    •                                 display();
    •                                 while(P3!=0x0f);
    •                         }
    •                 }
    •                 delay(100);
    •                 P0=0x00;
    •         }
    • }
    • //a=10,b=11,c=12,d=13,e=14,f=15
    • void button_int()
    • {
    •         if(P3==0x0d)//0000 1101 - P3^1 - K1
    •         {
    •                 num = 2;
    •                 TR0=~TR0;
    •         }
    •         if(TR0==0)
    •         {
    •                 if(P3==0x0e)//0000 1110  - P3^0 - K2 - num = 2 - set sec2
    •                 {
    •                         num = 2;
    •                         sec2++;
    •                         if(sec2==24)
    •                         {
    •                                 sec2=0;
    •                         }
    •                 }
    •                 if(P3==0x0b)//0000 1011  - P3^2 - K3 - num = 3 - set sec1
    •                 {
    •                         num = 3;
    •                         sec1++;
    •                         if(sec1==60)
    •                         {
    •                                 sec1=0;
    •                         }
    •                 }
    •                 if(P3==0x07)//0000 0111  - P3^3 - K4 - num = 4 - set sec
    •                 {
    •                         num = 4;
    •                         sec=0;
    •                 }
    •         }
    • }
    • void T0_time()interrupt 1
    • {
    •         TH0=0xfc;
    •         TL0=0x67;
    •         i++;
    •         if(i>=1000)
    •         {
    •                 i=0;
    •                 sec++;
    •                 if(sec==60)
    •                 {
    •                         sec=0;
    •                         sec1++;
    •                         if(sec1==60)
    •                         {
    •                                 sec1=0;
    •                                 sec2++;
    •                                 if(sec2==24)
    •                                 {
    •                                         sec2=0;
    •                                 }
    •                         }
    •                 }
    •         }
    • }
    • void init()
    • {
    •         BZ=0;
    •         TMOD=0x01;
    •         TH0=0xfc;
    •         TL0=0x67;
    •         ET0=1;
    •         EA=1;
    •         TR0=1;
    • }
    • void display()
    • {
    •         if(TR0==0)
    •         {
    •                 if(num==4)//P3^3 - K4 - num = 4 - set sec
    •                 {
    •                         P2=0x00;P0=table[sec%10];delay(500);
    •                         P2=0x04;P0=table[sec/10%10];
    •                 }
    •                 if(num==3)//P3^2 - K3 - num = 3 - set sec1
    •                 {
    •                         P2=0x0c;P0=table[sec1%10];delay(500);
    •                         P2=0x10;P0=table[sec1/10%10];
    •                 }
    •                 if(num==2)//P3^0 - K2 - num = 2 - set sec2
    •                 {
    •                         P2=0x18;P0=table[sec2%10];delay(500);
    •                         P2=0x1c;P0=table[sec2/10%10];
    •                 }
    •         }else{
    •                 num = 0;
    •                 switch(j)
    •                 {
    •                         case 0:P2=0x00;j++;P0=table[sec%10];break;
    •                         case 1:P2=0x04;j++;P0=table[sec/10%10];break;
    •                         case 2:P2=0x08;j++;P0=0x40;break;
    •                         case 3:P2=0x0c;j++;P0=table[sec1%10];break;
    •                         case 4:P2=0x10;j++;P0=table[sec1/10%10];break;
    •                         case 5:P2=0x14;j++;P0=0x40;break;
    •                         case 6:P2=0x18;j++;P0=table[sec2%10];break;
    •                         case 7:P2=0x1c;j=0;P0=table[sec2/10%10];break;
    •                         default:break;
    •                 }
    •         }
    • }



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

    Powered by 單片機教程網(wǎng)

    快速回復 返回頂部 返回列表
    主站蜘蛛池模板: 精品综合久久久 | 天天射影院| 久久久久国产 | 国产一区二区三区四区 | av黄色在线播放 | 亚洲综合小视频 | 天天插天天操 | 亚洲一区二区久久 | 视频一区二区国产 | 国产精品片aa在线观看 | 国产在线小视频 | 国产精品综合一区二区 | 免费一级淫片aaa片毛片a级 | 欧美一区二区大片 | 精久久久| 亚洲国产精品成人 | 麻豆视频在线免费观看 | 在线观看视频一区 | 精品综合久久久 | 国产在线视频一区二区 | 欧美一区二区三区日韩 | 国产精品成人一区二区 | 午夜视频网站 | av高清毛片 | 精品一区二区三区四区五区 | 国产成人精品综合 | 青青久久 | 久日精品| 日本精品视频一区二区 | 久久精品16 | 高清视频一区二区三区 | 中文字幕精品视频在线观看 | 午夜91| 中文字幕精品一区二区三区精品 | 黄网站在线播放 | 亚洲精品一区二三区不卡 | 中文字幕成人av | 亚洲精品成人av | 黄色一级免费看 | 日韩精品在线一区 | 精品三区|