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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3977|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于使用PIC16F87X單片機(jī)ADC制作的照度計(jì) 附源碼

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

制作初衷,基于PIC單片機(jī)的AD功能,使用ST公司的TEPT5600光敏傳感器,將采集的光學(xué)信號,作為模擬量傳輸?shù)紸D端口;
再使用USART將才采集的數(shù)據(jù),通過MAX232傳輸?shù)诫娔X,使用LabView對數(shù)據(jù)實(shí)時(shí)顯示和存儲(chǔ),不說了,附上代碼

數(shù)碼管部分,只是作為調(diào)試時(shí)顯示用的,可以理解為學(xué)C語言時(shí),用Printf(“”)實(shí)時(shí)顯示相關(guān)變量;

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

單片機(jī)程序源碼如下:
  1. #include <pic.h>//調(diào)用PIC16F87XA單片機(jī)的頭文件
  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;              //設(shè)置波特率為9600,誤差0.16%
  59.     BRGH=1;                //設(shè)置高速波特率
  60.     SYNC=0;                //SYNC=0為異步模式,SYNC=1為同步模式
  61.     SPEN=1;                //允許串口操作
  62.     CREN=1;                //CREN=0禁止連續(xù)接收,CREN=1允許連續(xù)接收
  63.     TXIE=0;                //禁止發(fā)送中斷
  64.     RCIE=0;                //禁止接收中斷
  65.     TX9=0;                 //TX9=0為8位發(fā)送,TX9=1為9位發(fā)送
  66.     RX9=0;                 //RX9=0為8位接收,RX9=1為9位接收
  67.     TXEN=1;                //TXEN=0為禁止發(fā)送,TXEN=1為允許發(fā)送
  68.    
  69.     while(1)               //死循環(huán),單片機(jī)初始化后,將一直運(yùn)行這1個(gè)死循環(huán)
  70.     {
  71.   for(i=0;i<16;i++)  //連續(xù)采樣16次,然后取平均數(shù)
  72.   {
  73.    
  74.          asm("NOP");            //略做延時(shí)
  75.          asm("NOP");            //略做延時(shí)
  76.          asm("NOP");            //略做延時(shí)
  77.          asm("NOP");            //略做延時(shí)
  78.          ADGO=1;                //開始進(jìn)行A/D轉(zhuǎn)換
  79.          while(ADGO) continue;  //等待A/D轉(zhuǎn)換結(jié)束

  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. }
復(fù)制代碼

評分

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

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:468294 發(fā)表于 2019-9-9 20:37 | 只看該作者
學(xué)習(xí)了,謝樓主分享,支持樓主,頂一下!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品在线视频 | 黄色成人免费在线观看 | 亚洲第一av| 国产成人综合在线 | 欧美亚洲第一区 | 免费久久网站 | 动漫www.被爆羞羞av44 | 97伦理电影网 | 国产区在线免费观看 | 国产精品久久久久久久久久久久久 | 日本三级在线视频 | 影音先锋欧美资源 | 激情五月综合网 | 亚洲综合视频 | 久久久久国产精品 | 黄色一级免费看 | 日韩欧美在线视频一区 | 国产精品久久久久久妇女6080 | 欧美一区二区免费电影 | 国产精品欧美一区二区三区 | 国产美女精品视频 | 古典武侠第一页久久777 | 精品久久久久一区二区国产 | 9久9久9久女女女九九九一九 | 精品久久国产老人久久综合 | 国产成人精品一区二区三区在线 | 欧美毛片免费观看 | 成人精品国产免费网站 | 国产熟熟 | 欧美操操操 | 爽爽免费视频 | 紧缚调教一区二区三区视频 | av在线播放一区二区 | 国产福利视频在线观看 | 欧美一区2区三区4区公司二百 | 瑞克和莫蒂第五季在线观看 | 国产高潮av| 国产精品一二三区在线观看 | 鲁大师一区影视 | 精品成人一区二区 | 久久精品小视频 |