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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于使用PIC16F87X單片機ADC制作的照度計 附源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:275894 發表于 2018-9-19 20:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
首先聲明,本人是一名PIC單片機的初學者,知道論壇上有很多大佬,也有很多和我一樣的初學者,所以在此我只說一遍,本人能力有限,使用的代碼,也是在開發板作者的基礎上改的。高手發現BUG,只當是個笑話,小白,只當作為一個參考。別做鍵盤俠,勿噴即可(本人心里承受能力不強)!

制作初衷,基于PIC單片機的AD功能,使用ST公司的TEPT5600光敏傳感器,將采集的光學信號,作為模擬量傳輸到AD端口;
再使用USART將才采集的數據,通過MAX232傳輸到電腦,使用LabView對數據實時顯示和存儲,不說了,附上代碼

數碼管部分,只是作為調試時顯示用的,可以理解為學C語言時,用Printf(“”)實時顯示相關變量;

本人希望有單片機方面的愛好者,一起討論話題(初學者也不排斥,但 不要偏離討論話題太遠);
其次,PIC單片機方面的制作和人氣,相比其它MCU(比如ST AVR)真的太少了,希望有PIC的同行,一起多多討論。
本人始終堅持一點,原創與實戰才是自己的,抄襲最沒意思。

單片機程序源碼如下:
  1. #include <pic.h>//調用PIC16F87XA單片機的頭文件
  2. __CONFIG(HS&WDTDIS&LVPDIS);
  3. #define U5A  RB0         
  4. #define U5B  RB1         
  5. #define U5C  RB2      

  6. unsigned char temp1;
  7. unsigned char temp2;
  8. const unsigned char LED[28]=
  9. {
  10. 0x3F,/*0*/        
  11. 0x06,/*1*/        
  12. 0x5B,/*2*/        
  13. 0x4F,/*3*/        
  14. 0x66,/*4*/        
  15. 0x6D,/*5*/        
  16. 0x7D,/*6*/        
  17. 0x07,/*7*/        
  18. 0x7F,/*8*/        
  19. 0x6F,/*9*/        
  20. 0x77,/*A*/        
  21. 0x7C,/*b*/        
  22. 0x39,/*C*/        
  23. 0x58,/*c*/        
  24. 0x5E,/*d*/        
  25. 0x79,/*E*/        
  26. 0x71,/*F*/        
  27. 0x76,/*H*/        
  28. 0x74,/*h*/        
  29. 0x38,/*L*/        
  30. 0x54,/*n*/        
  31. 0x37,/*N*/        
  32. 0x5C,/*o*/        
  33. 0x73,/*P*/        
  34. 0x50,/*r*/        
  35. 0x78,/*t*/        
  36. 0x3E,/*U*/        
  37. 0x40,/*-*/
  38. };
  39. unsigned int  ADbuf;
  40. unsigned int adcbuf[16];

  41. void main(void)            
  42. {
  43. unsigned char buf;   
  44. unsigned char USARTbuf;
  45.     unsigned char c=0;  
  46.     unsigned char e=0;   
  47. unsigned char i;
  48. unsigned char b;
  49. unsigned char d=0;   
  50.     TRISA=0B11111111;   
  51.    TRISB=0B11111000;   
  52. TRISD=0B00000000;   
  53.     PORTA=0B00000000;   
  54.     PORTB=0B00000000;     
  55.     PORTD=0B00000000;   
  56.      ADCON1=0B10001111;   

  57.     ADIE=0;                //禁止A/D中斷
  58.     SPBRG=25;              //設置波特率為9600,誤差0.16%
  59.     BRGH=1;                //設置高速波特率
  60.     SYNC=0;                //SYNC=0為異步模式,SYNC=1為同步模式
  61.     SPEN=1;                //允許串口操作
  62.     CREN=1;                //CREN=0禁止連續接收,CREN=1允許連續接收
  63.     TXIE=0;                //禁止發送中斷
  64.     RCIE=0;                //禁止接收中斷
  65.     TX9=0;                 //TX9=0為8位發送,TX9=1為9位發送
  66.     RX9=0;                 //RX9=0為8位接收,RX9=1為9位接收
  67.     TXEN=1;                //TXEN=0為禁止發送,TXEN=1為允許發送
  68.    
  69.     while(1)               //死循環,單片機初始化后,將一直運行這1個死循環
  70.     {
  71.   for(i=0;i<16;i++)  //連續采樣16次,然后取平均數
  72.   {
  73.    
  74.          asm("NOP");            //略做延時
  75.          asm("NOP");            //略做延時
  76.          asm("NOP");            //略做延時
  77.          asm("NOP");            //略做延時
  78.          ADGO=1;                //開始進行A/D轉換
  79.          while(ADGO) continue;  //等待A/D轉換結束

  80.          adcbuf[i]=ADRESH*256+ADRESL;  
  81.            
  82.     //*********************   
  83.   }
  84.   ADbuf=0;
  85.   for(i=0;i<16;i++)            
  86.   {
  87.    ADbuf+=adcbuf[i];         
  88.   }
  89.   ADbuf=ADbuf/16;               
  90.         
  91.   ADbuf=(int)(((float)ADbuf/1023)*1000);
  92.             temp1=ADbuf/100;
  93.             temp2=ADbuf%100;
  94.       if(ADbuf<999)
  95. {  
  96.          PORTD=0;         
  97.         if(++d>3) d=0;  
  98.         if(d==0)      
  99.         {
  100.            U5A=0;      
  101.            U5B=0;     
  102.            U5C=0;      
  103.            PORTD=LED[(ADbuf%10000)/1000];     
  104.         }
  105.         else if(d==1)   
  106.         {
  107.            U5A=1;      
  108.            U5B=0;      
  109.            U5C=0;      
  110.            PORTD=LED[(ADbuf%1000)/100];
  111.         }
  112.         else if(d==2)   
  113.         {
  114.            U5A=0;        
  115.            U5B=1;   
  116.            U5C=0;      
  117.            PORTD=LED[(ADbuf%100)/10];
  118.         }
  119.         else if(d==3)
  120.         {
  121.            U5A=1;      
  122.            U5B=1;         
  123.            U5C=0;      
  124.            PORTD=LED[ADbuf%10];      
  125.         }
  126.   }   


  127. if(ADbuf>999)
  128. {
  129.          PORTD=0;        
  130.         if(++d>3) d=0;  
  131.         if(d==0)         
  132.         {
  133.            U5A=0;   
  134.            U5B=0;     
  135.            U5C=0;   
  136.            PORTD=LED[15];   
  137.         }
  138.         else if(d==1)  
  139.         {
  140.            U5A=1;   
  141.            U5B=0;         
  142.            U5C=0;         
  143.            PORTD=LED[15];
  144.         }
  145.         else if(d==2)  
  146.         {
  147.            U5A=0;      
  148.            U5B=1;      
  149.            U5C=0;      
  150.            PORTD=LED[0];   
  151.         }
  152.         else if(d==3)      
  153.         {
  154.            U5A=1;        
  155.            U5B=1;         
  156.            U5C=0;        
  157.            PORTD=LED[10];      
  158.         }
  159. }

  160. if(RCIF==1)            
  161.         {                       
  162.             USARTbuf=RCREG;     
  163.             if(OERR==1);      
  164.             {
  165.                 CREN=0;         
  166.                 CREN=1;        
  167.             }
  168.    if(USARTbuf==0x89)
  169.    {
  170.              TXREG=0X90;   
  171.              while(TRMT==0);   
  172.     TXREG=temp1;   
  173.              while(TRMT==0);   
  174.     TXREG=temp2;  
  175.              while(TRMT==0);   
  176.    }
  177.   }

  178.     }
  179. }
