- #include <REGX52.H>
- #include "LCD1602.h"
- #include "Delay.h"
- #include "ADC0832.h"
- void main()
- {
- LCD_Init();
- ADC0832_Init();
- while(1)
- {
- Delay(200); //每二百毫秒掃描一次數據情況
- LCD_ShowNum(2,2,getDaTa(),3);
-
- }
- }
復制代碼- #include <REGX52.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- //ADC0832綁定引腳
- sbit ADCS=P1^3;
- sbit ADDI=P1^5;
- sbit ADCLK=P1^4;
- /**
- * @brief ADC083初始化,在程序的開頭調用
- * @param 無
- * @retval 無
- */
- void ADC0832_Init()
- {
- ADCS=1;
- }
- /**
- * @brief ADC083獲取無符號8位數據
- * @param 無
- * @retval 返回 usigned char 型數據
- */
- uchar getDaTa()
- {
- uchar i=0;
- uchar j;
- uint dat=0;
- uchar ndat=0;
- ADDI=1;
- _nop_();
- _nop_();
- ADCS=0;//拉低CS端
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿1
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- ADDI=1; //選擇通道0
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿2
- _nop_();
- _nop_();
- ADCLK=1;//拉高CLK端
- ADDI=0; //選擇通道1
- _nop_();
- _nop_();
- ADCLK=0;//拉低CLK端,形成下降沿3
- ADDI=1;//控制命令結束
- _nop_();
- _nop_();
- dat=0;
- for(i=0;i<8;i++)
- {
- dat|=ADDI;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- dat<<=1;
- if(i==7)dat|=ADDI;
- }
- for(i=0;i<8;i++)
- {
- j=0;
- j=j|ADDI;//收數據
- ADCLK=1;
- _nop_();
- _nop_();
- ADCLK=0;//形成一次時鐘脈沖
- _nop_();
- _nop_();
- j=j<<7;
- ndat=ndat|j;
- if(i<7)ndat>>=1;
- }
- ADCS=1;//拉低CS端
- ADCLK=0;//拉低CLK端
- ADDI=1;//拉高數據端,回到初始狀態
- dat<<=8;
- dat|=ndat;
- return(dat); //return ad k
- }
復制代碼
Keil代碼下載:
51單片機數模轉換液晶顯示.7z
(78.5 KB, 下載次數: 30)
2022-5-14 02:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|