2019-07-17 12:55发布
sdjnzwd 发表于 2015-7-16 09:16 安装是可以的,就是不能用
sdjnzwd 发表于 2015-7-8 13:23 不知道你是否有好心人给你了,有的话能共享吗?我也需要
sdjnzwd 发表于 2015-7-8 13:31 我下载了几次,都不能用呀,网上的能相信吗/
sdjnzwd 发表于 2015-7-16 09:21 从网上找东西,真的不好找,参与的人不多
最多设置5个标签!
从网上找东西,真的不好找,参与的人不多
从网上找东西,真的不好找,参与的人不多
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp;
//sbit wei1=P0^0;
//sbit wei2=P0^1;
//sbit wei3=P0^2;
//sbit wei4=P0^3;//0xf7
//sbit wei5=P0^4;//0xef
//sbit wei6=P0^5;//0xdf
sbit led=P2^5;//DIOLA发光二极管
sbit wela=P2^7;
sbit dula=P2^6;
sbit rd=P3^7;
sbit wr=P3^6;
uint date;
uchar adc0804(void) ;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //不带小数点数字编码
uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef}; //带小数点数字编码
//void display(uchar temp);
//延时子函数
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
// 码管的显示
void display(uchar b1,uchar b2,uchar b3)
{
dula=0;
P0=table1[b1]; //显示百位
dula=1; //从0到1,有个上升沿,解除锁存,显示相应段
dula=0; //从1到0再次锁存
//P0=0xff;
wela=0;
P0=0xf7;//wei4=0
wela=1;
wela=0;
delay(5); //延时约5ms
P0=table[b2]; //显示十位
dula=1;
dula=0;
//P0=0xff;
P0=0xef;//wei5=0带小数点
wela=1;
wela=0;
delay(5);
P0=table[b3]; //显示个位
dula=1;
dula=0;
P0=0xdf;//wei6=0
wela=1;
wela=0;
delay(5);
}
void main()
{
while(1)
{
uchar c,b1,b2,b3;//变量
wela=1;
P0=0x7f;//打开片选ADC
wela=0;
wr=0;//启动AD转换
_nop_();
wr=1;
P0=0xff;//关断片选
delay(2);
//读AD的转换值
P0=0;//选通ADC
rd=0;//读有效
_nop_();//由datasheet资料知要延时tacc就是要片子稳定一下,所以加_nop_()
P0=0xff;//对端口读取数据之前要全部赋值1,否则读取的值不准
c=P1;//读取ADC的值赋值给c,送过去显示
rd=1;
P0=0xff;//关闭ADC的片选
date=c*20;//分辨率是19.5毫伏
b1=date/1000;
b2=date%1000/100;
b3=date%10;
display(b1,b2,b3);
}
}
ADC0804的程序很好用的,调节电位器,在数码管上显示0-5V的电压值
一周热门 更多>