本書在論述了電力電子及其逆變技術現(xiàn)狀與發(fā)展的基礎上,按電氣隔離、功率流向、電源性質(zhì)、相數(shù)、模塊數(shù)、電平數(shù)、能量去向、功率變換量、相關流向、電源性質(zhì)、相數(shù)、模塊數(shù)、電平數(shù)、能量去向、功率變換量、相關技術等類型,系統(tǒng),深入并有創(chuàng)新地論述了方波、多重移相疊加階梯波合成、脈寬調(diào)制、單向電壓源高頻環(huán)節(jié)、高頻脈沖直流環(huán)節(jié)、雙向電壓源高頻環(huán)節(jié)、諧振式雙向電壓源高頻環(huán)節(jié)、電流源高頻環(huán)節(jié)、直流變換器型高頻環(huán)節(jié)、三相、并聯(lián)、多電平、可再生能源并網(wǎng)、Delta等逆變技術和控制、驅(qū)動、緩沖、濾波等相關技術及其在逆變器中的應用。
上傳時間: 2018-08-10
上傳用戶:wj4219
#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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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)//統(tǒng)計成績 { printf("數(shù)學新成績:"); 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("數(shù)學成績:%.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)//修改總函數(shù) { 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)//刪除總函數(shù) { 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)//查詢總函數(shù) { 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)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學成績排序\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(" 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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("======歡迎來到學生信息管理系統(tǒng)======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統(tǒng)計學生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結(jié)束錄入):\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("數(shù)學成績:"); 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)//按照數(shù)學成績排序 { 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; } } 運行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統(tǒng).rar (請將此地址復制到瀏覽器地址欄中訪問下載頁面)
標簽: 成績查詢系統(tǒng)
上傳時間: 2019-06-08
上傳用戶:啊的撒旦
#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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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)//統(tǒng)計成績 { printf("數(shù)學新成績:"); 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("數(shù)學成績:%.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)//修改總函數(shù) { 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)//刪除總函數(shù) { 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)//查詢總函數(shù) { 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)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學成績排序\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(" 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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("======歡迎來到學生信息管理系統(tǒng)======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統(tǒng)計學生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結(jié)束錄入):\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("數(shù)學成績:"); 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)//按照數(shù)學成績排序 { 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; } } 運行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統(tǒng).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);//輸入總函數(shù) 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);//按照數(shù)學成績排序 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);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計成績 void input_score1(void);//統(tǒng)計成績總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) 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," 學號 姓名 數(shù)學成績 英語成績 計算機成績 平均成績\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)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學生數(shù)為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計成績總函數(shù) { 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
上傳用戶:啊的撒旦
100-24c02記憶開機次數(shù)101-24c02存儲上次使用中狀態(tài)102-DS1302 時鐘原理103-DS1302可調(diào)時鐘104-DS1302時鐘串口自動更新時間105-1602液晶顯示DS1302時鐘106-字庫ST7920 12864液晶基礎顯示107-按鍵 12864顯示108-PCF8591 1路AD數(shù)碼管顯示109-PCF8591 4路AD數(shù)碼管顯示11-LED循環(huán)右移110-PCF8591 DA輸出模擬111-PCF8591 輸出鋸齒波112-PCF8591 1602液晶顯示113-串口通訊114-串口通訊中斷應用115-RS485基本通訊原理116-紅外接收原理117-紅外解碼數(shù)碼管顯示118-紅外解碼1602液晶顯示119-紅外發(fā)射原理12-查表顯示LED燈120-紅外收發(fā)測試121-雙紅外發(fā)射避障原理測試122-1個18B20 溫度傳感器 數(shù)碼管顯示123-1個18b20溫度傳感器1602液晶顯示124-多個18b20溫度傳感器1602液晶顯示125-超溫報警測試126-溫度可調(diào)上下限1602126-溫度可調(diào)上下限1602顯示127-PS2鍵盤輸入1602液晶顯示128-雙色點陣1種顏色顯示測試129-雙色點陣2種顏色顯示測試13-雙燈左移右移閃爍130-雙色點陣顯示特定圖形131-雙色點陣交替圖形顯示132-雙色點陣雙色交替動態(tài)顯示133-熱敏電阻測試數(shù)碼管顯示134-光敏電阻測試數(shù)碼管顯示135-自動調(diào)光測試136-串轉(zhuǎn)并數(shù)字芯片測試137-非門數(shù)字芯片測試138-電子琴139-實用99分鐘倒計時器14-花樣燈140-外部頻率測試141-定時做普通時鐘可調(diào)142-1602液晶顯示的密碼鎖143-實用密碼鎖144-1602液晶顯示的計算器145-秒表146-串口測溫電腦顯示147-交通燈測試148-點陣模擬電梯上行下行149-點陣流動廣告模擬15-PWM調(diào)光150-綜合測試程序151-12位AD_DS1621與12864液晶152-閃爍燈一153-閃爍燈二154-流水燈A155-51單片機12864大液晶屏proteus仿真156-流水燈B157-數(shù)碼管顯示158-12864LCD顯示計算器鍵盤按鍵實驗159-數(shù)碼管顯示(鎖存器)16-共陽數(shù)碼管靜態(tài)顯示160-數(shù)碼管動態(tài)顯示161-數(shù)碼管滾動顯示162-數(shù)碼管字符顯示163-獨立按鍵164-矩陣鍵盤165-矩陣鍵盤(LCD)166-用DS1302與12864LCD設計的可調(diào)式中文電子日歷167-定時器的使用(方式1)168-12864LCD圖形滾動演示169-用PG12864LCD設計的指針式電子鐘17-1個共陽數(shù)碼管顯示變化數(shù)字170-定時器的使用(方式2)171-外部中斷的使用172-定時器和外部中斷173-開關控制12864LCD串行模式顯示174-點陣顯示175-液晶1602顯示176-12864帶字庫測試程序177-串行12864顯示178-遙控鍵值解碼-12864LCD顯示179-液晶12864并行18-單個數(shù)碼管模擬水流180-液晶12864并行2181-串口發(fā)送試驗182-串口接收試驗183-串口接收(1602)184-蜂鳴器發(fā)聲185-直流電機調(diào)速186-蜂鳴器間斷發(fā)聲187-lcd-12864應用188-繼電器控制189-直流電機調(diào)速19-按鍵控制單個數(shù)碼管顯示190-步進電機191-存儲AT24C02192-PCF8591T AD實驗193-PCF8591T芯片DA實驗194-溫度采集DS18B20195-EEPROM_24C02196-12864LCD顯示24C08保存的開機畫面197-紅外解碼198-12864LCD顯示EPROM2764保存的開機畫面199-時鐘DS1302(LCD)2-IO輸出-點亮1個LED燈方法220-單個數(shù)碼管指示邏輯電平200-宏晶看門狗201-SD卡202-秒表203-普通定時器時鐘204-彩屏控制205-彩屏圖片顯示206-12864+DS1302時鐘+18B20溫度計207-12864測試程序208-12864串行驅(qū)動演示209-12864生產(chǎn)廠程序21-8位數(shù)碼管顯示其中之一210-12864中文顯示測試211-LCD12864212-12864M液晶顯示(有字庫)程序(匯編)213-超聲波測距LCD12864顯示214-紅外遙控鍵值解碼12864液晶顯示(匯編語言)215-用DS1302與12864LCD設計的可調(diào)式中文電子日歷216-中文12864217-中文12864LCD顯示紅外遙控解碼實驗218-IO端口輸出219-IO端口輸入22-8位數(shù)碼管靜態(tài)顯示其中之二220-流水燈221-數(shù)碼管顯示222-數(shù)碼管動態(tài)掃描演示223-獨立按鍵224-獨立按鍵去抖動225-定時器0226-定時器1227-定時器2228-外部中斷0電平觸發(fā)229-外部中斷0邊沿觸發(fā)23-8位數(shù)碼管動態(tài)掃描顯示230-外部中斷1231-矩陣鍵盤232-液晶LCM1602233-LCD1602動態(tài)顯示234-EEPROM24c02235-開機次數(shù)記憶236-紅外解碼LCD1602液晶顯示237-紅外解碼數(shù)碼管顯示238-喇叭239-液晶背光控制24-8位數(shù)碼管動態(tài)掃描原理演示240-與電腦串口通信241-步進電機242-字庫LCD12864液晶測試243-液晶數(shù)碼綜合顯示244-99秒計時245-99倒計時246-搶答器247-PWM調(diào)光248-LED點陣249-直流電機調(diào)速25-數(shù)碼管顯示動態(tài)數(shù)據(jù)250-按鍵計數(shù)器251-秒表252-數(shù)碼管移動253-花樣燈254-紅綠燈255-音樂播放256-紅外收發(fā)演示257-普通定時器時鐘258-繼電器控制259-ps2鍵盤LCD1602液晶顯示26-9累加260-RTC實時時鐘DS1302液晶顯示261-單線溫度傳感器18b20262-串口測溫263-帶停機 步進電機正反轉(zhuǎn)264-步進電機正反轉(zhuǎn)265-AD_DA_PCF8591266-液晶AD_DA_PCF8591267-秒手動記數(shù)268-功能感受269-流水登27-99累加270-點亮一個二極管271-用單片機控制一個燈閃爍272-將P1口狀態(tài)送入P0、P2、P3273-P3口流水燈274-通過對P3口地址的操作流水點亮8位LED275-用不同數(shù)據(jù)類型控制燈閃爍時間276-用P0口、P1 口分別顯示加法和減法運算結(jié)果277-用P0、P1口顯示乘法運算結(jié)果278-用P1、P0口顯示除法運算結(jié)果279-用自增運算控制P0口8位LED流水花樣28-999累加280-用P0口顯示邏輯與運算結(jié)果281-用P0口顯示條件運算結(jié)果282-用P0口顯示按位異或運算結(jié)果283-用P0顯示左移運算結(jié)果284-萬能邏輯電路實驗285-用右移運算流水點亮P1口8位LED286-用if語句控制P0口8位LED的流水方向287-用swtich語句的控制P0口8位LED的點亮狀態(tài)288-用for語句控制蜂鳴器鳴笛次數(shù)289-包含單片機寄存器的頭文件29-9999累加290-用do-while語句控制P0口8位LED流水點亮291-用字符型數(shù)組控制P0口8位LED流水點亮292-用P0口顯示字符串常量293-用P0 口顯示指針運算結(jié)果294-用指針數(shù)組控制P0口8位LED流水點亮295-用數(shù)組的指針控制P0 口8 位LED流水點亮296-用P0 、P1口顯示整型函數(shù)返回值297-用有參函數(shù)控制P0口8位LED流水速度298-用數(shù)組作函數(shù)參數(shù)控制流水花樣299-用數(shù)組作函數(shù)參數(shù)控制流水花樣3-IO輸出-點亮多個LED燈方法130-9累減300-用函數(shù)型指針控制P1口燈花樣31-99累減32-999累減33-9999累減34-顯示小數(shù)點35-數(shù)碼管消隱36-數(shù)碼管遞加遞減帶消隱37-數(shù)碼管左移38-數(shù)碼管右移38-數(shù)碼管右移139-數(shù)碼管右移24-IO輸出-點亮多個LED燈方法240-數(shù)碼管循環(huán)左移41-數(shù)碼管循環(huán)右移41-數(shù)碼管循環(huán)右移142-數(shù)碼管循環(huán)右移243-數(shù)碼管閃爍44-數(shù)碼管局部閃爍45-定時器046-定時器147-定時器248-產(chǎn)生1mS方波49-產(chǎn)生200mS方波5-閃爍1個LED50-產(chǎn)生多路不同頻率方波51-1個獨立按鍵控制LED52-1個獨立按鍵控制LED狀態(tài)轉(zhuǎn)換53-2按鍵加減操作53-2按鍵加減操作數(shù)碼管顯示54-多位數(shù)按鍵加減(閃爍)54-多位數(shù)按鍵加減(閃爍)數(shù)碼管顯示55-多位數(shù)按鍵加減(不閃爍)55-多位數(shù)按鍵加減(不閃爍)數(shù)碼管顯示56-定時器掃描數(shù)碼管(不閃爍)57-按鍵長按短按效果58-搶答器59-獨立按鍵依次輸入數(shù)據(jù)6-不同頻率閃爍1個LED燈60-按鍵從右至左輸入61-8位端口檢測8獨立按鍵62-矩陣鍵盤行列掃描63-矩陣鍵盤反轉(zhuǎn)掃描64-矩陣鍵盤中斷掃描65-矩陣鍵盤密碼鎖66-矩陣鍵盤簡易計算器67-外部中斷0電平觸發(fā)68-外部中斷1電平觸發(fā)69-外部中斷0下降沿觸發(fā)7-不同頻率閃爍多個LED燈70-外部中斷1下降沿觸發(fā)71-T0外部計數(shù)輸入72-T1外部計數(shù)輸入73-看門狗溢出測試74-按鍵喂狗75-喇叭發(fā)聲原理76-警車聲音77-救護車聲音78-喇叭滴答聲79-報警發(fā)聲8-8位LED左移80-消防車警報81-音樂播放82-步進電機轉(zhuǎn)動原理83-步進電機正反轉(zhuǎn)84-步進電機按鍵控制85-步進電機轉(zhuǎn)
上傳時間: 2021-11-08
上傳用戶:
電子電氣專業(yè)畢業(yè)設計畢業(yè)論文及產(chǎn)品設計軟硬件資料文檔資料合集4(21個):光纖通信復用技術的研究資料國旗升降系統(tǒng)程序資料多功能出租車計價器設計資料多功能工業(yè)控制平臺多功能數(shù)字時鐘設計資料多功能電子醫(yī)藥盒設計多功能電機控制器資料多點無線數(shù)據(jù)傳輸系統(tǒng)資料多點溫度檢測系統(tǒng)設計資料點陣電子顯示屏資料電動智能小車設計資料電壓檢測系統(tǒng)(含VB上位機)proteus仿真+程序資料電子萬年歷設計與制作資料電子密碼鎖1602液晶顯示資料電子式里程表設計資料電子秤proteus仿真+程序資料電容充放電產(chǎn)生方波,再經(jīng)積分器轉(zhuǎn)成三角波,再經(jīng)微分器轉(zhuǎn)成方波proteus仿真資料電機轉(zhuǎn)速測量系統(tǒng)紅外測溫模組紅外遙控電路設計資料給初學單片機的40個實驗肺活量測量儀設計資料高保真音響設計制作資料高靈敏無線探聽器電路資料高頻電路實訓裝置資料
上傳時間: 2021-12-08
上傳用戶:
1-1前言一般人所能夠感受到聲音的頻率約介於5H2-20KHz,超音波(Ultrasonic wave)即爲頻率超過20KHz以上的音波或機械振動,因此超音波馬達就是利用超音波的彈性振動頻率所構(gòu)成的制動力。超音波馬達的內(nèi)部主要是以壓電陶瓷材料作爲激發(fā)源,其成份是由鉛(Pb)、結(jié)(Zr)及鈦(Ti)的氧化物皓鈦酸鉛(Lead zirconate titanate,PZT)製成的。將歷電材料上下方各黏接彈性體,如銅或不銹鋼,並施以交流電壓於壓電陶瓷材料作爲驅(qū)動源,以激振彈性體,稱此結(jié)構(gòu)爲定子(Stator),將其用彈簧與轉(zhuǎn)子Rotor)接觸,將所産生摩擦力來驅(qū)使轉(zhuǎn)子轉(zhuǎn)動,由於壓電材料的驅(qū)動能量很大,並足以抗衡轉(zhuǎn)子與定子間的正向力,雖然伸縮振幅大小僅有數(shù)徵米(um)的程度,但因每秒之伸縮達數(shù)十萬次,所以相較於同型的電磁式馬達的驅(qū)動能量要大的許多。超音波馬達的優(yōu)點爲:1,轉(zhuǎn)子慣性小、響應時間短、速度範圍大。2,低轉(zhuǎn)速可產(chǎn)生高轉(zhuǎn)矩及高轉(zhuǎn)換效率。3,不受磁場作用的影響。4,構(gòu)造簡單,體積大小可控制。5,不須經(jīng)過齒輸作減速機構(gòu),故較爲安靜。實際應用上,超音波馬達具有不同於傳統(tǒng)電磁式馬達的特性,因此在不適合應用傳統(tǒng)馬達的場合,例如:間歇性運動的裝置、空間或形狀受到限制的場所;另外包括一些高磁場的場合,如核磁共振裝置、斷層掃描儀器等。所以未來在自動化設備、視聽音響、照相機及光學儀器等皆可應用超音波馬達來取代。
標簽: 超聲波電機
上傳時間: 2022-06-17
上傳用戶:
[摘要]本論文主要論述了基于Multisim多功能函數(shù)信號發(fā)生器的設計與仿真。函數(shù)信號發(fā)生器是一種廣泛應用于工業(yè)生產(chǎn)、產(chǎn)品開發(fā)、科學研究等領域中比較常見的信號源。函數(shù)信號發(fā)生器的設計方法有很多,可以由專門的集成芯片設計產(chǎn)生,也可以由分立元件設計產(chǎn)生,本文主要采用模擬電路分立元件的方法進行設計。首先,在RC文氏電橋正弦波振蕩電路的基礎上設計出頻率可調(diào)的正弦波振蕩電路。其次,將正弦波信號連接至過零電壓比較器,輸出信號為方波波形。最后,利用積分電路原理,對方波信號進行積分即可產(chǎn)生三角波信號。輸出函數(shù)信號的頻率和幅度與R、C的參數(shù)有關,因此可以通過多路開關控制器來選擇不同R、C的參數(shù)值,從而實現(xiàn)輸出函數(shù)信號的頻率可調(diào)和幅度可調(diào)。本文是利用Multisim仿真工具進行電子電路設計和仿真的,完成了多功能函數(shù)信號發(fā)生器的設計。[關鍵詞]multisim;函數(shù)信號;多功能;振蕩電路
上傳時間: 2022-07-21
上傳用戶:
SS0002是一款采用多普勒雷達技術,專門檢測物體移動的微波感應模塊。采用2.7G微波信號檢測人體反射波,經(jīng)電路處理控制照明回路。該模塊具有靈敏度高,感應距離遠,可靠性強,感應角度大,供應電壓范圍寬等特點。廣泛應用于各種人體感應照明和防盜報警等場合。微波感應又稱雷達感應,微波感應開關為主動式傳感器,感應器發(fā)射高頻電磁波并接收他們的回波,此感應器探測回波內(nèi)的變化,甚至是探測范圍內(nèi)微小的移動,然后觸發(fā)指令。微波感應開關是一種新型無死角感應,基于多普勒雷達原理,其平面型天線發(fā)出極低功率的電磁波并接收反射回波。可有效抑制高次諧波和其他雜波的干擾,靈敏度高、可靠性強、安全方便、智能節(jié)能,是一種新型實用的節(jié)能產(chǎn)品。若檢測到感應區(qū)域的反射頻率有變化,感應器觸發(fā)動作,輸出信號根據(jù)需要開啟或關閉負載。多普勒效應是指物體輻射的波長因為光源和觀測者相對運動而產(chǎn)生變化,在運動的波源面前,波被壓縮,波長變得較短,頻率變得較高,在運動的波源后面,產(chǎn)生相反的效應,波長變得較長,頻率變得較低,波源的速度越高,所產(chǎn)生的效應越大,這種現(xiàn)象稱為多普勒效應。
上傳時間: 2022-07-23
上傳用戶:qdxqdxqdxqdx
eeworm.com VIP專區(qū) 單片機源碼系列 32資源包含以下內(nèi)容:1. C51單片機_定時器可調(diào)時鐘_程序.docx2. 單片機的40個實驗.pdf3. 通信速率可調(diào)的單片機多機通信系統(tǒng)研究.zip4. 小車程序.doc5. 基于MC9S12HY32的電動汽車儀表盤設計.zip6. 基于AVR的太陽能高速公路智能電子顯示屏系統(tǒng)設計.zip7. 智能小車程序.doc8. 基于51單片機多功能太陽能路燈的設計.zip9. 從零開始學單片機C語言 李建清.掃描版.pdf10. PWM調(diào)速+循跡智能小車程序.doc11. 單片機驅(qū)動數(shù)碼管顯示設計.pdf12. 51單片機的結(jié)構(gòu)知識.doc13. C18編輯器入門.pdf14. 單片機的學習資料+實驗精華.doc15. 16x16+ds1302.rar16. 基于C8051F020的等精度測量頻率.doc17. 8路搶答器設計.doc18. MSP430單片機C語言應用程序設計實例精講.rar19. AVR系列單片機C語言.pdf20. 51單片機編程中常用的一些函數(shù).zip21. 51單片機在線調(diào)試仿真系統(tǒng)(MSUODS_Tri)培訓手冊.pdf22. 51單片機教程詳細解析(經(jīng)典收藏).pdf23. MCS51單片機原理_定時器.pdf24. 51單片機經(jīng)典入門教程(非常棒的教程).pdf25. Keil uVision2 軟件.rar26. 51單片機最小系統(tǒng)原理圖.doc27. 34個單片機實例(包括框圖和程序).doc28. 單片機外圍電路擴展.ppt29. HC6800EM3 v20原理圖(電路圖).pdf30. 單片機外圍電路設計.docx31. ARM體系結(jié)構(gòu)概述.pdf32. 單片機硬件電路設計.ppt33. PC與單片機借助LABview進行簡單的接受和發(fā)送數(shù)據(jù).rar34. 單片機定時器詳解.doc35. 單片機控制步進電機程序.doc36. 用單片機設計電子音樂門鈴.rar37. [30.Arduino.Projects.for.the.Evil.Genius].Simon.Monk.文字版.pdf38. 單片機的串口知識.zip39. [Getting.Started.with.Arduino(2nd.2011.9)].Massimo.Banzi.文字版.pdf40. 智能小車制作.doc41. 智能循跡小車設計報告.ppt42. Arduino_電子積木基礎套裝中文教程.pdf43. Tiny6410SDK-1111-底板原理圖(Tiny6410開發(fā)板原理圖).pdf44. ATmega64資料.PDF45. arduino語言說明.doc46. Sonix(松翰)8bit單片26系列IO型原理及基礎教程.pdf47. ATmega128資料.PDF48. arduino_manual.pdf49. 基于單片機的智能型金屬探測器的設計.doc50. 電動機的單片機控制.pdf51. Arduino使用教程.pdf52. ENC-03M陀螺儀模塊.rar53. 單片機器件手冊.pdf54. Arduino電子積木用戶手冊.pdf55. RF905-無線調(diào)試板開發(fā)包.rar56. [Beginning.Arduino].Michael.McRoberts.文字版.pdf57. Arduino_booklet02.pdf58. 郭天祥《十天學會單片機和C語言編程》.pdf59. [Arduino:A.Quick-Start.Guide].Maik.Schmidt.文字版.pdf60. 實驗四 移位寄存器.pdf61. 郭天祥51單片機.rar62. STC89C52單片機的中文介紹.pdf63. 基于單片機的數(shù)字電壓表設計.pdf64. 郭天祥 十天學會單片機和c語言--課后答案.doc65. 12864點陣型液晶顯示.pdf66. 單片機學習方法與感悟.rar67. pcf8591資料.pdf68. 萬年歷C程序.rar69. ATmega16_cn學習資料.pdf70. C8051F34x中文版.pdf71. C51單片機及C語言知識點必備秘籍.pdf72. 51實驗板原理圖顯示部分.pdf73. HT45R37 使用SPI 進行資料傳輸?shù)姆椒?pdf74. 32位單片機C語言編程:基于PIC32圖書電子版.zip75. HT45F23 Comparator 功能使用範例.pdf76. HOT-51電路圖.pdf77. HT45F23 OPA 功能.pdf78. AVR單片機C語言程序設計實例精粹[圖與程序].rar79. HT45F23 ADC 功能應用實例.pdf80. 單片機面試題.doc81. 如何將代碼燒入STC單片機.doc82. 8051C語言設計藝術.pdf83. 51單片機學習資料打包.zip84. 10天學會單片機實例100.zip85. 單片機的40個實驗.pdf86. atmega48資料.pdf87. MCS-51單片機原理.pdf88. AVR單片機C語言開發(fā)入門指導.pdf89. PID通俗釋義.doc90. MSP430 電容單觸式傳感器設計指南.pdf91. AVR系列單片機C語言編程與應用實例.pdf92. 51單片機小精靈.rar93. 基于單片機的嵌入式TCP/IP協(xié)議棧的設計與實現(xiàn).pdf94. 實戰(zhàn)AVR單片機C語言.pdf95. 如何設計復雜的多任務程序.rar96. 流水燈的設計.pdf97. 深入淺出AVR單片機.pdf98. 巡線小車.zip99. 89ZLG72單片機資料.pdf100. ATmega48單片機學習板.doc
上傳時間: 2013-07-30
上傳用戶:eeworm
隨著電子技術的不斷發(fā)展,各種智能核儀器逐步走向自動化、智能化、數(shù)字化和便攜式的方向發(fā)展。針對傳統(tǒng)的多道脈沖幅度分析器體積大,人機交互不友好,不方便現(xiàn)場分析等的缺陷[5]。新型的高速、集成度高、界面友好的多道脈沖幅度分析器的陸續(xù)出現(xiàn)填補了這一缺點。 隨著電子技術的發(fā)展,以ARM為核的處理器技術的應用領域不斷擴大,相比較單片機而言,它的主頻高、運算速度快,可以滿足多道脈沖幅度分析器的苛刻的時間上的要求。而且ARM處理器功耗小,適合于功耗要求比較苛刻的地方,這些方面的特點正好滿足了便攜式多道脈沖幅度分析器野外勘察的要求。同時,由于以ARM為核的處理器具有豐富的外設資源,這樣就簡化了外設電路及芯片的使用,降低了功耗并增強了產(chǎn)品的信賴性。另外,ARM芯片可以方便的移植操作系統(tǒng),為多道脈沖幅度分析器多任務的管理和并行的處理,甚至硬實時功能的實現(xiàn)提供了前提。而且在ARM平臺使用嵌入式linux操作系統(tǒng)使多道脈沖幅度分析器的軟件易于升級。 智能化和小型化是多道脈沖幅度分析器的發(fā)展趨勢。智能化要求系統(tǒng)的自動化程度高、操作簡便、容錯性好。智能化除了需要控制軟件外,還需要軟件命令的執(zhí)行者即硬件控制電路來實現(xiàn)相應的控制邏輯,兩者的結(jié)合才能真正的實現(xiàn)智能化。小型化要求系統(tǒng)的體積小、功耗小、便于攜帶;小型化除了要求采用微功耗的器件,還要求電路板的尺寸盡量的小且所用元件盡量的少,但小型化的同時必須保持系統(tǒng)的智能化,即不能減少智能化所要求的復雜的邏輯和時序的控制功能。為此采用高集成度的ARM芯片實現(xiàn)控制電路能滿意地同時滿足智能化和小型化的要求。在研制的多道脈沖幅度分析器中,幾乎所有的控制都可以用控制芯片來實現(xiàn),如閾值設定、自動穩(wěn)譜以及多道數(shù)據(jù)采集,在節(jié)省了元件的數(shù)目和電路板的尺寸的同時仍能保持系統(tǒng)的智能化程度。 Linux內(nèi)核精簡而高效,可修改性強,支持多種體系結(jié)構(gòu)的處理器等,使得它是一個非常適合于嵌入式開發(fā)和應用的操作系統(tǒng)。嵌入式Linux可以運行的硬件平臺十分廣泛,從x86、MIPS、POWERPC到ARM,以及其他許多硬件體系結(jié)構(gòu)。目前在世界范圍內(nèi),ARM體系結(jié)構(gòu)的SOC逐漸占領32位嵌入式微處理器市場,ARM處理器及技術的應用幾乎已經(jīng)深入到各個領域,例如:工業(yè)控制,無線通訊,網(wǎng)絡,消費類電子,成像等。 本課題采用三星公司生產(chǎn)的ARM(Advanced RISC Machines,先進精簡指令集機器)芯片S3C2410A設計并研制了一種便攜式的核數(shù)據(jù)采集系統(tǒng)設計方案。利用ARM芯片豐富的外設資源對傳統(tǒng)的多道脈沖幅度分析器進行改進和簡化。系統(tǒng)由前端探測器系統(tǒng),以及由線性脈沖放大器、甄別電路、控制電路、采樣保持電路組成的前置電路,中央處理器模塊,顯示模塊,用戶交互模塊,存儲模塊,網(wǎng)絡傳輸模塊等多個模塊組成。本設計基于ARM9芯片S3C2410,并在此平臺上移植了嵌入式linux操作系統(tǒng)來進行任務的調(diào)度和處理等。 電路板核心板部分設計采用6層PCB板結(jié)構(gòu),這樣增加了系統(tǒng)可靠性,提高了電磁兼容的穩(wěn)定性。數(shù)據(jù)采集系統(tǒng)是多道脈沖幅度分析器的核心,A/D轉(zhuǎn)換直接使用了S3C2410內(nèi)置的ADC(Analog to Digital Converter,模數(shù)轉(zhuǎn)換器),在2.5 MHz的轉(zhuǎn)換時鐘下最大轉(zhuǎn)換速度500 KSPS(Kilo-Samples per second,千采樣點每秒),滿足了系統(tǒng)最低轉(zhuǎn)換時間≤5 μs的要求,并且控制簡單,簡化了外部接口電路。由于SD(Secure Digital Card,安全數(shù)碼卡)卡存儲容量大、攜帶方便、成本低等優(yōu)點,所以設計中采用其作為外部的數(shù)據(jù)存儲設備,其驅(qū)動部分采用SD卡軟件包,為開發(fā)帶來了方便。本設計采用640*480的6.4寸LCD(Liquid Crystal Display,液晶顯示)屏作為人機交互的顯示部分,并且通過Qt/Embedded為系統(tǒng)提供圖形用戶界面的應用框架和窗口系統(tǒng)。其中包括了波形顯示部分和用戶菜單設置部分,這樣方便了用戶操作。系統(tǒng)的數(shù)據(jù)存取方面是基于SQLite嵌入式小型數(shù)據(jù)庫而進行的。為了方便數(shù)據(jù)向上位機的傳輸,系統(tǒng)設計中采用XML(Extensible Markup Language,可擴展標記語言)格式來組織傳輸?shù)臄?shù)據(jù),通過基于TCP/IP(Transmission Control Protocol/Internet Protocol)協(xié)議的Linux下Socket套接字編程,來進行與上位機或PC(Personal Computer,個人計算機或桌面機)等的連接和數(shù)據(jù)傳輸。
上傳時間: 2013-04-24
上傳用戶:tzl1975