📄 adc0804模数转换实验.c
字号:
/**********************************************************************
* 程序名称:ADC0804模拟测试电压,用POT电位器调节,数码管显示000~255
***********************************************************************/
#include<reg51.h>
#include <intrins.h>
sbit duan=P3^3;//段选通端
sbit wei=P3^4;//位选通端
#define uchar unsigned char
#define uint unsigned int
unsigned char code
table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳段码
table1[]={
0x40,/*9*/
0x79,/*9*/
0x24,/*9*/
0x30,/*9*/
0x19,/*9*/
0x12,/*9*/
0x02,/*9*/
0x78,/*9*/
0x00,/*9*/
0x10,/*9*/
};//共阳段码(带小数点)
table2[]={0x01,0x02,0x04,0x08,0x10,0x20};//共阳位码
sbit cs=P3^2;
sbit wr=P3^6;
sbit rd=P3^7;
/*************延时子程序*******************************/
void delay(uint Temp)
{
uint i;
while(Temp)
{
i=200;
while(i>0)
i--;
Temp--;
}
}
/*************读AD0804 子程序*******************************/
unsigned char adc0804( void ) //读AD0804 子程序
{
unsigned char ad_data,j;
rd=1;wr=1; //int1=1;读ADC0804
P1=0xff; //P1 置位
cs=0;wr=0;wr=1; //启动ADC0804
rd=0; //开始读转换后数据
j=j; j=j; //小延时,等待ADC0804 读完数
ad_data=P1; //读出的数据赋与ad_data
rd=1;cs=1; //读数完毕
return(ad_data);//返回最后读出的数据
}
void display(int sum) //显示子程序
{
duan=1; //打开段选
P0=table1[sum/100]; //显示百位数
duan=0; //关闭段选
wei=1; //打开位选
P0=table2[3]; //显示的位置
wei=0; //关系位选
delay(5); //延时
//--------------------------
duan=1;
P0=table[sum%100/10]; //显示十位
duan=0;
wei=1;
P0=table2[4]; //显示的位置
wei=0;
delay(5);
//-------------------------
duan=1;
P0=table[sum%10]; //显示个位
duan=0;
wei=1;
P0=table2[5]; //显示的位置
wei=0;
delay(5);
}
void main()
{
while(1) display(adc0804());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -