📄 adc.c
字号:
#include "reg52.h" //52系列单片机定义文件
#include "intrins.h" //调用_nop_();延时函数用
#define uchar unsigned char//无符号字符(8位)
#define uint unsigned int //无符号整数(16位)
sbit START=P3^0; //启动一次转换位
sbit OE=P3^1; //0809输出数据控制位
sbit EOC=P3^2; //转换结束标志位
//
//
uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
/* 共阳七段LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" */
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //四位列扫描控制字
//
//
/********1毫秒延时子函数**********/
void delay(uint ms)
{
uint i;
while(ms--)
for(i=0;i<120;i++);
}
//
//
/***********显示扫描子函数**********/
void disp(uint a)
{
uchar a1=0,a2=0,a3=0,a4=0;
a1=a%10000/1000;
a2=a%1000/100;
a3=a%100/10;
a4=a%10;
P1=0x01;
P2=dis_7[a1]&0x7f;
delay(1);
P1=0x02;
P2=dis_7[a2];
delay(1);
P1=0x04;
P2=dis_7[a3];
delay(1);
//P1=0xfb;
P1=0x08;
P2=dis_7[a4];
delay(1);
}
/*******0809AD转换子函数***********/
uint test()
{
uint s=0;
float ad_data=0;
while(EOC==1); //等待转换结束
{
OE=1;delay(2);ad_data=P0;OE=0; //取AD值
s=ad_data*5000/255;
return s;
}
}
//**************主函数****************/
void main()
{
uint b;
while(1)
{
START=1;START=0; //开始转换命令
delay(2); //延时2ms
START=1;
b=test(); //测量转换一次
disp(b);//显示函数
}
}
//*********************结束**************************//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -