標(biāo)題: 單片機(jī)使用pcf8591實(shí)現(xiàn)光敏、熱敏及電位器電壓的測(cè)量 源程序 [打印本頁(yè)]

作者: 楓樹566    時(shí)間: 2019-10-9 16:14
標(biāo)題: 單片機(jī)使用pcf8591實(shí)現(xiàn)光敏、熱敏及電位器電壓的測(cè)量 源程序
     步驟及現(xiàn)象:程序下載前,選擇stc-isp的IRC頻率:12MHz。程序下載后,通過(guò)改變開發(fā)板杜邦線的連接方式實(shí)現(xiàn)不同功能。

    (1)電位器旋鈕可調(diào)電壓:
    用杜邦線或跳線帽把AIN0與RAD短接。這時(shí)數(shù)碼管前三位顯示一個(gè)十進(jìn)制數(shù)字,當(dāng)擰動(dòng)電位器時(shí)數(shù)字也跟著變化,變化范圍為0.00~5.00。

    (2)光敏電阻電壓:
    用杜邦線把AIN0與J13右側(cè)兩個(gè)排針同時(shí)短接。這時(shí)數(shù)碼管前三位顯示一個(gè)十進(jìn)制數(shù)字,通過(guò)遮擋光敏電阻RL或用手電筒照射光敏電阻RL,數(shù)碼管顯示數(shù)字改變,變化范圍0.00~5.00。
         
    (3)熱敏電阻電壓:
    用杜邦線把AIN0與J13左側(cè)兩個(gè)排針同時(shí)短接。這時(shí)數(shù)碼管前三位顯示一個(gè)十進(jìn)制數(shù)字,通過(guò)用手觸摸熱敏電阻NTC,數(shù)碼管顯示數(shù)字改變,變化范圍0.00~5.00。

#include "stc8.h"
#include "pcf8591_i2c.h"
#include "hc595.h"
void main()
{
        int dat;
        while(1)
        {
                dat = ((int)Pcf8591_ReadAD())/51.0*100;    // 讀取ad值
                display(0,dat/100);                                        // 數(shù)據(jù)在數(shù)碼管上顯示               
                display(0,19);
                display(1,dat%100/10);
                display(2,dat%10);
        }
}

  1. #include "hc595.h"
  2. #include "stc8.h"
  3. #include <intrins.h>

  4. sbit P_HC595_SRCLK = P3^5;            // 移位時(shí)鐘
  5. sbit P_HC595_RCLK  = P3^4;            // 存儲(chǔ)時(shí)鐘
  6. sbit P_HC595_SER   = P3^7;            // 數(shù)據(jù)輸入端

  7. // 段選:dp、g、f、e、d、c、b、a
  8. unsigned char const LedData[]=
  9.    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xFF , 0x00, 0xbf,0x7f,0x89};
  10. //  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"   "9"  "A"  "B"  "C"  "D"  "E"  "F" "全滅" "全亮" "-"  "."  "H"

  11. // 位選:CS1、CS2、CS3、CS4、CS5、CS6、CS7、CS8
  12. unsigned char const LedPos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

  13. /***** 延時(shí)函數(shù),xms是多少就延時(shí)多少毫秒 *****/

  14. void sDelay_ms(unsigned int xms)    // 晶振:12MHz
  15. {
  16.         unsigned int i, j;
  17.         for(i=xms;i>0;i--)
  18.                 for(j=921;j>0;j--);
  19. }
  20. /*************************************************
  21. * 函數(shù)名:Send_595
  22. * 描述  :hc595發(fā)送一個(gè)字節(jié)數(shù)據(jù)
  23. * 參數(shù)  :dat  (位選或段選)
  24. * 返回值:無(wú)
  25. * 調(diào)用  :內(nèi)部調(diào)用
  26. *************************************************/

  27. void Send_595(unsigned char dat)
  28. {        
  29.         unsigned char i;
  30.         for(i=0; i<8; i++)
  31.         {
  32.                 dat <<= 1;
  33.                 P_HC595_SER   = CY;
  34.                 P_HC595_SRCLK = 0;          // SH_CP產(chǎn)生一個(gè)上升沿,數(shù)據(jù)移位
  35.                 _nop_();
  36.                 P_HC595_SRCLK = 1;               
  37.         }
  38. }

  39. /*************************************************
  40. * 函數(shù)名:display
  41. * 描述  :pos位數(shù)碼管顯示數(shù)字dat
  42. * 參數(shù)  :pos,dat
  43. * 返回值:無(wú)
  44. * 調(diào)用  :外部調(diào)用
  45. *************************************************/

  46. void display(unsigned char pos,unsigned char dat)
  47. {
  48.         Send_595(LedPos[pos]);          // 發(fā)送位選
  49.         Send_595(LedData[dat]);         // 發(fā)送段選
  50.         P_HC595_RCLK = 0;               // ST_CP產(chǎn)生一個(gè)上升沿,數(shù)據(jù)并口輸出
  51.         _nop_();
  52.         P_HC595_RCLK = 1;         
  53.         sDelay_ms(5);                    // 延時(shí)5ms
  54. }
復(fù)制代碼


pcf.JPG (20.18 KB, 下載次數(shù): 139)

工程文件.jpg

工程文件.jpg

pcf8591.jpg (3.21 MB, 下載次數(shù): 128)

光敏現(xiàn)象.jpg

光敏現(xiàn)象.jpg

remin.jpg (3.28 MB, 下載次數(shù): 131)

熱敏現(xiàn)象.jpg

熱敏現(xiàn)象.jpg

PCF8591實(shí)現(xiàn)ADC轉(zhuǎn)換.rar

72.98 KB, 下載次數(shù): 85, 下載積分: 黑幣 -5


作者: 真-小白    時(shí)間: 2020-2-2 12:54
一樣的板子,真的是謝謝了同學(xué)。線連的厲害了
作者: 馮666    時(shí)間: 2021-8-14 10:32
光照越強(qiáng),值是越大還是越小
作者: 絕壁羚羊    時(shí)間: 2022-3-19 11:04
請(qǐng)問(wèn)這個(gè)線是怎么連的?一分二的線嗎?

作者: 雨寒子蕭    時(shí)間: 2022-4-8 09:00
絕壁羚羊 發(fā)表于 2022-3-19 11:04
請(qǐng)問(wèn)這個(gè)線是怎么連的?一分二的線嗎?

K可以幫我看下我主頁(yè)的問(wèn)題嗎




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1