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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2434|回復: 1
打印 上一主題 下一主題
收起左側(cè)

STC12C5A60S2兩路AD采集用LCD1602顯示程序源碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:226033 發(fā)表于 2017-8-9 11:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
測試可行。
全部資料下載地址:
STC12C5A60S2兩路AD采集用LCD1602顯示.doc (36.5 KB, 下載次數(shù): 59)

單片機源程序:
  1. #include <STC12C5A.H>
  2. #include<intrins.h>
  3. #include "stdio.h"
  4. #define ulong unsigned long
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. uchar data adc _at_        0x30;
  8. uchar data adc1 _at_ 0x31;
  9. sbit E=P2^7;                //1602使能引腳
  10. sbit RW=P2^6;                //1602讀寫引腳       
  11. sbit RS=P2^5;                //1602數(shù)據(jù)/命令選擇引腳
  12. void SendByte(unsigned char dat);
  13. void SendStr(unsigned char *s);
  14. void L1602_string(uchar hang,uchar lie,uchar *p);
  15. void L1602_char(uchar hang,uchar lie,char sign);
  16. uchar AD();
  17. uchar AD1();
  18. void DelayUs2x(unsigned char t)
  19. {   
  20. while(--t);
  21. }
  22. /*------------------------------------------------
  23. mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  24. unsigned char 是定義無符號字符變量,其值的范圍是
  25. 0~255 這里使用晶振12M,精確延時請使用匯編
  26. ------------------------------------------------*/
  27. void DelayMs(unsigned char t)
  28. {
  29.      
  30. while(t--)
  31. {
  32.      //大致延時1mS
  33.      DelayUs2x(245);
  34.          DelayUs2x(245);
  35. }
  36. }

  37. void delay()
  38. {
  39.         _nop_();
  40.         _nop_();
  41. }

  42. void Delay(uint del)
  43. {
  44.         uint i,j;
  45.         for(i=0;i<del;i++)
  46.         for(j=0;j<=148;j++)
  47.         {
  48.         }       
  49. }
  50. /********************************************************************
  51. * 名稱 : bit Busy(void)
  52. * 功能 : 這個是一個讀狀態(tài)函數(shù),讀出函數(shù)是否處在忙狀態(tài)
  53. * 輸入 : 輸入的命令值
  54. * 輸出 : 無
  55. ***********************************************************************/
  56. void Busy(void)
  57. {
  58.         bit busy_flag = 1;
  59.         P0 = 0xff;
  60.         RS = 0;
  61.         delay();
  62.         RW = 1;
  63.         delay();
  64.         E = 1;
  65.         //Delay(1);
  66.         while(1)
  67.         {
  68.                 busy_flag = (bit)(P0 & 0x80);
  69.                 if(busy_flag == 0)
  70.                 {
  71.                         break;
  72.                 }
  73.         }
  74.         E = 0;
  75. }
  76. /********************************************************************
  77. * 名稱 : wcmd(uchar del)
  78. * 功能 : 1602命令函數(shù)
  79. * 輸入 : 輸入的命令值
  80. * 輸出 : 無
  81. ***********************************************************************/
  82. void wcmd(uchar del)
  83. {
  84.         RS = 0;
  85.         delay();
  86.         RW = 0;
  87.         delay();
  88.         E = 0;
  89.         delay();
  90.         P0 = del;
  91.         delay();
  92.         E = 1;
  93.         delay();
  94.         E = 0;
  95. }

  96. /********************************************************************
  97. * 名稱 : wdata(uchar del)
  98. * 功能 : 1602寫數(shù)據(jù)函數(shù)
  99. * 輸入 : 需要寫入1602的數(shù)據(jù)
  100. * 輸出 : 無
  101. ***********************************************************************/

  102. void wdata(uchar del)
  103. {
  104.         delay();
  105.         RS = 1;
  106.         delay();
  107.         RW = 0;
  108.         delay();
  109.         E = 0;
  110.         delay();
  111.         P0 = del;
  112.     delay();
  113.         E = 1;
  114.         delay();
  115.         E = 0;
  116. }

  117. /********************************************************************
  118. * 名稱 : L1602_init()
  119. * 功能 : 1602初始化,請參考1602的資料
  120. * 輸入 : 無
  121. * 輸出 : 無
  122. ***********************************************************************/
  123. void L1602_init(void)
  124. {
  125.         Delay(15);
  126.         wcmd(0x38);
  127.         Delay(5);
  128.         wcmd(0x38);
  129.         Delay(5);
  130.         wcmd(0x38);
  131.         wcmd(0x38);
  132.         Busy();
  133.         wcmd(0x08);
  134.         Busy();       
  135.         wcmd(0x01);
  136.         Busy();
  137.         wcmd(0x06);
  138.         Busy();
  139.         wcmd(0x0c);
  140. }

  141. /********************************************************************
  142. * 名稱 : L1602_char(uchar hang,uchar lie,char sign)
  143. * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b" ,調(diào)用該函數(shù)如下
  144.                  L1602_char(1,5,'b')
  145. * 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
  146. * 輸出 : 無
  147. ***********************************************************************/
  148. void L1602_char(uchar hang,uchar lie,char sign)
  149. {
  150.         uchar a;
  151.         if(hang == 1)
  152.         {
  153.                 a = 0x80;
  154.         }
  155.         if(hang == 2)
  156.         {
  157.                 a = 0xc0;
  158.         }
  159.         a = a + lie - 1;
  160.         Busy();
  161.         wcmd(a);
  162.         Busy();
  163.         wdata(sign);
  164. }

  165. /********************************************************************
  166. * 名稱 : L1602_string(uchar hang,uchar lie,uchar *p)
  167. * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調(diào)用該函數(shù)如下
  168.                   L1602_string(1,5,"ab cd ef;")
  169. * 輸入 : 行,列,需要輸入1602的數(shù)據(jù)
  170. * 輸出 : 無
  171. ***********************************************************************/
  172. void L1602_string(uchar hang,uchar lie,uchar *p)
  173. {
  174.         uchar a;
  175.         if(hang == 1)
  176.         {
  177.                 a = 0x80;
  178.         }
  179.         if(hang == 2)
  180.         {
  181.                 a = 0xc0;
  182.         }
  183.         a = a + lie - 1;
  184.         while(1)
  185.         {
  186.                 Busy();
  187.                 wcmd(a);
  188.                 Busy();
  189.                 wdata(*p);
  190.                 a++;
  191.                 p++;                       
  192.                 if((*p == '\0')||(a==0x90)||(a==0xd0))
  193.                 {
  194.                         break;
  195.                 }
  196.         }
  197. }

  198. uchar AD()
  199. {
  200.    ulong i;
  201.    uchar star;
  202.    ADC_CONTR|=0x80;
  203.    for(i=0;i<10000;i++);
  204.    P1ASF=0x01;
  205.    ADC_CONTR|=0XE1;
  206.    for(i=0;i<10000;i++);
  207.    while(1)
  208.    {
  209.       ADC_CONTR|=0x08;
  210.           star=0;
  211.           while(star==0)
  212.           {
  213.               star=ADC_CONTR&0x10;
  214.           }
  215.             ADC_CONTR&=0x00;
  216.                 adc=ADC_RES;
  217.                         //adc<<=2;
  218.                 //adc+=ADC_RESL;
  219.                 return adc;
  220.    }
  221. }

  222. uchar AD1()
  223. {
  224.    ulong i;
  225.    uchar star;
  226.    ADC_CONTR|=0x80;
  227.    for(i=0;i<10000;i++);
  228.    P1ASF=0;
  229.    ADC_CONTR|=0XE0;
  230.    for(i=0;i<10000;i++);
  231.    while(1)
  232.    {
  233.       ADC_CONTR|=0x08;
  234.           star=0;
  235.           while(star==0)
  236.           {
  237.               star=ADC_CONTR&0x10;
  238.           }
  239.             ADC_CONTR&=0x00;
  240.                 adc1=ADC_RES;
  241.         //        adc1<<=2;
  242.         //        adc1+=ADC_RESL;
  243.                 return adc1;
  244.    }
  245. }
  246. void main()
  247. {
  248.            float i,j;
  249.         unsigned char a[16];
  250.         unsigned char b[16];
  251.         L1602_init();
  252.         while(1)
  253.         {
  254.       {
  255.           i=AD()*5/256;
  256.         sprintf(a," DA1=%4.2f v",i);
  257.         L1602_string(2,0,a);
  258.         DelayMs(1);       
  259.     j=AD1()*5/256;
  260.         sprintf(b," DC2=%4.2f v",j);
  261.         L1602_string(1,0,b);
  262.            }           
  263.         }
  264. }
