⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 用单片机来写的电压测试程序
💻 C
字号:
#include <reg52.h>

#define  uchar unsigned char
#define  uint  unsigned int

code unsigned char seg7code[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //显示段码


/*************lcd函数定义*******************************/
void LCD_en_command(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
void LCD_init(void);//lcd initize function
void delay_nms(unsigned int n);//delay function
void delay1(uint ticks);//delay function


/*************初始化定时器及计数器的函数*******************************/
void initsys();

/*************ad控制管脚定义*******************************/
sbit cs=P3^3;  
sbit wr=P3^5;  
sbit rd=P3^4; 
/*************读AD0804子程序*******************************/
unsigned char adc0804( void )     //读AD0804子程序
{   unsigned char addata,i; 
	rd=1;wr=1;//int1=1; //读ADC0804前准备
	P1=0xff;         //P1全部置一准备
	cs=0;wr=0;wr=1; //启动ADC0804开始测电压
	rd=0;     //开始读转换后数据
	i=i; i=i;    //无意义语句,用于延时等待ADC0804读数完毕
	addata=P1;//读出的数据赋与addate
	rd=1;cs=1;//读数完毕
return(addata);//返回最后读出的数据
}
/*************ADC0804读出的数据处理*******************************/
unsigned int datpro(void)//ADC0804读出的数据处理
{ unsigned char x;   
unsigned int dianyah,dianyal; //用于存储读出数据的高字节和低字节
unsigned int dianya=0;        //存储最后处理完的结果 注意数据类型
for(x=0;x<10;x++)             //将10次测得的结果存储在dianya中
{dianya=adc0804()+dianya; }
dianya=dianya/10; //求平均值
dianyah=dianya&0xf0; //屏蔽低四位
dianyah=dianyah>>4;  //右移四位 取出高四位
dianyal=dianya&0x0f; //屏蔽高四位 取出低四位
dianya=dianyal*20+dianyah*320; //最后的结果是一个四位数,便于显示
return(dianya);//返回最后处理结果
}
/*************显示输出函数******************************/
void AD_LCD()
{  unsigned long date;
   //unsigned long date1;
   date=datpro();  //调用数据处理最后结果


   /************千位********************************/
    LCD_en_command(0xc5);
    LCD_en_dat(seg7code[date/1000]);
    delay_nms(20);
	/*********输出得是.***********************************/
    LCD_en_command(0xc6);//输出得是.
    LCD_en_dat(46);
    delay_nms(20);
   /**********百位***************************************/
    LCD_en_command(0xc7);
    LCD_en_dat(seg7code[date%1000/100]);
    delay_nms(20);
	/*********十位**************************************/
    LCD_en_command(0xc8);
    LCD_en_dat(seg7code[date%100/10]);
    delay_nms(20);
   	/*********个位**************************************/
	 LCD_en_command(0xc9);
    LCD_en_dat(seg7code[date%10]);
    delay_nms(20);
    /*********输出得是V*************************************/
    LCD_en_command(0xca);//输出得是V
    LCD_en_dat(86);
    delay_nms(20);
}

main()
{ 
LCD_init();
while(1)
  {  
      AD_LCD();
  }	
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -