找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5032|回復: 0
收起左側

單片機靜態(tài)數(shù)碼管顯示實驗

[復制鏈接]
ID:302604 發(fā)表于 2018-4-6 02:28 | 顯示全部樓層 |閱讀模式
靜態(tài)數(shù)碼管顯示單片機源程序如下:
  1. /**************************************************************************************
  2. *                              靜態(tài)數(shù)碼管顯示實驗                                                                                                  *
  3. 實現(xiàn)現(xiàn)象:下載程序后數(shù)碼管靜態(tài)顯示0。
  4. 注意事項:                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

  7. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  8. typedef unsigned char u8; int s=0;
  9. sbit k1=P1^0;         //定義P10口是k1
  10. sbit k2=P1^1;         //定義P11口是k2
  11. sbit LSA=P2^2;
  12. sbit LSB=P2^3;
  13. sbit LSC=P2^4;
  14. //sbit led1=p0^2;
  15. sbit led2=P0^1;

  16. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  17.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
  18. /*******************************************************************************
  19. * 函 數(shù) 名         : delay
  20. * 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
  21. *******************************************************************************/
  22. void delay(u16 i)
  23. {
  24.         while(i--);       
  25. }
  26. /*******************************************************************************
  27. * 函 數(shù) 名         : keypros
  28. * 函數(shù)功能                   : 按鍵處理函數(shù),判斷按鍵K1是否按下
  29. *******************************************************************************/
  30. /*void keypros()
  31. {
  32.         if(k1==0)                  //檢測按鍵K1是否按下
  33.         {       
  34.                 delay(1000);   //消除抖動 一般大約10ms
  35.                 if(k1==0)         //再次判斷按鍵是否按下
  36.                 {
  37.                 s++;          //led狀態(tài)取反
  38.                 }
  39.                 while(!k1);         //檢測按鍵是否松開
  40.         }
  41.        
  42.                 if(k2==0)                  //檢測按鍵K1是否按下
  43.         {       
  44.                 delay(1000);   //消除抖動 一般大約10ms
  45.                 if(k2==0)         //再次判斷按鍵是否按下
  46.                 {
  47.                 s--;          //led狀態(tài)取反
  48.                 }
  49.                 while(!k1);         //檢測按鍵是否松開
  50.         }
  51.        
  52.                        
  53. }         */


  54. /*******************************************************************************
  55. * 函 數(shù) 名       : main
  56. * 函數(shù)功能                 : 主函數(shù)
  57. * 輸    入       : 無
  58. * 輸    出             : 無
  59. *******************************************************************************/
  60. /*void main()
  61. {       

  62.         P0=~smgduan(0);
  63.         delay();
  64. } */

  65. /*******************************************************************************
  66. * 函 數(shù) 名         : delay
  67. * 函數(shù)功能                   : 延時函數(shù),i=1時,大約延時10us
  68. *******************************************************************************/
  69. /*void delay(u16 i)
  70. {
  71.         while(i--);       
  72. }*/

  73. /*******************************************************************************
  74. * 函 數(shù) 名         : DigDisplay
  75. * 函數(shù)功能                   : 數(shù)碼管動態(tài)掃描函數(shù),循環(huán)掃描8個數(shù)碼管顯示
  76. *******************************************************************************/
  77. void DigDisplay()
  78. {
  79.         u8 i;
  80.         for(i=0;i<9;i++)
  81.         {
  82.                 switch(i)         //位選,選擇點亮的數(shù)碼管,
  83.                 {
  84.                         case(0):
  85.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  86.                         case(1):
  87.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  88.                         case(2):
  89.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  90.                         case(3):
  91.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  92.                         case(4):
  93.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  94.                         case(5):
  95.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  96.                         case(6):
  97.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  98.                         case(7):
  99.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位       
  100.                 }
  101.                 P0=smgduan[i];//發(fā)送段碼
  102.                 delay(100); //間隔一段時間掃描       
  103.                 P0=0x00;//消隱
  104.         }
  105. }

  106. /*******************************************************************************
  107. * 函 數(shù) 名       : main
  108. * 函數(shù)功能                 : 主函數(shù)
  109. * 輸    入       : 無
  110. * 輸    出             : 無
  111. *******************************************************************************/
  112. void main()
  113. {       
  114.         if(k1==0)                  //檢測按鍵K1是否按下
  115.         {       
  116.                 delay(1000);   //消除抖動 一般大約10ms
  117.                 if(k1==0)         //再次判斷按鍵是否按下
  118.                 {
  119.                 led2=~led2;          //led狀態(tài)取反
  120.                 }
  121.                 while(!k1);         //檢測按鍵是否松開
  122.         }
  123.        
  124.                 if(k2==0)                  //檢測按鍵K1是否按下
  125.         {       
  126.                 delay(1000);   //消除抖動 一般大約10ms
  127.                 if(k2==0)         //再次判斷按鍵是否按下
  128.                 {
  129.                 //i--;          //led狀態(tài)取反
  130.                 }
  131.                 while(!k1);         //檢測按鍵是否松開
  132.         }
  133.        
  134.         while(1)
  135.         {       
  136.                 DigDisplay();  //數(shù)碼管顯示函數(shù)       
  137.         }               
  138. }
復制代碼

所有資料51hei提供下載:
靜態(tài)數(shù)碼管顯示.zip (38.55 KB, 下載次數(shù): 13)


回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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