找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 7363|回復(fù): 3
收起左側(cè)

基于51單片機(jī)的光電開(kāi)關(guān)計(jì)數(shù)仿真設(shè)計(jì)+程序

[復(fù)制鏈接]
ID:469198 發(fā)表于 2019-3-13 10:45 | 顯示全部樓層 |閱讀模式
電路原理圖如下:

電路圖

電路圖

設(shè)計(jì)要求
1)利用光電開(kāi)關(guān)計(jì)數(shù)系統(tǒng),可在0-999任意設(shè)定計(jì)數(shù)值,超過(guò)設(shè)定值時(shí),步進(jìn)電機(jī)停止。計(jì)數(shù)時(shí)步進(jìn)電機(jī)以某一恒定速度轉(zhuǎn)動(dòng)。
2)超過(guò)設(shè)定值后利用220V報(bào)警燈提示。
3)數(shù)碼管顯示當(dāng)前計(jì)數(shù)值和設(shè)定值。(按鍵選擇是出于設(shè)定還是計(jì)數(shù)狀態(tài))

單片機(jī)程序如下:
  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,定時(shí)器1,工作方式2
  22.    TH1=0xfd;         
  23.    TL1=0xfd;                 //設(shè)置波特率9600
  24.    TI=0;                         //發(fā)送中斷標(biāo)識(shí)位,=1表示發(fā)送結(jié)束
  25.    TR1=1;                         //打開(kāi)定時(shí)器T1
  26. }

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

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

  37. void delay5ms (void)        //防止抖動(dòng),延時(shí)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)         //鍵盤(pán)輸入掃描函數(shù)
  60. {   
  61.    uchar hang,lie;
  62.    P1=0xf0;
  63.    if ((P1&0xf0)!=0xf0)        //行碼為0,列碼為1
  64.    {
  65.       delay1ms();
  66.           if((P1&0xf0)!=0xf0)  //有鍵按下,列碼變?yōu)?
  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等于哪個(gè),就執(zhí)行哪個(gè)。
復(fù)制代碼


更多請(qǐng)下載附件��!
0.png

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:864140 發(fā)表于 2020-12-21 10:33 | 顯示全部樓層
剛好要用到光電開(kāi)關(guān)計(jì)數(shù),沒(méi)想到一下子就找到了這方面的資料,非常有幫助。
回復(fù)

使用道具 舉報(bào)

ID:866712 發(fā)表于 2020-12-23 22:49 | 顯示全部樓層
不搞電路圖 只是單片機(jī)可以用嗎
回復(fù)

使用道具 舉報(bào)

ID:1066117 發(fā)表于 2023-3-28 09:07 | 顯示全部樓層
找了好好久,多謝分享,太棒了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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