qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

基于51单片机的交流电压的测量编程

时间2023-04-18 18:10:53 提问来自 江苏省无锡市 的网友 分类创作 浏览529
#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;;}}}

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 医学生劳动实践课程的心得体会 下一篇 作为“强国一代”,你如何肩负时代使命,谱写人生华章