标题:
ADC0832源码 C语言
[打印本页]
作者:
zpmpok001
时间:
2021-1-17 18:55
标题:
ADC0832源码 C语言
#include "reg52.h"
#define SD 0
//==========================
sbit CS=P0^0;
sbit CLK=P0^1;
sbit DI =P0^2;
sbit DO =P0^3;
//============================
unsigned char bdata ADC_BIT;
sbit ADC0=ADC_BIT^0;
sbit ADC1=ADC_BIT^1;
sbit ADC2=ADC_BIT^2;
sbit ADC3=ADC_BIT^3;
sbit ADC4=ADC_BIT^4;
sbit ADC5=ADC_BIT^5;
sbit ADC6=ADC_BIT^6;
sbit ADC7=ADC_BIT^7;
//==============================
char numf[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6};
char numz[]={0xff,0x01,0x02,0x04,0x08};//数码管位选
// 关闭 个位 十位 百位 千位
void yc(int n); //延时n毫秒
void smg_xs (int num)
{
char ws[]={0,0,0,0,0};
//位数,个十百千
//个 十 百 千
if(num>999&&num<9999)
{
ws[1]=num%10000%100%100%10%10;
ws[2]=num%10000%1000%100/10;
ws[3]=num%10000%1000/100;
ws[4]=num%10000/1000;
}
if(num>99&&num<999)
{
ws[1]=num%1000%10%10;
ws[2]=num%1000%100/10;
ws[3]=num%1000/100;
}
if(num>9&&num<99)
{ ws[1]=num%10;
ws[2]=num/10;
}
if(num>-1&&num<9)
{ws[1]=num;}
//================================
{//局部范围
int sm;
int i;
for(sm=0;sm<15;sm++)
{
for(i=1;i<=4;i++)
{
P3=numz[i];
P2=~numf[ws[i]];
yc(1);
P3=~numz[0];
}//for i end
}// for sm end
}//局部范围 end
}//smg_xs() end
//=========================================
void BEGIN_ADC0832()
{
//初始化 ADC
//CLK=0;
//CS=0;
//1脉冲 DI=1 开始
//2脉冲 DI=1
//3脉冲 DI=0
//=================
CLK=0;yc(SD);
CS=0;yc(SD);
//========================准备
DI=1;
yc(SD);
CLK=1;
//1脉冲
yc(SD);
CLK=0;
DI=1;
yc(SD);
CLK=1;
//2脉冲
yc(SD);
CLK=0;
DI=0;
yc(SD);
CLK=1;
//3脉冲
}
void READ_ADC0832()
{
CLK=0;//3脉冲 下降沿
yc(SD);
//------------------------
CLK=1;
yc(SD);
//4脉冲
CLK=0;
yc(SD);
ADC7=DO;
//------------------------
CLK=1;
yc(SD);
//5脉冲
CLK=0;
yc(SD);
ADC6=DO;
//------------------------
CLK=1;
yc(SD);
//6脉冲
CLK=0;
yc(SD);
ADC5=DO;
//------------------------
CLK=1;
yc(SD);
//7脉冲
CLK=0;
yc(SD);
ADC4=DO;
//------------------------
CLK=1;
yc(SD);
//8脉冲
CLK=0;
yc(SD);
ADC3=DO;
//------------------------
CLK=1;
yc(SD);
//9脉冲
CLK=0;
yc(SD);
ADC2=DO;
//------------------------
CLK=1;
yc(SD);
//10脉冲
CLK=0;
yc(SD);
ADC1=DO;
//------------------------
CLK=1;
yc(SD);
//11脉冲
CLK=0;
yc(SD);
ADC0=DO;
//------------------------
CS=1;
}
//=========================================
main()
{
float NUM_F;
char D4,D3,D2,D1;
while(1)
{
BEGIN_ADC0832();
READ_ADC0832();
NUM_F= ADC_BIT * 0.0196;
//==================
D4=NUM_F;
D3=(NUM_F*10)-(D4*10);
D2=(NUM_F*100)-(D4*100)-(D3*10);
D1=0;
//=============
smg_xs(D4*1000 + D3*100 + D2 *10 +D1);
//1 函数的形参 类型是什么 int
//2 实参 类型 double
}
//等待
}
void yc(int n) //延时n毫秒
{
char i;
while(n--)
{
for(i=0;i<120;i++);
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1