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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機+MQ135+12864顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:430104 發表于 2018-11-27 16:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在51單片機的基礎上,通過12864顯示屏顯示MQ135測量的數據

單片機源程序如下:
  1. //#include <reg52.h>
  2. #include <string.h>
  3. #include <STC12C5A60S2.H>

  4. #define uchar unsigned char
  5. #define uint  unsigned int

  6. unsigned char ge, shi, bai, qian,dian1,dian2;

  7. typedef unsigned char BYTE;
  8. typedef unsigned long  adc32;
  9. BYTE  ADC_DATA16;

  10. uchar          table1[]={
  11. "                "
  12. "   0.    mg/m3  "
  13. "  甲醛含量:    "
  14. "                "};

  15. uchar code IC_DAT[];
  16. uchar code pic1[];
  17. uchar code pic2[];
  18. uchar code pic3[];

  19. uchar code IC_DAT[]={
  20. "智能甲醛凈化設備"
  21. "    15物聯網    "  
  22. "                "
  23. "    鄭禹臣     "
  24. };

  25. sbit RS  = P0^7;
  26. sbit WRD = P0^6;
  27. sbit E   = P0^5;
  28. sbit PSB = P0^5;
  29. sbit RES = P0^3;

  30. beep1 = 0x07;
  31. beep2 = 0xff;

  32. void TransferData(char data1,bit DI);
  33. void delayms(uint n);
  34. void delay(uint m);
  35. void lcd_mesg(uchar *adder1);

  36. void ADC_Init(void);                //ADC初始化
  37. BYTE GetADCResult(BYTE ch);        //獲取ADC通道的值        
  38. void ShowResult(BYTE ch);        //計算結果
  39. BYTE filtering(BYTE ch);        //濾波

  40. void ADC_Init(void)
  41. {
  42.         P1ASF = 0xff;        //開啟ADC通道
  43.         ADC_RES = 0;        //復位
  44.         ADC_CONTR = 0x88;
  45.         delay(2);
  46.          
  47. }

  48. BYTE GetADCResult(BYTE ch)
  49. {
  50.         uchar V;
  51.         ADC_CONTR = 0x88 | 0x00 | ch ;
  52.         delay(1);
  53.         while (!(ADC_CONTR & 0x10));
  54.         ADC_CONTR &= ~0x10;
  55.         V = ADC_RES        << 2 |        ADC_RESL;
  56.         return V;        
  57. }


  58. void ShowResult(BYTE ch)
  59. {

  60.          P0 |= beep1;
  61.         P2 |= beep2;
  62.         ADC_DATA16 = GetADCResult(ch);
  63.         ge = ADC_DATA16 % 10                     + '0' ;
  64.           shi = ADC_DATA16 / 10 % 10          + '0' ;
  65.           bai = ADC_DATA16 / 100 % 10  + '0' ;
  66.           qian = ADC_DATA16 / 1000% 10 + '0' ;


  67.         table1[23] = ge;
  68.         table1[22] = shi;
  69.         table1[21] = bai;
  70.                                                                                    
  71.         if(((shi >= 56)&&(ge >= 48))||(bai == 49))
  72.         {
  73.                 P0 &= ~beep1;
  74.                 P2 &= ~beep2;
  75.         }
  76. }


  77. /********************************************************************
  78. * 名稱 : Convert(uchar In_Date)
  79. * 功能 : 因為電路設計時,P0.0--P0.7接法剛好了資料中的相反,所以設計該函數。
  80. * 輸入 : 1602資料上的值
  81. * 輸出 : 送到1602的值
  82. ***********************************************************************/
  83. unsigned char Convert(unsigned char In_Date)
  84. {
  85.     unsigned char i, Out_Date = 0, temp = 0;
  86.     for(i=0; i<8; i++)
  87.     {
  88.         //temp = (In_Date >> i) & 0x01;
  89.         //Out_Date |= (temp << (7 - i));
  90.                 Out_Date=  In_Date;

  91.     }
  92.     return Out_Date;
  93. }

  94. void initinal(void)           //LCD字庫初始化程序
  95. {
  96.   delay(40);             //大于40MS的延時程序
  97.   PSB=1;                 //設置為8BIT并口工作模式
  98.   delay(1);              //延時
  99.   RES=0;                 //復位
  100.   delay(1);              //延時
  101.   RES=1;                 //復位置高
  102.   delay(10);
  103.   TransferData(0x30,0);  //Extended Function Set :8BIT設置,RE=0: basic instruction set, G=0 :graphic display OFF
  104.   delay(100);            //大于100uS的延時程序
  105.   TransferData(0x30,0);  //Function Set
  106.   delay(37);             ////大于37uS的延時程序
  107.   TransferData(0x08,0);  //Display on Control
  108.   delay(100);            //大于100uS的延時程序
  109.   TransferData(0x10,0);  //Cursor Display Control光標設置
  110.   delay(100);            //大于100uS的延時程序
  111.   TransferData(0x0C,0);  //Display Control,D=1,顯示開
  112.   delay(100);            //大于100uS的延時程序
  113.   TransferData(0x01,0);  //Display Clear
  114.   delay(10);             //大于10mS的延時程序
  115.   TransferData(0x06,0);  //Enry Mode Set,光標從右向左加1位移動
  116.   delay(100);            //大于100uS的延時程序
  117. }

  118. /********************************************************************
  119. * 名稱 : Main()
  120. * 功能 : 主函數
  121. * 輸入 : 無
  122. * 輸出 : 無
  123. ***********************************************************************/
  124. void    main(void)
  125. {
  126.           ADC_Init();
  127.         initinal();                    //調用LCD字庫初始化程序
  128.         delayms(240);
  129.         while(1)
  130.         {
  131. //                initinal();
  132. //           initina2();            //調用LCD顯示圖片(擴展)初始化程序
  133.            
  134. //           link(table1,GetADCResult(1));
  135. //           TransferData(ADC_DATA16,1);                        
  136. //     DisplayGraphic(pic2);  //顯示圖片2
  137.                   ShowResult(1);
  138. //       delay(100);            //大于100uS的延時程序
  139.        lcd_mesg(table1);      //顯示中文漢字1
  140.        delayms(100);

  141. //     initinal();                    //調用LCD字庫初始化程序
  142. //     delay(100);            //大于100uS的延時程序
  143. //     lcd_mesg(IC_DAT2);     //顯示中文漢字2
  144. //     delayms(240);
  145. //           delayms(240);
  146. //           initinal();  
  147.         }
  148. }

  149. /********************************************************************
  150. * 名稱 : Main()
  151. * 功能 : 主函數
  152. * 輸入 : 無
  153. * 輸出 : 無
  154. ***********************************************************************/
  155. void   lcd_mesg(uchar  *adder1)
  156. {
  157.         unsigned char i;
  158.         TransferData(0x80,0);  //Set Graphic Display RAM Address
  159.         delay(100);
  160.         for(i=0;i<32;i++)
  161.                 {
  162.                           TransferData(*adder1,1);
  163.                            adder1++;
  164.                 }

  165.         TransferData(0x90,0);  //Set Graphic Display RAM Address
  166.         delay(100);
  167.         for(i=32;i<64;i++)
  168.                 {
  169.                           TransferData(*adder1,1);
  170.                            adder1++;
  171.                 }
  172. }

  173. /********************************************************************
  174. * 名稱 : Main()
  175. * 功能 : 主函數
  176. * 輸入 : 無
  177. * 輸出 : 無
  178. ***********************************************************************/
  179. void    TransferData(char data1,bit DI)  //傳送數據或者命令,當DI=0是,傳送命令,當DI=1,傳送數據.
  180. {
  181.   WRD=0;
  182.   RS=DI;
  183.   delay(1);
  184.   P2=Convert(data1);
  185.   E=1;
  186.   delay(1);
  187.   E=0;
  188. }

  189. /********************************************************************
  190. * 名稱 : Main()
  191. * 功能 : 主函數
  192. * 輸入 : 無
  193. * 輸出 : 無
  194. ***********************************************************************/
  195. void    delayms(unsigned int n)            //延時10×n毫秒程序
  196. {
  197.    unsigned int i,j;
  198.    for(i=0;i<n;i++)
  199.       for(j=0;j<2000;j++);
  200. }

  201. /********************************************************************
  202. * 名稱 : Main()
  203. * 功能 : 主函數
  204. * 輸入 : 無
  205. * 輸出 : 無
  206. ***********************************************************************/
  207. void    delay(unsigned int m)            //延時程序
  208. {
  209.    unsigned int i,j;
  210.    for(i=0;i<m;i++)
  211.       for(j=0;j<10;j++);
  212. }
