用滑動電位器分壓來代替采集的電壓信號光敏電阻
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (106.39 KB, 下載次數: 34)
下載附件
2023-3-4 22:38 上傳
電路原理圖如下:
原理圖_00.png (150.22 KB, 下載次數: 31)
下載附件
2023-3-4 21:22 上傳
僅參考,文件中包括仿真,文檔和程序,有問題評論下工程文件可到本帖附件中下載)
- //程序名:ADC0804 模/數轉換
- #include <reg51.h>
- #include <intrins.h> //包含頭文件
- sbit adc_rd=P3^7; //RD
- sbit adc_wr=P3^6; //WR
- sbit s1=P2^0;
- sbit s2=P2^1;
- sbit s3=P2^2;
- sbit s4=P2^3; //四個數碼管位選端
- sbit key=P2^4; //按鍵控制輸出(選配)
- sbit out=P2^5; //輸出控制(選配)
- unsigned char Disbuf[]={0,0,0}; //顯示暫存空數組
- unsigned char code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//數字顯示編碼
- void display(); //聲明函數
- void dsxms() //延時
- {
- unsigned char i;
- for(i=0;i<250;i++);
- }
- void display() //顯示函數
- {
- unsigned char i;
- for(i=0;i<10;i++) //每次循環10次
- {
- P1=tab[Disbuf[2]]; //顯示個位
- s4=0; //打開位
- dsxms(); //延時
- s4=1; //關閉位
-
- P1=tab[Disbuf[1]];//顯示十位,&0x7f是顯示小數點
- s3=0; //打開位
- dsxms(); //延時
- s3=1; //關閉位
-
- if(Disbuf[0]==0) //如果百位是0時
- P1=0xff; //該位不顯示
- else //百位不為0時
- P1=tab[Disbuf[0]]; //顯示百位數據
- s2=0; //打開位
- dsxms(); //延時
- s2=1; //關閉位
- P1=0xff; //顯示空白
- s1=0; //打開位
- dsxms(); //延時
- s1=1; //關閉位
- }
- }
- void adc() //adc的初始化函數
- {
- adc_wr=0;
- _nop_();
- adc_wr=1;
- }
- unsigned char read() //讀AD轉換值
- {
- unsigned char r;
- P0=0xff; //P0口復位
- _nop_(); //延時
- adc_rd=0; //rd拉低
- _nop_(); //延時
- r=P0; //讀取P0口數據
- _nop_(); //延時
- adc_rd=1; //rd拉高
- return(r); //返回讀到的數據
- }
-
復制代碼
Keil代碼與Proteus8.13仿真下載:
基于51單片機的光照強度檢測系統 .zip
(290.72 KB, 下載次數: 48)
2023-3-4 21:19 上傳
點擊文件名下載附件
附件 下載積分: 黑幣 -5
|