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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+pfc8591電壓表(可選分壓模式)Proteus仿真+代碼設計

[復制鏈接]
跳轉到指定樓層
樓主
簡易電壓表仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


使用方法:
打開電路圖并運行
按鍵值1,可進入一倍分壓模式
按鍵值2,可進入2.5倍分壓模式
按鍵值3,可進入10倍分壓模式
按鍵值4,可進入25倍分壓模式

(注:最終1602顯示的結果是分壓后的電壓再乘以倍數,也即1602會顯示真實的電壓值)

單片機源程序如下:
  1. #include <reg52.H>
  2. #include "iic_driver.h"
  3. #include "lcd1602_middle_layer.h"
  4. #include "keypad_driver.h"
  5. #include "tim_1680.h"
  6. #include "main.h"
  7. #include <string.h>  
  8. #include "pfc8591.h"
  9. #include <stdio.h>
  10. void P_Vinit()
  11. {
  12.         P_1 = 1;
  13.         P_2_5 = 1;
  14.         P_10 =1;
  15.         P_25 = 1;
  16.         P_250 = 1;
  17.         P_500 = 1;
  18.         P_1000 = 1;
  19. }
  20. void ChangeV(float *ucData)
  21. {
  22.           if(P_1 == 0 )
  23.                 {
  24.                         *ucData = *ucData;
  25.                 }
  26.                 else if(P_2_5 == 0)
  27.                 {
  28.                         *ucData = (*ucData) * 2.5;
  29.                 }
  30.                 else if(P_10 == 0)
  31.                 {
  32.                         *ucData = (*ucData) * 10;
  33.                 }
  34.                 else if(P_25 == 0)
  35.                 {
  36.                         *ucData = (*ucData) * 25;
  37.                 }
  38.                 else if(P_250 == 0)
  39.                 {
  40.                   *ucData = (*ucData) * 250;
  41.                 }               
  42.                 else if(P_500 == 0)
  43.                 {
  44.                         *ucData = (*ucData) * 500;
  45.                 }               
  46.                 else if(P_1000 == 0)
  47.                 {
  48.             *ucData = (*ucData) * 1000;
  49.                 }       
  50.                 else
  51.                 {
  52.                        
  53.                 }
  54.        
  55. }
  56. void main()
  57. {
  58.   unsigned char i;
  59.         float Vt;
  60.         float ucData;
  61.         char Str[20];
  62.         vTim_Initialization();
  63.         vLCD1602_Initialization();
  64.         P_Vinit();
  65.         P_1 = 0;
  66.         while(1)
  67.         {
  68.                 if(ucKeyData_main <= '9' && ucKeyData_main >= '0')
  69.                 {
  70.                         switch(ucKeyData_main)
  71.                         {
  72.                                 case '1': P_Vinit();P_1 = 0;  break;
  73.                                 case '2': P_Vinit();P_2_5 = 0;break;
  74.                                 case '3': P_Vinit();P_10 = 0;break;
  75.                                 case '4': P_Vinit();P_25 = 0;break;
  76.                                 case '5': P_Vinit();P_250 = 0;break;
  77.                                 case '6': P_Vinit();P_500 = 0;break;
  78.                                 case '7': P_Vinit();P_1000 =0;break;
  79.                                 default:break;
  80.                         }
  81.                         while(ucKeyData_main != NOKEYDATA);
  82.                 }
  83.                
  84.                 ucData = ucReadADC(CHL);
  85.                 ChangeV(&ucData);

  86.                 Vt = ((float)ucData/255)*5;

  87.                 sprintf(Str,"% 16d",(int)ucData);
  88.                 vLCD1602_write_string(0,0,Str);
  89.                 sprintf(Str,"% 15gV",Vt);
  90.                 vLCD1602_write_string(0,1,Str);
  91.                
  92.         }
  93. }
復制代碼

所有資料51hei提供下載:
簡易電壓表設計.rar (165.55 KB, 下載次數: 36)





評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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