****************************************************************************/ void convdata(unsigned char i)
{
dis[0] = i/51; //个位
dis[1] = (iQ)*10/51; //小数点后第一位
dis[2] = ((iQ)*10Q)*10/51; //小数点后第二位 }
/**************************************************************************** 函数功能:数码管显示子程序 入口参数: 出口参数:
****************************************************************************/ void display(void)
{
P2=0xff;
P0=tab[dis[0]] & 0x7f; //显示个位和小数点 P2=0xfe; delay(); P2=0xff;
P0=tab[dis[1]]; //显示小数点后第一位 P2=0xfd; delay(); P2=0xff;
P0=tab[dis[2]]; //显示小数点后第二位 P2=0xfb; delay(); }
/****************************************************************************
函数功能:定时器中断延时程序 这一段的作用时隔一段时间抽样一次 否侧显示的最后一位会不稳定 入口参数:
出口参数:
****************************************************************************/ void timer0(void) interrupt 1 {
TMOD = 0x01; TH0 = 0x00; TL0 = 0x00; IE = 0x82; TR0 = 01; count++;
if (count == 0x0A) {
count = 0x00;
dat = adc0832(CH); } }
/**************************************************************************** 函数功能:主程序 入口参数: 出口参数:
****************************************************************************/ void main(void)
{
P2=0xff; //端口初始化 P0=0xff;
CH = 0x00; //在这里选择通道 0x00或0x01 TMOD = 0x01; //设置中断 TH0 = 0x00; TL0 = 0x00;
IE = 0x82; TR0 = 01;
while(1) //主循环 {
convdata(dat); //数据转换 display(); //显示数值 } }