- #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)
|