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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的鋼絲繩檢測Proteus仿真+程序

[復制鏈接]
跳轉到指定樓層
樓主
鋼絲繩檢測仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include <reg51.h>
  2. #include <stdio.h>
  3. #include <intrins.h>
  4. #include  <math.h>    //Keil library  
  5. #include  <stdlib.h>  //Keil library  
  6. #define uchar unsigned char //定義一下方便使用
  7. #define uint  unsigned int
  8. #define ulong unsigned long


  9. sbit RS = P2^0;
  10. sbit RW = P2^1;
  11. sbit EN = P2^2;         
  12. sbit BF = P0^7;           //忙碌標志位,,將BF位定義為P0.7引腳

  13. sbit ADOUT=P1^7;        //ADC        數據輸入
  14. sbit ADCLK=P1^6;                //ADC  CLK
  15. sbit ADCS=P1^5;                //ADC  CS

  16. sbit key1=P3^6;   //定義按鍵
  17. sbit spk=P3^7;   //定義蜂鳴器
  18. sbit led=P3^5;   //定義led
  19. uchar count;
  20. uint DATA1=0;                                //采集值

  21. /*************延時函數*************/
  22. void delay(uint n)
  23. {  uint x,y;
  24.    for(x=n;x>0;x--)
  25.        for(y=121;y>0;y--);
  26. }

  27. /***********判忙函數***********/
  28. bit LCD_Check_Busy()
  29. {
  30.         bit result;
  31.         RS=0;       //根據規定,RS為低電平,RW為高電平時,可以讀狀態
  32.     RW=1;
  33.     EN=1;        //E=1,才允許讀寫
  34.     _nop_();   //空操作
  35.     _nop_();
  36.     _nop_();
  37.     _nop_();   //空操作四個機器周期,給硬件反應時間       
  38.     result=BF;  //將忙碌標志電平賦給result
  39.    EN=0;         //將E恢復低電平
  40.    return result;
  41. }
  42. /***********寫入命令函數***********/
  43. void write_com(uchar com)
  44. {
  45. while(LCD_Check_Busy()); //忙則等待
  46. RS=0;
  47. RW=0;
  48. EN=1;
  49. P0= com;
  50. _nop_();
  51. EN=0;
  52. }
  53. /**********寫入數據函數**********/
  54. void write_dat(uchar dat)
  55. {
  56. while(LCD_Check_Busy()); //忙則等待
  57. RS=1;
  58. RW=0;
  59. EN=1;
  60. P0= dat;
  61. _nop_();
  62. EN=0;
  63. }
  64. /*******寫入字符函數***********/
  65. void LCD_Write_Char(uchar x,uchar y,uchar dat)
  66. {   
  67. if (y == 0)
  68.   {    write_com(0x80 + x);    }   
  69. else
  70.   {    write_com(0xC0 + x);    }      
  71. write_dat( dat);
  72. }
  73. /******寫入字符串函數***********/
  74. void Write_String(uchar x,uchar y,uchar *s)
  75. {   
  76. while (*s)
  77.   {   
  78.   LCD_Write_Char(x,y,*s);   
  79.   s++;
  80.   x++;   
  81.   }
  82. }
  83. /*****初始化函數******/
  84. void LCD_Init()
  85. {
  86.    write_com(0x38); /*顯示模式設置*/
  87.    delay(5);
  88.    write_com(0x06);/*顯示光標移動設置*/
  89.    delay(5);
  90.    write_com(0x0C); /*顯示開及光標設置*/
  91.    write_com(0x01);  /*顯示清屏*/
  92.    }
  93. /*----------------ADC采樣函數程序-----------------------------------------------*/
  94. void adc0831()                  
  95. {
  96. uchar i;
  97. DATA1=1;
  98. _nop_(); _nop_(); _nop_();
  99. ADCS=0;
  100. _nop_(); _nop_(); _nop_();
  101. ADCLK=1;
  102. _nop_(); _nop_(); _nop_();
  103. ADCLK=0;
  104. _nop_(); _nop_(); _nop_();
  105. ADCLK=1;
  106. _nop_(); _nop_(); _nop_();
  107. ADCLK=0;
  108. for(i=0;i<8;i++)
  109. {
  110.   DATA1<<=1;
  111.   if(ADOUT)
  112.   {
  113.    DATA1++;
  114.   }
  115.   ADCLK=1;
  116.   _nop_();  _nop_();  _nop_();
  117.   ADCLK=0;
  118.   _nop_();  _nop_();  _nop_();
  119. }
  120. ADCS=1;
  121. _nop_(); _nop_();
  122. // return DATA1;       
  123. }               
  124. ///***********************************************************************
  125. void lcd1()
  126. {
  127. //        uint e;
  128. //        uchar e0,e1,e2,e3;

  129. if(DATA1>340)
  130. {
  131.          Write_String(0,1,"   OFF Normal  ");
  132.         spk=0;
  133.         led=0;
  134. }
  135. else
  136. {
  137.         Write_String(0,1,"    Normal     ");
  138.         spk=1;
  139.         led=1;
  140. }
  141. /*
  142.                  e=DATA1;
  143.                 e0 = e/1000  +48;
  144.           e1 = (e/100)%10+48;
  145.           e2 = (e/10)%10+48;
  146.                 e3 = e%10+48;

  147.           Write_String(8,1,"Q=");    //
  148.                 LCD_Write_Char(10,1,e0);
  149.                 LCD_Write_Char(11,1,e1);
  150.                 LCD_Write_Char(12,1,e2);
  151.                 LCD_Write_Char(13,1,e3);
  152.          Write_String(14,1,"Kg");
  153. */


  154. }

  155. void key()
  156. {
  157.         if(key1==0)                 //kay5  +1         
  158.         {
  159.         delay(1);         //延時消抖
  160.         if(key1==0)
  161.         while(!key1);//等待松手       
  162. //        KA=!KA;
  163.         }
  164. }

  165. /*----------------主函數-----------------------------------------------*/
  166. int main(void)
  167. {

  168.         LCD_Init();                                 //初始化液晶屏       
  169.         delay(10);                                        //延時用于穩定,可以去掉
  170.         write_com(0x01);                        //清屏
  171.         Write_String(0,0," Welcome to use ");   //寫入的是設備信息
  172.         Write_String(0,1,"      ");   //寫入第二行信息,可以寫自己的名字什么的
  173.   delay(500);
  174.         //write_com(0x01);                        //清屏
  175.         while (1)
  176.         {                       
  177.                 adc0831();  //質量采集
  178.                 key();               
  179.                 lcd1();
  180.                 delay(100);               //延時,兩次發射之間要至少有10ms間隔
  181.            }
  182. }
復制代碼

所有資料51hei提供下載:
C052931.zip (189.81 KB, 下載次數: 24)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:528640 發表于 2019-6-4 00:15 | 只看該作者
非常有喲有用
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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