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}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)