专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机模拟公交车门控实验

作者:佚名   来源:本站原创   点击数:  更新时间:2013年08月04日   【字体:
      这是去年没事的时候做的一个作品,模拟公交车门控制的,当时做这个作品的时候是去坐公交的时候,看见有人要下车按了按键没有反应,然后大声地在车厢上喊司机下车,司机顾着开车也没有怎么回答,自己感觉如果公交车上有一个液晶屏可以提示多好呀,回来后在没事之余就做了这套东西出来,在录制这个视频的时候自己有点感冒,呵呵,讲解的一塌糊涂。

       具体的功能是达到乘客与司机通过按键沟通,控制乘客上下车的功能。也没有什么难的,这里面用到的单片机与单片机的通信,以及液晶显示,基本上就这样。 程序首发于:单片机论坛 http://www.51hei.com/bbs/ ,大家有什么意见或者建议请给我留言如果有新的版本我会不定期发布的.
       下面是司机部分程序代码:
    mian.c
/*
项目名称:公交智能门控制系统
功能    :请见程序功能说明文件 
备注    :此为主机程序,控制的是司机操作部分
作者    :Michael
日期    :2012-12-29
*/
#include <reg52.h>
#include "lcd12864.h"
#include "delay.h"
unsigned char utrFlag=0,Flag=0,count;
sbit Buzzer = P3^4;
sbit key = P3^3;
uchar keyflag;
unsigned char SerFlag[1];
void init(void)
{
 init_12864HZ();
 display_HZ();
 EA = 1;
 ES = 1;
 REN = 1;
 SM1 = 1;
 SM0 = 0;
 TMOD = 0x20;
 TH1 = 0xfd;
 TL1 = 0xfd;
 TR1 = 1;
}
void main()
{
 char i;
 init();
 while(1)
 {     
  if(Flag == 1)
  {
   Flag = 0;
   ES = 0;
   SBUF = 0x01;
   while(!TI);
   TI = 0;   
   ES = 1;
   for(i=0;i<3;i++)
   {
   Buzzer = 0;
   delay_50ms(500);
   Buzzer = 1;
   delay_50ms(500);
   }
   write_12864com(0x01);
   display_HZ1();
  }
  
  if(key==0)
  {
   delay_50ms(1);
   while(key == 0)
   {
    while(!key);
    ES = 0;   //关闭串口通信中断程序
    utrFlag++; //判断司机按键情况。
    if(utrFlag==1)
    {
     init_12864HZ();
    // write_12864com(0x01);
     display_HZ2();
     delay_50us(10);
      SBUF = 0x02;
     while(!TI);
     TI = 0;
    }
    if(utrFlag==2)
    {
     utrFlag = 0;
     display_HZ();
     delay_50ms(1);
     SBUF = 0x03;
     while(!TI);
     TI = 0;
     ES = 1;
    }
   }
  } 
 }
}
void UTR() interrupt 4
{
 RI = 0;
 SerFlag[0]=SBUF;
 if(SerFlag[0]==0x01)
 {
  Flag++;
 }
}
lcd.h文件
#ifndef _LCD12864_H_
#define _LCD12864_H_
#define uint unsigned int
#define uchar unsigned char
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
sbit psb = P2^3;
sbit res = P2^5;
void write_12864com(uchar com);//写命令到lcd12864
void write_12864dat(uchar dat);//写数据到lcd12864
void init_12864HZ(void);//液晶显示汉字初始化
void init_12864PIC(void);//液晶显示汉字初始化
void display_HZ(void);
void display_HZ1(void);
void display_HZ2(void);
void display_FH(void);
void display_PIC(void);
#endif
lcd.c文件
#include <reg52.h>
#include "delay.h"
#include "lcd12864.h"
uchar code pic2[]={
"  车门已经关闭  "//
"  请注意车速    "//
"  请勿疲劳驾驶  "
"  祝您工作顺利  "//
};
uchar code pic4[] = {
"  您好!有乘客需"
"开车门,谢谢!当"
"要下车,到站时请"
"前您还未开门!  "
};
uchar code pic5[] = {
"  您好!车门已经"
"安全下车,当前车"
"打开,请等候乘客"
"门处理打开状态!"
};
unsigned char code pic3[]=
{
0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
0x00,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x00,0x03,0x00,0x07,0xEC,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x37,0x80,0x03,0x00,
0x00,0xEC,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,
0x18,0x3F,0xC0,0x03,0x00,0x0F,0x6E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x00,0x18,0x79,0x80,0x03,0x00,0x0F,
0x6B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x18,
0x7F,0x00,0x1F,0xF4,0x01,0xE9,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0xC6,0xE0,0x18,0xFF,0x80,0x1F,0xFC,0x00,0xFB,
0x30,0x00,0x00,0x00,0x00,0x00,0x01,0xC6,0x70,0x1B,0x1E,
0xC0,0x03,0x38,0x01,0xB3,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x86,0x38,0xDB,0xFF,0xE0,0x03,0x70,0x07,0x9E,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x26,0x18,0xDB,0x8C,0x70,
0x7F,0xFF,0x87,0x27,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
0x3E,0x01,0xFF,0xFF,0xB8,0x7F,0xFF,0x80,0x3F,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x0C,0x18,0x07,
0x80,0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
0x00,0x00,0xFF,0xE0,0x0F,0x00,0x00,0xFB,0x1F,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xFF,0xE0,0x1F,0x30,
0x01,0xCF,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00,0x03,0xFF,
0xFF,0x0C,0x00,0x3B,0x36,0x03,0x07,0xFF,0xFF,0xE0,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xCC,0x00,0x73,0x76,0x03,
0x3F,0xFF,0xFF,0xF7,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
0xFC,0x00,0x63,0xE6,0x00,0x3F,0xFF,0xFF,0xDC,0x80,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xFC,0x00,0x03,0xFE,0x00,0x7F,
0xFF,0xFF,0xAF,0x60,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
0x00,0x03,0xFE,0x00,0xFF,0xFF,0xFF,0xF5,0xC0,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,
0xFF,0x23,0x20,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00,
0x00,0x00,0x03,0xFF,0x8F,0xE3,0xEC,0xA0,0x00,0x00,0x03,
0xFF,0x1F,0xC7,0xFF,0x00,0x00,0x00,0x03,0xFF,0x07,0xC1,
0x92,0xC0,0x00,0x00,0x07,0xFE,0x0F,0x83,0xFF,0x80,0x00,
0x00,0x07,0xFF,0x03,0xC0,0xE9,0xC0,0x00,0x00,0x0F,0xFE,
0x07,0x81,0xFF,0x80,0x00,0x00,0x07,0xFE,0x03,0x80,0xED,
0xE0,0x00,0x00,0x0F,0xFC,0x07,0x01,0xFF,0xC0,0x00,0x00,
0x0F,0xFE,0x1B,0xB0,0xDD,0xE0,0x00,0x00,0x1F,0xFC,0x37,
0x61,0xFF,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0xE0,
0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF,0xC0,0x00,0x00,0x0F,
0xFE,0x1B,0xB0,0xFF,0xF0,0x00,0x00,0x1F,0xFC,0x37,0x61,
0xFF,0xE0,0x00,0x00,0x1F,0xFE,0x1B,0xB0,0xFF,0xF0,0x00,
0x00,0x3F,0xFC,0x37,0x61,0xFF,0xE0,0x00,0x00,0x1F,0xFF,
0x03,0xC0,0xFF,0xF0,0x00,0x00,0x3F,0xFE,0x07,0x81,0xFF,
0xE0,0x00,0x00,0x1F,0xFF,0x07,0xC1,0xFF,0xF0,0x00,0x00,
0x3F,0xFE,0x0F,0x83,0xFF,0xE0,0x00,0x00,0x1F,0xFF,0x8C,
0x63,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0x1F,0xC7,0xFF,0xE0,
0x00,0x00,0x1F,0xDF,0xFC,0x7F,0xF7,0xF0,0x00,0x00,0x3F,
0xFF,0xF0,0x7F,0xFF,0xE0,0x00,0x00,0x1F,0x07,0xFF,0xFF,
0xD1,0xF0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF,0xE0,0x00,
0x00,0x1E,0x03,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x3F,0xC0,
0x00,0x00,0x07,0xE0,0x00,0x00,0x1E,0x03,0xFE,0xFF,0xC0,
0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0C,0x01,0xF8,0x3F,0x80,0xE0,0x00,0x00,0x1F,0xE0,0x00,
0x00,0x1F,0xC0,0x00,0x00,0x0E,0x03,0xF0,0x1F,0xC0,0xE0,
0x00,0x00,0x1F,0xF0,0x0F,0xC0,0x1F,0xC0,0x00,0x00,0x1E,
0x03,0xF0,0x1F,0x80,0xE0,0x00,0x00,0x1F,0xFC,0x0B,0x40,
0x7F,0xC0,0x00,0x00,0x7F,0x1F,0xF0,0x1F,0xC3,0xE0,0x00,
0x00,0xFF,0xFF,0x0B,0x41,0xFF,0xC0,0x00,0x00,0xFF,0xFF,
0xF0,0x1F,0xF7,0xF0,0x00,0x01,0xFF,0xFF,0xC0,0x0F,0xFF,
0xF0,0x00,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0xFC,0x00,0x03,
0xFF,0xFF,0xF8,0x7F,0xFF,0xF8,0x00,0x03,0xFE,0x7F,0xFE,
0xFF,0xFF,0xFE,0x00,0x07,0xFC,0xFF,0xFF,0xFF,0xFF,0xFC,
0x00,0x07,0xFC,0x1F,0xFF,0xFF,0xF8,0xFE,0x00,0x0F,0xF8,
0x3F,0xFF,0xFF,0xF1,0xFC,0x00,0x0F,0xF8,0x07,0xFF,0xFF,
0xE0,0xFF,0x00,0x1F,0xF0,0x0F,0xFF,0xFF,0xC0,0xFE,0x00,
0x0F,0xF8,0x00,0xFF,0xFF,0x00,0x7F,0x80,0x1F,0xF0,0x01,
0xFF,0xFE,0x00,0xFF,0x00,0x1F,0xF0,0x00,0x02,0x00,0x00,
0x7F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x1F,
0xF0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xE0,0x00,0x00,
0x00,0x00,0x7F,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x3F,
0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x3F,0xE0,
0x00,0x00,0x00,0x00,0x1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x3F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x1F,0xE0,
0x7F,0xC0,0x00,0x00,0x00,0x00,0x3F,0x00,0x7F,0xE0,0x01,
0xC0,0xE0,0x00,0x1F,0xE0,0xFF,0xC0,0x00,0x70,0xE0,0x00,
0x3F,0x00,0x7F,0xE0,0x03,0xF3,0xF0,0x00,0x1F,0xE0,0xFF,
0xC0,0x00,0xF9,0xF0,0x00,0x3F,0x00,0x7F,0xE0,0x07,0xFF,
0xF8,0x00,0x1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00,0x3F,
0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x1F,0xE0,0xFF,0xC0,
0x01,0xFF,0xF8,0x00,0x3F,0x00,0x7C,0xE0,0x07,0xFF,0xF8,
0x00,0x1B,0xE0,0xF9,0xC0,0x01,0xFF,0xF8,0x00,0x37,0x00,
0x38,0xF0,0x03,0xFF,0xF0,0x00,0x39,0xE0,0xF1,0xE0,0x00,
0xFF,0xF0,0x00,0x73,0x00,0x30,0x70,0x01,0xFF,0xE0,0x00,
0x30,0xC0,0x60,0xE0,0x00,0x7F,0xE0,0x00,0x61,0x00,0x00,
0x78,0x00,0xFF,0xC0,0x00,0x30,0x00,0x00,0xF0,0x00,0x3F,
0xC0,0x00,0x60,0x00,0x00,0x38,0x00,0x7F,0x80,0x00,0x60,
0x00,0x00,0x70,0x00,0x1F,0x80,0x00,0xC0,0x00,0x00,0x1C,
0x00,0x3F,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,0x0F,0x00,
0x01,0x80,0x00,0x00,0x0E,0x00,0x1E,0x00,0x00,0x80,0x00,
0x00,0x1C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x07,0x00,
0x0C,0x00,0x01,0x80,0x00,0x00,0x0E,0x00,0x06,0x00,0x03,
0x00 };
void write_12864com(uchar com)
{
 rw = 0;
 rs = 0;
 delay_50us(1);
 P0 = com;
 e = 1;
 delay_50us(10);
 e = 0;
 delay_50us(2);
}
void write_12864dat(uchar dat)
{
 rw = 0;
 rs = 1;
 delay_50us(1);
 P0 = dat;
 e = 1;
 delay_50us(10);
 e = 0;
 delay_50us(2);
}
void init_12864HZ(void)
{
 delay_50ms(1);
 psb = 1;
 delay_50us(20);
 res = 0;
 delay_50us(20);
 res = 1;
 delay_50us(2);
 write_12864com(0x30);
 delay_50ms(2);
 write_12864com(0x30);
 delay_50us(1);
 write_12864com(0x08);
 delay_50us(2);
 write_12864com(0x10);
 delay_50us(2);
 write_12864com(0x0c);
 delay_50us(2);
 write_12864com(0x01);
 delay_50ms(1);
 write_12864com(0x06);
 delay_50us(4);
}
void init_12864PIC(void)
{
 delay_50ms(1);
 psb = 1;
 delay_50us(10);
 res = 0;
 delay_50us(10);
 res = 1;
 delay_50us(20);
 write_12864com(0x36); //Extended Function Set RE=1: extended instruction
 delay_50ms(4);
 write_12864com(0x36);
 delay_50ms(2);
 write_12864com(0x3e);//EXFUNCTION(DL=8BITS,RE=1,G=1)//设置为并口
 delay_50ms(4);
 write_12864com(0x01);//CLEAR SCREEN清屏
 delay_50ms(4);
}
void display_HZ(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic2[i]);
  delay_50us(1);
 }
}
void display_HZ1(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic4[i]);
  delay_50us(1);
 }

