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

📄 电压表.c

📁 基于c51单片机的高精度数字电压表
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit  rs=P0^0	 ;
sbit  rw= P0^1	 ;
sbit  e=P0^2	;
sbit  rd=P3^0;
sbit  wr=P3^1;
uchar count;
uchar temp,temp0;
float temp1;
uchar volt_integer[2];
uchar volt_decimal[3];
void delay(uint ms)
{
 uint i;
 uchar j;
 for(i=0;i<ms;i++)
   for(j=0;j<150;j++)
   {
    _nop_();
   	_nop_();
	_nop_();
    _nop_();
   }



}
void  write_com(uchar com)
{
 rs=0;
 P2=com;
 delay(1);
 e=1;
 delay(1);
 e=0;

}

void  write_data(uchar date)
{
 rs=1;
 P2=date;
 delay(1);
 e=1;
 delay(1);
 e=0;

}
void gotoxy(uchar x,uchar y)	//光标指针移动到x行y列
{
	if(x==0)
	{
		write_com(0x80+y);
    }
	else
	{
		write_com(0x80+0x40+y);
	}
}	
/* ##########################################################################
初始化:设置显示模式       ----  0x38  --设置16x2 显示,5x7点阵,8位数据接口
        显示开/关及光标设置 --   0x08  --关显示
		                    --   0x0b  --开显示
								 0x0e  --显示光标,不闪烁
								 0x0c  --不显示光标,不闪烁
								 0x0d  --光标闪烁,不显示
								 0x0f  --光标显示+闪烁
						  ------ 0x06  --读或写一个字符后地址指针加一,且光标加一,整屏不移动
						  ------ 0x01  --显示清屏:数据指针清零,所有显示清零
					    	     0x02  --显示回车:数据指针清零    
 ######################################################################### */ 
void init()
{
  rw=0;	   //写状态
  write_com(0x01);
  write_com(0x38);
  write_com(0x0f);
  write_com(0x06);	
 // write_com(0x01);
}
void display_string(uchar *str) //显示字符串
{
	while(*str)
	{
		write_data(*str);
		str++;
	}
}
void display_number(uchar number)
{
	write_data(0x30+number);  //转化为ASCII码
} 
void init_system()
{
	TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	ET0=1;
	TR0=1;
	IT0=1;
	EX0=1;
	EA=1;
}
void timer0() interrupt   1
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;	
	count++;
}
/*void int0() interrupt  0
{
    uchar volt;
   // P1=0x00;
    TR0=0;
	rd=0;
	delay(1);
	rd=1;
	delay(1);
	volt=P1;
//	volt=volt<<1;
	gotoxy(1,9);
	display_number(volt);
	gotoxy(1,9);
	TR0=1;
}  */
void main()
{
	init();
	gotoxy(0,5);
	display_string("hello");
     gotoxy(1,0);
	display_string("volt:");
	write_com(0x0c);

	init_system();
    while(1)
	{
		if(count==20)
	    {
			count=0;
			wr=1;	  //开始转换
			wr=0;
			wr=1;
			rd=0;
			temp=P1;
			temp0=temp*5/255;
			temp1=(float)(temp*5/255);
			volt_integer[0]=temp0%10+'0';
	        volt_integer[1]='\0';

			temp1=temp1-temp0;
			volt_decimal[0]=temp1*10+'0';
			volt_decimal[1]=temp1*100+'0';
			volt_decimal[2]='\0';
			gotoxy(1,6);
			display_string(volt_integer);
			write_data('.');
			display_string(volt_decimal);
		}

	}
}

⌨️ 快捷键说明

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