欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡單的單片機數字電壓表+測量滑動變阻器電阻轉化成0到5v顯示

[復制鏈接]
ID:766130 發表于 2020-6-1 09:40 | 顯示全部樓層 |閱讀模式
功能:對RV1電壓進行實時檢測,并在LCD1602上顯示保留兩位小數,RV1電壓采用ADC0809進行采集。
轉換原理:模擬量由0#通道輸入(ADDA,ADDB,ADDC均接地);

      時鐘脈沖CLOCK采用定時器0產生5kHz時鐘,由P3.3輸出;

      轉換啟動脈沖(START和ALE)采用軟件模擬,由P3.4輸出;

      轉換結束信號(EOC)由軟件查詢P3.5狀態獲得;

      轉換結果使能脈沖(OE)采用軟件模擬,由P3.6輸出。

protues仿真圖如下

protues仿真圖

protues仿真圖


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

  3. sbit RS=P3^0;
  4. sbit RW=P3^1;
  5. sbit E=P3^2;
  6. sbit CLOCK=P3^3;
  7. sbit START=P3^4;
  8. sbit EOC=P3^5;
  9. sbit OE=P3^6;

  10. unsigned char str[]={"0123456789"};

  11. void delay(unsigned int t){
  12.           unsigned int i=0,j=0;
  13.           for(i=0;i<t;i++)
  14.              for(j=0;j<125;j++);
  15. }

  16. void write_command(unsigned char dat){
  17.         RS=0;
  18.         RW=0;
  19.         E=0;
  20.         P2=dat;
  21.         delay(2);
  22.         E=1;
  23.         E=0;
  24. }
  25.         
  26. void write_data(unsigned char dat){
  27.         RS=1;
  28.         RW=0;
  29.         E=0;
  30.         P2=dat;
  31.         delay(2);
  32.         E=1;
  33.         E=0;
  34. }
  35.         


  36. void main () {
  37.         unsigned char temp =0;
  38.         float VOL=0.0;
  39. //LCD初始化
  40.         write_command(0x38);//顯示模式設置
  41.         delay(5);
  42.         write_command(0x08);
  43.         delay(5);
  44.         write_command(0x01);
  45.         delay(5);
  46.         write_command(0x06);
  47.         delay(5);
  48.         write_command(0x0C);
  49.         delay(5);

  50. //定時器初始化
  51.         TMOD=0x02;
  52.         TH0=0x9c;//自動重裝
  53.         TL0=0x9c;
  54.         
  55.         EA=1;
  56.         ET0=1;
  57.         TR0=1;
  58.         
  59.         while(1){
  60.                 OE=0;
  61.                 START=0;
  62.                 START=1;
  63.                 START=0;
  64.                 delay(1);
  65.                 while(!EOC);//空等待
  66.                 OE=1;
  67.                 temp=P1;
  68.                 OE=0;
  69.                
  70. //顯示
  71.                
  72.           write_command(0x80);
  73.                 delay(5);
  74.           write_data('V');
  75.                 delay(5);               
  76.                 write_data('o');
  77.                 delay(5);        
  78.                 write_data('l');
  79.                 delay(5);        
  80.                 write_data(':');
  81.                 delay(5);        
  82.                
  83.                 VOL=temp*5/255;
  84.         
  85.                 write_data(str[(int)VOL]);
  86.                 delay(5);
  87.           write_data('.');
  88.                 delay(5);               
  89.                 write_data(str[(int)(VOL*10)%10]);
  90.                 delay(5);        
  91.                 write_data(str[(int)(VOL*100)%10]);
  92.                 delay(5);
  93.           write_data('V');
  94.                 delay(5);                        
  95.                
  96.                
  97.         }
  98.         
  99. }

  100. void timer0() interrupt 1 {
  101.         CLOCK=~CLOCK;
  102.                
  103. }
  104.          
復制代碼

所有資料51hei提供下載:
5.rar (51.85 KB, 下載次數: 67)

評分

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

查看全部評分

回復

使用道具 舉報

ID:871746 發表于 2021-1-9 10:41 | 顯示全部樓層
請問一下 代碼中空等待,和最后時鐘取反是什么意思
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表