基于51单片机的交流电压的测量编程
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^5;//定义蜂鸣器引脚为P2.5口
uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff};//显示数码管的段码
uchar num[8];//存放读取的电压数据
sbit k1=P3^4; //定义K1开关为P3.4口
sbit k2=P3^5; //定义K2开关为P3.5口
void delay(uint z) //延时函数,z为时间延时量
{ uint x , y ; for( x = z ; x > 0 ; x-- ) for( y = 110 ; y > 0 ; y-- ); }
void display() //显示函数,将num[]中的数据依次显示在LED上 { uint i; P1=7; for(i=7;i>1;i--) { P1=(P1<<1); P2=~table[num[i]]; delay(10); } }
void main() { float vout; while(k2==1) { if (k1== 0) { vout=(float)(num[7]*1000+num[6]*100+num[5]*10+num[4])/1000*255/51; if (vout>220) beep= 0 ; else beep = 1 ; }} while ( 1 ) { ADCON(); display(); }}
void ADCON() { uchar i , j , t , h , l ; TMOD = 0X01; TH0 = (65536-46080)/256 ; TLO=(65536-46080)%256;; TRO= 1; for ( i = 7 ; i > 3 ;) { for ( j = 0 ; j < 5 ;) { t++; if (t == 20 ) { t = 0 ;; break;} else continue;} h=ADCRH&224 + ADCRH&31 * 8 / 10 + 4 * 8 / 10;; l=ADCRL&224 + ADCRL&31 * 8 / 10 + 4 * 8 / 10;; num [ --i ] = h/16+l/16*16;;}}}
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!