虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

F-FDG

  • 学生成绩guanli

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score   {   float math;   float english;   float computer;   }; struct student   {   int number;   char name[20];   struct score sco;   float average;   }; struct student stu[N]; void print_menu(void);//输出菜单 void choosemenu(void);//菜单选择 void input_student1(int);//输入学生信息 void input_student2(void);//输入总函数 void input_student3(int &,int);//判断学号是否重复 void input_student4(int,int);//覆盖原信息 void sort_student3(student s[],int);//按照英语成绩排序 void sort_student4(student s[],int);//按照计算机成绩排序 void sort_student2(student s[],int);//按照数学成绩排序 void sort_student5(student s[],int);//按照平均成绩排序 float input_score2(int);//计算学生平均成绩 void print_student2(void);//显示表头 void print_student3(int);//显示学生信息 void print_student1(int);//显示全部学生资料 void sort_student1(void);//排序总函数 void menu(void);//菜单调度总函数 int search_student2(int);//按学号查询学生信息并输出 void search_student3(int);//按平均分最高查询并输出 void search_student1(void);//查询总函数 void delete_student2(int,int);//删除学生信息 void delete_student1(void);//删除总函数 void change_student2(int);//修改学生资料 void change_student1(void);//修改总函数 void input_score3(int);//统计成绩 void input_score1(void);//统计成绩总函数 void print_help(void);//输出帮助信息 void exit_student(void);//退出系统 void save_student(student *,int);//保存学生信息 void main()   {   menu();   } void save_student(student *s,int a)//保存学生信息   {   FILE *fp;     if((fp=fopen("d:\\学生信息.txt","wb"))==NULL)       {       printf("不能打开文件!\n");       }     else       {       printf("保存信息到D盘\n");       fprintf(fp,"本班所有学生具体信息如下:\r\n");       fprintf(fp,"  学号       姓名           数学成绩       英语成绩     计算机成绩     平均成绩\r\n");       for(int i=0;i<a;i++)         {         fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average);         fprintf(fp,"\r\n");         }       fclose(fp);       printf("信息保存成功!\n");       }   } void exit_student(void)//退出系统   {   exit(1);   } void print_help(void)//输出帮助信息   {   printf("本系统所能容纳的最大学生数为%d人\n学生信息保存在D盘根目录下,保存文件为“学生信息.txt”。\n感谢使用!\n",N);   } void input_score1(void)//统计成绩总函数   {   int c;   c=search_student2(iNumOfStu);   printf("学号:%d\n",stu[c].number);   printf("姓名:%s\n",stu[c].name);   input_score3(c);   printf("新成绩录入成功!\n");   stu[c].average=input_score2(c);   } void input_score3(int a)//统计成绩   {   printf("数学新成绩:");   scanf("%f",&stu[a].sco.math);   printf("英语新成绩:");   scanf("%f",&stu[a].sco.english);   printf("计算机新成绩:");   scanf("%f",&stu[a].sco.computer);   } void change_student2(int a)//修改学生资料   {   printf("学号:%d----修改为:",stu[a].number);   scanf("%d",&stu[a].number);   getchar();   printf("姓名:%s----修改为:",stu[a].name);   gets(stu[a].name);   printf("数学成绩:%.2f----修改为:",stu[a].sco.math);   scanf("%f",&stu[a].sco.math);   printf("英语成绩:%.2f----修改为:",stu[a].sco.english);   scanf("%f",&stu[a].sco.english);   printf("计算机成绩:%.2f----修改为:",stu[a].sco.computer);   scanf("%f",&stu[a].sco.computer);   } void change_student1(void)//修改总函数   {   int c;   c=search_student2(iNumOfStu);   getchar();   printf("是否要修改此学生信息?(“y”代表是)");   char d;   scanf("%c",&d);   if(d=='y'||d=='Y')     {     change_student2(c);       stu[c].average=input_score2(c);     printf("信息修改成功!\n");     }   } void delete_student1(void)//删除总函数   {   int c;   c=search_student2(iNumOfStu);   getchar();   printf("是否删除此条记录?(“y”代表是)");   char d;   scanf("%c",&d);   if(d=='y'||d=='Y')     {     delete_student2(c,iNumOfStu);     printf("记录已删除!\n");     }   } void delete_student2(int a,int b)//删除学生信息   {   for(int i=a;i<b-1;i++)     {     stu[i]=stu[i+1];     }   --iNumOfStu;   } void search_student1(void)//查询总函数   {   printf("1、按学号查询\n2、按平均分最高查询\n请选择:");   int c;   scanf("%d",&c);   switch(c)     {     case 1:       {       search_student2(iNumOfStu);       break;       }     case 2:       {       search_student3(iNumOfStu);       break;       }     default: break;     }   } void menu(void)//菜单调度总函数   {   print_menu();   choosemenu();   } void sort_student1(void)//排序总函数   {   printf("1、按数学成绩排序\n2、按英语成绩排序\n3、按计算机成绩排序\n4、按平均成绩排序\n请选择:");   int c;   scanf("%d",&c);   switch(c)     {     case 1:       {       sort_student2(stu,iNumOfStu);       break;       }     case 2:       {       sort_student3(stu,iNumOfStu);       break;       }     case 3:       {       sort_student4(stu,iNumOfStu);       break;       }     case 4:       {       sort_student5(stu,iNumOfStu);       break;       }     default: break;     }   } void print_student1(int a)//显示全部学生资料   {   printf("本班所有学生具体信息如下\n");   print_student2();   for(int i=0;i<a;i++)     {     print_student3(i);     }   } void print_student3(int a)//显示学生信息   {   printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average);   } void print_student2(void)//显示表头   {   printf("  学号       姓名           数学成绩       英语成绩     计算机成绩     平均成绩\n");   } void input_student4(int a,int b)//覆盖原信息   {   stu[a]=stu[b-1];   --iNumOfStu;   } void input_student3(int &a,int b)//判断学号是否重复   {   if(a!=0)     {     int i=0;     do       {       if(stu[a].number==stu[i].number)         {         printf("此学号代表的学生已录入\n1、覆盖原信息\n2、重新输入\n请选择:");         int c;         scanf("%d",&c);         switch(c)           {           case 1:             {             input_student4(i,iNumOfStu);             a=iNumOfStu-1;             printf("信息已替换!\n");             break;             }           case 2:             {             printf("请重新输入学生信息:\n");             input_student1(iNumOfStu-1);             break;             }           default: break;           }         break;         }       ++i;       }       while(i<b-1);     }   } void print_menu(void)//输出菜单   {   printf("======欢迎来到学生信息管理系统======\n");   printf("      1、输入学生资料\n");   printf("      2、删除学生资料\n");   printf("      3、查询学生资料\n");   printf("      4、修改学生资料\n");   printf("      5、显示学生资料\n");   printf("      6、统计学生成绩\n");   printf("      7、排序学生成绩\n");   printf("      8、保存学生资料\n");   printf("      9、获取帮助信息\n");   printf("      10、退出系统\n");   printf("====================================\n");   printf("请选择:");   } void input_student2(void)//输入总函数   {   char end;   printf("请输入学生信息(在最后一个学生信息录入完成后以“/”结束录入):\n");   for(int i=0;(end=getchar())!='/';i++)     {     input_student1(i);     ++iNumOfStu;     input_student3(i,iNumOfStu);     }   for(int j=0;j<iNumOfStu;j++)     {     stu[j].average=input_score2(j);     }   } void input_student1(int a)//输入学生信息   {   printf("学号:");   scanf("%d",&stu[a].number);   getchar();   printf("姓名:");   gets(stu[a].name);   printf("数学成绩:");   scanf("%f",&stu[a].sco.math);   printf("英语成绩:");   scanf("%f",&stu[a].sco.english);   printf("计算机成绩:");   scanf("%f",&stu[a].sco.computer);   } float input_score2(int a)//计算学生平均成绩   {   return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3;   } void search_student3(int a)//按平均分最高查询并输出   {   int max=0;   for(int i=0;i<a;i++)     {     if(stu[max].average<stu[i].average)       {       max=i;       }     }   print_student2();   print_student3(max);   } void sort_student2(student s[],int a)//按照数学成绩排序   {   struct student temp;   for(int i=0;i<a-1;i++)     {     int max=i;     for(int j=i+1;j<a;j++)       if(stu[j].sco.math>stu[max].sco.math)         {         max=j;         }     if(max!=i)       {       temp=stu[max];       stu[max]=stu[i];       stu[i]=temp;       }     }   print_student2();   for(int k=0;k<a;k++)     {     print_student3(k);     }   } void sort_student3(student s[],int a)//按照英语成绩排序   {   struct student temp;   for(int i=0;i<a-1;i++)     {     int max=i;     for(int j=i+1;j<a;j++)       if(stu[j].sco.english>stu[max].sco.english)         {         max=j;         }     if(max!=i)       {       temp=stu[max];       stu[max]=stu[i];       stu[i]=temp;       }     }   print_student2();   for(int k=0;k<a;k++)     {     print_student3(k);     }   } void sort_student4(student s[],int a)//按照计算机成绩排序   {   struct student temp;   for(int i=0;i<a-1;i++)     {     int max=i;     for(int j=i+1;j<a;j++)       if(stu[j].sco.computer>stu[max].sco.computer)         {         max=j;         }     if(max!=i)       {       temp=stu[max];       stu[max]=stu[i];       stu[i]=temp;       }     }   print_student2();   for(int k=0;k<a;k++)     {     print_student3(k);     }   } void sort_student5(student s[],int a)//按照平均成绩排序   {   struct student temp;   for(int i=0;i<a-1;i++)     {     int max=i;     for(int j=i+1;j<a;j++)       if(stu[j].average>stu[max].average)         {         max=j;         }     if(max!=i)       {       temp=stu[max];       stu[max]=stu[i];       stu[i]=temp;       }     }   print_student2();   for(int k=0;k<a;k++)     {     print_student3(k);     }   } int search_student2(int a)//按照学号查找学生并输出   {   int num;   int c;   printf("请输入要查询的学号:");   scanf("%d",&num);   for(int i=0;i<a;i++)     {     if(num==stu[i].number)       {       c=i;       }     }   printf("此学生的信息是:\n");   print_student2();   print_student3(c);   return c;   } void choosemenu(void)//菜单选择   {   int i;   scanf("%d",&i);   switch(i)     {     case 1:       {       input_student2();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 2:       {       delete_student1();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 3:       {       search_student1();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 4:       {       change_student1();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 5:       {       print_student1(iNumOfStu);       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 6:       {       input_score1();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 7:       {       sort_student1();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 8:       {       save_student(stu,iNumOfStu);       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 9:       {       print_help();       printf("按回车键返回主菜单");       getchar();       getchar();       menu();       break;       }     case 10:       {       exit_student();       }     default: break;     }   }         运行结果:                         源文件下载地址: http://115.com/file/clnq138g#一个简单的学生成绩管理系统.rar (请将此地址复制到浏览器地址栏中访问下载页面)   #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score   {   float math;   float english;   float computer;   }; struct student   {   int number;   char name[20];   struct score sco;   float average;   }; struct student stu[N]; void print_menu(void);//输出菜单 void choosemenu(void);//菜单选择 void input_student1(int);//输入学生信息 void input_student2(void);//输入总函数 void input_student3(int &,int);//判断学号是否重复 void input_student4(int,int);//覆盖原信息 void sort_student3(student s[],int);//按照英语成绩排序 void sort_student4(student s[],int);//按照计算机成绩排序 void sort_student2(student s[],int);//按照数学成绩排序 void sort_student5(student s[],int);//按照平均成绩排序 float input_score2(int);//计算学生平均成绩 void print_student2(void);//显示表头 void print_student3(int);//显示学生信息 void print_student1(int);//显示全部学生资料 void sort_student1(void);//排序总函数 void menu(void);//菜单调度总函数 int search_student2(int);//按学号查询学生信息并输出 void search_student3(int);//按平均分最高查询并输出 void search_student1(void);//查询总函数 void delete_student2(int,int);//删除学生信息 void delete_student1(void);//删除总函数 void change_student2(int);//修改学生资料 void change_student1(void);//修改总函数 void input_score3(int);//统计成绩 void input_score1(void);//统计成绩总函数 void print_help(void);//输出帮助信息 void exit_student(void);//退出系统 void save_student(student *,int);//保存学生信息 void main()   {   menu();   } void save_student(student *s,int a)//保存学生信息   {   FILE *fp;     if((fp=fopen("d:\\学生信息.txt","wb"))==NULL)       {       printf("不能打开文件!\n");       }     else       {       printf("保存信息到D盘\n");       fprintf(fp,"本班所有学生具体信息如下:\r\n");       fprintf(fp,"  学号       姓名           数学成绩       英语成绩     计算机成绩     平均成绩\r\n");       for(int i=0;i<a;i++)         {         fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average);         fprintf(fp,"\r\n");         }       fclose(fp);       printf("信息保存成功!\n");       }   } void exit_student(void)//退出系统   {   exit(1);   } void print_help(void)//输出帮助信息   {   printf("本系统所能容纳的最大学生数为%d人\n学生信息保存在D盘根目录下,保存文件为“学生信息.txt”。\n感谢使用!\n",N);   } void input_score1(void)//统计成绩总函数   {   int c;   c=search_student2(iNumOfStu);   printf("学号:%d\n",stu[c].number);   printf("姓名:%s\n",stu[c].name);   input_score3(c);   printf("新成绩录入成功!

    标签: c语言

    上传时间: 2019-06-09

    上传用户:啊的撒旦

  • 送货问题代码

     为了增加公司收入,F 公司新开设了物流业务。由于 F 公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道。然而,F 公司现在只安排了小明一个人负责所有街道的服务。 任务虽然繁重,但是小明有足够的信心,他拿到了城市的地图,准备研究最好的方案。城市中有 n 个交叉路口,m 条街道连接在这些交叉路口之间,每条街道的首尾都正好连接着一个交叉路口。除开街道的首尾端点,街道不会在其他位置与其他街道相交。每个交叉路口都至少连接着一条街道,有的交叉路口可能只连接着一条或两条街道。 小明希望设计一个方案,从编号为1的交叉路口出发,每次必须沿街道去往街道另一端的路口,再从 新的路口出发去往下一个路口,直到所有的街道都经过了正好一次。 输入数据格式: 输入的第一行包含两个整数n, m(1≤n≤10, n-1≤m≤20),表示交叉路口的数量和街道的数量,交叉 路口从1到n标号。 接下来m行,每行两个整数a, b,表示和标号为a的交叉路口和标号为b的交叉路口之间有一条街道, 街道是双向的,小明可以从任意一端走向另一端。两个路口之间最多有一条街道。 输出输出格式: 如果小明可以经过每条街道正好一次,则输出一行包含m+1个整数p1, p2, p3, ..., pm+1,表示小明经过的路口的顺序,相邻两个整数之间用一个空格分隔。如果有多种方案满足条件,则输出字典序最小的一种方案,即首先保证p1最小,p1最小的前提下再保证p2最小,依此类推。 如果不存在方案使得小明经过每条街道正好一次,则输出一个整数-1。 

    标签: 代码

    上传时间: 2019-07-04

    上传用户:Rain

  • C语言编写雅可比迭代

    # include<stdio.h> # include<math.h> # define N 3 main(){     float NF2(float *x,float *y);     float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}};     float b[N]={7.2,8.3,4.2},sum=0;     float x[N]= {0,0,0},y[N]={0},x0[N]={};     int i,j,n=0;     for(i=0;i<N;i++)     {         x[i]=x0[i];     }     for(n=0;;n++){                 //计算下一个值     for(i=0;i<N;i++){         sum=0;         for(j=0;j<N;j++){             if(j!=i){                 sum=sum+A[i][j]*x[j];             }         }         y[i]=(1/A[i][i])*(b[i]-sum);         //sum=0;     }     //判断误差大小         if(NF2(x,y)>0.01){                 for(i=0;i<N;i++){         x[i]=y[i];     }     }             else             break;     }     printf("经过%d次雅可比迭代解出方程组的解:\n",n+1);     for(i=0;i<N;i++){         printf("%f      ",y[i]);     } } //求两个向量差的二范数函数 float NF2(float *x,float *y){ int i; float z,sum1=0; for(i=0;i<N;i++){     sum1=sum1+pow(y[i]-x[i],2); } z=sqrt(sum1); return z; }

    标签: C语言 编写 迭代

    上传时间: 2019-10-13

    上传用户:大萌萌撒

  • 特别资料Q

    TGJ  CFKF    FJFL   FKR  F FLR

    标签: CREO

    上传时间: 2019-11-16

    上传用户:mzzbx

  • 去快捷方式小箭头

    cmd /k reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f & taskkill /f /im explorer.exe & start explorer.exe YKDAD433B09C754AACB27F085944B5C6CD

    标签: 技术

    上传时间: 2020-03-14

    上传用户:378449797

  • Radio Wave Propagation

    One of the prerequisites for the development of telecommunication services is the understanding of the propagation of the waves, either acoustic, electromagnetic, radio or light waves, which are used for the transmission of information. In this work, we shall limit ourselves to the study of radio waves: this term apply to the electromagnetic waves used in radio communications. Their frequency spectrum is very broad, and is divided into the following frequency bands : ELF waves (f < 3 kHz), VLF (3-30 kHz), LF waves (30-300 kHz), MF waves (300-3000 kHz), HF (3-30 MHz), VHF waves (30-300 MHz), UHF waves (300-3000 MHz), SHF waves (3-30 GHz), EHF waves (30-300 GHz) and sub- EHF waves (300-3000 GHz).

    标签: Propagation Radio Wave

    上传时间: 2020-06-01

    上传用户:shancjb

  • 30mm-300mm轻型变焦物镜光学系统设计

    设计了一组长焦距轻量型变焦光学系统,焦距为30mm~300mm,视场角为1.1°~11.4°,F数为3.5。由于变焦系统焦距较长,并且需要在控制口径的前提下减轻质量,经过对变焦理论进行分析并结合实际情况,采取正组补偿,运用Zemax软件,对变焦系统同时进行像质优化

    标签: mm 300 30 轻型 光学 系统设计

    上传时间: 2021-01-28

    上传用户:

  • BUCKBOOST电路原理分析

    BUCKBOOST电路原理分析uck变换器:也称降压式变换器,是一种输出电压小于输入电压的单管不隔离直流变换器。                                                 图中,Q为开关管,其驱动电压一般为PWM(Pulse、width、modulation脉宽调制)信号,信号周期为Ts,则信号频率为f=1/Ts,导通时间为Ton,关断时间为Toff,则周期Ts=Ton+Toff,占空比Dy=、Ton/Ts。 Boost变换器:也称升压式变换器,是一种输出电压高于输入电压的单管不隔离直流变换器。 开关管Q也为PWM控制方式,但最大占空比Dy必须限制,不允许在Dy=1的状态下工作。电感Lf在输入侧,称为升压电感。Boost变换器也有CCM和DCM两种工作方式 Buck/Boost变换器:也称升降压式变换器,是一种输出电压既可低于也可高于输入电压的单管不隔离直流变换器,但其输出电压的极性与输入电压相反。Buck/Boost变换器可看做是Buck变换器和Bo

    标签: buckboost 电路

    上传时间: 2021-10-18

    上传用户:

  • 300个C51单片机设计proteus仿真源码软件源码: 100000秒以内的计时程序 10秒的秒表

    300个C51单片机设计proteus仿真源码软件源码:100000秒以内的计时程序10秒的秒表12864LCD图形滚动演示128X64LED160128LCD图文演示1602字符液晶滚动演示程序1602液晶显示的DS1302实时时钟16×16点阵(滚动显示)16×16点阵2(滚动显示)2io5键盘模拟音量数码管显示2×20串行字符液晶演示32x16汉字44行列键盘485全双工通信4×4键盘矩阵控制条形LED显示4个独立式按键控制LED开关4个独立式按键控制LED移位4只数码管滚动显示0~3555可调PWM发生器555的应用6264扩展内存6个16×16点阵74HC154译码器应用74HC59574HC595串入并出芯片应用74LS138译码器应用74LS148扩展中断8051双机通信简例8255并行口扩展实例89C51PWM8x8LED汉字显示8x8点阵做的贪吃蛇游戏8×8LED点阵屏显示数字8只数码管同时显示不同字符8只数码管显示多个不同字符8只数码管滚动显示8~F8只数码管滚动显示单个数字8只数码管滚动显示数字串8只数码管闪烁显示8通道自动温度检测系统仿真(含原程序)ADC0808 PWM实验ADC0809模数转换与显示ADC0832模数转换与显示AT89C51对直流电动机的驱动AVR_UartBCD译码数码管显示数字c51 可预设电压的数控电源(功能强大)clockConterCPU控制的独立式键盘扫描实验da、ad。液晶,传递函数模型综合应用的实例DIY51式数控电源DS1621温度传感器实验ds18b20DS18B20温度传感器实验DS18B20温度检测及其液晶显示HorseLightI2CIIC-24C04与数码管IIC-24C04与蜂鸣器INT0与INT1中断计数INT0中断3位计数INT0及INT1中断计数INT0和INT1控制条形LEDINT1中断5位计数IO并行口直接驱动单个数码管K1-K4 分组控制LEDK1-K4 控制LED移位K1-K4 控制数码管加减演示K1-K4 控制数码管移位显示K1-K4 键状态显示key_lcdks0108 液晶12864LCD频率计仿真LED代码查询V1[1].1LED模拟交通灯LED闪烁M16_AN_CompareM16_EEPROMM16_HorseMAX7221控制数码管动态显示my16key_cNT0中断控制LEDNT0中断计数NumberDisplayP3口流水灯PCF8574PCF8583+LCD1602PCF8591模数与数模转换实验proteus ADDC的练习程序PWMPWMLEDPWM控制LED的亮度仿真程序PWM控制马达的方法PWM波输出(可调)PWM电机正反转pwm程序实例PWM调温RAM扩展练习sscom32串口调试TIMER0与TIMER1控制条形LEDTIMER0控制LED二进制计数TIMER0控制单只LED闪烁TIMER0控制四只LED滚动闪烁TIMER0控制流水灯ULN2803usart_t《lcd1602仿真实例》一个数控直流稳压电源一个步进电机的仿真一步一步教你51_PC串口通信万能逻辑电路实验三机通讯串口仿真mcu_pc串口方式1串行数据转换为并行数据交通灯从左到右的流水灯光藕隔离驱动电机内部函数intrins.h应用举例净水控制器仿真电路刚做好的十个字的led屏模拟有程序包含单片机寄存器的头文件单只按键控制单只数码管滚动显示单只数码管循环显示0-9单只数码管循环显示0~F单片机与PC机串口通讯仿真单片机之间双向通信单片机向PC发送数据单片机向主机发送字符串单片机接收PC发出的数据单片机控制的电动自行车驱动系统单片机数据发送程序发一个用定时器做的PWM基于1602+ds12b80+ds1302+音乐+电子书+流水灯的多功能电子表基于ADC0832的数字电压表基于AT24C02的多机通信基于AT89C51+MAX7219的频率计 附带proteus仿真电路图 实际硬件电路测试通过基于DS1302的日历时钟基于yjwpm测试过的DS18B20仿真实例多功能电子钟多点温度测量多路开关状态指示大屏幕仿真子电路做的一个H型电机驱动电路字符串函数string.h应用举例字符函数ctype.h应用举例宏定义应用举例定时器中断控制的独立式键盘扫描实验定时器控制交通指示灯定时器控制数码动态显示定时器控制数码管动管显示对I2C总线上挂接多个AT24C0

    标签: c51 单片机 proteus 仿真

    上传时间: 2021-10-27

    上传用户:wangshoupeng199

  • SPWM波产生.

    电路主要包括以下七个单元电路:正弦波产生电路、正弦波放大及电平变换电路、峰值检测电路、增益控制电路、三角波产生电路、比较电路、低通滤波电路。正弦波产生电路采用文氏桥正弦波振荡电路,由放大电路、反馈电路(正反馈)、选频网络(和反馈电路一起)、稳幅电路构成,它的振荡频率为:f=1/(2Π*RC),由R4和C1构成RC并联振荡,产生正弦波,与R5和C2构成选频网络,同时R5和C2又构成该电路的正反馈;稳幅电路是由该电路的负反馈构成,当振幅过大时,二极管导通,R3短路,Av=1+(R2+R3)/R1减小,振幅减小,反之Av=1+(R2+R3)/R1增大,振幅增大,达到稳幅效果,从而保证正弦波的正常产生。正弦波放大及电平变换电路由R10,R7分别与R15滑动电阻部分相连,通过滑动R15来分VCC和VEE的电压,通过放大器正相来抬高或降低正弦波来达到特定范围内的幅值,滑动电阻R6与地相连,又与放大器反相端相连,滑动R6分压来改变振幅,后又由R9和R8构成反馈来达到放大的效果,从而达到正弦波放大及电平变化的目的。峰值检测电路是由正弦波放大及电平变换电路产生的正弦波送入电压跟随器的正相端,通过两个反向二极管后再连电容,快速充放电达到峰值,然后再送回正弦波放大及电平变换电路的反相端,构成负反馈,达到增益稳幅控制效果三角波产生电路主要由两个NPN型三极管Q3Q4,一个PNP型三极管Q2,两个电容C3C4,两个非门,一个滑动电阻R16组成,通过充放电后经过非门产生三角波。比较电路产生的正弦波送入放大器的正相端,产生的三角波送入放大器的反相端,通过作差比较产SPWM波,后又经过由R22和C8组成的低通滤波电路,还原正弦波。

    标签: spwm 产生

    上传时间: 2021-10-30

    上传用户: