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

📄 液位控制.c

📁 单片机C语言15个实验附有原理图和程序 是我的课程作业 以经过实践验证
💻 C
字号:
/key_164_led_2

#include <stdio.h>
#include <reg51.h>
#include <intrins.h>
unsigned char key,ledk[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xf3};
unsigned char disp[4];disp_flag=0;mask=0xee;
unsigned char yewei,indata
unsigned float get_data;
unsigned char key_count,key_flag=0,key_dode;led_on;set_on;time_count;
sbit P37=P3^7;sbit clk=P1^2;sbit sda=P1^2;sbit P10=P1^0;               //74LS164
void shift(unsigned char dx)  //至显示

void delay(unsigned int n)// 延时函数
 {unsigned int i,j;
  for(i=0;i<n;i++)
     for(j=0;j<n;j++)
       ;}
{static unsigned char d;
   unsigned char j=0;
    d=dx;
   	while(j<8)
	{if((d&0x80)!=0) sda=1;
       else  sda=0;
	   clk=0;clk=1;
	   d<<=1;j++;}  }
////////////////////////////////////////////////////////////////////
uunsigned char get_char()  //按键扫描
{unsigned char key_code;
 static unsigned char column=0;
   if(P37==0 && key_flag==1){key_code=column;key_flag=0;key_count=0;}
       else key_code=0xff;
   key_count++;column++;led_no++;if(column>3)column=0;if(led_no>3)led_no=0;
   if(key_count>5) key_flag=1;
   mask=_crol_(mask,1);
   return key_code;}
 
//////////////////////////////////////////////////////////////
void key_func(key)//设定液位高度
 {switch (key)
   {case 0:  set_no=0; set_flag=1;
             break;
    case 1:  set_no++;if(set_no>3)set_no=0;break;
    case 2: if(set_flag==1) disp[set_no]++;
             if(set_no==0 && disp[set_no]>9)disp[set_no]=0;
             if(set_no==1 && disp[set_no]>9)disp[set_no]=0;
             if(set_no==2 && disp[set_no]>9)disp[set_no]=0;
             if(set_no==3 && disp[set_no]>9)disp[set_no]=0;
             break;
    case 3:  key_0=0;
             if(set_flag==1){set_flag=0; set_to_disp()}break;
    default: break;               }  }
///////////////////////////////////////////////////////////////////////
void set_to_disp(void)  //设定的液位高度显示
  {time_count++;if(time_count>3) yewei=disp[3]*1000+disp[2]*100+disp[1]*10+disp[0];  }   //设定液位三秒内显示设定值,三秒后显示采集数据值
void caiji_to_disp(unsigned xx)//采集液位的显示
{disp[3]=xx/1000;       
xx=xx%1000;
 disp[2]=xx/100;       
xx=xx%100;
 disp[1]=xx/10;      
 disp[0]=xx%10;}

///////////////////////////////////////////////////////////
yeweicaiji(void)
  { static char count=1;
   static char select;
  {   case 0;
   switch(select)

    if(ind| t=8;get_data=7*(10/38)+5;
     else 
    {while(indata&0xff!=0)
      {count--;indata<<=1;}
       get_data=(count-1)*(10/38)+5;if(count=0) get_data=3;}
  
 case 1;   
    if(indata&oxff==0) 
      count=16;get_data=15*(10/38)+5;
     else 
    {while(indata&0xff!=0)
      {count--;indata<<=1;}
       get_data=(count-1)*(10/38)+5;
 case 2;    
    if(indata&oxff==0) 
      count=24;get_data=23*(10/38)+5;
     else 
    {while(indata&0xff!=0)
      {count--;indata<<=1;}
       get_data=(count-1)*(10/38)+5;
case 3;    
    if(indata&oxff==0) 
      count=32;get_data=31*(10/38)+5;
     else 
    {while(indata&0xff!=0)
      {count--;indata<<=1;}
       get_data=(count-1)*(10/38)+5;
 case 4;   
    if(indata&oxff==0) 
      count=40;get_data=18;
     else 
      
    {while(indata&0xff!=0)
      {count--;indata<<1;}
      if(count=39) get_data=15;else get_data=(count-1)*(10/38)+5;
}

dingwei(unsigned char yy)   // 上电定位选择那边74ls244
{  unsigned char i;
   unsigned char xuanze;
 for (i=0;i<5;i++)
(xuanze=P1&0x00) select=0;
  (xuanze=P1&0x00) select=0;

}


⌨️ 快捷键说明

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