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

📄 报站器.c

📁 公共汽车报站器,基于51
💻 C
字号:
#include <reg51.h>
#include <absacc.h>
#include <d:\mymine\liude\4004_1.H>

#define uchar unsigned char
#define uint  unsigned int

sbit   k1=P1^0;//stop
sbit   k2=P1^1;//play
sbit   k3=P1^2;//fc
sbit   k4=P1^7;//ret
sbit   k5=P1^6;//on
sbit   lcd_data=P3^5;
sbit   lcd_clock=P3^4;

void  display_begin()
{
	uint n;
	uint i;
	uchar begin[]={0x6e, 0x9e,0x1c,0x1c,0xfc};
    lcd_data=1;
  	lcd_clock=1;

   for(n=0;n<5;n++)
   {  for(i=0;i<8;i++)
   {lcd_data=(bit)(begin[n]&0x01);
	lcd_clock=0;
	lcd_clock=1;
    begin[n]>>=1;
	}
	}
}

void  clear()
{
	uint n;
	uint i;
    lcd_data=1;
  	lcd_clock=1;
   for(n=0;n<8;n++)
     for(i=0;i<8;i++)
   {lcd_data=0;
	lcd_clock=0;
	lcd_clock=1;
  	}
}
void  zhanshu(  uint t)
{    uchar  zhanshu;
	uint i;
    lcd_data=1;
  	lcd_clock=1;
   switch  (t)
   		{	case  4:   zhanshu=0x60;   break;//1
    		case  5:   zhanshu=0xda;   break; //2
    		case  6:   zhanshu=0xf2;   break;//3
 			case  7:   zhanshu=0x66;   break;//4
 		//	case  7:   zhanshu=0xb6;   break;//5
    		default:   break;  
		}
   
     for(i=0;i<8;i++)
   {lcd_data=(bit)(zhanshu&0x01);
	lcd_clock=0;
	lcd_clock=1;
    zhanshu>>=1;
  	}
}
void  display_stop()
{
	uint n;
	uint i;
	uchar stops[]={0x00, 0xb6,0xe0,0xfc,0xce};
    lcd_data=1;
  	lcd_clock=1;

   for(n=0;n<5;n++)
   {  for(i=0;i<8;i++)
   {lcd_data=(bit)(stops[n]&0x01);
	lcd_clock=0;
	lcd_clock=1;
    stops[n]>>=1;
	}
	}
}
void  display_play()
{
    uint n;
	uint i;
	uchar plays[]={0x00,0xce,0x1c,0xee,0x76};
    lcd_data=1;
  	lcd_clock=1;
    for(n=0;n<5;n++)
      for(i=0;i<8;i++)
   		{lcd_data=(bit) (plays[n]&0x01);
		lcd_clock=0;
		lcd_clock=1;
    	plays[n]>>=1;
		}
}
void  display_fc()
{
    uint n;
	uint i;
	uchar fc[]={0x00,0x8e,0x9c};
    lcd_data=1;
  	lcd_clock=1;

   for(n=0;n<3;n++)
     for(i=0;i<8;i++)
   		{lcd_data=(bit)( fc[n]&0x01);
		lcd_clock=0;
		lcd_clock=1;
    	fc[n]>>=1;
		}
}
void  display_on()
{
    uint n;
	uint i;
	uchar on[]={0x00,0xfc,0xec};
    lcd_data=1;
  	lcd_clock=1;

   for(n=0;n<3;n++)
     for(i=0;i<8;i++)
   		{lcd_data=(bit)( on[n]&0x01);
		lcd_clock=0;
		lcd_clock=1;
    	on[n]>>=1;
		}
}
void  display_ret()
{
    uint n;
	uint i;
	uchar rets[]={0x00,0x8c,0x9e,0xc0};
    lcd_data=1;
  	lcd_clock=1;

   for(n=0;n<4;n++)
     for(i=0;i<8;i++)
   		{
		lcd_data=(bit) (rets[n]&0x01);
		lcd_clock=0;
		lcd_clock=1;
    	rets[n]>>=1;
		}
}
void  play(uint  num)
{     
       set_play_addr(); play_sound(); for(;INTE==1;);
       dlms(200);

       for(;num>2;num--)
        {mc();       for(;INTE==1;);  }   
       play_sound();for(;INTE==1;);
   
       power_up();   dlms(200);
       set_mc_addr(); 
       mc();         for(;INTE==1;);
       mc();         for(;INTE==1;);
       play_sound(); for(;INTE==1;);

   
}
   

uchar   test_key()
{	uchar  n;
    if(k1==0)
	{    dlms(1);
		for(;k1==0;);  n=1;  }
    else  if(k2==0)
    {	dlms(1);
		for(;k2==0;);  n=2;  }
 	else  if(k3==0)
    {	dlms(1);
		for(;k3==0;);  n=3;	}
    else  if(k4==0)
    {	dlms(1);
		for(;k4==0;);  n=4; }
	else  if(k5==0)
    {	dlms(1);
		for(;k5==0;);n=5;}
  return(n); 
}


void   main()
{
    uint	m=4  ;
    uint	p  ;
	uchar   key;
	power_up();
	clear();
	display_begin();dlms(200);
  	while (1)
 	  {key=test_key();
			dlms(1);
   		switch  (key)
   		{	case  1:  clear();  display_stop(); dlms(20);      power_down();     	   break;
    		case  2:  clear();  zhanshu( m);dlms(20);  display_play(); dlms(20);      play(m);     m++;     break; 
    		case  3:  clear();  zhanshu( m);dlms(20); display_fc();   dlms(20); ++m;  play(m);	   m++;     break;
 			case  4:  clear();  p=m-2; zhanshu( p); dlms(20); display_ret();  dlms(20); m=m-2; play(m);     m++;     break;
 			case  5:  clear();  display_on();   dlms(20);        power_up();           break;
    		default:   break;  
		}

      }
}

⌨️ 快捷键说明

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