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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5443|回復: 0
打印 上一主題 下一主題
收起左側

全自動繞線機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:76127 發表于 2015-4-5 00:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該程序主要運用了鍵盤掃描技術和EEROM存儲器編程,做到把鍵盤值輸入到存儲器中,不怕掉電。基于WICN單片機開發板設計。
主程序


  1. //--------------------- 半自動繞線機程序 ----------------------

  2. //-----------------芯片STC89C52RC 晶振11.0592M ----------------

  3. //---------------------計數值范圍1~22圈-----------------------

  4. #include<reg52.h>

  5. #include"24c01.c"

  6. #include"stopgo.c"

  7. #include"jishuan.c"

  8. #include"lcd1602.c"

  9. #include"startgo.c"

  10. //-------------------------------------------------------------

  11. #define uchar unsigned char

  12. #define uint  unsigned int

  13. //-------------------------------------------------------------



  14. sbit  K1=P0^0;       //數字輸入鍵個位數

  15. sbit  K2=P0^1;       //數字輸入鍵十位數

  16. sbit  K3=P0^2;       //輸入功能并以IIC存入AT24C01中保存

  17. sbit  K4=P0^3;       //確認存入數據鍵

  18. sbit  K5=P0^4;    //停止鍵

  19. sbit  beep=P3^3;

  20. sbit    CLK=P1^2;       //光電感應脈沖(用該開關模仿)

  21. sbit  LE_LED=P3^4;

  22. sbit  LED=P1^5;

  23. //-------------------------------------------------------------

  24. //-------------------------------------------------------------

  25. uchar tablee[2];



  26. //------按鍵延時-----------------------------------------------

  27. void delayx(uint i)

  28. {

  29.        uint w;

  30.        for(w=0;w<i;w++);

  31. }

  32. //-------------------------------------------------------------

  33. void start_ggo(uchar b)  //打線執行程序

  34. {

  35.        uchar d=0;

  36.        uchar n=0;     

  37.        while(n<=b)

  38.     {

  39.               LCD1602(n);     //顯示

  40.               if(!CLK)

  41.               {

  42.               delayx(500);

  43.               while(CLK==0);

  44.               n++;

  45.               LED=0;

  46.               beep=0;

  47.               delayx(10000);

  48.               LED=1;

  49.               beep=1;

  50.               }

  51.        }   

  52. }

  53. //------------------------------------------------------------

  54. //-------------------------------------------------------------

  55. //------------------數據鍵盤按鍵掃描---------------------------

  56. void main()

  57. {

  58.        uchar h,f;

  59.        uchar e=30;

  60.        uchar id0=0;

  61.        uchar id1=0;

  62.        LE_LED=0;

  63.        while(1)

  64.        {

  65.               if(!K1)        //P0.0      K1=3

  66.               {

  67.                 delayx(500);

  68.                 while(K1==0);

  69.              beep=0;

  70.                 delayx(5000);

  71.                 beep=1;

  72.                 tablee[0]=3;

  73.                 if(id0==1)

  74.                 {

  75.                     tablee[1]=3;

  76.                      id0=0;

  77.                 }

  78.                  id0++;

  79.                  if(id0==2)id0=0;

  80.               }

  81.               //--------------------

  82.               if(!K2)           //P0.1    K2=5

  83.               {

  84.                 delayx(500);

  85.                 while(K1==0);

  86.              beep=0;

  87.                 delayx(5000);

  88.                 beep=1;

  89.                 tablee[1]=5;

  90.                 if(id1==1)

  91.                 {

  92.                     tablee[0]=5;

  93.                      id0=0;

  94.                 }

  95.                 id1++;

  96.                 if(id1==2)id1=0;

  97.               }

  98.               //===========================================================

  99.                if(!K3)//確認輸入到AT24C01中

  100.                {

  101.                     delayx(500);

  102.                   while(K3==0);       //P0.2

  103.                      beep=0;

  104.                      delayx(5000);

  105.                      beep=1;

  106.                      jishuan(tablee[0],tablee[1]);

  107.                   f=jishuan_ok();

  108.                   init();                //24c01初始化

  109.                   W_AT24C01(e,f);//寫數據到AT24C01中,0x30是器件地址內存單元

  110.                }

  111.                if(!K4)//啟動機器打線 P0.3

  112.                {

  113.                   delayx(500);

  114.                   while(K4==0);

  115.                      beep=0;

  116.                      delayx(5000);

  117.                      beep=1;

  118.                   init();               //24c01初始化

  119.                   h=R_AT24C01(e); //讀AT24C01中0x30的數據

  120.                   LCD1602(h);     //顯示

  121.                   //start_go(h);    //啟動執行打線功能并計數

  122.                      start_ggo(h);



  123.                   if(!K5)           //如果停機鍵按下則執行停機功能

  124.                   stop_go();

  125.                }   

  126.        }

  127. }





  128. //---IIC AT24C01存儲器讀寫操作程序-----------

  129. #include <reg52.h>

  130. #define uchar unsigned char

  131. sbit SDA=P3^6;

  132. sbit SCL=P3^7;

  133. ///------------------------------------------

  134. void delay()

  135. { ; ; }

  136. ///////////////////////

  137. void start()//起始信號

  138. {

  139.        SDA=1;

  140.        delay();

  141.        SCL=1;

  142.        delay();

  143.        SDA=0;

  144.        delay();

  145. }

  146. ///////////////////////

  147. void stop()//終止信號

  148. {

  149.        SDA=0;

  150.        delay();

  151.        SCL=1;

  152.        delay();

  153.        SDA=1;

  154.        delay();

  155. }

  156. //////////////////////////////////////////////////

  157. //////////////////////////////////////////////////

  158. void respons()//應答信號,等待或者發送一個應答信號

  159. {

  160.        uchar i;

  161.        SCL=1;

  162.        delay();

  163.        while((SDA==1)&&(i<250))i++;

  164.        SCL=0;

  165.        delay();

  166. }

  167. /*************************************************/

  168. void init()//初始化

  169. {

  170.        SDA=1;

  171.        SCL=1;

  172. }

  173. //////////////////////////////////////////////////

  174. void write_byte(uchar date)//寫一字節

  175. {

  176.        uchar i;

  177.        SCL=0;

  178.        for(i=0;i<8;i++)

  179.        {

  180.               date=date<<1;

  181.               SDA=CY;

  182.               SCL=1;

  183.               delay();

  184.               SCL=0;

  185.               delay();

  186.        }

  187. }

  188. //------------------------------------------------                                          

  189. uchar read_byte()//讀數據(也就是接收從器件傳來的數據)

  190. {

  191.        uchar i,k;

  192.        for(i=0;i<8;i++)

  193.        {

  194.               SCL=1;

  195.               delay();

  196.               k=(k<<1)|SDA;

  197.               SCL=0;

  198.               delay();

  199.        }

  200.               return k;

  201. }

  202. //////////////////////////////////////////////////

  203. //=============AT24C01寫操作=====================//

  204. void W_AT24C01(uchar address,uchar date)//寫數據

  205. {

  206.        start();

  207.        write_byte(0xa0);  //器件地址

  208.        respons();

  209.        write_byte(address);//器件內存地址 address

  210.     respons();

  211.        write_byte(date);//數據     date

  212.        respons();

  213.        stop();

  214. }

  215. //////////////////////////////////////////////////

  216. //==============AT24C01讀操作====================//

  217. uchar R_AT24C01(uchar address)

  218. {

  219.        uchar date;

  220.        start();

  221.        write_byte(0xa0);//寫器件地址和寫指令0XA0=10100000B最后一個零表示寫,低電平有效

  222.        respons();

  223.        write_byte(address);////器件內存地址address

  224.        respons();

  225.        start();

  226.        write_byte(0xa1);//寫器件地址和讀指令0XA1=10100001B,最后一個1表示讀,高電平有效

  227.        respons();

  228.        date=read_byte();

  229.        stop();

  230.        return date;

  231. }







  232. //------------------LCD1602顯示程序(模塊)--------------------

  233. #include <reg52.h>

  234. #define uchar unsigned char

  235. ///////////////LCD1602/////////////

  236. sbit RS=P0^5;

  237. sbit RW=P0^6;

  238. sbit YE=P0^7;

  239. /////////////////////////////////////////////////////////////

  240. uchar code table[]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3

  241.                                    0x99,0x92,0x82,0xf8,//4,5,6,7

  242.                                    0x80,0x90,0xfe};//8,9,.,段碼表

  243. /////////////////////////////////////////////////////////////

  244. uchar code table1[] ={"0123456789. -"};

  245. uchar code table2[] ={"Temperature"};

  246. uchar code table3[] ={"  123333  "};

  247. /////////////////////////////////////////////////////////////

  248. void delayy(unsigned int us)

  249. {

  250.        while(us--);

  251. }

  252. ////////////////////////////////////////////

  253. void delay2()

  254.               {

  255.                      RS=0;

  256.                      RW=0;

  257.                      YE=0;

  258.                      delayy(5);

  259.                      YE=1;

  260.               }

  261. /******************************LCD1602液晶顯示****************************/

  262. void LCD1602(uchar dd)//dd是整數

  263. {

  264.                      uchar e,f,i,nem;

  265.                      e=dd/10;

  266.                      f=dd%10;

  267. //////////////////////////////////////LCD屏初始化

  268.                      P2=0x01;       //清屏

  269.                      delay2();

  270.                      P2=0x38;       //顯示設定兩行

  271.                      delay2();

  272.                      P2=0x0f;  //打開顯示和光標

  273.                      delay2();

  274.                      P2=0x06;  //光標右移

  275.                      delay2();

  276.                      P2=0x80;  //光標回到第一行的開頭

  277.                      delay2();

  278. //////////////////////////////////////////

  279.        for(nem=0;nem<11;nem++)////////////溫度英文字顯示

  280.          {

  281.                      P2=table2[nem];

  282.                      RS=1;

  283.                      RW=0;

  284.                      YE=0;

  285.                    delay2();

  286.             }

  287. ////////////////////////

  288.                      P2=table1[e];

  289.                      RS=1;

  290.                      RW=0;

  291.                      YE=0;

  292.                      P2=0x06;  //光標右移顯示整數十位

  293.                      delay2();

  294. ////////////////////////

  295.                      P2=table1[f];

  296.                      RS=1;

  297.                      RW=0;

  298.                      YE=0;

  299.                      P2=0x06;  //光標右移顯示整數個位

  300.                      delay2();

  301. /////////////////////////////////////////////////

  302.                      P2=0xc0;//換行顯示

  303.                      delay2();

  304.               for(i=0;i<16;i++)

  305.           {        

  306.                      P2=0xc0;

  307.                      delay2();

  308.                      P2=table3[i];

  309.                      RS=1;

  310.                      RW=0;

  311.                      YE=0;

  312.              }

  313. }







  314. //-----------數據計算程序--------------

  315. #define uchar unsigned char

  316. static uchar j=0;

  317. ///----------------------------------------------------

  318. void jishuan(uchar i,uchar e) //i為十位,e為個位

  319. {

  320.   j=((i*10)+e);

  321. }

  322. ///-----------------------------------------------------

  323. uchar jishuan_ok()

  324. {

  325.   return (j);

  326. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品免费一区 | 干狠狠| 伊人久久综合 | 国产a爽一区二区久久久 | 日韩av一区二区在线观看 | 国产高清精品一区二区三区 | 欧美性网站 | 天天激情综合 | 久久久这里都是精品 | 国产高清视频一区 | 国产精品久久久久久 | 99reav| 国产精品视频一区二区三区 | 亚洲男女视频在线观看 | 日韩欧美亚洲 | 嫩草视频在线 | 免费三级网站 | 亚洲一区 中文字幕 | 亚洲成人999| 中文字幕成人av | 91九色在线观看 | 免费在线视频精品 | 国产精品一区三区 | 国产精品美女一区二区 | 日产精品久久久一区二区福利 | 伊人激情综合网 | 狠狠av| 国产美女视频一区 | 91免费福利在线 | 久久国内 | 成人福利在线视频 | 麻豆久久精品 | 久久久久国产一区二区三区四区 | 中文字幕一区二区三区乱码图片 | 精品久久久久久久人人人人传媒 | 亚洲黄色在线免费观看 | 日韩三级视频 | 国产精品伦一区二区三级视频 | 中文字幕精品一区二区三区在线 | 欧美精品一区二区在线观看 | 香蕉久久久 |