找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機傳感器計數(shù)程序

[復(fù)制鏈接]
ID:237596 發(fā)表于 2017-12-19 15:08 | 顯示全部樓層 |閱讀模式
單片機進行傳感器計數(shù)

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned  int
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. uchar code table[]={0x3f,0X06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};     //所需的段的位碼0~9
  7. uchar code tablewe[]={0xfe,0xfd,0xfb};
  8. uchar aa,bai,shi,ge;      //定義百位、十位、個位數(shù)據(jù)類型
  9. uint  date=0,dispcount=0;//定義數(shù)據(jù)類型
  10. /******************************************************************
  11. 延時函數(shù)
  12. ******************************************************************/
  13. void delay(uchar t)//延時程序 t=1時為 1ms
  14. {
  15. uchar m,n,z;
  16. for(m=t;m>0;m--)
  17. for(n=110;n>0;n--)
  18. for(z=1;z>0;z--);
  19. }

  20. /**********************************************************************
  21.                 數(shù)碼管動態(tài)掃描
  22. *********************************************************************/
  23. void display(uint dispcount)
  24. {
  25. /*****************數(shù)據(jù)轉(zhuǎn)換*****************************/
  26.                 bai=dispcount/100;           //求百位
  27.                 shi=dispcount%100/10;        //求十位
  28.                 ge=dispcount%10;                                   //求個位

  29.                 dula=1;                                         //打開段選
  30.                 P0=table[bai];                                //百位輸給P0口
  31.                 dula=0;                                                //關(guān)閉段選
  32.                 wela=1;                                                //打開位選
  33.                 P0=0xfe;                                        //P0口輸給第一位
  34.                 wela=0;                                                //關(guān)閉位選
  35.                 delay(1);

  36.                 dula=1;
  37.                 P0=table[shi];
  38.                 dula=0;
  39.                 wela=1;
  40.                 P0=0xfd;
  41.                 wela=0;
  42.                 delay(1);

  43.                 dula=1;
  44.                 P0=table[ge];
  45.                 dula=0;
  46.                 wela=1;
  47.                 P0=0xfb;
  48.                 wela=0;
  49.                 delay(1);
  50.     }

  51. void init()
  52. {       
  53.         wela=0;
  54.         dula=0;
  55.         EX0=1;                                //int0外部中斷打開。
  56.         IT0=0;                                //低電平有效,3.0口,不設(shè)置也沒關(guān)系
  57. //        ET0=1;                                //t0定時中斷。即IE=0x82;
  58. //        TMOD=0x01;                        //t0啟動方式為方式1,16位
  59. //        TR0=1;                                //啟動定時器0
  60. //        TH0=0x4c;
  61. //        TL0=0x00;
  62.         EA=1;                                //開總中斷       
  63.        
  64. }


  65. /*************************************************************************
  66.                                 主函數(shù)      
  67. **************************************************************************/
  68. void main()
  69. {
  70. //        aa=0;
  71. //        TH0=0x4c;
  72. //        TL0=0x00;
  73.         init();
  74.         while(1)
  75.         {
  76.                 display(dispcount);
  77.         }         
  78. }   

  79. void ExtInt0() interrupt 0 //外部0中斷服務(wù)程序
  80. {
  81.                 delay(200);
  82.                 date++;//每按一次中斷按鍵,計數(shù)加一
  83.                 dispcount=date;
  84.                 if (dispcount==999) //計數(shù)范圍0-999
  85.                         {
  86.                                 dispcount=0;
  87. ……………………

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

所有資料51hei提供下載:
傳感器計數(shù).rar (26.47 KB, 下載次數(shù): 16)


回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表