[文档下载] 单片机模拟公交车门控实验

[复制链接]
1393|9
 楼主| Rooney30 发表于 2016-3-27 20:44 | 显示全部楼层 |阅读模式
模拟公交车门控制的,当时做这个作品的时候是去坐公交的时候,看见有人要下车按了按键没有反应,然后大声地在车厢上喊司机下车,司机顾着开车也没有怎么回答,自己感觉如果公交车上有一个液晶屏可以提示多好呀,回来后在没事之余就做了这套东西出来
具体的功能是达到乘客与司机通过按键沟通,控制乘客上下车的功能。也没有什么难的,这里面用到的单片机与单片机的通信,以及液晶显示,基本上就这样。
  1. #include <reg52.h>
  2. #include "lcd12864.h"
  3. #include "delay.h"
  4. unsigned char utrFlag=0,Flag=0,count;
  5. sbit Buzzer = P3^4;
  6. sbit key = P3^3;
  7. uchar keyflag;
  8. unsigned char SerFlag[1];
  9. void init(void)
  10. {
  11. init_12864HZ();
  12. display_HZ();
  13. EA = 1;
  14. ES = 1;
  15. REN = 1;
  16. SM1 = 1;
  17. SM0 = 0;
  18. TMOD = 0x20;
  19. TH1 = 0xfd;
  20. TL1 = 0xfd;
  21. TR1 = 1;
  22. }
  23. void main()
  24. {
  25. char i;
  26. init();
  27. while(1)
  28. {     
  29.   if(Flag == 1)
  30.   {
  31.    Flag = 0;
  32.    ES = 0;
  33.    SBUF = 0x01;
  34.    while(!TI);
  35.    TI = 0;   
  36.    ES = 1;
  37.    for(i=0;i<3;i++)
  38.    {
  39.    Buzzer = 0;
  40.    delay_50ms(500);
  41.    Buzzer = 1;
  42.    delay_50ms(500);
  43.    }
  44.    write_12864com(0x01);
  45.    display_HZ1();
  46.   }
  47.   
  48.   if(key==0)
  49.   {
  50.    delay_50ms(1);
  51.    while(key == 0)
  52.    {
  53.     while(!key);
  54.     ES = 0;   //关闭串口通信中断程序
  55.     utrFlag++; //判断司机按键情况。
  56.     if(utrFlag==1)
  57.     {
  58.      init_12864HZ();
  59.     // write_12864com(0x01);
  60.      display_HZ2();
  61.      delay_50us(10);
  62.       SBUF = 0x02;
  63.      while(!TI);
  64.      TI = 0;
  65.     }
  66.     if(utrFlag==2)
  67.     {
  68.      utrFlag = 0;
  69.      display_HZ();
  70.      delay_50ms(1);
  71.      SBUF = 0x03;
  72.      while(!TI);
  73.      TI = 0;
  74.      ES = 1;
  75.     }
  76.    }
  77.   }
  78. }
  79. }


 楼主| Rooney30 发表于 2016-3-27 20:44 | 显示全部楼层
  1. void UTR() interrupt 4
  2. {
  3. RI = 0;
  4. SerFlag[0]=SBUF;
  5. if(SerFlag[0]==0x01)
  6. {
  7.   Flag++;
  8. }
  9. }

