首页 » 科学 » 51单片机进修29-ADC0804_暗记_旗子

51单片机进修29-ADC0804_暗记_旗子

南宫静远 2025-01-20 08:31:56 0

扫一扫用手机浏览

文章目录 [+]

芯片操作步骤:

// 1 步骤S0:CS=0、WR=0、RD=1(由CPLD发出旗子暗记哀求ADC0804开始进 行仿照/数字旗子暗记的转换)。

51单片机进修29-ADC0804_暗记_旗子 科学

// 2 步骤S1:CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完毕后INTR 将高电位降至低电位,而转换韶光>100us)。

// 3 步骤S2:CS=0、WR=1、RD=0(由CPLD发出旗子暗记以读取ADC0804的转 换资料)。

// 4 步骤S3:CS=1、WR=1、RD=1(由CPLD读取DB0~DB7上的数字转换资 料)。

仿真图:用的是我自己做的一个51单片机开拓板 图纸比较大,截图可能看不清,须要的话可以私信联系我。

程序:

源代码:

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit adcs=P3^5;

sbit adrd=P2^7;

sbit adwr=P3^3;

sbit P23=P2^3;

sbit dsrst=P3^6;

unsigned char code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,

0x7c,0x39,0x5e,0x79,0x71,0x00};

unsigned char code smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};

uchar table1[3];

uchar advalue;

//

//延时函数,在12MHz 的晶振频率下

//大约50us 的延时

//

void delay_50us(uint t)

{ uchar j; for(;t>0;t--) for(j=19;j>0;j--); }

//

//延时函数,在12MHz 的晶振频率下//大约50ms 的延时

//

void delay_50ms(uint t)

{

uint j;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

void main()

{

uchar j,k;

uchar i,l;

P23=1;

P1=0x00;

P23=1;

adcs=0;

while(1)

{

dsrst=0; //禁止实时时钟

P23=0; //禁止数码管

adcs=0; adwr=0; delay_50us(20); adwr=1; delay_50us(20); adrd=0; delay_50us(20); P1=0xff; // 开释P1

advalue=P1; //从P1 中读取数据

delay_50us(20); adrd=1; //禁止ADC 数据传输,防止影响数码管显示

adcs=1;

j=advalue/100; // 处理ADC 的数据,准备显示

k=advalue%100;

table1[2]=j;

j=k/10;

table1[1]=j;

j=k%10;

table1[0]=j;

P1=0; // 将P1 拉低准备显示

delay_50us(10);

P23=1;

for(l=0;l<20;l++) //在数码管上显示读取到的数据

{

for(i=0;i<3;i++)

{

P1=smg_du[table1[i]];

P2=smg_we[i];

delay_50us(100);

P1=0; //这句不加PROTUES显示不正常!

}

P23=0;

}

}

}

仿真结果: 通过调节ADC0804外部接的滑动变阻器,不同的电压,数码显示不同的数值。

标签:

相关文章

ddr3 布线_电阻_地址

如果不是特殊解释,每个步骤中的方法同时适用于DDR1,DDR2和DDR3。PCB设计软件以Cadence Allgro 16.3为...

科学 2025-01-20 阅读0 评论0