久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3691|回復: 1
收起左側

12864液晶屏顯示各種傳感器

[復制鏈接]
ID:71259 發表于 2014-12-29 20:40 | 顯示全部樓層 |閱讀模式
本帖最后由 daming 于 2014-12-29 20:41 編輯
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define jian P1
  5. sbit bf=P0^7;
  6. sbit lcd_rs=P2^6;
  7. sbit lcd_rw=P2^5;
  8. sbit lcd_e=P2^4;
  9. sbit lcd_reset=P2^7;
  10. sbit lihe=P2^0;
  11. sbit shache=P2^1;
  12. sbit ge=P3^2;
  13. sbit sj_p33=P3^3;
  14. sbit zhengfan=P3^4;
  15. bit aj_1,zd_1,jin_1,song_1,ti_1,tj_1;
  16. uint gaodu_0,gaodu_1,shiji_0,cishu;
  17. uchar shiling,ms,sj_s,sj_j;
  18. uchar code  hz_bj1[]={"計數傳感器無信號"};
  19. uchar code  hz_bj2[]={"方向傳感信號無  "};
  20. uchar code  hz_bj3[]={"檢測到反轉超限  "};
  21. uchar code  hz_bj4[]={"檢測到正轉超限  "};
  22. uchar code  hz_bj5[]={"過緊或傳感器失靈"};
  23. uchar code hz_kong[]={"                "};
  24. uchar code    zzzk[]={"歡迎使用職專智控"};
  25. uchar code     csh[]={"正在初始化。。。"};
  26. uchar code     qqh[]={"qq:000000"};
  27. uchar code    hz_t[]={"態:"};
  28. uchar code   hz_gs[]={"過松"};
  29. uchar code   hz_gj[]={"過緊"};
  30. uchar code   hz_tz[]={"停"};
  31. uchar code    hz_z[]={"智"};
  32. uchar code hz_jing[]={"警"};
  33. uchar code   hz_tg[]={"提高"};
  34. uchar code   hz_lh[]={"離合"};
  35. uchar code    tb_1[]={"●"};
  36. uchar code    tb_2[]={"○  "};
  37. uchar code hz_sheng[]={"升"};
  38. uchar code hz_jiang[]={"降"};
  39. uchar code hz_sc[]={"剎車"};
  40. uchar        rem[]={0,0,1,0};
  41. uchar     rem_cs[]={0,0,0,0};
  42. uchar      rem_1[]={0,0};
  43. uchar     rem_sj[]={0,0};
  44. uchar    rem_gd1[]={0,0,0,0};
  45. uchar   code bcd[]={"0123456789"};
  46. /////////////
  47. yanshi(uint t)
  48. {
  49. uint i,j;
  50. for(i=0;i<t;i++)
  51.    {
  52.     for(j=0;j<110;j++);
  53.     }
  54. }
  55. //////////////////////
  56. yanshi1(uint t)
  57. {
  58. while(t--);
  59. }
  60. ///////////////////////////
  61. fuwei()
  62. {yanshi(5);
  63. lcd_reset=0;
  64. yanshi(5);
  65. lcd_reset=1;
  66. }
  67. ///////////////////////////
  68. xie_lcd(bit ly,uchar shuju_lcd)
  69. {
  70. lcd_rs=ly;
  71. lcd_rw=0;
  72. lcd_e=0;
  73. P0=shuju_lcd;
  74. yanshi(5);
  75. lcd_e=1;
  76. yanshi(5);
  77. lcd_e=0;
  78. }
  79. /////////////////////////////
  80. /////////////////////////////
  81. lcd_zuobiao(uchar x,uchar y)
  82. {
  83. uchar temp;
  84. if(x==0)
  85.    {x=0x80;}
  86. if(x==1)
  87.    {x=0x90;}
  88. if(x==2)
  89.    {x=0x88;}
  90. if(x==3)
  91.    {x=0x98;}
  92. temp=x+y;
  93. xie_lcd(0,temp);
  94. }
  95. ///////////////////////////
  96. xiehz(uchar xx,uchar yy,uchar code *chn)
  97. {
  98.     uchar i;
  99. lcd_zuobiao(xx,yy);
  100. i=0;
  101. while(chn[i]!='\0')
  102.      {
  103.       xie_lcd(1,chn[i]);
  104.       i++;
  105.      }
  106. }
  107. ///////////////////////////
  108. xiesz(uchar xx,uchar yy,uchar wei,uchar *chn)
  109. {
  110.     uchar i;
  111. lcd_zuobiao(xx,yy);
  112. for(i=0;i<wei;i++)
  113.      {
  114.       xie_lcd(1,bcd[chn[i]]);
  115.      }
  116. }
  117. ///////////////////////////
  118. ///////////////////////////
  119. xieping_1()
  120. {
  121. xiehz(0,0,hz_t);
  122. xiehz(0,4,hz_tg);
  123. xiehz(1,0,hz_lh);
  124. xiehz(2,0,hz_sc);
  125. }
  126. ///////////////////////////
  127. chushihua_p()
  128. {
  129. xie_lcd(0,0x30);
  130. xie_lcd(0,0x0c);
  131. xie_lcd(0,0x01);
  132.   xiehz(0,0,zzzk);
  133.   //xiehz(2,0,csh);
  134.   xiehz(3,2,qqh);
  135. yanshi(2000);
  136. xie_lcd(0,0x01);
  137. xieping_1();
  138. xiehz(0,2,hz_tz);
  139. xiesz(0,6,4,rem);
  140. }
  141. ///////////////////////////
  142. ////////////////////停機,離合器離開,同時剎車剎住
  143. ting()
  144. {
  145. fuwei();
  146. chushihua_p();
  147. lihe=1;
  148. EA=0;
  149. TR1=0;
  150. EX0=0;EX1=0;
  151. zd_1=0;
  152. ms=0;
  153. xiehz(0,2,hz_tz);
  154. xiehz(1,2,tb_2);
  155. xiehz(2,2,tb_2);
  156. //shache=0;//xiesz(3,0,4,rem_gd1);shiling=0;
  157. }
  158. ///////////////////
  159. sd_lh()
  160. {
  161. if(~zd_1)
  162. {
  163. while(jian==0xf7)lihe=0;
  164. lihe=1;
  165. }
  166. }
  167. ///////////////
  168. sd_sc()
  169. {
  170. if(~zd_1)
  171. {
  172. while(jian==0xfb)shache=0;
  173. shache=1;
  174. }
  175. }
  176. /////////////////////
  177. shujuchuli_0()
  178. {
  179. uint shuju;
  180. shuju=gaodu_0-200;
  181. rem[1]=shuju%1000/100;
  182. rem[2]=shuju%100/10;
  183. rem[3]=shuju%10;
  184. xiesz(0,6,4,rem);
  185. //if(gaodu_1>=200)
  186. //{
  187.       shuju=gaodu_1;//-200;
  188. rem_gd1[1]=shuju%1000/100;
  189. rem_gd1[2]=shuju%100/10;
  190. rem_gd1[3]=shuju%10;
  191. xiesz(3,0,4,rem_gd1);
  192. // }
  193.     shuju=cishu;
  194. rem_cs[1]=shuju%1000/100;
  195. rem_cs[2]=shuju%100/10;
  196. rem_cs[3]=shuju%10;
  197. xiesz(3,6,4,rem_cs);
  198. }
  199. /////////////////////
  200. /////////////提低//////////////////////////////////
  201. tidi()
  202. {
  203. if(gaodu_0>210)gaodu_0--;
  204. }
  205. //////提高
  206. tigao()
  207. {
  208. gaodu_0++;
  209. }
  210. ///////////////
  211. ///////////////////
  212. ///////////////////自動
  213. zidong()
  214. {
  215. if(ms==0)if(zd_1==0)
  216.         {
  217.         ms=1;
  218.         xiehz(0,2,hz_z);
  219.   shiling=0;
  220.   gaodu_1=200;
  221.         TMOD=0x10;
  222.         ET1=1;
  223.         TH1=0;TL1=0;TR1=1;
  224.         zd_1=1;
  225.         shache=1;
  226.         lihe=0;
  227.         ti_1=1; //  //提升標志致一                        
  228.   IT0=1;//負跳變有效
  229.   EX0=1;//開外int0中斷
  230.         IT1=1;//負跳變有效
  231.   //EX1=1;//開外int1中斷
  232.         EA=1;
  233.         }
  234. }
  235. ///////////////////鍵盤
  236. jianpan()
  237. {
  238. uchar jianma;
  239. jian=0xff;
  240. if(jian==0xff)aj_1=1;
  241. else{
  242.      yanshi1(50);
  243.      if(jian==0xff)return;
  244.      if(aj_1)
  245.         {
  246.           jianma=jian&0xff;
  247.           aj_1=0;
  248.           switch(jianma)
  249.               {
  250.                case 0x7f:
  251.                           {
  252.                            zd_1=0;
  253.                            if(ms==2)ting();
  254.                           }
  255.                         break;
  256.                case 0xbf:zidong();break;
  257.                case 0xdf:tidi();break;
  258.                case 0xef:tigao();break;
  259.                case 0xf7:sd_lh();break;
  260.                case 0xfb:sd_sc();break;
  261.                case 0xfd:jin_1=1;break;
  262.                case 0xfe:song_1=1;break;
  263.                }
  264.          }
  265.       
  266.     }
  267. }
  268. ///////////////////////////
  269. chushihua_jiqi()
  270. {
  271. lihe=1;
  272. shache=1;
  273. gaodu_0=230;
  274. gaodu_1=200;
  275. shiji_0=203;
  276. cishu=0;
  277. PX0=1;
  278. shujuchuli_0();
  279. }
  280. ///////////////////////////////////
  281. jing()
  282. {
  283.            ms=2;
  284.            shiling=0;
  285.            gaodu_1=200;
  286.            xiehz(0,2,hz_jing);
  287.            xiehz(1,2,tb_2);
  288.   while(ms==2)
  289.    {
  290.    EX0=0;
  291.    lihe=1;
  292.    jianpan();
  293.    }
  294.            xieping_1();
  295.            ting();
  296.            xiehz(3,0,hz_kong);
  297. }
  298. ///////////////////////////////////
  299. guole()
  300. {
  301. EA=0;TR1=0;EX0=0;EX1=0;lihe=1;zd_1=0;
  302. jing();
  303. }
  304. ////////////////////////////////
  305. baoxian() interrupt 3
  306. {
  307. TH1=0;
  308. TL1=0;
  309.   shiling++;
  310.      if(shiling>200)
  311.           {
  312.            EA=0;TR1=0;EX0=0;EX1=0;lihe=1;zd_1=0;
  313.            xiehz(3,0,hz_bj1);
  314.            jing();
  315.            }
  316. }
  317. //////////////////////////
  318. ///////////////////////////
  319. void main(void)
  320. {
  321. lihe=1;shache=1;                  //
  322. fuwei();                          //屏幕復位
  323. chushihua_p();                    //初始化屏
  324. chushihua_jiqi();                 ///初始化機器
  325. while(1)                              
  326.   {                        
  327.          if(~zd_1)lihe=1;                                  //不是自動模式離合松
  328.          shujuchuli_0();                                   //數據處理
  329. jianpan();                                                
  330.          if(lihe){xiehz(1,2,tb_2);xiehz(1,4,hz_jiang);}    //松開時寫實心球寫降字
  331.          else {xiehz(1,2,tb_1);xiehz(1,4,hz_sheng);}       //結合時寫升
  332. jianpan();                        
  333.          if(shache)xiehz(2,2,tb_2);                        //                    
  334.          else xiehz(2,2,tb_1);                             //
  335. jianpan();
  336.   if(jin_1)xiehz(2,4,hz_gs);                         //
  337.   else xiehz(2,4,hz_gj);                              //
  338. if(sj_s>20){EX0=0;xiehz(3,0,hz_bj5);guole();sj_s=0;}        //
  339.   }
  340. }
  341. ///////////////////查磁片程序/////////////
  342. jishu1()  interrupt 0   
  343. {
  344. EX0=0;
  345. yanshi1(20);                                          ///消除線路干擾,消抖
  346.   if(~ge)                                                ///消抖
  347.     {
  348.           shiling=0;                                      ///防止計數傳感器失靈,或機器不轉
  349.           if(zhengfan)
  350.             {              if(~ti_1)lihe=1;                //提起標志為零時離合器松開
  351.                            else
  352.                                 {                           //提起標志1時
  353.                                 while((zhengfan)&&(~ge));   //等待方向傳感器被觸發,
  354.                                 if(ge)                     
  355.                                    {                        //方向傳感器沒有被觸發時
  356.                                     EA=0;EX0=0;             //總中斷為零不再計數
  357.                                     lihe=1;zd_1=0;          //離合松,自動標志為0
  358.                                     xiehz(3,0,hz_bj2);      //寫方向傳感器失靈漢字
  359.                                     jing();                 //進入警狀態
  360.                                     }
  361.                                 }
  362.                                 if(tj_1)                    //調節標志為一時進行調節
  363.                                    {
  364.                                    tj_1=0;                  ///置零調節標志,只進行一次調節
  365.                                    EX1=0;                    //關閉過松觸發中斷
  366.                                    song_1=1;                  //松標志置一,
  367.                                    }
  368.             gaodu_1++;                         //提升高度計數加加
  369.                           
  370.          ////////////////////////////////////////////////////////////////
  371.            if(zd_1)
  372.                     {                                          // 是自動模式判斷高度
  373.            if(gaodu_1>=gaodu_0)///                    ///高度到否判斷
  374.                {                                   //到了
  375.                              if(~jin_1)                     
  376.                                    {                           //緊標志零時
  377.                  ti_1=0;                     //提升標志置零
  378.                                    lihe=1;                     //離合斷開
  379.                           yanshi1(40);                 //延時防干擾
  380.                                    }
  381.                              else
  382.                                 {                                //進標志一時
  383.                                 jin_1=0;                         // 置零,只緊一次
  384.                                 song_1=0;                        //松標志為零,不松了
  385.                                 gaodu_1--;                       //高度計數器減減,讓提升數值不變。
  386.                                 sj_j++;                          //緊的次數加加
  387.                                 if(sj_j>4)gaodu_1--;             //連續緊超過4次了,多緊一個磁片
  388.                                 }  
  389.                            }
  390.                     }
  391.                 else   {
  392.                         lihe=1;ti_1=0;                          //落錘停車
  393.                         yanshi1(40);  
  394.         }   
  395.              }            
  396. ///////////////////////////////////////////////////////////////////////////////////
  397.   else
  398.               {   
  399.             gaodu_1--;                                //落錘時高度減減
  400.                if(gaodu_1<=shiji_0)
  401.                    {                                     //落到底了
  402.                      if(zd_1)                             ///
  403.                     {
  404.                                  if(~song_1)                  
  405.                                      {                           //松標志為零時提升
  406.                                       if(~ti_1)cishu++;          //打夯次數加一
  407.            ti_1=1;                    //提升標志
  408.                                       tj_1=1;                    //調節標志
  409.                                       lihe=0;                   ///結合離合顯示上橫
  410.               EX1=1;                     //開外中斷1,檢查是否松,
  411.                                       yanshi1(40);               //延時
  412.                                      }
  413.                                  else
  414.                                       {
  415.                                        song_1=0;                //松標志置零
  416.                                        gaodu_1++;               //松一個磁片
  417.                                        sj_j=0;                  //緊次數置零
  418.                                        sj_s++;                  // 松的次數加加
  419.                                        if(sj_s>4)gaodu_1++;     //連續松了超4次了,多松一個
  420.                                       }
  421.                     }
  422.                      else ting();                          //停車
  423.                     }
  424.         }
  425.     }
  426. EX0=1;
  427. }
  428. ////////////////////////////////////////
  429. songle()  interrupt 2
  430. {yanshi(30);
  431. if(~sj_p33)
  432.           {
  433.            jin_1=1;
  434.            sj_s=0;  //碰到鋼絲繩時松計數置零,防止過松。
  435.            EX1=0;
  436.            }
  437. }
