本帖最后由 全俊瑋 于 2019-4-11 19:54 編輯
這個是由stc15最小系統板和1602加tcl2345 12位的AD構成的一個簡易直流電壓表
用分壓式探測被測電壓經過AD轉換讀取值然后經過轉換公式給1602顯示出來。
IMG_4350.JPG (2.89 MB, 下載次數: 24)
下載附件
實物
2019-4-11 18:33 上傳
00ZNFRTEJ@2QE(C@P89SF~U.png (84.25 KB, 下載次數: 22)
下載附件
2019-4-11 19:52 上傳
15最小系統板是自己買的 1602顯示很簡單的
tcl2543還可以測很多路可以自己加以利用。
單片機源程序如下:
- #include "main.h"
- #include "delay.h"
- #include "lcd1602.h"
- u8 count = 0,i;
- float sum;
- double sum1;
- float sum_l;
- u8 a,b,c,d,e,f,g,h;
- u8 i;
- u8 q1[]={"0123456789"};
- u16 num;
- sbit CLOCK=P3^3; //2543時鐘
- sbit D_IN =P3^4; //2543輸入
- sbit D_OUT=P3^5; //2543輸出
- sbit _CS =P3^6 ;//2543片選
- //sbit RS = P5^0;
- //sbit RW = P5^1;
- //sbit EN = P5^2;
- //sbit LCD1602_Backlight = P5^4;
- void GPIO_config(void)
- {
- P5M0 &= ~(1<<5); //設置P5.5為準雙向口
- P5M1 &= ~(1<<5);
-
- P3M1 &= ~(1<<3);
- P3M0 &= ~(1<<3);
- P3M1 &= ~(1<<4);
- P3M0 &= ~(1<<4);
- P3M1 &= ~(1<<5);
- P3M0 &= ~(1<<5);
-
- P3M1 &= ~(1<<6);
- P3M0 &= ~(1<<6);
-
- P2M1 &= ~(1<<3);
- P2M0 &= ~(1<<3);
-
- P2M1 &= ~(1<<4);
- P2M0 &= ~(1<<4);
-
- //P5M1 &= ~(1<<0);
- //P5M0 &= ~(1<<0);
- //
- //P5M1 &= ~(1<<1);
- //P5M0 &= ~(1<<1);
- //P5M1 &= ~(1<<2);
- //P5M0 &= ~(1<<2);
- P4M1 = 0X00; //設置P4為準雙向IO
- P4M0 = 0X00;
- //P5M1 &= ~(1<<4); //設置P5.4為推挽輸出
- //P5M0 |= (1<<4);
-
- }
- u16 read2543(u8 port)
- {
- u16 ad = 0,i;
- CLOCK = 0;
- _CS = 0;
- port<<=4;
- for(i=0;i<12;i++)
- {
- if(D_OUT) ad|=0x01;
- D_IN=(bit)(port&0x80);
- CLOCK=1;
- delay_ms(3);
- CLOCK=0;
- delay_ms(3);
- port<<=1;
- ad<<=1;
- }
- _CS=1;
- ad>>=1;
- return(ad);
-
- }
- void main(void)
- {
- GPIO_config();
- Init_LCD1602();
- LCD1602_write_com(0x80); //指針指向第1行第0個位置
- LCD1602_write_word("QuanJunwei ");
- LCD1602_write_com(0x80+0x40); //指針指向第2行第0個位置
- LCD1602_write_word("0-5v: ");
- while(1)
- {
- sum = read2543(0);
- sum1=(sum/4096)*5.12;
- sum_l=sum1*100000;
- c=(long)sum_l%1000000/100000;
- d=(long)sum_l%100000/10000;
- e=(long)sum_l%10000/1000;
- //f=(long)sum_l%1000/100;
- g=(long)sum_l%100/10;
- h=(long)sum_l%10;
- LCD1602_write_com(0x80+13);
- LCD1602_write_word("520");
-
- if(sum_l>1000)
-
- {
- delay_ms(100);
- LCD1602_write_com(0x80+0x40);
- LCD1602_write_word("0-5v: ");
- LCD_Write_Char(7,1,q1[c]);
-
- LCD_Write_Char(8,1,'.');
-
- LCD_Write_Char(9,1,q1[d]);
-
- LCD_Write_Char(10,1,q1[e]);
-
- LCD_Write_Char(11,1,q1[f]);
-
- //LCD_Write_Char(12,1,q1[g]);
-
- //LCD_Write_Char(13,1,q1[h]);
-
- LCD_Write_Char(14,1,' ');
-
- LCD_Write_Char(12,1,'V');
- delay_ms(1000);
- delay_ms(500);
- }
- else
- {
- delay_ms(100);
- LCD1602_write_com(0x80+0x40);
- LCD1602_write_word("0-5v: ");
-
- //LCD_Write_Char(5,1,q1[c]);
-
- //LCD_Write_Char(6,1,q1[d]);
-
- LCD_Write_Char(7,1,q1[e]);
-
- LCD_Write_Char(9,1,q1[f]);
-
- LCD_Write_Char(8,1,'.');
-
- LCD_Write_Char(10,1,q1[g]);
-
- LCD_Write_Char(11,1,q1[h]);
-
- //LCD_Write_Char(14,1,'M');
-
- //LCD_Write_Char(15,1,'V');
- delay_ms(1000);
- }
- }
- }
復制代碼
所有資料51hei提供下載:
5V直流電壓表.rar
(98.24 KB, 下載次數: 27)
2019-4-11 18:37 上傳
點擊文件名下載附件
代碼 下載積分: 黑幣 -5
|