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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

4四位數(shù)碼管帶時鐘冒號,冒號閃爍問題

查看數(shù): 5180 | 評論數(shù): 31 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-8-10 16:09

正文摘要:

我思考了半天,打出了冒號閃爍代碼,測試發(fā)現(xiàn)每分鐘只閃57下。 一開始直接用延時500毫秒循環(huán)閃,發(fā)現(xiàn)搶了數(shù)碼管的動態(tài)掃描時間,造成數(shù)碼管閃爍。 這里是插入在動態(tài)掃描里的,顯示效果都還算理想,只是少 ...

回復(fù)

ID:796012 發(fā)表于 2022-8-14 13:13

if(sec &1)ss=1;else ss=0;/*1s一翻*/
這個一秒一翻轉(zhuǎn)還實在,直接關(guān)系1302
編譯不了0.5要不然就按秒亮滅了
ID:796012 發(fā)表于 2022-8-14 13:11
wulin 發(fā)表于 2022-8-14 07:21
單鍵調(diào)時,適用帶冒號時鐘專用數(shù)碼管。

下載了,慢慢玩
ID:796012 發(fā)表于 2022-8-14 13:10
Y_G_G 發(fā)表于 2022-8-13 14:50
話不是這么說的
你多少是會點的
雖說不是一定要像人家科班出身那樣,寫出嚴(yán)謹(jǐn)?shù)囊?guī)范的C語言代碼出來

復(fù)制修改的,改好的就湊一起了
ID:1042050 發(fā)表于 2022-8-14 10:14
調(diào)整延時時間
ID:213173 發(fā)表于 2022-8-14 07:21
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 17:59
看,按你的程序修改了單按鍵調(diào)時。就是單片機延時得調(diào)精準(zhǔn)些