復制代碼


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

使用道具 舉報

沙發(fā)
ID:105624 發(fā)表于 2018-2-25 14:30 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线成人av | 一区二区亚洲 | 中文字幕免费视频 | av性色全交蜜桃成熟时 | 91文字幕巨乱亚洲香蕉 | 成人精品国产免费网站 | 国产第一亚洲 | 精品欧美一区二区三区久久久 | 精品香蕉一区二区三区 | 一区二区三区四区国产 | 欧美精品一区二区三区在线 | 国产目拍亚洲精品99久久精品 | 黄网站在线观看 | 久久久国产一区二区三区四区小说 | 国产免费一区二区三区 | 中文字幕av网站 | 国产电影一区二区 | 亚洲精品在线视频 | 91精品国产综合久久婷婷香蕉 | 一级片在线视频 | a级网站 | 中文字幕国产一区 | 午夜精品影院 | 国产精品美女久久久久aⅴ国产馆 | 在线看片网站 | 亚洲伊人精品酒店 | 天天插天天操 | 亚洲系列第一页 | 久久亚洲国产 | 日韩视频在线免费观看 | 精品三级在线观看 | 超碰免费在 | 亚洲第一天堂无码专区 | 精品久久久久久久久久久久 | 欧美中文字幕 | 在线欧美激情 | 成人小视频在线观看 | 第一区在线观看免费国语入口 | 久久精品视频一区二区三区 | 精品自拍视频在线观看 | 国产丝袜一区二区三区免费视频 |