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);
}
}
完整程序请看附件
分享简洁51单片机常用子程序.rar
(91.22 KB, 下载次数: 266)
|