《ADC0832应用 5V数字电压表》由会员分享,可在线阅读,更多相关《ADC0832应用 5V数字电压表(5页珍藏版)》请在金锄头文库上搜索。
1、/*包含头文件*/#include #include /*端口定义*/sbit CS=P35;sbit Clk=P33;sbit DATI=P34;sbit DATO=P34;sbit P20=P20 ;#define uchar unsigned char/*定义全局变量*/uchar dat=0x00; /AD 值uchar count=0x00; /定时器计数uchar ge,yi,er; /显示位/*共阳 LED 段码表*/uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/*函数功能:延时子程序入口参数:
2、出口参数:*/void delay(void)uchar k;for(k=0;k= 1;if (DATO)test |= 0x80;else test |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;if (adval = test) /比较前 8 位与后 8 位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉dat = test;_nop_();CS = 1; /释放 ADC0832DATO = 1;Clk = 0;return dat;/*函数功能:将 0-255 级换算成 0.00-5.00 的电压数值,数码管显示子程序入口参数:出口参数:*/voi
3、d display(uchar i) /数据转换ge= i/51; /个位yi= (i%51)*10/51; /小数点后第一位er = (i%51)*10%51)*10/51; /小数点后第二位 P2=0xff;P0=tabge /显示个位和小数点delay();P2=0xfd;P2=0xff;P0=tabyi; /显示小数点后第一位delay();P2=0xfb;P2=0xff;P0=taber; /显示小数点后第二位delay();P2=0xf7; P2=0xff;P0=0xff; /显示小数点后第二位delay();P2=0xfe; /*函数功能:主程序入口参数:出口参数:*/void
4、main(void)P2=0xff; /端口初始化P0=0xff; delay();TMOD = 0x01; /设置中断 TH0=(65536-50000)/256;/定时器 1 初值定时 50msTL0=(65536-50000)%256;IE = 0x82;TR0 = 1;while(1) /主循环 display(dat); /显示数值 /*函数功能:定时器中断延时程序 这一段的作用时隔一段时间抽样一次 否侧显示的最后一位会不稳定入口参数:出口参数:*/void timer0(void) interrupt 1 TMOD = 0x01;TH0=(65536-50000)/256; /定时器 1 初值定时 50msTL0=(65536-50000)%256;IE = 0x82;TR0 = 1;count+;if (count = 0x01)count = 0x00;dat = adc0832();