void display_HZ2(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic5[i]);
  delay_50us(1);
 } 
}
void display_FH(void)
{
 uchar i,a=0x10;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<16;i++)
 {
     write_12864dat(a);
   delay_50us(1);
   a++;
 }
}
void display_PIC(void)
{
 int i,j;
 uint a;
 for(i=0;i<32;i++)
 {
  write_12864com((0x80+i));
  write_12864com(0x80);
  for(j=0;j<16;j++)
   {
   write_12864dat(pic3[a]);
   a++;
   }
 }
 for(i=0;i<32;i++)
 {
  write_12864com((0x80+i));
  write_12864com(0x88);
  for(j=0;j<16;j++)
   {
   write_12864dat(pic3[a]);
   a++;
   }
 }
}

delay.h文件
#ifndef _DELAY_H_
#define _DELAY_H_
#define uint unsigned int
#define uchar unsigned char
void delay_50us(uint t);
void delay_50ms(uint t);
void delays(uint j);
#endif
delay.c文件
#include "delay.h"
void delay_50us(uint t)
{
 uchar j;
 for(;t>0;t--);
 for(j=19;j>0;j--);
}
void delay_50ms(uint t)
{
 uint j;
 for(;t>0;t--);
 for(j=6245;j>0;j--);
}
void delays(uint j)
{
 while(j--);
}
          