復制代碼


回復

使用道具 舉報

ID:195884 發表于 2017-7-20 16:12 | 顯示全部樓層
這個程序是何用途?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91tv在线观看| 超碰97人人人人人蜜桃 | 作爱视频免费观看 | 国产在线观看福利 | 日本午夜在线视频 | 中文字幕一区在线观看视频 | 欧美日韩一二三区 | 精品91久久 | 午夜精品久久 | 国产精品欧美一区二区三区不卡 | 美女久久久 | 国产99小视频 | 一区二区在线不卡 | 国产一区不卡 | 免费毛片网站 | 91婷婷韩国欧美一区二区 | 97伦理电影 | 国产精品一区二区久久精品爱微奶 | 亚洲国产成人精品久久久国产成人一区 | 毛片.com| 亚洲精品天堂 | 成人无遮挡毛片免费看 | 欧美成人精品在线 | 伊人久久综合 | 亚洲精品短视频 | 国产三级大片 | 综合色导航 | 国产成人综合av | 久久久91精品国产一区二区三区 | 超碰在线播 | 国产欧美精品区一区二区三区 | 爱高潮www亚洲精品 中文字幕免费视频 | 国产精品国产精品国产专区不片 | 日韩午夜影院 | 国产日韩电影 | 精品三级在线观看 | 在线国产一区二区 | 中文字幕在线观看国产 | 亚州精品天堂中文字幕 | 男人的天堂久久 | 日韩精品福利 |