單鍵調(diào)時,適用帶冒號時鐘專用數(shù)碼管。


  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define key_S 3                                        //宏定義短按(約15ms)
  5. #define key_L key_S*40                        //宏定義長按(約600ms)
  6. #define key_I key_S*20                        //宏定義長按連+間隔(約300ms)

  7. sbit K1=P2^4;//連接按鍵
  8. sbit DP=P0^7;//連接冒號

  9. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽LED段碼表
  10. uchar displayData[4];//顯示數(shù)據(jù)緩存
  11. char shi=12,fen=0,sec=0;//時,分,秒
  12. uchar Cnt5ms;//5ms時基
  13. uchar KeySec;//鍵值
  14. uint num=0;//計數(shù)
  15. bit flashing=0;//閃爍標(biāo)志

  16. //定時器初始化程序
  17. void Timer0Init()//5毫秒@12.000MHz
  18. {
  19.         TMOD=0x01;//定時器T0方式1
  20.         TH0=(65536-5000)/256;
  21.         TL0=(65536-5000)%256;
  22.         TF0=0;//中斷請求清0
  23.         TR0=1;//啟動T0
  24. }

  25. void keyscan()
  26. {
  27.         static unsigned int time=0;//計數(shù)變量
  28.         if(!K1)//按鍵按下
  29.         {
  30.                 time++;
  31.                 if(time>=key_L)//長按
  32.                 {
  33.                         switch(KeySec)
  34.                         {
  35.                                 case 1: shi++;if(shi>23)shi=0; break;
  36.                                 case 2: fen++;if(fen>59)fen=0; break;
  37.                         }
  38.                         time=key_I;//連+間隔
  39.                         num=1000;//自復(fù)位變量賦值(5秒)
  40.                 }
  41.         }
  42.         else                                //松手
  43.         {
  44.                 if(time>key_S && time<key_I)//短按
  45.                 {
  46.                         KeySec++;
  47.                         if(KeySec>2)
  48.                         {
  49.                                 KeySec=0;
  50.                                 Cnt5ms=0;
  51.                                 sec=0;
  52.                         }
  53.                         num=1000;//自復(fù)位變量賦值(5秒)
  54.                 }
  55.                 time=0;

  56.         }
  57. }

  58. void display()//顯示
  59. {
  60.         static uchar i=0;
  61.         displayData[0] = tab[shi/10%10];
  62.         displayData[1] = tab[shi%10];
  63.         displayData[2] = tab[fen/10%10];
  64.         displayData[3] = tab[fen%10];

  65.         P2&=0xf0;//消隱
  66.         if(KeySec==0)
  67.                 P0=displayData[i];

  68.         if(KeySec==1)
  69.         {
  70.                 if(flashing && (i==0||i==1) && K1)
  71.                         P0=0xff;//時調(diào)整閃爍
  72.                 else P0=displayData[i];
  73.         }

  74.         if(KeySec==2)
  75.         {
  76.                 if(flashing && (i==2||i==3) && K1)
  77.                         P0=0xff;//分調(diào)整閃爍
  78.                 else P0=displayData[i];
  79.         }
  80.         P2|=0x01<<i;
  81.         i=++i%4;
  82. }


  83. void main()//主函數(shù)
  84. {
  85.         Timer0Init();//初始化定時器
  86.         while(1)
  87.         {
  88.                 if(TF0)//查詢定時器中斷請求位
  89.                 {
  90.                         TF0=0;
  91.                         TH0=(65536-5000)/256;//5ms
  92.                         TL0=(65536-5000)%256;

  93.                         Cnt5ms++;
  94.                         if(KeySec!=0)
  95.                         {
  96.                                 num--;
  97.                                 if(num==0)//按鍵停止操作5秒自動恢復(fù)正常顯示
  98.                                 {
  99.                                         KeySec=0;
  100.                                         Cnt5ms=0;
  101.                                         sec=0;
  102.                                 }
  103.                                 if(Cnt5ms%50==0)   //0.25s 快閃
  104.                                         flashing=~flashing;
  105.                         }
  106.                         else if(Cnt5ms%100==0)//0.5s  慢閃
  107.                                         flashing=~flashing;

  108.                         if(Cnt5ms==200)//1s
  109.                         {
  110.                                 Cnt5ms=0;
  111.                                 sec++;
  112.                                 if(sec>=60)
  113.                                 {
  114.                                         sec=0;
  115.                                         fen++;
  116.                                         if(fen>=60)
  117.                                         {
  118.                                                 fen=0;
  119.                                                 shi++;
  120.                                                 if(shi>23)
  121.                                                         shi=0;
  122.                                         }
  123.                                 }
  124.                         }
  125.                         keyscan();                        //按鍵掃描
  126.                         display();                        //數(shù)碼管顯示
  127.                         if(KeySec==0)
  128.                                 DP=flashing;        //閃冒號 表示走時
  129.                         else DP=0;
  130.                 }
  131.         }
  132. }
復(fù)制代碼
4位數(shù)碼管時鐘仿真.rar (125.11 KB, 下載次數(shù): 15)


ID:401564 發(fā)表于 2022-8-13 14:50

話不是這么說的
你多少是會點的
雖說不是一定要像人家科班出身那樣,寫出嚴(yán)謹(jǐn)?shù)囊?guī)范的C語言代碼出來
但至少,一個語句占一行,這一點是要的
因為大家都是這樣的,如果你要貼代碼出來,多少是要考慮一下別人能不能看得明白你的代碼
像你這種代碼,很多時候,過一段時間,只怕是你自己都不知道自己代碼是什么意思了
ID:796012 發(fā)表于 2022-8-13 10:28
Y_G_G 發(fā)表于 2022-8-12 07:24
你這個代碼,寫得讓人耳目一新啊,有黑客帝國風(fēng)范

其實我什么都不懂
ID:401564 發(fā)表于 2022-8-12 07:24
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 17:59
看,按你的程序修改了單按鍵調(diào)時。就是單片機延時得調(diào)精準(zhǔn)些