復制代碼

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:468294 發表于 2019-9-9 20:37 | 只看該作者
學習了,謝樓主分享,支持樓主,頂一下!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线播放不卡 | 欧美精品福利 | 国产精品免费在线 | 亚洲精品丝袜日韩 | 午夜手机在线视频 | 最近中文字幕在线视频1 | 国产一级淫片免费视频 | 亚洲精品第一页 | 四虎影视免费观看 | 91在线一区 | 久久网一区二区 | 天天爱天天操 | 91久久久久久久久 | 精品欧美一区二区精品久久久 | 99热碰| 91美女在线观看 | 三级成人在线 | 欧美精品一区在线发布 | 亚洲国产精品一区在线观看 | 久久婷婷色| 欧美黄色免费网站 | 国产精品国产a级 | 亚洲人成网站777色婷婷 | 午夜寂寞福利视频 | 97精品超碰一区二区三区 | 国产欧美精品一区二区三区 | www.youjizz.com日韩 | 人操人免费视频 | 精品一区二区三区视频在线观看 | 中文字幕第一页在线 | 在线免费看黄 | 99久久久无码国产精品 | 欧美午夜在线 | 一区二区三区国产在线观看 | 亚洲精品久久久9婷婷中文字幕 | 国产激情视频 | 91精品国产乱码久久久久久久久 | 成人av一区| 操视频网站| 国产精品成人一区二区三区 | 久久中文免费视频 |