lcd.h文件
  1. #ifndef _LCD12864_H_
  2. #define _LCD12864_H_
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit rs = P2^0;
  6. sbit rw = P2^1;
  7. sbit e = P2^2;
  8. sbit psb = P2^3;
  9. sbit res = P2^5;
  10. void write_12864com(uchar com);//写命令到lcd12864
  11. void write_12864dat(uchar dat);//写数据到lcd12864
  12. void init_12864HZ(void);//液晶显示汉字初始化
  13. void init_12864PIC(void);//液晶显示汉字初始化
  14. void display_HZ(void);
  15. void display_HZ1(void);
  16. void display_HZ2(void);
  17. void display_FH(void);
  18. void display_PIC(void);
  19. #endif
  20. lcd.c文件
  21. #include <reg52.h>
  22. #include "delay.h"
  23. #include "lcd12864.h"
  24. uchar code pic2[]={
  25. "  车门已经关闭  "//
  26. "  请注意车速    "//
  27. "  请勿疲劳驾驶  "
  28. "  祝您工作顺利  "//
  29. };
  30. uchar code pic4[] = {
  31. "  您好!有乘客需"
  32. "开车门,谢谢!当"
  33. "要下车,到站时请"
  34. "前您还未开门!  "
  35. };
  36. uchar code pic5[] = {
  37. "  您好!车门已经"
  38. "安全下车,当前车"
  39. "打开,请等候乘客"
  40. "门处理打开状态!"
  41. };
  42. unsigned char code pic3[]=
  43. {
  44. 0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  45. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,
  46. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
  47. 0x00,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  48. 0x00,0x00,0x18,0x00,0x03,0x00,0x07,0xEC,0xC0,0x00,0x00,
  49. 0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x37,0x80,0x03,0x00,
  50. 0x00,0xEC,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,
  51. 0x18,0x3F,0xC0,0x03,0x00,0x0F,0x6E,0x00,0x00,0x00,0x00,
  52. 0x00,0x00,0x00,0x06,0x00,0x18,0x79,0x80,0x03,0x00,0x0F,
  53. 0x6B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x18,
  54. 0x7F,0x00,0x1F,0xF4,0x01,0xE9,0xE0,0x00,0x00,0x00,0x00,
  55. 0x00,0x00,0xC6,0xE0,0x18,0xFF,0x80,0x1F,0xFC,0x00,0xFB,
  56. 0x30,0x00,0x00,0x00,0x00,0x00,0x01,0xC6,0x70,0x1B,0x1E,
  57. 0xC0,0x03,0x38,0x01,0xB3,0x00,0x00,0x00,0x00,0x00,0x00,
  58. 0x03,0x86,0x38,0xDB,0xFF,0xE0,0x03,0x70,0x07,0x9E,0x7F,
  59. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x26,0x18,0xDB,0x8C,0x70,
  60. 0x7F,0xFF,0x87,0x27,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
  61. 0x3E,0x01,0xFF,0xFF,0xB8,0x7F,0xFF,0x80,0x3F,0xC0,0x00,
  62. 0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x0C,0x18,0x07,
  63. 0x80,0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
  64. 0x00,0x00,0xFF,0xE0,0x0F,0x00,0x00,0xFB,0x1F,0xF8,0x00,
  65. 0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xFF,0xE0,0x1F,0x30,
  66. 0x01,0xCF,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00,0x03,0xFF,
  67. 0xFF,0x0C,0x00,0x3B,0x36,0x03,0x07,0xFF,0xFF,0xE0,0x00,
  68. 0x00,0x00,0x00,0x0F,0xFF,0xFF,0xCC,0x00,0x73,0x76,0x03,
  69. 0x3F,0xFF,0xFF,0xF7,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
  70. 0xFC,0x00,0x63,0xE6,0x00,0x3F,0xFF,0xFF,0xDC,0x80,0x00,
  71. 0x00,0x00,0x7F,0xFF,0xFF,0xFC,0x00,0x03,0xFE,0x00,0x7F,
  72. 0xFF,0xFF,0xAF,0x60,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
  73. 0x00,0x03,0xFE,0x00,0xFF,0xFF,0xFF,0xF5,0xC0,0x00,0x00,
  74. 0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,
  75. 0xFF,0x23,0x20,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00,
  76. 0x00,0x00,0x03,0xFF,0x8F,0xE3,0xEC,0xA0,0x00,0x00,0x03,
  77. 0xFF,0x1F,0xC7,0xFF,0x00,0x00,0x00,0x03,0xFF,0x07,0xC1,
  78. 0x92,0xC0,0x00,0x00,0x07,0xFE,0x0F,0x83,0xFF,0x80,0x00,
  79. 0x00,0x07,0xFF,0x03,0xC0,0xE9,0xC0,0x00,0x00,0x0F,0xFE,
  80. 0x07,0x81,0xFF,0x80,0x00,0x00,0x07,0xFE,0x03,0x80,0xED,
  81. 0xE0,0x00,0x00,0x0F,0xFC,0x07,0x01,0xFF,0xC0,0x00,0x00,
  82. 0x0F,0xFE,0x1B,0xB0,0xDD,0xE0,0x00,0x00,0x1F,0xFC,0x37,
  83. 0x61,0xFF,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0xE0,
  84. 0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF,0xC0,0x00,0x00,0x0F,
  85. 0xFE,0x1B,0xB0,0xFF,0xF0,0x00,0x00,0x1F,0xFC,0x37,0x61,
  86. 0xFF,0xE0,0x00,0x00,0x1F,0xFE,0x1B,0xB0,0xFF,0xF0,0x00,
  87. 0x00,0x3F,0xFC,0x37,0x61,0xFF,0xE0,0x00,0x00,0x1F,0xFF,
  88. 0x03,0xC0,0xFF,0xF0,0x00,0x00,0x3F,0xFE,0x07,0x81,0xFF,
  89. 0xE0,0x00,0x00,0x1F,0xFF,0x07,0xC1,0xFF,0xF0,0x00,0x00,
  90. 0x3F,0xFE,0x0F,0x83,0xFF,0xE0,0x00,0x00,0x1F,0xFF,0x8C,
  91. 0x63,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0x1F,0xC7,0xFF,0xE0,
  92. 0x00,0x00,0x1F,0xDF,0xFC,0x7F,0xF7,0xF0,0x00,0x00,0x3F,
  93. 0xFF,0xF0,0x7F,0xFF,0xE0,0x00,0x00,0x1F,0x07,0xFF,0xFF,
  94. 0xD1,0xF0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF,0xE0,0x00,
  95. 0x00,0x1E,0x03,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x3F,0xC0,
  96. 0x00,0x00,0x07,0xE0,0x00,0x00,0x1E,0x03,0xFE,0xFF,0xC0,
  97. 0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,
  98. 0x0C,0x01,0xF8,0x3F,0x80,0xE0,0x00,0x00,0x1F,0xE0,0x00,
  99. 0x00,0x1F,0xC0,0x00,0x00,0x0E,0x03,0xF0,0x1F,0xC0,0xE0,
  100. 0x00,0x00,0x1F,0xF0,0x0F,0xC0,0x1F,0xC0,0x00,0x00,0x1E,
  101. 0x03,0xF0,0x1F,0x80,0xE0,0x00,0x00,0x1F,0xFC,0x0B,0x40,
  102. 0x7F,0xC0,0x00,0x00,0x7F,0x1F,0xF0,0x1F,0xC3,0xE0,0x00,
  103. 0x00,0xFF,0xFF,0x0B,0x41,0xFF,0xC0,0x00,0x00,0xFF,0xFF,
  104. 0xF0,0x1F,0xF7,0xF0,0x00,0x01,0xFF,0xFF,0xC0,0x0F,0xFF,
  105. 0xF0,0x00,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0xFC,0x00,0x03,
  106. 0xFF,0xFF,0xF8,0x7F,0xFF,0xF8,0x00,0x03,0xFE,0x7F,0xFE,
  107. 0xFF,0xFF,0xFE,0x00,0x07,0xFC,0xFF,0xFF,0xFF,0xFF,0xFC,
  108. 0x00,0x07,0xFC,0x1F,0xFF,0xFF,0xF8,0xFE,0x00,0x0F,0xF8,
  109. 0x3F,0xFF,0xFF,0xF1,0xFC,0x00,0x0F,0xF8,0x07,0xFF,0xFF,
  110. 0xE0,0xFF,0x00,0x1F,0xF0,0x0F,0xFF,0xFF,0xC0,0xFE,0x00,
  111. 0x0F,0xF8,0x00,0xFF,0xFF,0x00,0x7F,0x80,0x1F,0xF0,0x01,
  112. 0xFF,0xFE,0x00,0xFF,0x00,0x1F,0xF0,0x00,0x02,0x00,0x00,
  113. 0x7F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x1F,
  114. 0xF0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xE0,0x00,0x00,
  115. 0x00,0x00,0x7F,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x3F,
  116. 0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x3F,0xE0,
  117. 0x00,0x00,0x00,0x00,0x1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,
  118. 0x00,0x3F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x1F,0xE0,
  119. 0x7F,0xC0,0x00,0x00,0x00,0x00,0x3F,0x00,0x7F,0xE0,0x01,
  120. 0xC0,0xE0,0x00,0x1F,0xE0,0xFF,0xC0,0x00,0x70,0xE0,0x00,
  121. 0x3F,0x00,0x7F,0xE0,0x03,0xF3,0xF0,0x00,0x1F,0xE0,0xFF,
  122. 0xC0,0x00,0xF9,0xF0,0x00,0x3F,0x00,0x7F,0xE0,0x07,0xFF,
  123. 0xF8,0x00,0x1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00,0x3F,
  124. 0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x1F,0xE0,0xFF,0xC0,
  125. 0x01,0xFF,0xF8,0x00,0x3F,0x00,0x7C,0xE0,0x07,0xFF,0xF8,
  126. 0x00,0x1B,0xE0,0xF9,0xC0,0x01,0xFF,0xF8,0x00,0x37,0x00,
  127. 0x38,0xF0,0x03,0xFF,0xF0,0x00,0x39,0xE0,0xF1,0xE0,0x00,
  128. 0xFF,0xF0,0x00,0x73,0x00,0x30,0x70,0x01,0xFF,0xE0,0x00,
  129. 0x30,0xC0,0x60,0xE0,0x00,0x7F,0xE0,0x00,0x61,0x00,0x00,
  130. 0x78,0x00,0xFF,0xC0,0x00,0x30,0x00,0x00,0xF0,0x00,0x3F,
  131. 0xC0,0x00,0x60,0x00,0x00,0x38,0x00,0x7F,0x80,0x00,0x60,
  132. 0x00,0x00,0x70,0x00,0x1F,0x80,0x00,0xC0,0x00,0x00,0x1C,
  133. 0x00,0x3F,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,0x0F,0x00,
  134. 0x01,0x80,0x00,0x00,0x0E,0x00,0x1E,0x00,0x00,0x80,0x00,
  135. 0x00,0x1C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x07,0x00,
  136. 0x0C,0x00,0x01,0x80,0x00,0x00,0x0E,0x00,0x06,0x00,0x03,
  137. 0x00 };
  138. void write_12864com(uchar com)
  139. {
  140. rw = 0;
  141. rs = 0;
  142. delay_50us(1);
  143. P0 = com;
  144. e = 1;
  145. delay_50us(10);
  146. e = 0;
  147. delay_50us(2);
  148. }
 楼主| Rooney30 发表于 2016-3-27 20:45 | 显示全部楼层
  1. void write_12864dat(uchar dat)
  2. {
  3. rw = 0;
  4. rs = 1;
  5. delay_50us(1);
  6. P0 = dat;
  7. e = 1;
  8. delay_50us(10);
  9. e = 0;
  10. delay_50us(2);
  11. }
  12. void init_12864HZ(void)
  13. {
  14. delay_50ms(1);
  15. psb = 1;
  16. delay_50us(20);
  17. res = 0;
  18. delay_50us(20);
  19. res = 1;
  20. delay_50us(2);
  21. write_12864com(0x30);
  22. delay_50ms(2);
  23. write_12864com(0x30);
  24. delay_50us(1);
  25. write_12864com(0x08);
  26. delay_50us(2);
  27. write_12864com(0x10);
  28. delay_50us(2);
  29. write_12864com(0x0c);
  30. delay_50us(2);
  31. write_12864com(0x01);
  32. delay_50ms(1);
  33. write_12864com(0x06);
  34. delay_50us(4);
  35. }
  36. void init_12864PIC(void)
  37. {
  38. delay_50ms(1);
  39. psb = 1;
  40. delay_50us(10);
  41. res = 0;
  42. delay_50us(10);
  43. res = 1;
  44. delay_50us(20);
  45. write_12864com(0x36); //Extended Function Set RE=1: extended instruction
  46. delay_50ms(4);
  47. write_12864com(0x36);
  48. delay_50ms(2);
  49. write_12864com(0x3e);//EXFUNCTION(DL=8BITS,RE=1,G=1)//设置为并口
  50. delay_50ms(4);
  51. write_12864com(0x01);//CLEAR SCREEN清屏
  52. delay_50ms(4);
  53. }
  54. void display_HZ(void)
  55. {
  56. uchar i;
  57. write_12864com(0x80);
  58. delay_50us(1);
  59. for(i=0;i<64;i++)
  60. {
  61.   write_12864dat(pic2[i]);
  62.   delay_50us(1);
  63. }
  64. }
  65. void display_HZ1(void)
  66. {
  67. uchar i;
  68. write_12864com(0x80);
  69. delay_50us(1);
  70. for(i=0;i<64;i++)
  71. {
  72.   write_12864dat(pic4[i]);
  73.   delay_50us(1);
  74. }
  75. }
  76. void display_HZ2(void)
  77. {
  78. uchar i;
  79. write_12864com(0x80);
  80. delay_50us(1);
  81. for(i=0;i<64;i++)
  82. {
  83.   write_12864dat(pic5[i]);
  84.   delay_50us(1);
  85. }
  86. }
  87. void display_FH(void)
  88. {
  89. uchar i,a=0x10;
  90. write_12864com(0x80);
  91. delay_50us(1);
  92. for(i=0;i<16;i++)
  93. {
  94.      write_12864dat(a);
  95.    delay_50us(1);
  96.    a++;
  97. }
  98. }
  99. void display_PIC(void)
  100. {
  101. int i,j;
  102. uint a;
  103. for(i=0;i<32;i++)
  104. {
  105.   write_12864com((0x80+i));
  106.   write_12864com(0x80);
  107.   for(j=0;j<16;j++)
  108.    {
  109.    write_12864dat(pic3[a]);
  110.    a++;
  111.    }
  112. }
  113. for(i=0;i<32;i++)
  114. {
  115.   write_12864com((0x80+i));
  116.   write_12864com(0x88);
  117.   for(j=0;j<16;j++)
  118.    {
  119.    write_12864dat(pic3[a]);
  120.    a++;
  121.    }
  122. }
  123. }
 楼主| Rooney30 发表于 2016-3-27 20:46 | 显示全部楼层
