void delayms(int t)//51单片机常用延时子程序 毫秒级延时
{
int i; //声明变量i--内循环变量
int j; //声明变量j--外循环变量
for(j=0;j<t;j++)
{
for (i=0;i<150;i++);//循环加法计算,消耗CPU时间,达到延时的目的
}
}
uchar ADC(void) //adc 子程序, 本程序针对常用并行8位AD芯片ADC0804
{
uchar ADCRes; //声明一个uchar(无符号单字节变量,用于保存AD转换结果)
P0=0xFF;//拉高P0数据总线,为读做准备(51单片机中,读取IO端口时,必须先拉高对应端口)
WR=0;//把ADC0804的WR脚拉低
delayms(1);
WR=1;//把ADC0804的WR脚拉高
delayms(1);//延时1毫秒
RD=0;//把ADC0804的WR脚拉低
delayms(1);//延时1毫秒
ADCRes=P0;//读取AD转换结果到ADCRes变量
delayms(1);//延时1毫秒
RD=1;//拉高ADC0804 RD脚
return ADCRes;//返回AD转换结果
}
void jkc_Dac(void) //dac 子程序,输出阶梯波,本程序采用常用8位DAC芯片--DAC0832
{
uchar i;
P2=0XFF;//拉高P2
DAC_CS=1;//拉高DAC0832片选
DAC_WR=1;//接高DAC0832写
for (i=0;i<25;i++)//25次循环,每次电压增加10/255*Vref(参考电压,这里是5伏)伏,形成阶梯电压
{
P0=i*10;
DAC_CS=0;
DAC_WR=0;
_nop_();
_nop_();
DAC_WR=1;
delayms(1);
}
}
完整程序请看附件
很好啊,学习一下
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |