找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5901|回复: 5
打印 上一主题 下一主题
收起左侧

单片机国旗升降系统程序及仿真原理图资料

  [复制链接]
跳转到指定楼层
楼主
国旗升降系统原理图如下


单片机源程序如下:
  1. //此程序只供参考//
  2. //升国旗中 还有万年历显示 现在没有加进去//
  3. //下次我把他加进去


  4. #include<reg52.h>
  5. #define uchar unsigned char        //宏定义
  6. #define uint unsigned int
  7. #define lcdbus P1
  8. sbit RS = P3^0;
  9. sbit RW = P3^1;
  10. sbit E = P3^2;
  11. //st7920字模取模方式为逐行式 顺向去摸
  12. sbit  key1=P2^4;  //升国旗
  13. sbit  key2=P2^5;  //升半旗
  14. sbit  key3=P2^6;  //降国旗
  15. sbit   zdbz1=P0^2;
  16. sbit   zdbz2=P0^1;
  17. sbit   zdbz3=P0^0;
  18. uchar flag1,flag2,flag3,flag4,aa,bb,cc;    //flag4为正反转标志
  19. uchar code table[]={0xf1,0xf2,0xf4,0xf8};
  20. uchar tt,tt0,tt1;//定时器时间设置标志
  21. uchar sj,sj1,sj2,sj3,gd1,gd13,gd12,gd11,gd2,gd21,gd22,gd23;//显示设置变量
  22. uchar xx;//电机脉冲顺序变量
  23. uint xh; //升半旗时候在最高点停留时间
  24. /*自定义液晶字库中没有的字模*/
  25. uchar code zdy[][32]={     
  26. {0x00,0x00,0x07,0x20,0x3C,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0x7F,0xFE,0x04,0x20,
  27. 0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x00,0x00},/*"升",0*/

  28. {0x00,0x80,0x78,0xF8,0x49,0x10,0x52,0xA0,0x50,0x40,0x60,0xB0,0x53,0x4E,0x48,0x40,
  29. 0x4B,0xF8,0x68,0x40,0x52,0x40,0x43,0xFC,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},/*"降",1*/

  30. {0x00,0x7C,0x3F,0x80,0x02,0x20,0x04,0x20,0x08,0x40,0x1F,0x80,0x03,0x20,0x0C,0x10,
  31. 0x3F,0xF8,0x10,0x8C,0x04,0xA0,0x08,0x90,0x10,0x88,0x20,0x84,0x42,0x84,0x01,0x00},/*"系",2*/

  32. {0x10,0x40,0x10,0x20,0x23,0xFE,0x20,0x40,0x44,0x40,0xF8,0x88,0x09,0x04,0x13,0xFE,
  33. 0x20,0x94,0x7C,0x90,0x00,0x90,0x00,0x90,0x1D,0x12,0xE1,0x12,0x02,0x0E,0x04,0x00},/*"统",3*/

  34. };
  35.     //下面代码横是列地址 竖是行地址   16*64  拆开16*32+16*32*/
  36. uchar code bmp1[]={
  37. 0x02,0x08,0x00,0x08,0x00,0x00,0x04,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38. 0x00,0xD0,0x06,0x04,0x08,0x03,0x02,0x00,0x38,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
  39. 0x41,0x00,0x09,0x43,0x00,0x04,0xA1,0x80,0x41,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  40. 0x42,0x00,0x29,0x00,0x00,0x14,0x80,0x00,0x8E,0x00,0xE7,0x00,0x00,0x00,0x00,0x00,
  41. 0x32,0x88,0x29,0x30,0x04,0x14,0x98,0x00,0x70,0x00,0x1C,0x80,0x00,0x00,0x00,0x00,
  42. 0x0C,0x00,0x16,0x48,0x00,0x0B,0x24,0x00,0x20,0x00,0x08,0x60,0x00,0x00,0x00,0x00,
  43. 0x00,0x20,0x4D,0x80,0x00,0x26,0xC0,0x00,0x40,0x00,0x08,0x10,0x00,0x00,0x00,0x00,
  44. 0x40,0x20,0x00,0x10,0x00,0x00,0x08,0x00,0x4C,0x00,0x08,0x10,0x00,0x00,0x00,0x00,
  45. 0x04,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x08,0x20,0x00,0x00,0x00,0x00,
  46. 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x09,0xC0,0x00,0x00,0x00,0x00,
  47. 0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x40,0x00,0x00,0x00,0x00,
  48. 0x25,0x3F,0xC3,0xFE,0x3F,0xE0,0x00,0x01,0x10,0x04,0x00,0x40,0x00,0x00,0x00,0x00,
  49. 0xA4,0x08,0x40,0x20,0x00,0x41,0x80,0x01,0x10,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
  50. 0xA4,0xC8,0x47,0xFF,0x00,0x83,0xC0,0x01,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,
  51. 0x59,0x28,0x40,0x20,0x03,0x03,0xC0,0x02,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,
  52. 0x36,0x08,0x81,0xFC,0x02,0x03,0xC0,0x02,0xF0,0x40,0x10,0x20,0x00,0x00,0x00,0x00,
  53. 0x00,0x44,0x81,0x24,0x02,0x01,0x80,0x05,0x0C,0x04,0x10,0x20,0x00,0x00,0x00,0x00,
  54. 0x00,0x05,0x01,0xFC,0x02,0x01,0x80,0x05,0x42,0x00,0x14,0x40,0x00,0x00,0x00,0x00,
  55. 0x00,0x02,0x01,0x24,0x02,0x00,0x00,0x05,0x51,0x00,0x1C,0x40,0x00,0x00,0x00,0x00,
  56. 0x00,0x05,0x03,0xFE,0x02,0x01,0x80,0x04,0x91,0x03,0xC0,0x40,0x00,0x00,0x00,0x00,
  57. 0x00,0x18,0xC0,0x20,0x02,0x01,0x80,0x04,0x61,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
  58. 0x02,0x60,0x37,0xFF,0x0E,0x00,0x00,0x04,0x1E,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
  59. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
  60. 0x40,0x7F,0xF4,0x0A,0x3B,0xF3,0xFE,0x01,0x01,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,
  61. 0x38,0x05,0x02,0x0A,0x2A,0x90,0x04,0x00,0xC7,0xF8,0x02,0x00,0x00,0x00,0x00,0x00,
  62. 0x04,0x3F,0xE2,0xFF,0x2A,0x90,0x08,0x00,0x70,0xF8,0x04,0x00,0x00,0x00,0x00,0x00,
  63. 0x20,0x25,0x20,0x88,0x3A,0x90,0x30,0x00,0xC7,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
  64. 0x00,0x3F,0xE2,0xF9,0x2B,0xF0,0x20,0x01,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
  65. 0x00,0x04,0x02,0x89,0x2A,0x00,0x20,0x02,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
  66. 0x41,0x7F,0xF4,0xFA,0x3A,0x00,0x20,0x04,0x48,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
  67. 0x18,0x08,0x84,0xD4,0x2A,0x00,0x20,0x08,0x80,0x08,0x00,0x80,0x00,0x00,0x00,0x00,
  68. 0x20,0x1D,0x05,0x75,0x2A,0x10,0x20,0x09,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,
  69. 0x40,0x03,0x85,0x4B,0x4A,0x10,0x20,0x12,0x30,0x00,0x80,0x40,0x00,0x00,0x00,0x00,
  70. 0x50,0x7C,0x62,0x11,0x5B,0xF0,0xE0,0x13,0x8F,0xC0,0x80,0x20,0x00,0x00,0x00,0x00,
  71. 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x78,0x3F,0x00,0x20,0x00,0x00,0x00,0x00,
  72. 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x03,0xC0,0x80,0x20,0x00,0x00,0x00,0x00,
  73. 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x0F,0x80,0x20,0x00,0x00,0x00,0x00,
  74. 0x84,0x80,0x00,0x1C,0x08,0x0E,0x04,0x28,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,
  75. 0x04,0x1C,0x08,0x22,0x00,0x11,0x00,0x18,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,
  76. 0x02,0x22,0x00,0x21,0x00,0x10,0x80,0x08,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,
  77. 0xA1,0xA1,0x00,0x24,0xE0,0x12,0x70,0x10,0x00,0x00,0x30,0x20,0x00,0x00,0x00,0x00,
  78. 0x80,0x24,0xE0,0x18,0x10,0x0C,0x08,0x10,0x00,0x00,0x28,0x20,0x00,0x00,0x00,0x00,
  79. 0x98,0x18,0x10,0x00,0x80,0x00,0x40,0x10,0x08,0x00,0x25,0xE0,0x00,0x00,0x00,0x00,
  80. 0x24,0x00,0x81,0x00,0x00,0x80,0x00,0x1A,0x08,0x00,0x22,0x20,0x00,0x00,0x00,0x00,
  81. 0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x46,0x00,0x22,0xA0,0x00,0x00,0x00,0x00,
  82. 0x08,0x00,0x00,0x01,0x04,0x00,0x82,0x0F,0x93,0x40,0x21,0x40,0x00,0x00,0x00,0x00,
  83. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  84. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  85. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  86. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  88. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  90. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  91. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  92. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  93. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  94. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  95. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  96. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  97. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  98. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  99. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  100. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  101. };




  102. void csh();
  103. void delay(uint z)     //0.1MS 准确延时     z=1
  104. {
  105.     uint x,y;
  106.     for (x=0;x<z;x++)
  107.       for(y=0;y<11;y++);

  108. }
  109. void busy()         //查忙
  110. {  RS=0;
  111.    RW=1;
  112.    E=1;
  113.    lcdbus=0xff;
  114.    while((lcdbus&0x80)==0x80);
  115.    E=0;
  116. }
  117. void write_com(uchar xiezl)         //写指令
  118. {
  119.    busy();
  120.    RS=0;
  121.    RW=0;
  122.    E=1;
  123.    lcdbus=xiezl;
  124.    delay(5);
  125.    E=0;
  126.    delay(5);
  127. }
  128. void write_data(uchar xiesj)      //写数据
  129. {
  130.   busy();
  131.   RS=1;
  132.   RW=0;
  133.   E=1;
  134.   lcdbus=xiesj;
  135.   delay(5);
  136.   E=0;
  137.   delay(5);
  138. }

  139. void write_tp(uchar code *p)      /*显示图片-*/
  140. {
  141.        uint j=0;
  142.     uchar x,y,i;
  143.        for(i=0;i<9;i+=8)
  144.        for(y=0;y<32;y++)
  145.          for(x=0;x<8;x++)
  146.          {  write_com(0x36);        //扩充指令集
  147.             write_com(y+0x80);      //行地址
  148.             write_com(x+0x80+i);    //列地址
  149.             write_com(0x30);
  150.             write_data(p[j++]);
  151.             write_data(p[j++]);
  152.          }   
  153. }
  154.            

  155. void clrscreen()             //清液晶屏
  156. {
  157.    write_com(0x01);
  158.    delay(10);
  159.    }
  160. void clrgdram()                 //清液晶ram
  161. {      
  162.         uchar x,y;
  163.         for(y=0;y<64;y++)
  164.          for(x=0;x<16;x++)
  165.          {  write_com(0x34);
  166.             write_com(y+0x80);        //行地址
  167.             write_com(x+0x80);     //列地址
  168.             write_com(0x30);
  169.             write_data(0x00);
  170.             write_data(0x00);
  171.           }
  172.    }   
  173. void lcdcsh()              //液晶初始化
  174. {  delay(2000);
  175.    write_com(0x30);
  176.    delay(10);         
  177.    write_com(0x30);   
  178.    delay(5);
  179.    write_com(0x0c);       //开显示(无游标、不反白)
  180.    delay(10);
  181.    write_com(0x01);       //清除显示,并且设定地址指针为00H
  182.    delay(500);
  183.    write_com(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
  184.    delay(0);
  185. }
  186. void xianshi(uchar code *s)        //用指针显示字符串
  187. {                                     //各种字符都用字符串显示出来  方法简单

  188.    while(*s>0)
  189.     {  
  190.       write_data(*s);
  191.       s++;
  192.       delay(50);
  193.    }
  194. }


  195. void jin88()          //液晶上电显示
  196. {
  197.    int i=0;
  198.    write_com(0x01);
  199.    delay(5);
  200.    write_com(0x80);
  201.    xianshi("题目:单片机控制");
  202.    write_com(0x90);
  203.    xianshi("国旗自动");
  204.    write_com(0x95);
  205.    write_com(0x88);
  206.    xianshi("本项目由锦88独立");
  207.    write_com(0x98);
  208.    xianshi("制作完成");
  209.   
  210. }
  211. void CGRAM()       //自定义  四个汉字字模
  212. {
  213.                    //四个汉字分别是  升降系统
  214.      int i,j;
  215.     int jj=0;
  216.      write_com(0x30);   
  217.      for(j=0;j<4;j++)
  218.      
  219.      {
  220.          write_com(0x40+jj);
  221.         for(i=0;i<16;i++)
  222.        {
  223.          write_data(zdy[j][i*2]);
  224.          write_data(zdy[j][i*2+1]);
  225.         }
  226.         jj=jj+0x10;
  227.         
  228.      }
  229. }      

  230. //电机部分
  231. void djyz1()  //升国旗 正转
  232. {
  233.   clrscreen();
  234.   write_com(0x81);
  235.   xianshi("大家请起立");   
  236.   write_com(0x91) ;
  237.   xianshi("奏国歌    国旗");
  238.   write_com(0x95);          //调用自定义的CGRAM的代码
  239.   write_data(0x00);
  240.   write_data(0x00);
  241.   write_com(0x89);
  242.   xianshi("请行注目礼");
  243.   delay(700000);
  244.      //此处再加声音         用两个口控制apr9600 使其放音
  245.   clrscreen();
  246.   write_com(0x80);
  247.   xianshi("国旗高度:000厘米");
  248.   write_com(0x90);
  249.   xianshi("所用时间: 00秒");

  250.    flag4=1;    //电机正转
  251.    TR1=1;
  252.    xx=0;
  253.    TR0=1;
  254.    sj=0;
  255.    gd1=0;
  256. while(zdbz1)
  257. {
  258. /*此处再加声音         用两个口控制apr9600 使其放音             */
  259.    write_com(0x84);
  260.    write_data(0x7c);
  261.    write_data(0x30+gd13); //时间高度自加
  262.    write_com(0x85);
  263.    write_data(0x30+gd12);
  264.    write_data(0x30+gd11);
  265.    write_com(0x94);
  266.    write_data(0x7c);
  267.    write_data(0x30+sj3);
  268.    write_com(0x95);
  269.    write_data(0x30+sj2);
  270.    write_data(0x30+sj1);
  271. }

  272.    TR1=0;
  273.    TR0=0;
  274.   

  275.    flag1=0;
  276.    flag2=0;
  277.    flag3=1;

  278. }  
  279. void djyz2()   //升半旗       先正转 再反转
  280. {
  281.     clrscreen();
  282.     write_com(0x81);
  283.     xianshi("大家请起立");   
  284.     write_com(0x91) ;
  285.     xianshi("奏国歌    国旗");
  286.     write_com(0x95);          //调用自定义的CGRAM的代码 显示‘升’
  287.     write_data(0x00);
  288.     write_data(0x00);
  289.     write_com(0x89);
  290.     xianshi("请行注目礼");
  291.     delay(700000);
  292.      //此处再加声音
  293.     clrscreen();
  294.     write_com(0x80);
  295.     xianshi("国旗高度:000厘米");
  296.     write_com(0x90);
  297.     xianshi("所用时间: 00秒");

  298.     xx=0;
  299.        flag4=1;    //电机正转
  300.     TR1=1;
  301.     TR0=1;
  302.     sj=0;
  303.     gd1=0;
  304.     while(zdbz1)
  305.     {
  306.       write_com(0x84);
  307.       write_data(0x7c);
  308.       write_data(0x30+gd13);
  309.       write_com(0x85);
  310.       write_data(0x30+gd12);
  311.       write_data(0x30+gd11);
  312.       write_com(0x94);
  313.       write_data(0x7c);
  314.       write_data(0x30+sj3);
  315.       write_com(0x95);
  316.       write_data(0x30+sj2);
  317.       write_data(0x30+sj1);
  318.     }
  319.     TR1=0;
  320.     for(xh=0;xh<30000;xh++)
  321.     {
  322.       write_com(0x94);
  323.       write_data(0x7c);
  324.       write_data(0x30+sj3);
  325.        write_com(0x95);
  326.       write_data(0x30+sj2);
  327.       write_data(0x30+sj1);
  328.     }   
  329.     xx=4;
  330.     flag4=0;    //电机反转
  331.     gd21=gd11;
  332.     gd22=gd12;
  333.     gd23=gd13;
  334.     TR1=1;
  335.     while(zdbz2)
  336.     {
  337.       write_com(0x84);
  338.       write_data(0x7c);
  339.       write_data(0x30+gd13);
  340.       write_com(0x85);
  341.       write_data(0x30+gd12);
  342.       write_data(0x30+gd11);
  343.       write_com(0x94);
  344.       write_data(0x7c);
  345.       write_data(0x30+sj3);
  346.       write_com(0x95);
  347.       write_data(0x30+sj2);
  348.       write_data(0x30+sj1);
  349.    
  350.     }
  351.     TR1=0;
  352.     TR0=0;
  353.        flag1=0;
  354.     flag2=0;
  355.     flag3=1;
  356. }
  357. void djyz3()   //降
  358. {
  359.     xx=4;
  360.     TR1=1;
  361.     flag4=0;    //电机反转      此处没有时间高度显示
  362.     while(zdbz3);
  363.     TR1=0;
  364.     csh();
  365.     flag1=1;
  366.     flag2=1;
  367.     flag3=0;

  368. }
  369. void djyz()
  370. {
  371.      if    (aa==1)
  372.      {     
  373.         aa=0;
  374.         if(flag1)djyz1();
  375.      }
  376.      if(bb==1)
  377.        {
  378.          bb=0;
  379.          if(flag2)djyz2();
  380.        }
  381.      if(cc==1)
  382.        {
  383.          cc=0;
  384.          if(flag3)djyz3();
  385.        }
  386. }

  387. void jpsm()      //键盘扫描
  388. {     
  389.     do
  390.     {
  391.      if(((key1||key2)==1)||((key1||key3)==1)||((key3||key2)==1)    ) //防止两键同时按下
  392.        {
  393.            if(key1==0)
  394.             {
  395.               delay(2);
  396.               if(key1==0)
  397.                 aa=1;
  398.             }
  399.            else if(key2==0)
  400.              {
  401.               delay(2);
  402.               if(key2==0)
  403.                 bb=1;
  404.              }
  405.             else if(key3==0)
  406.              {
  407.               delay(2);
  408.               if(key3==0)
  409.                  cc=1;
  410.              }
  411.         }
  412.         
  413.      }while((aa||bb||cc)==0) ;
  414. }
  415. void csh()
  416. {
  417.    //初始化程序
  418.    flag1=1;
  419.    flag2=1;
  420.    flag3=0;
  421.    zdbz1=1;
  422.    zdbz2=1;
  423.    zdbz3=1;//三个干簧管  低电平时 电机停转
  424.    sj=0;   //时间高度开始值0
  425.    gd1=0;
  426.   
  427.    TMOD=0x11;
  428.    TH0=(65536-50000)/256;  //定时50ms
  429.    TL0=(65536-50000)%256;
  430.    TH1=(65536-100)/256;
  431.    TL1=(65536-100)%256;      //定时0.1ms
  432.    EA=1;
  433.    ET0=1;
  434.    ET1=1;
  435.    TR0=0;
  436.    TR1=0;
  437. }
  438. void yjcsxs()
  439. {
  440.     jin88();//液晶初始化后显示
  441. /*因为升降系统无法直接 显示 我就自定义了四个字的字模*/
  442.     write_com(0x94);          //调用自定义的CGRAM的代码
  443.     write_data(0x00);
  444.     write_data(0x00);           //
  445.     delay(10);
  446.     write_com(0x95);          //调用字库中没有的汉字
  447.     write_data(0x00);
  448.     write_data(0x02);          //
  449.     write_com(0x96);         
  450.     write_data(0x00);
  451.     write_data(0x04);          //
  452.     delay(10);
  453.     write_com(0x97);         
  454.     write_data(0x00);
  455.     write_data(0x06);
  456.     delay(10);
  457.     /*再显示一幅图画*/
  458.     clrscreen();
  459.     clrgdram();
  460.     write_tp(bmp1); //



  461. }


  462. void main()
  463. {
  464.     lcdcsh();//液晶初始化
  465.     CGRAM();//定义字库中没有的字符 升降系统 四个字
  466.        yjcsxs();


  467.     csh();  //电机初始化
  468.     while(1)
  469.     {
  470.      jpsm();//键盘扫描
  471.      djyz();//电机运行
  472.      }
  473. }
  474. void time1() interrupt 3       //定时器1控制电机正反转速度
  475. {
  476.        TH1=(65535-100)/256; //定时0.1ms
  477.       TL1=(65535-100)%256;
  478.       tt1++;
  479.       if(flag4)    //正转
  480.       {
  481.             if(tt1==70)
  482.            {
  483.               tt1=0;
  484.               P2=table[xx++] ;      //P2口控制电机
  485.                 if(xx==4) xx=0;
  486.              }
  487.       }
  488.       else      //反转
  489.       {
  490.          if(tt1==80)
  491.          {
  492.              tt1=0;
  493.                P2=table[--xx];
  494.                if(xx==0) xx=4;
  495.            }
  496.       }
  497. }
  498. void time0() interrupt 1        //定时器0控制时间高度
  499. {
  500.    
  501.     TH0=(65535-50000)/256;    //定时     50ms
  502.     TL0=(65535-50000)%256;
  503.       tt0++;
  504.     tt++;
  505.     if(tt0==6)
  506.         {     
  507.           tt0=0;
  508.           gd12=gd1%100/10;
  509.           gd11=gd1%10 ;
  510.           gd13=gd1/100;
  511.          
  512.           gd21=gd2%10;
  513.           gd22=gd2%100/10;
  514.           gd23=gd2/100;

  515.           gd1++;
  516.           gd2--;
  517.            }
  518.    if(tt==20)
  519.         {
  520.           tt=0;
  521.           sj1=sj%10 ;
  522.           sj2=sj%100/10;
  523.           sj3=sj/100;
  524.           sj++ ;  
  525.         }
  526.                      
  527. }
复制代码

评分

参与人数 3黑币 +58 收起 理由
伦敦之殇 + 3 回帖助人的奖励!
lxfenfen + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:293060 发表于 2018-3-17 10:44 | 只看该作者
很给力!
回复

使用道具 举报

板凳
ID:247623 发表于 2018-9-14 14:47 | 只看该作者
连仿真文件都没有,就一张图,一段程序
回复

使用道具 举报

地板
ID:922296 发表于 2021-5-16 19:04 | 只看该作者
十分感谢,但是可以讲讲流程不?
回复

使用道具 举报

5#
ID:922296 发表于 2021-5-16 19:35 | 只看该作者
伦敦之殇 发表于 2018-3-17 10:44
**** 作者被禁止或删除 内容自动屏蔽 ****

不完整的吗
回复

使用道具 举报

6#
ID:922296 发表于 2021-5-17 20:41 | 只看该作者
请问为啥电机不转?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表