復制代碼

所有資料51hei提供下載:
momo.rar (54.05 KB, 下載次數: 40)


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

使用道具 舉報

沙發
ID:1 發表于 2018-11-28 00:27 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美日本在线 | 国产一区二区在线免费观看 | 欧美一区二区在线 | 亚洲日本激情 | 亚洲美女一区二区三区 | 黄色毛片免费看 | 狠狠干天天干 | 欧美久久精品一级黑人c片 91免费在线视频 | 久久久久久久久久久久久久国产 | 国产99精品| 免费观看国产视频在线 | 成人二区三区 | 中文字幕视频在线看 | 日韩av在线一区 | 久久久久国产 | 97国产精品 | 国产视频h | 色综合久久88色综合天天 | 精品日韩在线观看 | 日韩三级免费观看 | 人人爱干 | 国产欧美一级二级三级在线视频 | 国产在线a视频 | 在线观看黄视频 | 一区二区三区四区国产 | 国产精品久久久久久高潮 | 一区二区国产精品 | 天天搞夜夜操 | 刘亦菲国产毛片bd | 亚洲成人毛片 | 99久久久无码国产精品 | 国产99热精品 | 亚洲一区二区三区在线观看免费 | 亚洲成年影院 | 亚洲高清在线免费观看 | 草草精品 | 日韩高清中文字幕 | 欧美中文字幕一区 | 在线国产一区二区三区 | 天天干,夜夜操 | 亚洲精品一区二三区不卡 |