你這個代碼,寫得讓人耳目一新啊,有黑客帝國風(fēng)范
ID:796012 發(fā)表于 2022-8-11 18:01
Y_G_G 發(fā)表于 2022-8-11 13:36
Miao在定時器中斷中改變,1秒鐘取反一次
OUT=..........;                   //顯示,冒號不亮
if(Miao)OUT&=.....;//冒 ...

修改了一個。本來就學(xué)著玩得
ID:796012 發(fā)表于 2022-8-11 18:00
188610329 發(fā)表于 2022-8-11 14:54
時鐘點是獨立引腳控制的話,建議用ds1307替代ds1302,因為ds1307有sqw引腳,可直接控制時鐘點,給07地址 ...

好,有錢再買回來研究
ID:624769 發(fā)表于 2022-8-11 14:54
玉萌業(yè)余發(fā)展 發(fā)表于 2022-8-11 12:20
感謝黒友回復(fù)。。那個是SQW引腳

時鐘點是獨立引腳控制的話,建議用ds1307替代ds1302,因為ds1307有sqw引腳,可直接控制時鐘點,給07地址分別寫入0x00,0x80,0x10可控制時鐘點亮,滅,閃。
ID:401564 發(fā)表于 2022-8-11 13:36
Miao在定時器中斷中改變,1秒鐘取反一次
OUT=..........;                   //顯示,冒號不亮
if(Miao)OUT&=.....;//冒號亮燈
如果你不會寫一個一秒鐘的定時器,那.............

ID:796012 發(fā)表于 2022-8-11 12:23
lkc8210 發(fā)表于 2022-8-10 17:00
冒號是哪根腳/段位?
假設(shè)是W3的dp段

冒號是哪根腳/段位?
假設(shè)是W3的dp段

P1=0xFF;w3=1;P1=smgduan[shi%16];
if(ss>=500)
{
        ss==0;
        if(flash)
        {
                P1 &= 0x7F;
        }
        flash = !flash;
}else{
        ss+=ms*4;
}
delay(ms);w3=0;//....



用的是單獨帶冒號的數(shù)碼管,不是小數(shù)點分出的;其實小數(shù)點分出可以節(jié)省硬件連接
ID:796012 發(fā)表于 2022-8-11 12:21
mengsiu 發(fā)表于 2022-8-11 10:35
這種閃爍我會用定時器中斷,不占用系統(tǒng)延時。他在閃爍的話給我的信息就是系統(tǒng)在運行。至于一分鐘閃多少下, ...

感謝黒友回復(fù)。。要精確閃爍哦
ID:796012 發(fā)表于 2022-8-11 12:20
董云交 發(fā)表于 2022-8-11 09:08
可以用定時器延伸出來做一個軟定時器,然后置標(biāo)志位進(jìn)行準(zhǔn)確定時

感謝黒友回復(fù)。
ID:796012 發(fā)表于 2022-8-11 12:20
wulin 發(fā)表于 2022-8-10 20:54
這個程序里有關(guān)于數(shù)碼管閃點的代碼,可以借鑒用于冒號閃爍。

感謝黒友回復(fù)。
ID:796012 發(fā)表于 2022-8-11 12:20
188610329 發(fā)表于 2022-8-10 18:06
這要具體情況具體分析,不能任死理的。
一般如果時鐘點 是獨立引腳的話,我比較習(xí)慣用 DS1307 的 SQW 引腳 ...

感謝黒友回復(fù)。。那個是SQW引腳
ID:796012 發(fā)表于 2022-8-11 12:19
npn 發(fā)表于 2022-8-10 18:00
你要用定時器中斷進(jìn)行動態(tài)掃描和計時。

感謝黒友回復(fù)。。自學(xué)的技術(shù),還不是很熟悉
ID:796012 發(fā)表于 2022-8-11 12:18
天ノ憶 發(fā)表于 2022-8-10 17:35
要想準(zhǔn)確就用定時器

感謝黒友回復(fù)。
ID:796012 發(fā)表于 2022-8-11 12:18
haiyang201 發(fā)表于 2022-8-10 17:06
定時器不是好一點,不占用時間

