STC12C5A60S2 AD转换C语言程序,转换结果在12864液晶上显示.

STC12C5A60S2 AD转换C语言程序,转换结果在12864液晶上显示.,第1张

#include<STC12h>

#define uchar unsigned char

#define uint unsigned int

uchar code seg_data1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code seg_data2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

sbit p20=P2^0;

sbit p21=P2^1;

sbit p22=P2^2;

//sfr ADC_CONTR=0xBC;

//sfr P1ASF=0x9D;

//sfr ADC_RES=0xBD;

void delay(uint a1);

void input();

void display(uint count);

void main()

{

uint x;

while(1)

{

input();

x=5(ADC_RES50)/255;

display(x);

}

}

void input()

{

P1ASF=0x01;

ADC_CONTR=0x88;

delay(25);

IE=0xA0;

}

void drop() interrupt 5

{

ADC_CONTR=0X88;

}

void display(uint count)

{

uchar i;

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

{

P0=seg_data1[count%10];

p20=0;

delay(25);

p20=1;

P0=seg_data2[count/10%10];

p21=0;

delay(25);

p21=1;

if(count>=100)

{

P0=seg_data1[count/100];

p22=0;

delay(25);

p22=1;

}

}

}

void delay(uint a1) //误差 0us

{

unsigned char a,b,c;

for(c=a1;c>0;c--)

for(b=142;b>0;b--)

for(a=2;a>0;a--);

}

这是我自己写的,用数码管显示,你只需要把void display(uint count)函数改为12864的显示函数即可

P2 =1 << 2;P0 = SEG_CODE[ v % 10]; delay_ms(5)

P2 =1 << 1;P0 = SEG_CODE[ v % 100/10]; delay_ms(5)

P2 =1 << 0;P0 = SEG_CODE[ v % 100] &0x7F; delay_ms(5)

这三行的最后delay_ms(5)都缺少分号;

您好,/

程序通过对DAC0832 *** 作,实现D/A转换。按INT1键DAC0832输出电压变高,按s3键DAC0832电压变低。

输出接口是"D/A OUT"

/

#include<reg51h>

//////////////////////

sbit le1=P1^0;/ic1 74hc373使能端/

sbit dac0832_cs=P3^7;

sbit dac0832_wr=P1^1;

sbit int1_k=P3^3;

sbit s3_k=P3^6;

sbit blight=P0^6;

void s_q00();

void s_q01();

void s_q02();

void s_q03();

void s_q04();

void s_q05();

void s_q06();

void s_q07();

void c_q00();

void c_q01();

void c_q02();

void c_q03();

void c_q04();

void c_q05();

void c_q06();

void c_q07();

//void delay1();

void delayms(unsigned int i);

void delay100us() ;

void initi_lcd();

void initi();

void c_rw();

void s_rw();

void c_e();

void s_e();

void c_rs(void);

void s_rs(void);

void display(unsigned int addr,char a);

void out_74ls164(unsigned char i);

unsigned char q1=0;

unsigned char da_out_74ls164=0,pwm1=0;

void d_to_a(unsigned char dat)//DAC0832写函数。

{

out_74ls164(dat);

//c_q14(); /片选/

dac0832_cs=0;

//c_q13(); /写数据/

//s_q13();

dac0832_wr=0;

dac0832_wr=1;

// s_q14();/禁止转换/

dac0832_cs=1;

}

main()

{

unsigned char dat=0;

initi_lcd();

display(0,'o');

display(1,'u');

display(2,'t');

display(3,'p');

display(4,'u');

display(5,'t');

display(6,':');

display(7,0x30+dat/100);display(8,0x30+dat%100/10);display(9,0x30+dat%10);

while(1)

{

if(int1_k==0) {dat++;display(7,0x30+dat/100);display(8,0x30+dat%100/10);display(9,0x30+dat%10);}

if(s3_k==0) {dat--;display(7,0x30+dat/100);display(8,0x30+dat%100/10);display(9,0x30+dat%10);}

blight=1;

d_to_a(dat);

delayms(60);

}

}

void display(unsigned int addr,char a)

{

s_e();

c_rs();

c_rw();

// P0=0x80+i;

out_74ls164(0x80+addr); /写地址/

c_e();

delay100us();

s_e();

s_rs();

//P0=a;

out_74ls164(a);/写数据/

c_e();

delay100us();

s_e();

}

void delayms(unsigned int i)

{

unsigned int j;

for(;i>0;i--)

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

}

void initi_lcd()

{

delayms(10);

c_rw();

s_e();

c_rs();

// P0=0x01;

out_74ls164(0x01);

c_e();

delayms(5);

s_e();

c_rs();

// P0=0x38;

out_74ls164(0x38);

c_e();

delayms(5);

s_e();

//P0=0x0f;

out_74ls164(0x0f);

c_e();

delayms(5);

s_e();

// P0=0x04;

out_74ls164(0x04);

c_e();

delayms(5);

s_e();

}

void out_74ls164(unsigned char i)

{

unsigned char j,i_tem;

// s_q27();

for(j=0;j<8;j++)

{

i_tem=i<<j;

if(i_tem&0x80)s_q01();/74ls164数据/

else c_q01();

c_q00();/74ls164时钟/

s_q00();

}

}

void s_rs(){s_q05();}

void c_rs(){c_q05();}

void s_rw(){s_q06();}

void c_rw(){c_q06();}

void s_e(){s_q07();}

void c_e(){c_q07();}

void delay100us() { unsigned int i=2; for(;i>0;i--); }

///////////////////////////////////////////////////////

//////////////////////////////////////////////////

/74hc373扩展接口函数:s表示置1,c表示置0,q1表示ic1 74hc373 ,

q2表示ic2 74hc373 ,仅接着的数字表示相应输出Q的序号 /

void s_q00(){q1=q1|0x01; P0=q1; le1=1; le1=0; }

void s_q01(){q1=q1|0x02; P0=q1; le1=1; le1=0; }

void s_q02(){q1=q1|0x04; P0=q1; le1=1; le1=0; }

//void s_q03(){q1=q1|0x08; P0=q1; le1=1; le1=0; }

void s_q04(){q1=q1|0x10; P0=q1; le1=1; le1=0; }

void s_q05(){q1=q1|0x20; P0=q1; le1=1; le1=0; }

void s_q06(){q1=q1|0x40; P0=q1; le1=1; le1=0; }

void s_q07(){q1=q1|0x80; P0=q1; le1=1; le1=0; }

void c_q00(){q1=q1&(~0x01); P0=q1; le1=1; le1=0;}

void c_q01(){q1=q1&(~0x02); P0=q1; le1=1; le1=0;}

void c_q02(){q1=q1&(~0x04); P0=q1; le1=1; le1=0;}

//void c_q03(){q1=q1&(~0x08); P0=q1; le1=1; le1=0;}

void c_q04(){q1=q1&(~0x10); P0=q1; le1=1; le1=0;}

void c_q05(){q1=q1&(~0x20); P0=q1; le1=1; le1=0;}

void c_q06(){q1=q1&(~0x40); P0=q1; le1=1; le1=0;}

void c_q07(){q1=q1&(~0x80); P0=q1; le1=1; le1=0;}

以上就是关于STC12C5A60S2 AD转换C语言程序,转换结果在12864液晶上显示.全部的内容,包括:STC12C5A60S2 AD转换C语言程序,转换结果在12864液晶上显示.、用ADC0808进行AD转换与显示,画出了硬件图,软件程序为什么打人keil检查结果有错误,求指点具体程序、关于51的AD转换的程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9513426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存