单片机AD转换用的这段程序意思是什么

单片机AD转换用的这段程序意思是什么,第1张

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch //开始转换

这是用STC单片机内部A/D转换电路进行A/D转换时,要给A/D控制寄存器ADC_CONTR写启动转换命令,ADC_CONTR是ADC控制寄存器,其中的每一位的作用见下图,而这行语句前面肯定闷毕要有清罩宏定义每一位状态的语句,或用#define宏定义了各答册位的值。

您好,/*

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

输出接口是"D/A OUT"

*/

#include<reg51.h>

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

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>0i--)

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

}

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=0j<8j++)

{

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>0i--) }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

原文地址: http://outofmemory.cn/yw/8246550.html

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

发表评论

登录后才能评论

评论列表(0条)

保存