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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13657|回復(fù): 11
收起左側(cè)

單片機按鍵實現(xiàn)0-9999計數(shù)器程序+仿真 4位一體數(shù)碼管顯示

  [復(fù)制鏈接]
ID:293363 發(fā)表于 2019-4-6 21:54 | 顯示全部樓層 |閱讀模式
*********************************************************************************************                                                                               本文已鎖,請進來解鎖*********************************************************************************************
  恭喜您解開本貼,既然來了就請認真看完再走吧
  名稱:按鍵調(diào)節(jié)數(shù)碼管顯示

  功能:通過按鍵加減數(shù)碼管所顯示的數(shù)字
            按下k1加1,最大加到9999
            按下k2減1,最小減到0
            按下k3清零復(fù)位   
   用了最簡單的思路,各路大神不喜勿噴.

   小弟就不和各位爺繞彎子了,直接上圖

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真.jpg

單片機源程序如下:
  1. //----------------------------------------------------------------------
  2. //名稱:按鍵調(diào)節(jié)數(shù)碼管顯示
  3. //----------------------------------------------------------------------
  4. //功能:通過按鍵加減數(shù)碼管所顯示的數(shù)字
  5. //     按下k1加1,最大加到9999
  6. //     按下k2減1,最小減到0
  7. //     按下k3清零復(fù)位   
  8. //----------------------------------------------------------------------
  9. #include <reg51.h>
  10. #define uchar unsigned char
  11. #define uint unsigned int

  12. sbit k1 = P1^0;                   //加
  13. sbit k2 = P1^1;                   //減
  14. sbit k3 = P1^2;                   //復(fù)位
  15. void key(void);
  16. void display(void);

  17. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
  18.                     0x92,0x82,0xf8,0x80,0x90};           //數(shù)組
  19.                        
  20. char m=99,n=98;                                //顯示初值,m,n的值決定開機顯示數(shù)值
  21. //****************************************
  22. //延時程序
  23. //****************************************
  24. void delayms(uint xms)
  25. {
  26.    uint i,j;
  27.    for(i=xms;i>0;i--)
  28.    for(j=110;j>0;j--);
  29. }
  30. //***********************************************
  31. //顯示程序
  32. //***********************************************
  33. void display(void)
  34. {
  35.         P2=0X08;
  36.                 P0=table[m%10];   //顯示個位
  37.                 delayms(5);  
  38.                 P2=0X04;
  39.             P0=table[m/10];          //顯示十位
  40.                 delayms(5);                                                              
  41.             P2=0X02;
  42.                 P0=table[n%10];          //顯示百位
  43.                 delayms(5);
  44.                 P2=0X01;
  45.                 P0=table[n/10];          //顯示千位
  46.                 delayms(5);
  47. }

  48. //***************************************************
  49. //按鍵處理
  50. //***************************************************
  51. void key()
  52. {
  53.   if(k1==0)                                         //檢測按鍵是否被按下
  54.    {                                                 //延時消抖
  55.            delayms(10);                         
  56.         if(k1==0)                                 //再次檢測是否真正按下按鍵
  57.         {
  58.           m++;                                         //m自加一
  59.           if(m>=100)                         //如果m加到100則n加一 (限制m的取值范圍) 個位、十位最大顯示99
  60.           {
  61.                   n++;                                 //n自加一
  62.                 m=0;                                 //使m又從0開始計數(shù)
  63.                 if(n>=100)                         //如果n加到100則m=n=99 (限制n的取值范圍) 百位、千位最大顯示99
  64.                 {
  65.                   m=99;                                 //最大顯示9999
  66.                   n=99;
  67.                 }
  68.           }
  69.         }
  70.         while(!k1);                                 //按鍵松開
  71.    }

  72.   if(k2==0)                                         //檢測按鍵是否被按下
  73.    {                                                 //延時消抖
  74.            delayms(10);                         //再次檢測是否真正按下按鍵
  75.         if(k2==0)
  76.         {                                                 //m自減一
  77.           m--;
  78.           if(m<=0)                                 //如果m減到0則n減一 (限制n的取值范圍) 個位、十位最小顯示00
  79.           {                                                 
  80.             m=99;                                 //重新給m裝初值
  81.                   n--;                                 //n自減一
  82.                 if(n==-1)                         //如果n減到-1,則m=n=0 (限制n的取值范圍) 百位、千位最小顯示00
  83.                 {
  84.                  n=0;                                 //最小顯示0000
  85.                  m=0;
  86.                 }
  87.           }
  88.         }
  89.         while(!k2);                                 //按鍵松開
  90.    }

  91. if(k3==0)                                         //檢測按鍵是否被按下
  92. {
  93.    delayms(10);                                 //延時消抖
  94.    if(k3==0)                                 //再次檢測是否真正按下按鍵
  95.    {
  96.             m=0;                                         //復(fù)位,顯示0000
  97.          n=0;
  98.    }
  99.    while(!k3);                                 //按鍵松開
  100. }
  101. }

  102. void main()
  103. {
  104.   while(1)
  105.   {                                                         //調(diào)用按鍵檢測
  106.    key();                                         //數(shù)碼管顯示

  107. ……………………

  108. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png

所有資料51hei提供下載:
0~9999計數(shù)器.zip (53.03 KB, 下載次數(shù): 226)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:24486 發(fā)表于 2020-3-21 12:23 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報

ID:740965 發(fā)表于 2020-4-29 15:41 | 顯示全部樓層
多謝大佬分享
回復(fù)

使用道具 舉報

ID:801315 發(fā)表于 2020-7-10 23:20 | 顯示全部樓層
你好  可預(yù)置計數(shù)值 的多步語言能寫一個嗎  賦予輸出口  1000hz以內(nèi)的
回復(fù)

使用道具 舉報

ID:847810 發(fā)表于 2020-11-23 14:42 | 顯示全部樓層
這個跟中斷方式有關(guān)系嗎
回復(fù)

使用道具 舉報

ID:848824 發(fā)表于 2021-2-20 16:36 | 顯示全部樓層
用stc89c52怎么改程序啊
回復(fù)

使用道具 舉報

ID:95809 發(fā)表于 2021-2-22 10:03 來自觸屏版 | 顯示全部樓層
zhangleixbyl 發(fā)表于 2021-2-20 16:36
用stc89c52怎么改程序啊

不用改,直接用,實在手癢愿意改把頭文件改成REG52。
回復(fù)

使用道具 舉報

ID:848824 發(fā)表于 2021-2-23 05:41 來自觸屏版 | 顯示全部樓層
89c52顯示器全亮沒倒計時顯示,沒按按鍵顯示都是零,按了按鍵顯示都是888是什么問題?不兼容嗎
回復(fù)

使用道具 舉報

ID:95809 發(fā)表于 2021-2-26 20:08 | 顯示全部樓層
zhangleixbyl 發(fā)表于 2021-2-23 05:41
89c52顯示器全亮沒倒計時顯示,沒按按鍵顯示都是零,按了按鍵顯示都是888是什么問題?不兼容嗎

檢查你的數(shù)碼管驅(qū)動電路,他是直接驅(qū)動共陽數(shù)碼管,用89C52可能亮度不夠,用12或15單片機,用推挽模式驅(qū)動就好了。
回復(fù)

使用道具 舉報

ID:848824 發(fā)表于 2021-2-26 23:36 | 顯示全部樓層
bxyyhan 發(fā)表于 2021-2-26 20:08
檢查你的數(shù)碼管驅(qū)動電路,他是直接驅(qū)動共陽數(shù)碼管,用89C52可能亮度不夠,用12或15單片機,用推挽模式驅(qū) ...

小白初學(xué)者不會改啊,謝謝大神指點。
回復(fù)

使用道具 舉報

ID:95809 發(fā)表于 2021-2-27 20:20 | 顯示全部樓層
zhangleixbyl 發(fā)表于 2021-2-26 23:36
小白初學(xué)者不會改啊,謝謝大神指點。

看代碼的19-20行,{0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; 這是共陽數(shù)碼管的段碼,分別對應(yīng)數(shù)字0-9,既然是共陽數(shù)碼管,在顯示的時候就要在每位數(shù)碼管的陽極接通高電平才能點亮。

再看37-48行,



  • P2=0X08;
  •                 P0=table[m%10];   //顯示個位
  •                 delayms(5);
  •                 P2=0X04;
  •             P0=table[m/10];          //顯示十位
  •                 delayms(5);
  •             P2=0X02;
  •                 P0=table[n%10];          //顯示百位
  •                 delayms(5);
  •                 P2=0X01;
  •                 P0=table[n/10];          //顯示千位
  •                 delayms(5);
這里表明顯示的時候分別往數(shù)碼管陽極輸出高電平,如果能的電路用了三極管擴流驅(qū)動數(shù)碼管,那么就需要輸出低電平,也就是“取反“,不然就是你那種現(xiàn)象,該亮的不亮,不該亮的全亮。如果你使用的是12或15單片機,可以在函數(shù)后加上
P0M1 = 0x00; P0M0 = 0xFF; //P0(00000000B,11111111B)
P2M1 = 0x00; P2M0 = 0x0F; //P2(00000000B,00001111B)
使用單片機推挽模式直接驅(qū)動數(shù)碼管。
回復(fù)

使用道具 舉報

ID:848824 發(fā)表于 2021-3-10 13:10 | 顯示全部樓層
bxyyhan 發(fā)表于 2021-2-27 20:20
看代碼的19-20行,{0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; 這是共陽數(shù)碼管 ...

謝謝,指點
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色网站视频 | 久久久久久久久久久久久9999 | 日韩一区二区三区在线视频 | 亚洲小视频 | 国产成人精品一区二区三区 | 日韩在线一区视频 | 国产精品一区二区日韩 | 国产精品久久久久久福利一牛影视 | 久久久久99 | 91精品国产91久久综合桃花 | 69电影网| 91精品国产欧美一区二区成人 | 国产精品视频免费观看 | 欧美日韩电影一区二区 | 亚洲视频一区在线观看 | 亚洲精品一区二区久 | 在线视频国产一区 | 免费的色网站 | 中文字幕精品一区久久久久 | 国产精品高清在线 | 一级毛片视频在线观看 | 日韩欧美在线一区 | 中文视频在线 | 一级黄色av电影 | 国产精品久久久久久久久久久久 | 久久国产精品亚洲 | 成人黄色a | 视频一区在线观看 | 亚洲国产视频一区二区 | 国产精久久久久久久 | 亚州精品天堂中文字幕 | 日韩免费在线视频 | 日本在线黄色 | 午夜在线精品 | 国产一区二区 | 日韩欧美中文 | 久久成人精品一区二区三区 | 美女一级a毛片免费观看97 | 在线观看中文字幕视频 | 免费看黄视频网站 | 日本男人天堂 |