專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機(jī)模擬公交車門控實驗

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年08月04日   【字體:
      這是去年沒事的時候做的一個作品,模擬公交車門控制的,當(dāng)時做這個作品的時候是去坐公交的時候,看見有人要下車按了按鍵沒有反應(yīng),然后大聲地在車廂上喊司機(jī)下車,司機(jī)顧著開車也沒有怎么回答,自己感覺如果公交車上有一個液晶屏可以提示多好呀,回來后在沒事之余就做了這套東西出來,在錄制這個視頻的時候自己有點感冒,呵呵,講解的一塌糊涂。

       具體的功能是達(dá)到乘客與司機(jī)通過按鍵溝通,控制乘客上下車的功能。也沒有什么難的,這里面用到的單片機(jī)與單片機(jī)的通信,以及液晶顯示,基本上就這樣。 程序首發(fā)于:單片機(jī)論壇 http://www.torrancerestoration.com/bbs/ ,大家有什么意見或者建議請給我留言如果有新的版本我會不定期發(fā)布的.
       下面是司機(jī)部分程序代碼:
    mian.c
/*
項目名稱:公交智能門控制系統(tǒng)
功能    :請見程序功能說明文件 
備注    :此為主機(jī)程序,控制的是司機(jī)操作部分
作者    :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;   //關(guān)閉串口通信中斷程序
    utrFlag++; //判斷司機(jī)按鍵情況。
    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);//寫數(shù)據(jù)到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[]={
"  車門已經(jīng)關(guān)閉  "//
"  請注意車速    "//
"  請勿疲勞駕駛  "
"  祝您工作順利  "//
};
uchar code pic4[] = {
"  您好!有乘客需"
"開車門,謝謝!當(dāng)"
"要下車,到站時請"
"前您還未開門!  "
};
uchar code pic5[] = {
"  您好!車門已經(jīng)"
"安全下車,當(dāng)前車"
"打開,請等候乘客"
"門處理打開狀態(tài)!"
};
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)//設(shè)置為并口
 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();//有乘客已經(jīng)按鈴
     delay_50ms(1000);
     display_HZ1();
    }
   }
  }
  if((SerFlag == 2)||(SerFlag == 3))
  if(SerFlag == 1)
   {
    display_HZ1();//司機(jī)已經(jīng)收到您的信息
    LEDY = 0;
    LEDG = 1; 
   }
  if(SerFlag == 2)
   {
    display_HZ2();//司機(jī)已經(jīng)收到您的信息
    LEDY = 1; //黃燈滅
    LEDG = 0; //綠燈亮
    Relay = 0;//打開車門 
   }
  if(SerFlag == 3)
   {
    display_HZ();//
    keyFlag = 0;
    LEDY = 1;//關(guān)閉黃燈
    LEDG = 1;//關(guān)閉綠燈
    Relay = 1;//關(guān)閉車門
   // 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[] = {
"司機(jī)已經(jīng)收到您的"
"會在列車到站時為"
"下車信息,我們將"
"您打開車門!    "
};
uchar code pic5[] = {
"尊敬的乘客,您已"
"您的行里準(zhǔn)備下車"
"經(jīng)到站了,請帶好"
"歡迎再次乘坐本車"
};
uchar code pic[] = {
"已經(jīng)有乘客按鈴了"
"請不要重復(fù)按鈴  "
"請您耐心等候    "
"祝您乘車愉快    "
};
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)//設(shè)置為并口
 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);//寫數(shù)據(jù)到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
關(guān)閉窗口

相關(guān)文章