📄 报站器.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 + -