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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自制單片機STC12C5A60S2+1602電壓表

  [復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 405616736 于 2020-4-25 10:14 編輯

LCD1602 D0~D7接P0口,RS=P3.1,RW=P3.2,sbit E=P3.3。
電壓測試口接P1.0。供電電壓要穩定5V才能準確測量。另外因為沒有加電阻,只能測5V以下電壓。
廢話少說,直接上實物圖。



單片機源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. #define LCD P0                //LCD1602數據接口
  4. sbit RS=P3^1;                //設置RS引腳接口,RS=0,指令寄存器;RS=1,數據寄存器
  5. sbit RW=P3^2;                //設置R/W引腳接口,R/W=0,寫;R/W=1,讀
  6. sbit E=P3^3;                //設置E引腳接口,E允許信號

  7. /*Declare SFR associated with the ADC */
  8. sfr ADC_CONTR=0xBC;                //ADC control register
  9. sfr ADC_RES=0xBD;                //ADC high 8-bit result register
  10. sfr ADC_LOW2=0xBE;                //ADC low 2-bit result register
  11. sfr P1ASF=0x9D;                //P1 secondary function control register

  12. unsigned char V[]="000000";
  13. unsigned int ADC_temp=0;

  14. /*Define ADC operation const for ADC_CONTR*/
  15. #define ADC_POWER   0x80                //ADC power control bit
  16. #define ADC_FLAG    0x10                //ADC complete flag
  17. #define ADC_START   0x08                //ADC start control bit
  18. #define ADC_SPEEDLL 0x00                //420 clocks
  19. #define ADC_SPEEDL  0x20                //280 clocks
  20. #define ADC_SPEEDH  0x40                //140 clocks
  21. #define ADC_SPEEDHH 0x60                //70 clocks


  22. /******************************
  23.                 延時函數
  24. ******************************/
  25. void Delay(unsigned int n)
  26.         {
  27.     unsigned int i=0,j=0;
  28.     for(i=0;i<n;i++)
  29.                 for(j=0;j<123;j++);
  30.         }

  31. /******************************
  32.                 初始化ADC
  33. ******************************/
  34. void InitADC()
  35.         {
  36.                 P1ASF=0xff;
  37.     ADC_RES=0;
  38.     ADC_CONTR=ADC_POWER | ADC_SPEEDLL;
  39.     Delay(2);
  40.                 }

  41. /******************************
  42.                 讀取ADC
  43. ******************************/
  44. unsigned char GetADCResult(unsigned char ch)
  45.         {
  46.                 ADC_CONTR=ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  47.                 _nop_();
  48.                 _nop_();
  49.                 _nop_();
  50.                 _nop_();
  51.                 while (!(ADC_CONTR & ADC_FLAG));
  52.                 ADC_CONTR &=~ADC_FLAG;
  53.                 return ADC_RES;
  54.                 }

  55. /******************************
  56.                 LCD忙檢測
  57. ******************************/
  58. void CheckBusy(void)
  59.         {
  60.                 unsigned int nTimeOut=0;
  61.                 RS=0;
  62.                 RW=1;
  63.                 E=0;
  64.                 E=1;
  65.                 while((LCD&0x80)&&(++nTimeOut !=0));
  66.                 E=0;
  67.                 RS=0;
  68.                 RW=1;
  69.         }

  70. /******************************
  71.                 LCD發送命令或數據
  72. ******************************/
  73. void SendCmdorData(unsigned char byCmdorData,bit DI)
  74.         {
  75.                 CheckBusy();
  76.                 RS=DI;
  77.                 RW=0;
  78.                 E=0;
  79.                 LCD=byCmdorData;
  80.                 Delay(5);
  81.                 E=1;
  82.                 Delay(5);
  83.                 E=0;
  84.                 RW=1;
  85.                 RS=0;
  86.         }

  87. /******************************
  88.                 LCD初始化子
  89. ******************************/
  90. void Init(void)
  91.         {
  92.                 SendCmdorData(0x38,0);
  93.                 Delay(50);
  94.                 SendCmdorData(0x01,0);
  95.                 Delay(50);
  96.                 SendCmdorData(0x06,0);
  97.                 Delay(50);
  98.                 SendCmdorData(0x0c,0);
  99.                 Delay(50);
  100.         }

  101. /******************************
  102.                 地址轉換
  103. ******************************/
  104. void SetAddress(unsigned char x,y)
  105.         {
  106.                 unsigned char byAddress;
  107.                 switch(x)
  108.                         {
  109.                         case 1:
  110.                                 byAddress=0x80+y;
  111.                         break;
  112.                         case 2:
  113.                                 byAddress=0xC0+y;
  114.                         break;
  115.                         default:break;
  116.                         }
  117.                         SendCmdorData(byAddress,0);
  118.         }
復制代碼
所有資料51hei提供下載:
5.zip (1.43 KB, 下載次數: 175)




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:743360 發表于 2020-9-16 11:33 | 只看該作者
樓主有完整的keil工程文件嗎?
回復

使用道具 舉報

板凳
ID:743360 發表于 2020-9-16 11:33 | 只看該作者
樓主,有完整的keil工程文件嗎?
回復

使用道具 舉報

地板
ID:691190 發表于 2020-10-30 07:30 | 只看該作者
用不了哦
回復

使用道具 舉報

5#
ID:134345 發表于 2020-11-10 00:19 | 只看該作者
這么巧我用的開發板跟你一樣的
回復

使用道具 舉報

6#
ID:134345 發表于 2020-11-10 01:39 | 只看該作者
可以用,跟樓主一樣的開發板,由于原來的lcd排針占用了p1口所以要改針腳。按照樓主的引腳接線完全沒有問題
回復

使用道具 舉報

7#
ID:852236 發表于 2020-12-2 22:26 | 只看該作者
這個程序是完整的嗎?頭文件樓主是自己改過了嗎?STC12C5A60S2 不是這個頭文件嗎?
回復

使用道具 舉報

8#
ID:579397 發表于 2022-3-28 01:02 | 只看該作者
snygah 發表于 2020-9-16 11:33
樓主有完整的keil工程文件嗎?

有的,附近里面有
回復

使用道具 舉報

9#
ID:579397 發表于 2022-3-28 01:02 | 只看該作者

可以用吧,我都測試過的
回復

使用道具 舉報

10#
ID:579397 發表于 2022-3-28 01:02 | 只看該作者
chang199202 發表于 2020-11-10 00:19
這么巧我用的開發板跟你一樣的

哈哈哈,淘寶就這個便宜
回復

使用道具 舉報

11#
ID:579397 發表于 2022-3-28 01:03 | 只看該作者
chang199202 發表于 2020-11-10 01:39
可以用,跟樓主一樣的開發板,由于原來的lcd排針占用了p1口所以要改針腳。按照樓主的引腳接線完全沒有問題

嗯嗯,程序里面我標注好的了,改一下就可以用了
回復

使用道具 舉報

12#
ID:579397 發表于 2022-3-28 01:03 | 只看該作者
本帖最后由 405616736 于 2022-3-28 18:14 編輯
rambo.hu 發表于 2020-12-2 22:26
這個程序是完整的嗎?頭文件樓主是自己改過了嗎?STC12C5A60S2 不是這個頭文件嗎?

附件里面的是完整的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩三 | 99精品国产一区二区三区 | 久久精品久久久久久 | 免费h在线 | www.亚洲一区 | 亚洲国产黄色av | 亚洲91精品 | 精品1区2区 | 男女午夜免费视频 | 欧洲色| 免费观看一级毛片 | 一本一道久久a久久精品综合蜜臀 | 国产成人久久精品一区二区三区 | 国产片侵犯亲女视频播放 | 亚洲成色777777在线观看影院 | 羞羞的视频免费在线观看 | 狠狠色综合欧美激情 | 日韩中文字幕第一页 | 国产成人在线免费 | 欧美一级在线 | 日韩一区二区在线视频 | 日本成人中文字幕在线观看 | 天天干狠狠操 | 九九精品久久久 | 四虎影院欧美 | 精品欧美黑人一区二区三区 | 一区二区国产精品 | 精品免费观看 | 国产精品免费播放 | 欧洲性生活视频 | 午夜久久久久久久久久一区二区 | 91视频网 | 天堂一区二区三区 | 欧美一区二区三区在线观看视频 | 欧美亚州 | 亚洲喷水| 欧美日韩a | 国产在线网站 | 全免费a级毛片免费看视频免 | 久久国产精品视频观看 | a在线视频 |