xiaoing.com©

开花即结果 提问即答案

基于51单片机的交流电压的测量编程
原始问题:

基于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;;}}}
基于51单片机的交流电压的测量编程
https://www.xiaoing.com/zhidao/13313.html
AI / 模型Siliconflow
时间 / DATEApril 18, 2023, 6:10 PM
语言zh-CN
IP / 区域江苏 无锡