找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

簡(jiǎn)單的單片機(jī)數(shù)字電壓表+測(cè)量滑動(dòng)變阻器電阻轉(zhuǎn)化成0到5v顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
功能:對(duì)RV1電壓進(jìn)行實(shí)時(shí)檢測(cè),并在LCD1602上顯示保留兩位小數(shù),RV1電壓采用ADC0809進(jìn)行采集。
轉(zhuǎn)換原理:模擬量由0#通道輸入(ADDA,ADDB,ADDC均接地);

      時(shí)鐘脈沖CLOCK采用定時(shí)器0產(chǎn)生5kHz時(shí)鐘,由P3.3輸出;

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

      轉(zhuǎn)換結(jié)束信號(hào)(EOC)由軟件查詢P3.5狀態(tài)獲得;

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

protues仿真圖如下



單片機(jī)源程序如下:
  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);//顯示模式設(shè)置
  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. //定時(shí)器初始化
  51.         TMOD=0x02;
  52.         TH0=0x9c;//自動(dòng)重裝
  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.          
復(fù)制代碼

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:871746 發(fā)表于 2021-1-9 10:41 | 只看該作者
請(qǐng)問(wèn)一下 代碼中空等待,和最后時(shí)鐘取反是什么意思
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表