《adc0832数字电压表(程序+仿真图)》由会员分享,可在线阅读,更多相关《adc0832数字电压表(程序+仿真图)(7页珍藏版)》请在金锄头文库上搜索。
1、仿真图:/*包含头文件*/#include #include /*端口定义*/sbit CS = P35;sbit Clk = P33;sbit DATI = P34;sbit DATO = P34;sbit P20=P20 ;/*定义全局变量*/unsigned char dat = 0x00; /AD值unsigned char count = 0x00; /定时器计数unsigned char CH; /通道变量unsigned char dis = 0x00, 0x00, 0x00; /显示数值/*共阳LED段码表*/unsigned char code tab=0xc0,0xf9,0
2、xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;char code tablewe= 0xfd,0xfb,0xf7,0xef,0xdf,0xfe ;/*函数功能:AD转换子程序入口参数:CH出口参数:dat*/unsigned char adc0832(unsigned char CH) unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; /初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_(); if ( CH = 0x00 )
3、/通道选择 Clk = 0; DATI = 1; /通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; /通道0的第二位 _nop_(); Clk = 1; _nop_(); else Clk = 0; DATI = 1; /通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; /通道1的第二位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; for( i = 0;i 8;i+ ) /读取前8位的值 _nop_(); adval = 1; C
4、lk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else adval |= 0x00; for (i = 0; i = 1; if (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; if (adval = test) /比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; _nop_(); CS = 1; /释放ADC0832 DATO = 1; Clk = 1; return dat;/*函数功
5、能:延时子程序入口参数:出口参数:*/void delay(void) int k; for(k=10;k500;k+);/*函数功能:将0-255级换算成0.00-5.00的电压数值入口参数:i出口参数:*/void convdata(unsigned char i) dis0 = i/51; /个位 dis1 = (i%51)*10/51*2; /小数点后第一位 dis2 = (i%51)*10%51)*10/51*2; /小数点后第二位/*函数功能:数码管显示子程序入口参数:出口参数:*/void display(void) P2=0xff; P0=tabdis0 & 0x7f; /显示
6、个位和小数点delay(); P2=0xfd; P2=0xff; P0=tabdis1; /显示小数点后第一位delay(); P2=0xfb; P2=0xff; P0=tabdis2; /显示小数点后第二位delay(); P2=0xf7; P2=0xff; P0=0xff; /显示小数点后第二位delay(); P2=0xfe; /*函数功能:主程序入口参数:出口参数:*/void main(void) P2=0xff; /端口初始化 P0=0xff; delay(); CH = 0x00; /在这里选择通道 0x00或0x01 TMOD = 0x01; /设置中断 TH0=(65536-
7、50000)/256;/定时器1初值定时50msTL0=(65536-50000)%256; IE = 0x82; TR0 = 1; while(1) /主循环 dat = adc0832(CH); convdata(dat); /数据转换 display(); /显示数值 /*函数功能:定时器中断延时程序 这一段的作用时隔一段时间抽样一次 否侧显示的最后一位会不稳定入口参数:出口参数:*/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(CH); 在能力与知识结构方面,要求学生应具有扎实的专业和日语语言基础,熟练掌握日语听、说、读、写、译的基本技能;了解日本社会及日本文化等方面的基本知识,熟悉日本国情,具有一定的日本人文知识及运用这些知识与日本人进行交流的能力。