单片机源程序如下:
- //程序头函数
- #include <reg52.h>
- //宏定义
- #define uint unsigned int
- #define uchar unsigned char
- #define Data_ADC0809 P1
- //ADC0809
- sbit ST=P3^2;
- sbit EOC=P3^3;
- sbit OE=P3^1;
- sbit DIAN = P0^5; //小数点
- /*******************************定义全局变量********************************/
- unsigned char dis[3]; //显示数值
- unsigned int sum=0;
- unsigned int temp=0;
- unsigned int dat=0;
- /*******************************共阴LED段码表*******************************/
- unsigned char code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0x5e/*字母U*/}; //gc.debfa
- /****************************************************************************
- 函数功能:AD转换子程序
- ****************************************************************************/
- //ADC0809读取信息
- uchar ADC0809()
- {
- uchar temp_=0x00;
- //初始化高阻太
- OE=0;
- //转化初始化
- ST=0;
- //开始转换
- ST=1;
- ST=0;
- //外部中断等待AD转换结束
- while(EOC==0)
- //读取转换的AD值
- OE=1;
- temp_=Data_ADC0809;
- OE=0;
- return temp_;
- }
- /****************************************************************************
- 函数功能:延时子程序
- 入口参数:
- 出口参数:
- ****************************************************************************/
- void delay(unsigned int x)
- {
- unsigned int i,j;
- for(i=0;i<x;i++)
- for(j=0;j<121;j++);
- }
- //=====================================================================================
- //=====================================================================================
- //=====================================================================================
- /****************************************************************************
- 函数功能:将0-255级换算成0.00-5.00的电压数值
- 入口参数:i
- 出口参数:
- ****************************************************************************/
- void convdata(unsigned char dat1)
- {
- unsigned int Vo;
- Vo=dat1*1.96;
- dis[0] = Vo/100; //十位
- dis[1] = Vo%100/10; //个位
- dis[2] = Vo%100%10; //小数点后第1位
- }
- /****************************************************************************
- 函数功能:数码管显示子程序
- 入口参数:
- 出口参数:
- ****************************************************************************/
- void display(void)
- {
- P0=~tab[dis[0]];
- P2=0xfe; //11011111
- DIAN=0;
- delay(1);
- P2=0xff;
- P0=~tab[dis[1]];
- P2=0xfb; //10111111
- delay(1);
- P2=0xff;
- P0=~tab[dis[2]];
- P2=0xef; //01111111
- delay(1);
- P2=0xff;
- P0=~tab[10];
- P2=0xbf;
- delay(1);
- P2=0xff;
- }
- /****************************************************************************
- 函数功能:主程序
- 入口参数:
- 出口参数:
- ****************************************************************************/
- void main(void)
- {
- unsigned char p=0;
- while(1) //主循环
- {
- for(p=0;p<20;p++)
- {
- sum=sum+ADC0809();
- display();
- }
- // dat=((sum/20)+dat)/2;
- dat=sum/20;
- convdata(dat); //数据转换
- sum=0;
- display(); //显示数值
- }
- }
复制代码
全部资料51hei下载地址:
原理图.docx
(49.81 KB, 下载次数: 24)
|