乘客接收部分的程序:
main.c文件
/*
*项目名称:公交车门控电路
*日期    :2013年1月11日
*作者    :Michael
项目说明 :具体的功能请看程序说明
*/
#include <reg52.h>
#include "lcd12864.h"
#include "initfile.h"
#include "delay.h"
uchar keyFlag,serBuff,SerFlag;
void main()
{
 uchar i;
 init_all();
 while(1)
 {
  if(key == 0)
  {
   delay_50us(1);
   if(key == 0)
   {
    while(!key);
    if(keyFlag == 0)   
    SBUF = 0x01;
    keyFlag ++;
    if(keyFlag>1)
    {
     display_HZ3();//有乘客已经按铃
     delay_50ms(1000);
     display_HZ1();
    }
   }
  }
  if((SerFlag == 2)||(SerFlag == 3))
  if(SerFlag == 1)
   {
    display_HZ1();//司机已经收到您的信息
    LEDY = 0;
    LEDG = 1; 
   }
  if(SerFlag == 2)
   {
    display_HZ2();//司机已经收到您的信息
    LEDY = 1; //黄灯灭
    LEDG = 0; //绿灯亮
    Relay = 0;//打开车门 
   }
  if(SerFlag == 3)
   {
    display_HZ();//
    keyFlag = 0;
    LEDY = 1;//关闭黄灯
    LEDG = 1;//关闭绿灯
    Relay = 1;//关闭车门
   // SerFlag = 0; 
   }
 }
}
void SER() interrupt 4
{
 RI = 0;
 serBuff = SBUF;
 if(serBuff == 0x01)
 {
  SerFlag = 1;
 }
 if(serBuff == 0x02)
 {
  SerFlag = 2;
 }
 if(serBuff == 0x03)
 {
    SerFlag = 3;
 }
}
delay.c文件
#include "delay.h"
void delay_50us(uint t)
{
 uchar j;
 for(;t>0;t--);
 for(j=19;j>0;j--);
}
void delay_50ms(uint t)
{
 uint j;
 for(;t>0;t--);
 for(j=6245;j>0;j--);
}
void delays(uint j)
{
 while(j--);
}
lcd.c文件
#include <reg52.h>
#include "delay.h"
#include "lcd12864.h"
uchar code pic2[]={
"欢迎乘坐本次列车"//
"请您在快到站时提"
"如果您需要下车,"//
"前按铃,谢谢!  "//
};
uchar code pic4[] = {
"司机已经收到您的"
"会在列车到站时为"
"下车信息,我们将"
"您打开车门!    "
};
uchar code pic5[] = {
"尊敬的乘客,您已"
"您的行里准备下车"
"经到站了,请带好"
"欢迎再次乘坐本车"
};
uchar code pic[] = {
"已经有乘客按铃了"
"请不要重复按铃  "
"请您耐心等候    "
"祝您乘车愉快    "
};
unsigned char code pic3[]=
{
0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
0x00,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x00,0x03,0x00,0x07,0xEC,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x37,0x80,0x03,0x00,
0x00,0xEC,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,
0x18,0x3F,0xC0,0x03,0x00,0x0F,0x6E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x00,0x18,0x79,0x80,0x03,0x00,0x0F,
0x6B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x18,
0x7F,0x00,0x1F,0xF4,0x01,0xE9,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0xC6,0xE0,0x18,0xFF,0x80,0x1F,0xFC,0x00,0xFB,
0x30,0x00,0x00,0x00,0x00,0x00,0x01,0xC6,0x70,0x1B,0x1E,
0xC0,0x03,0x38,0x01,0xB3,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0x86,0x38,0xDB,0xFF,0xE0,0x03,0x70,0x07,0x9E,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x26,0x18,0xDB,0x8C,0x70,
0x7F,0xFF,0x87,0x27,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
0x3E,0x01,0xFF,0xFF,0xB8,0x7F,0xFF,0x80,0x3F,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x0C,0x18,0x07,
0x80,0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
0x00,0x00,0xFF,0xE0,0x0F,0x00,0x00,0xFB,0x1F,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xFF,0xE0,0x1F,0x30,
0x01,0xCF,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00,0x03,0xFF,
0xFF,0x0C,0x00,0x3B,0x36,0x03,0x07,0xFF,0xFF,0xE0,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xCC,0x00,0x73,0x76,0x03,
0x3F,0xFF,0xFF,0xF7,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
0xFC,0x00,0x63,0xE6,0x00,0x3F,0xFF,0xFF,0xDC,0x80,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xFC,0x00,0x03,0xFE,0x00,0x7F,
0xFF,0xFF,0xAF,0x60,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
0x00,0x03,0xFE,0x00,0xFF,0xFF,0xFF,0xF5,0xC0,0x00,0x00,
0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,
0xFF,0x23,0x20,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00,
0x00,0x00,0x03,0xFF,0x8F,0xE3,0xEC,0xA0,0x00,0x00,0x03,
0xFF,0x1F,0xC7,0xFF,0x00,0x00,0x00,0x03,0xFF,0x07,0xC1,
0x92,0xC0,0x00,0x00,0x07,0xFE,0x0F,0x83,0xFF,0x80,0x00,
0x00,0x07,0xFF,0x03,0xC0,0xE9,0xC0,0x00,0x00,0x0F,0xFE,
0x07,0x81,0xFF,0x80,0x00,0x00,0x07,0xFE,0x03,0x80,0xED,
0xE0,0x00,0x00,0x0F,0xFC,0x07,0x01,0xFF,0xC0,0x00,0x00,
0x0F,0xFE,0x1B,0xB0,0xDD,0xE0,0x00,0x00,0x1F,0xFC,0x37,
0x61,0xFF,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0xE0,
0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF,0xC0,0x00,0x00,0x0F,
0xFE,0x1B,0xB0,0xFF,0xF0,0x00,0x00,0x1F,0xFC,0x37,0x61,
0xFF,0xE0,0x00,0x00,0x1F,0xFE,0x1B,0xB0,0xFF,0xF0,0x00,
0x00,0x3F,0xFC,0x37,0x61,0xFF,0xE0,0x00,0x00,0x1F,0xFF,
0x03,0xC0,0xFF,0xF0,0x00,0x00,0x3F,0xFE,0x07,0x81,0xFF,
0xE0,0x00,0x00,0x1F,0xFF,0x07,0xC1,0xFF,0xF0,0x00,0x00,
0x3F,0xFE,0x0F,0x83,0xFF,0xE0,0x00,0x00,0x1F,0xFF,0x8C,
0x63,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0x1F,0xC7,0xFF,0xE0,
0x00,0x00,0x1F,0xDF,0xFC,0x7F,0xF7,0xF0,0x00,0x00,0x3F,
0xFF,0xF0,0x7F,0xFF,0xE0,0x00,0x00,0x1F,0x07,0xFF,0xFF,
0xD1,0xF0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF,0xE0,0x00,
0x00,0x1E,0x03,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x3F,0xC0,
0x00,0x00,0x07,0xE0,0x00,0x00,0x1E,0x03,0xFE,0xFF,0xC0,
0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0C,0x01,0xF8,0x3F,0x80,0xE0,0x00,0x00,0x1F,0xE0,0x00,
0x00,0x1F,0xC0,0x00,0x00,0x0E,0x03,0xF0,0x1F,0xC0,0xE0,
0x00,0x00,0x1F,0xF0,0x0F,0xC0,0x1F,0xC0,0x00,0x00,0x1E,
0x03,0xF0,0x1F,0x80,0xE0,0x00,0x00,0x1F,0xFC,0x0B,0x40,
0x7F,0xC0,0x00,0x00,0x7F,0x1F,0xF0,0x1F,0xC3,0xE0,0x00,
0x00,0xFF,0xFF,0x0B,0x41,0xFF,0xC0,0x00,0x00,0xFF,0xFF,
0xF0,0x1F,0xF7,0xF0,0x00,0x01,0xFF,0xFF,0xC0,0x0F,0xFF,
0xF0,0x00,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0xFC,0x00,0x03,
0xFF,0xFF,0xF8,0x7F,0xFF,0xF8,0x00,0x03,0xFE,0x7F,0xFE,
0xFF,0xFF,0xFE,0x00,0x07,0xFC,0xFF,0xFF,0xFF,0xFF,0xFC,
0x00,0x07,0xFC,0x1F,0xFF,0xFF,0xF8,0xFE,0x00,0x0F,0xF8,
0x3F,0xFF,0xFF,0xF1,0xFC,0x00,0x0F,0xF8,0x07,0xFF,0xFF,
0xE0,0xFF,0x00,0x1F,0xF0,0x0F,0xFF,0xFF,0xC0,0xFE,0x00,
0x0F,0xF8,0x00,0xFF,0xFF,0x00,0x7F,0x80,0x1F,0xF0,0x01,
0xFF,0xFE,0x00,0xFF,0x00,0x1F,0xF0,0x00,0x02,0x00,0x00,
0x7F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x1F,
0xF0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xE0,0x00,0x00,
0x00,0x00,0x7F,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x3F,
0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x3F,0xE0,
0x00,0x00,0x00,0x00,0x1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x3F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x1F,0xE0,
0x7F,0xC0,0x00,0x00,0x00,0x00,0x3F,0x00,0x7F,0xE0,0x01,
0xC0,0xE0,0x00,0x1F,0xE0,0xFF,0xC0,0x00,0x70,0xE0,0x00,
0x3F,0x00,0x7F,0xE0,0x03,0xF3,0xF0,0x00,0x1F,0xE0,0xFF,
0xC0,0x00,0xF9,0xF0,0x00,0x3F,0x00,0x7F,0xE0,0x07,0xFF,
0xF8,0x00,0x1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00,0x3F,
0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x1F,0xE0,0xFF,0xC0,
0x01,0xFF,0xF8,0x00,0x3F,0x00,0x7C,0xE0,0x07,0xFF,0xF8,
0x00,0x1B,0xE0,0xF9,0xC0,0x01,0xFF,0xF8,0x00,0x37,0x00,
0x38,0xF0,0x03,0xFF,0xF0,0x00,0x39,0xE0,0xF1,0xE0,0x00,
0xFF,0xF0,0x00,0x73,0x00,0x30,0x70,0x01,0xFF,0xE0,0x00,
0x30,0xC0,0x60,0xE0,0x00,0x7F,0xE0,0x00,0x61,0x00,0x00,
0x78,0x00,0xFF,0xC0,0x00,0x30,0x00,0x00,0xF0,0x00,0x3F,
0xC0,0x00,0x60,0x00,0x00,0x38,0x00,0x7F,0x80,0x00,0x60,
0x00,0x00,0x70,0x00,0x1F,0x80,0x00,0xC0,0x00,0x00,0x1C,
0x00,0x3F,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,0x0F,0x00,
0x01,0x80,0x00,0x00,0x0E,0x00,0x1E,0x00,0x00,0x80,0x00,
0x00,0x1C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x07,0x00,
0x0C,0x00,0x01,0x80,0x00,0x00,0x0E,0x00,0x06,0x00,0x03,
0x00 };
void write_12864com(uchar com)
{
 rw = 0;
 rs = 0;
 delay_50us(1);
 P0 = com;
 e = 1;
 delay_50us(10);
 e = 0;
 delay_50us(2);
}
void write_12864dat(uchar dat)
{
 rw = 0;
 rs = 1;
 delay_50us(1);
 P0 = dat;
 e = 1;
 delay_50us(10);
 e = 0;
 delay_50us(2);
}
void init_12864HZ(void)
{
 delay_50ms(1);
 psb = 1;
 delay_50us(20);
 res = 0;
 delay_50us(20);
 res = 1;
 delay_50us(2);
 write_12864com(0x30);
 delay_50ms(2);
 write_12864com(0x30);
 delay_50us(1);
 write_12864com(0x08);
 delay_50us(2);
 write_12864com(0x10);
 delay_50us(2);
 write_12864com(0x0c);
 delay_50us(2);
 write_12864com(0x01);
 delay_50ms(1);
 write_12864com(0x06);
 delay_50us(4);
}
void init_12864PIC(void)
{
 delay_50ms(1);
 psb = 1;
 delay_50us(10);
 res = 0;
 delay_50us(10);
 res = 1;
 delay_50us(20);
 write_12864com(0x36); //Extended Function Set RE=1: extended instruction
 delay_50ms(4);
 write_12864com(0x36);
 delay_50ms(2);
 write_12864com(0x3e);//EXFUNCTION(DL=8BITS,RE=1,G=1)//设置为并口
 delay_50ms(4);
 write_12864com(0x01);//CLEAR SCREEN清屏
 delay_50ms(4);
}
void display_HZ(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic2[i]);
  delay_50us(1);
 }
}
void display_HZ1(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic4[i]);
  delay_50us(1);
 }

