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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13654|回復: 15
打印 上一主題 下一主題
收起左側

基于c51單片機的傳送帶產品計數的設計 含源代碼,仿真圖

  [復制鏈接]
跳轉到指定樓層
樓主
基于C51的傳送帶產品計數器的設計
包括 keil 源代碼 以及protues仿真
實物也有做出來
都是自己辛辛苦苦做的
希望大家多多指教

實物圖:


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




單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar  unsigned char
  4. #define uint   unsigned int
  5. #define ulong   unsigned long
  6. //用液晶屏顯示參數
  7. uchar code zifx0[]="0123456789abcdef";
  8. uchar code zifu0[]="Now Number:0000";
  9. uchar code zifu1[]="Set Number:0000";
  10. sbit  RS=P3^1;        //寫信號
  11. sbit  RWW=P3^3;        //讀信號
  12. sbit  E=P3^4;   //使能信號
  13. #define e1   E=1
  14. #define rd1  RWW=1  
  15. #define rs1  RS=1  
  16. #define e0   E=0
  17. #define rd0  RWW=0
  18. #define rs0  RS=0
  19. #define PP P1
  20. //延時函數ms
  21. void _delay_ms(uint t)
  22. {
  23.    uint i,j;
  24.    for(i=0;i<t;i++)
  25.      for(j=0;j<120;j++);
  26. }
  27. //延時函數us
  28. void _delay_us(uchar t)
  29. {
  30.    while(t>0)t--;
  31. }
  32. //寫1602控制字
  33. void  lcd1602_writecrtl(uchar  dat)
  34. {
  35.   rd0;//讀信號置0
  36.   rs0;//寫信號置0
  37.   _delay_us(5);
  38.   PP=dat;
  39.   e1;//使能信號置1
  40.   _delay_us(5);
  41.   e0;//使能信號置0
  42. }
  43. //寫1602數據
  44. void  lcd1602_writenumber(uchar dat)
  45. {
  46.   rd0;//讀信號置0
  47.   rs1;//寫信號置1
  48.   _delay_us(5);
  49.   PP=dat;
  50.   e1;//使能信號置1
  51.   _delay_us(5);
  52.   e0;//使能信號置0
  53. }
  54. //1602初始化
  55. void  lcd1602_init()  
  56. {
  57.   lcd1602_writecrtl(0x38); //顯示模式
  58.   lcd1602_writecrtl(0x06); //顯示光標移動位置
  59.   lcd1602_writecrtl(0x0c); //顯示開及光標設置
  60.   lcd1602_writecrtl(0x01); //顯示清屏
  61. }
  62. //顯示地址
  63. void  lcd1602_adr(uchar dat)  
  64. {
  65.   lcd1602_writecrtl(0x80 | dat);
  66. }
  67. //行顯示-
  68. void LCD1602_string(uchar hang,uchar lie,uchar const *p)
  69. {
  70.         uchar a;
  71.         if(hang == 1) a = 0x00;
  72.         if(hang == 2) a = 0x40;
  73.         a = a + lie - 1;
  74.         lcd1602_adr(a);
  75.         while(1)
  76.         {
  77.                 if(*p == '\0') break;
  78.                 lcd1602_writenumber(*p);
  79.                 p++;
  80.         }
  81. }

  82. uint  keyn1=16;//按鍵值
  83. uint  keyn=16;//緩沖
  84. #define PK P2
  85. //按鍵掃描
  86. void key_z()
  87. {

  88. PK=0X0F;
  89. if(!(PK==0X0F))
  90. {
  91.     if(!(PK==0X0F))
  92.    {
  93.     keyn1=0;
  94.     keyn=0;
  95.     PK=0X0F;
  96.     if(PK==0X0E)         keyn1=0;
  97.     if(PK==0X0D)         keyn1=1;
  98.     if(PK==0X0B)         keyn1=2;
  99.     if(PK==0X07)         keyn1=3;
  100.     PK=0XF0;
  101.     if(PK==0XE0)         keyn=0+keyn1;
  102.     if(PK==0XD0)         keyn=4+keyn1;
  103.     if(PK==0XB0)         keyn=8+keyn1;
  104.     if(PK==0X70)         keyn=12+keyn1;
  105.     switch(keyn)
  106.     {
  107.             case 0: keyn1=1; break;
  108.             case 4: keyn1=2; break;
  109.             case 8: keyn1=3; break;
  110.             case 12:keyn1=10; break;
  111.             case 1: keyn1=4; break;
  112.             case 5: keyn1=5; break;
  113.             case 9: keyn1=6; break;
  114.             case 13:keyn1=11; break;
  115.             case 2: keyn1=7; break;
  116.             case 6: keyn1=8; break;
  117.             case 10:keyn1=9;break;
  118.      case 14:keyn1=12;break;
  119.           case 3: keyn1=14;break;//*
  120.             case 7: keyn1=0;break;
  121.             case 11:keyn1=15;break;//#
  122.             case 15:keyn1=13;break;
  123.      }
  124.     }
  125.   else   keyn1=16;
  126.   PK=0X0F;while((!(PK==0X0F)));
  127. }

  128. }//LED
  129. sbit led1=P0^0;
  130. sbit beer=P3^5;
  131. sbit out=P3^6;
  132. sbit k1=P3^7;
  133. sbit P32=P3^2;
  134. //變量
  135. uint  now=0;
  136. uint  set=10;
  137. uint  bzbu=0;//設置
  138. uint  bz=0;//模式
  139. uint  qidong=0;//運行
  140. //顯示控制
  141. void dis()
  142. {
  143.   //now
  144.   lcd1602_adr(0x0B);  
  145.   lcd1602_writenumber(0x30+now%10000/1000);
  146.   lcd1602_writenumber(0x30+now%1000/100);
  147.   lcd1602_writenumber(0x30+now%100/10);
  148.   lcd1602_writenumber(0x30+now%10);
  149.   //set
  150.   lcd1602_adr(0x4B);  
  151.   lcd1602_writenumber(0x30+set%10000/1000);
  152.   lcd1602_writenumber(0x30+set%1000/100);
  153.   lcd1602_writenumber(0x30+set%100/10);
  154.   lcd1602_writenumber(0x30+set%10);
  155.   if(bz==0)lcd1602_writenumber(' ');
  156.   if(bz==1)lcd1602_writenumber('<');
  157.    //啟動
  158.   if(bz==0)
  159.   {
  160.     if(k1==0){qidong=(qidong+1)%2;if(qidong==1){led1=0;;out=0;}else {led1=1;out=1;}while(k1==0);}
  161.    }
  162.    //啟動
  163.   if(qidong==1)
  164.   {
  165.     if(now>=set){qidong=0;led1=1;out=1;beer=0;_delay_ms(500);  }
  166.    }
  167.    //啟動
  168.   if(qidong==0)
  169.   {
  170.     beer=1;
  171.    }
  172. }
  173. //按鍵功能函數
  174. void key()
  175. {
  176.   //掃描
  177.   key_z();
  178.   if(keyn1<16)
  179.   {        
  180.    if((keyn1<10)&&(bz==1))
  181.         {
  182.          if(bzbu==0){set=keyn1;}
  183.          if(bzbu==1){set=set*10+keyn1;}
  184.          if(bzbu==2){set=set*10+keyn1;}
  185.          if(bzbu==3){set=set*10+keyn1;}
  186.          bzbu=(bzbu+1)%4;
  187.          }
  188.         if((keyn1==0x0a)&&(bz==0)){now=0;}//復位
  189.         if((keyn1==0x0b)&&(bz==1)){set=0;}//復位輸入
  190.         if((keyn1==0x0c)&&(qidong==0)){bz=1;}//設置
  191.         if(keyn1==0x0d){bz=0;}//退出
  192.         keyn1=16;
  193.   }
  194. }
  195. //-----------------------
  196. void main()   
  197. {
  198.   _delay_us(10);
  199.   _delay_ms(10);  
  200.   //中斷允許
  201. ……………………

  202. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載(傳送帶計數的仿真和源碼,還有我寫的4個試驗源碼仿真一起奉上):
基于C51的傳送帶產品計數器的設計.rar (423.03 KB, 下載次數: 309)



評分

參與人數 4黑幣 +120 收起 理由
hapidaxigua + 10
jaygg + 5 很給力!
熱心市民郭先生 + 5 贊一個!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:262662 發表于 2017-12-17 14:52 | 只看該作者
給力給力給力
回復

使用道具 舉報

板凳
ID:262534 發表于 2017-12-21 14:47 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

地板
ID:355897 發表于 2018-6-21 11:53 | 只看該作者
很有用
回復

使用道具 舉報

5#
ID:355905 發表于 2018-6-21 12:12 | 只看該作者
很好的
回復

使用道具 舉報

6#
ID:255925 發表于 2018-6-26 11:11 | 只看該作者
有電路圖和元器件清單嗎
回復

使用道具 舉報

7#
ID:379641 發表于 2018-7-26 21:51 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

8#
ID:381237 發表于 2018-8-10 22:30 | 只看該作者
感謝樓主,這個可以正常使用,只是發現脈沖頻率稍高點誤差會很大。
回復

使用道具 舉報

9#
ID:104477 發表于 2018-8-16 19:17 來自手機 | 只看該作者
淘寶計數器才二三十塊一個,做這個成本都不止了
回復

使用道具 舉報

10#
ID:559602 發表于 2019-6-11 08:53 | 只看該作者
真的很好了,很有用,極力推薦
回復

使用道具 舉報

11#
ID:146041 發表于 2019-6-12 22:21 | 只看該作者
真是太有用,樓主很強大
回復

使用道具 舉報

12#
ID:658584 發表于 2019-12-8 00:04 | 只看該作者
真的很好了,很有用,極力推薦
回復

使用道具 舉報

13#
ID:767658 發表于 2020-6-2 16:58 | 只看該作者
感謝樓主,666
回復

使用道具 舉報

14#
ID:773476 發表于 2020-6-9 00:22 | 只看該作者
請問一下模擬技術那里的是什么
回復

使用道具 舉報

15#
ID:980554 發表于 2021-11-13 11:14 | 只看該作者
我想問一下仿真軟件怎么獲取
回復

使用道具 舉報

16#
ID:1102057 發表于 2023-12-1 17:35 | 只看該作者
樓主可以出一個講解教程嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品综合色区在线观看 | 国产精品久久久久久久毛片 | 中文字幕免费观看 | 亚洲一级黄色 | 亚洲在线免费观看 | 精品国产亚洲一区二区三区大结局 | 亚洲444eee在线观看 | 91亚洲国产成人精品一区二三 | 久久国内精品 | 国产成人免费视频网站高清观看视频 | 黄色一级大片在线免费看产 | 91看片在线 | 国产精品国产a | 欧美一区二区视频 | 人人做人人澡人人爽欧美 | 岛国av免费在线观看 | 亚洲一区二区日韩 | 久久天天躁狠狠躁夜夜躁2014 | 中文字幕黄色大片 | 欧美精品国产精品 | 亚洲精品一区av在线播放 | 91黄色片免费看 | 日韩欧美理论片 | 2021天天干夜夜爽 | 中文字幕在线看第二 | 色综合区| 美女艹b| 欧美一级黑人aaaaaaa做受 | 亚洲美女网站 | 福利片在线看 | 在线国产欧美 | 成人精品国产免费网站 | 黄色一级免费 | 极品粉嫩国产48尤物在线播放 | 黄色成人在线网站 | 免费午夜视频 | 欧美极品一区二区 | 欧美二区三区 | 国产yw851.c免费观看网站 | 亚洲一视频 | av黄色免费在线观看 |