感謝黒友回復(fù)。。自學(xué)的技術(shù)不是很會
ID:796012 發(fā)表于 2022-8-11 12:17
lkc8210 發(fā)表于 2022-8-10 17:00
冒號是哪根腳/段位?
假設(shè)是W3的dp段

感謝黒友回復(fù)。。mh
ID:584814 發(fā)表于 2022-8-11 12:05
用個定時器之類的,約500ms滅,然后時鐘變秒時亮就可以。
ID:16255 發(fā)表于 2022-8-11 10:35
這種閃爍我會用定時器中斷,不占用系統(tǒng)延時。他在閃爍的話給我的信息就是系統(tǒng)在運行。至于一分鐘閃多少下,是57下還是63下,其實并不是那么重要的了。
ID:367840 發(fā)表于 2022-8-11 09:08
可以用定時器延伸出來做一個軟定時器,然后置標(biāo)志位進(jìn)行準(zhǔn)確定時
ID:213173 發(fā)表于 2022-8-10 20:54
這個程序里有關(guān)于數(shù)碼管閃點的代碼,可以借鑒用于冒號閃爍。
4位數(shù)碼管時鐘溫度表仿真.rar (175.43 KB, 下載次數(shù): 28)

ID:624769 發(fā)表于 2022-8-10 18:06
這要具體情況具體分析,不能任死理的。
一般如果時鐘點 是獨立引腳的話,我比較習(xí)慣用 DS1307 的 SQW 引腳輸出 1秒 的脈沖 來驅(qū)動。
而如果時鐘點 是和其他段是公用引腳,比如,在位2的 小數(shù)點。 那么會 利用定時器  每 500ms 翻轉(zhuǎn)一次 Flag_TimePiont 標(biāo)志, 在數(shù)碼管 動態(tài)掃描 顯示  位2 數(shù)字的時候:
if(Flag_TimePiont)   Disp[2] |= 0x80;
else Disp[2] &= 0x7f;
這樣的方法。
ID:57657 發(fā)表于 2022-8-10 18:00
你要用定時器中斷進(jìn)行動態(tài)掃描和計時。
ID:139866 發(fā)表于 2022-8-10 17:35
要想準(zhǔn)確就用定時器
ID:1023753 發(fā)表于 2022-8-10 17:06
定時器不是好一點,不占用時間
ID:161164 發(fā)表于 2022-8-10 17:00
冒號是哪根腳/段位?
假設(shè)是W3的dp段

  1. P1=0xFF;w3=1;P1=smgduan[shi%16];
  2. if(ss>=500)
  3. {
  4.         ss==0;
  5.         if(flash)
  6.         {
  7.                 P1 &= 0x7F;
  8.         }
  9.         flash = !flash;
  10. }else{
  11.         ss+=ms*4;
  12. }
  13. delay(ms);w3=0;//....
復(fù)制代碼



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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 特级生活片 | 成人精品福利 | 一区二区日韩 | 一区二区三区欧美 | 少妇黄色 | 国产日韩亚洲欧美 | 亚洲大片在线观看 | 久久国产精品视频 | 国产精品欧美一区二区 | 日韩欧美在线观看 | 精品欧美激情在线观看 | 国产视频在线观看一区二区三区 | 在线观看欧美日韩视频 | 国产精品一区二区在线观看 | 欧美视频一区二区三区 | 一区二区三区在线观看视频 | 天堂综合网 | 青久草视频 | 亚洲狠狠爱 | 99精品热视频 | 天天夜夜操 | 精国产品一区二区三区四季综 | 亚洲天堂999 | 亚洲性综合网 | 亚洲欧洲日本国产 | 久久国产精品视频 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 欧美日韩高清 | 孕妇一级毛片 | 久久久新视频 | 日日干日日 | 欧美中文字幕在线 | 亚洲欧美一区二区三区国产精品 | 国产黄色精品 | 欧美极品在线播放 | 亚洲 欧美 综合 | 日韩成人在线视频 | 成人一区在线观看 | 国产 91 视频 | 精品日韩一区 | 在线观看精品 |