欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于51單片機的光電開關計數仿真設計+程序 [打印本頁]

作者: -_-    時間: 2019-3-13 10:45
標題: 基于51單片機的光電開關計數仿真設計+程序
電路原理圖如下:

計要求
1)利用光電開關計數系統,可在0-999任意設定計數值,超過設定值時,步進電機停止。計數時步進電機以某一恒定速度轉動。
2)超過設定值后利用220V報警燈提示。
3)數碼管顯示當前計數值和設定值。(按鍵選擇是出于設定還是計數狀態)

單片機程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit p1=P2^0;
  6. sbit p2=P2^1;
  7. sbit p3=P2^2;
  8. sbit p4=P2^3;

  9. sbit q1=P2^4;
  10. sbit q2=P2^5;
  11. sbit q3=P2^6;


  12. uchar zongshu,szzongshu;
  13. uchar baiwei,shiwei,gewei;
  14. uchar buff,times,j;
  15. uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  16. uchar idata value[8];
  17. uchar  key,a1,a2,a3;

  18. void fs_chushihua (void)
  19. {
  20.    SCON=0x50;          //串行控制寄存器01010000,工作方式1,允許接收
  21.    TMOD=0x20;          //工作方式控制寄存器00100000,定時器1,工作方式2
  22.    TH1=0xfd;         
  23.    TL1=0xfd;                 //設置波特率9600
  24.    TI=0;                         //發送中斷標識位,=1表示發送結束
  25.    TR1=1;                         //打開定時器T1
  26. }

  27. void delay (void)
  28. {
  29.   uint i;
  30.   for (i=0;i<230;i++);
  31. }

  32. void delay1ms (void)   //開機延時1ms
  33. {
  34.    uchar i;
  35.    for (i=200;i>0;i--);
  36. }

  37. void delay5ms (void)        //防止抖動,延時5ms
  38. {
  39.    unsigned char i,j;
  40.    for (i=5;i>0;i--)
  41.    for (j=230;j>0;j--);
  42. }

  43. void xianshi (void)
  44. {  
  45.    switch (value[times-1])
  46.    {
  47.        case 0 : P0=dispcode[value[times-1]];break;
  48.            case 1 :        P0=dispcode[value[times-1]];break;
  49.            case 2 :        P0=dispcode[value[times-1]];break;
  50.            case 3 :        P0=dispcode[value[times-1]];break;
  51.            case 4 :        P0=dispcode[value[times-1]];break;
  52.            case 5 : P0=dispcode[value[times-1]];break;
  53.            case 6 :        P0=dispcode[value[times-1]];break;
  54.            case 7 : P0=dispcode[value[times-1]];break;
  55.            case 8 :        P0=dispcode[value[times-1]];break;
  56.            case 9 :        P0=dispcode[value[times-1]];break;
  57.    }
  58. }

  59. void  key_scan (void)         //鍵盤輸入掃描函數
  60. {   
  61.    uchar hang,lie;
  62.    P1=0xf0;
  63.    if ((P1&0xf0)!=0xf0)        //行碼為0,列碼為1
  64.    {
  65.       delay1ms();
  66.           if((P1&0xf0)!=0xf0)  //有鍵按下,列碼變為0
  67.           {
  68.              hang=0xfe;          //逐行掃描
  69.                  times++;
  70.                  if (times==9)
  71.                  times=1;
  72.                  while ((hang&0x10)!=0)         //掃描完4行后跳出
  73.                  {
  74.                     P1=hang;
  75.                         if ((P1&0xf0)!=0xf0)    //本行有鍵按下
  76.                         {
  77.                            lie=(P1&0xf0)|0x0f;
  78.                            buff=((~hang)+(~lie));
  79.                            switch (buff) //buff等于哪個,就執行哪個。
復制代碼


更多請下載附件!!


全部資料51hei下載地址:
光電計數.rar (279.5 KB, 下載次數: 115)


作者: Hholy    時間: 2020-12-21 10:33
剛好要用到光電開關計數,沒想到一下子就找到了這方面的資料,非常有幫助。
作者: 878615787    時間: 2020-12-23 22:49
不搞電路圖 只是單片機可以用嗎
作者: Chen00075    時間: 2023-3-28 09:07
找了好好久,多謝分享,太棒了




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1