delay.h文件
  1. #ifndef _DELAY_H_
  2. #define _DELAY_H_
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. void delay_50us(uint t);
  6. void delay_50ms(uint t);
  7. void delays(uint j);
  8. #endif
  9. delay.c文件
  10. #include "delay.h"
  11. void delay_50us(uint t)
  12. {
  13. uchar j;
  14. for(;t>0;t--);
  15. for(j=19;j>0;j--);
  16. }
  17. void delay_50ms(uint t)
  18. {
  19. uint j;
  20. for(;t>0;t--);
  21. for(j=6245;j>0;j--);
  22. }
  23. void delays(uint j)
  24. {
  25. while(j--);
  26. }
   


乘客接收部分的程序:
main.c文件
  1. #include <reg52.h>
  2. #include "lcd12864.h"
  3. #include "initfile.h"
  4. #include "delay.h"
  5. uchar keyFlag,serBuff,SerFlag;
  6. void main()
  7. {
  8. uchar i;
  9. init_all();
  10. while(1)
  11. {
  12.   if(key == 0)
  13.   {
  14.    delay_50us(1);
  15.    if(key == 0)
  16.    {
  17.     while(!key);
  18.     if(keyFlag == 0)   
  19.     SBUF = 0x01;
  20.     keyFlag ++;
  21.     if(keyFlag>1)
  22.     {
  23.      display_HZ3();//有乘客已经按铃
  24.      delay_50ms(1000);
  25.      display_HZ1();
  26.     }
  27.    }
  28.   }
  29.   if((SerFlag == 2)||(SerFlag == 3))
  30.   if(SerFlag == 1)
  31.    {
  32.     display_HZ1();//司机已经收到您的信息
  33.     LEDY = 0;
  34.     LEDG = 1;
  35.    }
  36.   if(SerFlag == 2)
  37.    {
  38.     display_HZ2();//司机已经收到您的信息
  39.     LEDY = 1; //黄灯灭
  40.     LEDG = 0; //绿灯亮
  41.     Relay = 0;//打开车门
  42.    }
  43.   if(SerFlag == 3)
  44.    {
  45.     display_HZ();//
  46.     keyFlag = 0;
  47.     LEDY = 1;//关闭黄灯
  48.     LEDG = 1;//关闭绿灯
  49.     Relay = 1;//关闭车门
  50.    // SerFlag = 0;
  51.    }
  52. }
  53. }


 楼主| Rooney30 发表于 2016-3-27 20:47 | 显示全部楼层
  1. void SER() interrupt 4
  2. {
  3. RI = 0;
  4. serBuff = SBUF;
  5. if(serBuff == 0x01)
  6. {
  7.   SerFlag = 1;
  8. }
  9. if(serBuff == 0x02)
  10. {
  11.   SerFlag = 2;
  12. }
  13. if(serBuff == 0x03)
  14. {
  15.     SerFlag = 3;
  16. }
  17. }
  18. delay.c文件
  19. #include "delay.h"
  20. void delay_50us(uint t)
  21. {
  22. uchar j;
  23. for(;t>0;t--);
  24. for(j=19;j>0;j--);
  25. }
  26. void delay_50ms(uint t)
  27. {
  28. uint j;
  29. for(;t>0;t--);
  30. for(j=6245;j>0;j--);
  31. }
  32. void delays(uint j)
  33. {
  34. while(j--);
  35. }
  36. lcd.c文件
  37. #include <reg52.h>
  38. #include "delay.h"
  39. #include "lcd12864.h"
  40. uchar code pic2[]={
  41. "欢迎乘坐本次列车"//
  42. "请您在快到站时提"
  43. "如果您需要下车,"//
  44. "前按铃,谢谢!  "//
  45. };
  46. uchar code pic4[] = {
  47. "司机已经收到您的"
  48. "会在列车到站时为"
  49. "下车信息,我们将"
  50. "您打开车门!    "
  51. };
  52. uchar code pic5[] = {
  53. "尊敬的乘客,您已"
  54. "您的行里准备下车"
  55. "经到站了,请带好"
  56. "欢迎再次乘坐本车"
  57. };
  58. uchar code pic[] = {
  59. "已经有乘客按铃了"
  60. "请不要重复按铃  "
  61. "请您耐心等候    "
  62. "祝您乘车愉快    "
  63. };
  64. unsigned char code pic3[]=
  65. {
  66. 0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,
  68. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
  69. 0x00,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70. 0x00,0x00,0x18,0x00,0x03,0x00,0x07,0xEC,0xC0,0x00,0x00,
  71. 0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x37,0x80,0x03,0x00,
  72. 0x00,0xEC,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,
  73. 0x18,0x3F,0xC0,0x03,0x00,0x0F,0x6E,0x00,0x00,0x00,0x00,
  74. 0x00,0x00,0x00,0x06,0x00,0x18,0x79,0x80,0x03,0x00,0x0F,
  75. 0x6B,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x18,
  76. 0x7F,0x00,0x1F,0xF4,0x01,0xE9,0xE0,0x00,0x00,0x00,0x00,
  77. 0x00,0x00,0xC6,0xE0,0x18,0xFF,0x80,0x1F,0xFC,0x00,0xFB,
  78. 0x30,0x00,0x00,0x00,0x00,0x00,0x01,0xC6,0x70,0x1B,0x1E,
  79. 0xC0,0x03,0x38,0x01,0xB3,0x00,0x00,0x00,0x00,0x00,0x00,
  80. 0x03,0x86,0x38,0xDB,0xFF,0xE0,0x03,0x70,0x07,0x9E,0x7F,
  81. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x26,0x18,0xDB,0x8C,0x70,
  82. 0x7F,0xFF,0x87,0x27,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
  83. 0x3E,0x01,0xFF,0xFF,0xB8,0x7F,0xFF,0x80,0x3F,0xC0,0x00,
  84. 0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x0C,0x18,0x07,
  85. 0x80,0x00,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
  86. 0x00,0x00,0xFF,0xE0,0x0F,0x00,0x00,0xFB,0x1F,0xF8,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0xFF,0xE0,0x1F,0x30,
  88. 0x01,0xCF,0xFF,0xFF,0x09,0x00,0x00,0x00,0x00,0x03,0xFF,
  89. 0xFF,0x0C,0x00,0x3B,0x36,0x03,0x07,0xFF,0xFF,0xE0,0x00,
  90. 0x00,0x00,0x00,0x0F,0xFF,0xFF,0xCC,0x00,0x73,0x76,0x03,
  91. 0x3F,0xFF,0xFF,0xF7,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,
  92. 0xFC,0x00,0x63,0xE6,0x00,0x3F,0xFF,0xFF,0xDC,0x80,0x00,
  93. 0x00,0x00,0x7F,0xFF,0xFF,0xFC,0x00,0x03,0xFE,0x00,0x7F,
  94. 0xFF,0xFF,0xAF,0x60,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,
  95. 0x00,0x03,0xFE,0x00,0xFF,0xFF,0xFF,0xF5,0xC0,0x00,0x00,
  96. 0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,
  97. 0xFF,0x23,0x20,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00,
  98. 0x00,0x00,0x03,0xFF,0x8F,0xE3,0xEC,0xA0,0x00,0x00,0x03,
  99. 0xFF,0x1F,0xC7,0xFF,0x00,0x00,0x00,0x03,0xFF,0x07,0xC1,
  100. 0x92,0xC0,0x00,0x00,0x07,0xFE,0x0F,0x83,0xFF,0x80,0x00,
  101. 0x00,0x07,0xFF,0x03,0xC0,0xE9,0xC0,0x00,0x00,0x0F,0xFE,
  102. 0x07,0x81,0xFF,0x80,0x00,0x00,0x07,0xFE,0x03,0x80,0xED,
  103. 0xE0,0x00,0x00,0x0F,0xFC,0x07,0x01,0xFF,0xC0,0x00,0x00,
  104. 0x0F,0xFE,0x1B,0xB0,0xDD,0xE0,0x00,0x00,0x1F,0xFC,0x37,
  105. 0x61,0xFF,0xC0,0x00,0x00,0x0F,0xFE,0x1B,0xB0,0xFF,0xE0,
  106. 0x00,0x00,0x1F,0xFC,0x37,0x61,0xFF,0xC0,0x00,0x00,0x0F,
  107. 0xFE,0x1B,0xB0,0xFF,0xF0,0x00,0x00,0x1F,0xFC,0x37,0x61,
  108. 0xFF,0xE0,0x00,0x00,0x1F,0xFE,0x1B,0xB0,0xFF,0xF0,0x00,
  109. 0x00,0x3F,0xFC,0x37,0x61,0xFF,0xE0,0x00,0x00,0x1F,0xFF,
  110. 0x03,0xC0,0xFF,0xF0,0x00,0x00,0x3F,0xFE,0x07,0x81,0xFF,
  111. 0xE0,0x00,0x00,0x1F,0xFF,0x07,0xC1,0xFF,0xF0,0x00,0x00,
  112. 0x3F,0xFE,0x0F,0x83,0xFF,0xE0,0x00,0x00,0x1F,0xFF,0x8C,
  113. 0x63,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0x1F,0xC7,0xFF,0xE0,
  114. 0x00,0x00,0x1F,0xDF,0xFC,0x7F,0xF7,0xF0,0x00,0x00,0x3F,
  115. 0xFF,0xF0,0x7F,0xFF,0xE0,0x00,0x00,0x1F,0x07,0xFF,0xFF,
  116. 0xD1,0xF0,0x00,0x00,0x3F,0xFF,0xE0,0x3F,0xFF,0xE0,0x00,
  117. 0x00,0x1E,0x03,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x3F,0xC0,
  118. 0x00,0x00,0x07,0xE0,0x00,0x00,0x1E,0x03,0xFE,0xFF,0xC0,
  119. 0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,
  120. 0x0C,0x01,0xF8,0x3F,0x80,0xE0,0x00,0x00,0x1F,0xE0,0x00,
  121. 0x00,0x1F,0xC0,0x00,0x00,0x0E,0x03,0xF0,0x1F,0xC0,0xE0,
  122. 0x00,0x00,0x1F,0xF0,0x0F,0xC0,0x1F,0xC0,0x00,0x00,0x1E,
  123. 0x03,0xF0,0x1F,0x80,0xE0,0x00,0x00,0x1F,0xFC,0x0B,0x40,
  124. 0x7F,0xC0,0x00,0x00,0x7F,0x1F,0xF0,0x1F,0xC3,0xE0,0x00,
  125. 0x00,0xFF,0xFF,0x0B,0x41,0xFF,0xC0,0x00,0x00,0xFF,0xFF,
  126. 0xF0,0x1F,0xF7,0xF0,0x00,0x01,0xFF,0xFF,0xC0,0x0F,0xFF,
  127. 0xF0,0x00,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0xFC,0x00,0x03,
  128. 0xFF,0xFF,0xF8,0x7F,0xFF,0xF8,0x00,0x03,0xFE,0x7F,0xFE,
  129. 0xFF,0xFF,0xFE,0x00,0x07,0xFC,0xFF,0xFF,0xFF,0xFF,0xFC,
  130. 0x00,0x07,0xFC,0x1F,0xFF,0xFF,0xF8,0xFE,0x00,0x0F,0xF8,
  131. 0x3F,0xFF,0xFF,0xF1,0xFC,0x00,0x0F,0xF8,0x07,0xFF,0xFF,
  132. 0xE0,0xFF,0x00,0x1F,0xF0,0x0F,0xFF,0xFF,0xC0,0xFE,0x00,
  133. 0x0F,0xF8,0x00,0xFF,0xFF,0x00,0x7F,0x80,0x1F,0xF0,0x01,
  134. 0xFF,0xFE,0x00,0xFF,0x00,0x1F,0xF0,0x00,0x02,0x00,0x00,
  135. 0x7F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x1F,
  136. 0xF0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xE0,0x00,0x00,
  137. 0x00,0x00,0x7F,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x3F,
  138. 0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x7F,0x00,0x3F,0xE0,
  139. 0x00,0x00,0x00,0x00,0x1F,0xE0,0x7F,0xC0,0x00,0x00,0x00,
  140. 0x00,0x3F,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x1F,0xE0,
  141. 0x7F,0xC0,0x00,0x00,0x00,0x00,0x3F,0x00,0x7F,0xE0,0x01,
  142. 0xC0,0xE0,0x00,0x1F,0xE0,0xFF,0xC0,0x00,0x70,0xE0,0x00,
  143. 0x3F,0x00,0x7F,0xE0,0x03,0xF3,0xF0,0x00,0x1F,0xE0,0xFF,
  144. 0xC0,0x00,0xF9,0xF0,0x00,0x3F,0x00,0x7F,0xE0,0x07,0xFF,
  145. 0xF8,0x00,0x1F,0xE0,0xFF,0xC0,0x01,0xFF,0xF8,0x00,0x3F,
  146. 0x00,0x7F,0xE0,0x07,0xFF,0xF8,0x00,0x1F,0xE0,0xFF,0xC0,
  147. 0x01,0xFF,0xF8,0x00,0x3F,0x00,0x7C,0xE0,0x07,0xFF,0xF8,
  148. 0x00,0x1B,0xE0,0xF9,0xC0,0x01,0xFF,0xF8,0x00,0x37,0x00,
  149. 0x38,0xF0,0x03,0xFF,0xF0,0x00,0x39,0xE0,0xF1,0xE0,0x00,
  150. 0xFF,0xF0,0x00,0x73,0x00,0x30,0x70,0x01,0xFF,0xE0,0x00,
  151. 0x30,0xC0,0x60,0xE0,0x00,0x7F,0xE0,0x00,0x61,0x00,0x00,
  152. 0x78,0x00,0xFF,0xC0,0x00,0x30,0x00,0x00,0xF0,0x00,0x3F,
  153. 0xC0,0x00,0x60,0x00,0x00,0x38,0x00,0x7F,0x80,0x00,0x60,
  154. 0x00,0x00,0x70,0x00,0x1F,0x80,0x00,0xC0,0x00,0x00,0x1C,
  155. 0x00,0x3F,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,0x0F,0x00,
  156. 0x01,0x80,0x00,0x00,0x0E,0x00,0x1E,0x00,0x00,0x80,0x00,
  157. 0x00,0x1C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x07,0x00,
  158. 0x0C,0x00,0x01,0x80,0x00,0x00,0x0E,0x00,0x06,0x00,0x03,
  159. 0x00 };
  160. void write_12864com(uchar com)
  161. {
  162. rw = 0;
  163. rs = 0;
  164. delay_50us(1);
  165. P0 = com;
  166. e = 1;
  167. delay_50us(10);
  168. e = 0;
  169. delay_50us(2);
  170. }
  171. void write_12864dat(uchar dat)
  172. {
  173. rw = 0;
  174. rs = 1;
  175. delay_50us(1);
  176. P0 = dat;
  177. e = 1;
  178. delay_50us(10);
  179. e = 0;
  180. delay_50us(2);
  181. }
 楼主| Rooney30 发表于 2016-3-27 20:47 | 显示全部楼层
  1. void init_12864HZ(void)
  2. {
  3. delay_50ms(1);
  4. psb = 1;
  5. delay_50us(20);
  6. res = 0;
  7. delay_50us(20);
  8. res = 1;
  9. delay_50us(2);
  10. write_12864com(0x30);
  11. delay_50ms(2);
  12. write_12864com(0x30);
  13. delay_50us(1);
  14. write_12864com(0x08);
  15. delay_50us(2);
  16. write_12864com(0x10);
  17. delay_50us(2);
  18. write_12864com(0x0c);
  19. delay_50us(2);
  20. write_12864com(0x01);
  21. delay_50ms(1);
  22. write_12864com(0x06);
  23. delay_50us(4);
  24. }
  25. void init_12864PIC(void)
  26. {
  27. delay_50ms(1);
  28. psb = 1;
  29. delay_50us(10);
  30. res = 0;
  31. delay_50us(10);
  32. res = 1;
  33. delay_50us(20);
  34. write_12864com(0x36); //Extended Function Set RE=1: extended instruction
  35. delay_50ms(4);
  36. write_12864com(0x36);
  37. delay_50ms(2);
  38. write_12864com(0x3e);//EXFUNCTION(DL=8BITS,RE=1,G=1)//设置为并口
  39. delay_50ms(4);
  40. write_12864com(0x01);//CLEAR SCREEN清屏
  41. delay_50ms(4);
  42. }
  43. void display_HZ(void)
  44. {
  45. uchar i;
  46. write_12864com(0x80);
  47. delay_50us(1);
  48. for(i=0;i<64;i++)
  49. {
  50.   write_12864dat(pic2[i]);
  51.   delay_50us(1);
  52. }
  53. }
  54. void display_HZ1(void)
  55. {
  56. uchar i;
  57. write_12864com(0x80);
  58. delay_50us(1);
  59. for(i=0;i<64;i++)
  60. {
  61.   write_12864dat(pic4[i]);
  62.   delay_50us(1);
  63. }
  64. }
  65. void display_HZ2(void)
  66. {
  67. uchar i;
  68. write_12864com(0x80);
  69. delay_50us(1);
  70. for(i=0;i<64;i++)
  71. {
  72.   write_12864dat(pic5[i]);
  73.   delay_50us(1);
  74. }
  75. }
  76. void display_HZ3(void)
  77. {
  78. uchar i;
  79. write_12864com(0x80);
  80. delay_50us(1);
  81. for(i=0;i<64;i++)
  82. {
  83.   write_12864dat(pic[i]);
  84.   delay_50us(1);
  85. }
  86. }
  87. void display_FH(void)
  88. {
  89. uchar i,a=0x10;
  90. write_12864com(0x80);
  91. delay_50us(1);
  92. for(i=0;i<16;i++)
  93. {
  94.      write_12864dat(a);
  95.    delay_50us(1);
  96.    a++;
  97. }
  98. }
  99. void display_PIC(void)
  100. {
  101. int i,j;
  102. uint a;
  103. for(i=0;i<32;i++)
  104. {
  105.   write_12864com((0x80+i));
  106.   write_12864com(0x80);
  107.   for(j=0;j<16;j++)
  108.    {
  109.    write_12864dat(pic3[a]);
  110.    a++;
  111.    }
  112. }
  113. for(i=0;i<32;i++)
  114. {
  115.   write_12864com((0x80+i));
  116.   write_12864com(0x88);
  117.   for(j=0;j<16;j++)
  118.    {
  119.    write_12864dat(pic3[a]);
  120.    a++;
  121.    }
  122. }
  123. }
  124. initfile.c
  125. #include <reg52.h>
  126. #include "initfile.h"
  127. #include "lcd12864.h"
  128. void init_all()
  129. {
  130. EA = 1;
  131. ES = 1;
  132. TMOD = 0X20;
  133. TH1 = 0XFD;
  134. TL1 = 0XFD;
  135. TR1 = 1;
  136. REN = 1;
  137. SM1 = 1;
  138. SM0 = 0;
  139. init_12864HZ();//提示下车乘客提前按铃
  140. display_HZ();
  141. }
  142. lcd.h
  143. #ifndef _LCD12864_H_
  144. #define _LCD12864_H_
  145. #define uint unsigned int
  146. #define uchar unsigned char
  147. sbit rs = P2^0;
  148. sbit rw = P2^1;
  149. sbit e = P2^2;
  150. sbit psb = P2^3;
  151. sbit res = P2^5;
  152. void write_12864com(uchar com);//写命令到lcd12864
  153. void write_12864dat(uchar dat);//写数据到lcd12864
  154. void init_12864HZ(void);//液晶显示汉字初始化
  155. void init_12864PIC(void);//液晶显示汉字初始化
  156. void display_HZ(void);
  157. void display_HZ1(void);
  158. void display_HZ2(void);
  159. void display_FH(void);
  160. void display_PIC(void);
  161. #endif

  162. delay.h
  163. #ifndef _DELAY_H_
  164. #define _DELAY_H_
  165. #define uint unsigned int
  166. #define uchar unsigned char
  167. void delay_50us(uint t);
  168. void delay_50ms(uint t);
  169. void delays(uint j);
  170. #endif

  171. initfile.h

  172. #ifndef _INITFILE_H
  173. #define _INITFILE_H
  174. #define uint unsigned int
  175. #define uchar unsigned char
  176. sbit key = P3^3;
  177. sbit buzzer = P3^4;
  178. sbit LEDY = P1^0;
  179. sbit LEDG = P1^1;
  180. sbit Relay = P3^5;
  181. void init_all();
  182. #endif
奥卡姆剃刀 发表于 2016-3-28 10:12 | 显示全部楼层
学习一下,顶一个!
user12have 发表于 2016-3-28 13:45 | 显示全部楼层
slotg 发表于 2016-3-28 13:50 | 显示全部楼层
感谢楼主分享。
bitofnoone 发表于 2016-3-28 20:45 | 显示全部楼层
这个很有创意啊,用到公交车上是不是换个电机就可以了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

117

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部