void display_HZ2(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic5[i]);
  delay_50us(1);
 } 
}
void display_HZ3(void)
{
 uchar i;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<64;i++)
 {
  write_12864dat(pic[i]);
  delay_50us(1);
 }
}
void display_FH(void)
{
 uchar i,a=0x10;
 write_12864com(0x80);
 delay_50us(1);
 for(i=0;i<16;i++)
 {
     write_12864dat(a);
   delay_50us(1);
   a++;
 }
}
void display_PIC(void)
{
 int i,j;
 uint a;
 for(i=0;i<32;i++)
 {
  write_12864com((0x80+i));
  write_12864com(0x80);
  for(j=0;j<16;j++)
   {
   write_12864dat(pic3[a]);
   a++;
   }
 }
 for(i=0;i<32;i++)
 {
  write_12864com((0x80+i));
  write_12864com(0x88);
  for(j=0;j<16;j++)
   {
   write_12864dat(pic3[a]);
   a++;
   }
 }
}
initfile.c
#include <reg52.h>
#include "initfile.h"
#include "lcd12864.h"
void init_all()
{
 EA = 1;
 ES = 1;
 TMOD = 0X20; 
 TH1 = 0XFD;
 TL1 = 0XFD;
 TR1 = 1;
 REN = 1;
 SM1 = 1;
 SM0 = 0;
 init_12864HZ();//提示下车乘客提前按铃
 display_HZ();
}
lcd.h
#ifndef _LCD12864_H_
#define _LCD12864_H_
#define uint unsigned int
#define uchar unsigned char
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
sbit psb = P2^3;
sbit res = P2^5;
void write_12864com(uchar com);//写命令到lcd12864
void write_12864dat(uchar dat);//写数据到lcd12864
void init_12864HZ(void);//液晶显示汉字初始化
void init_12864PIC(void);//液晶显示汉字初始化
void display_HZ(void);
void display_HZ1(void);
void display_HZ2(void);
void display_FH(void);
void display_PIC(void);
#endif

delay.h
#ifndef _DELAY_H_
#define _DELAY_H_
#define uint unsigned int
#define uchar unsigned char
void delay_50us(uint t);
void delay_50ms(uint t);
void delays(uint j);
#endif

initfile.h

#ifndef _INITFILE_H
#define _INITFILE_H
#define uint unsigned int
#define uchar unsigned char
sbit key = P3^3;
sbit buzzer = P3^4;
sbit LEDY = P1^0;
sbit LEDG = P1^1;
sbit Relay = P3^5;
void init_all();
#endif
关闭窗口

相关文章