TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230
linux 中断和设备驱动 本章介绍L i n u x内核是如何维护它支持的文件系统中的文件的,我们先介绍 V F S ( Vi r t u a lFile System,虚拟文件系统),再解释一下L i n u x内核的真实文件系统是如何得到支持的。L i n u x的一个最重要特点就是它支持许多不同的文件系统。这使 L i n u x非常灵活,能够与许多其他的操作系统共存。在写这本书的时候, L i n u x共支持1 5种文件系统: e x t、 e x t 2、x i a、 m i n i x、 u m s d o s、 msdos 、v f a t、 p r o c、 s m b、 n c p、 i s o 9 6 6 0、 s y s v、 h p f s、 a ffs 和u f s。无疑随着时间的推移,L i n u x支持的文件系统数还会增加。
上传时间: 2013-11-13
上传用户:zxh122
C++Primer中文版 第三版 深入系列 Primer 第三版 著 中中文文版版潘爱民张丽译 Addison-Wesley 中国电力出版社 www.infopower.com.cn Stanley B Lippman J o s é e L a j o i e
标签: Primer Addison-Wesley infopower www
上传时间: 2014-01-14
上传用户:myworkpost
问题描述 序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子序列,相应的递增下标序列为<2,3,5,7>。 一般地,给定一个序列X=<x1,x2,…,xm>,则另一个序列Z=<z1,z2,…,zk>是X的子序列,是指存在一个严格递增的下标序列〈i1,i2,…,ik〉使得对于所有j=1,2,…,k使Z中第j个元素zj与X中第ij个元素相同。 给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。 你的任务是:给定2个序列X、Y,求X和Y的最长公共子序列Z。
上传时间: 2014-01-25
上传用户:netwolf
简易数字频率计题解.( 1997年 B 题 ) 编写与讲解人:田良(东南大学无线电系,2003年3月12日) 一)任务 设计并制作一台数字显示的简易频率计。 (二)要求 1.基本要求 (1)频率测量 a.测量范围 信号:方波、正弦波 幅度:0.5V~5V[注] 频率:1Hz~1MHz b.测试误差≤0.1% (2)周期测量 a.测量范围 信号:方波、正弦波 幅度:0.5V~5V[注] 频率:1Hz~1MHz b.测试误差≤0.1% 3) 脉冲宽度测量 a.测量范围 信号:脉冲波 幅度:0.5V~5V[注] 脉冲宽度≥100μs b.测试误差≤0.1% (4)显示器 十进制数字显示,显示刷新时间1~10秒 连续可调,对上述三种测量功能分别采用不同颜色的 发光二极管指示。 (5)具有自校功能,时标信号频率为1MHz。 (6)自行设计并制作满足本设计任务要求的稳压电源
上传时间: 2013-12-26
上传用户:xg262122
一个基于GTK+的单词数值计算器,1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,如: WINJACK这个单词的值就为:W+I+N+J+A+C+K=23+9+14+1+3+11=71% HARDWORK=H+A+R+D+W+O+R+D=8+1+18+4+23+15+18+11=98% LOVE=L+O+V+E=12+15+22+5=54% LUCK=L+U+C+K=12+21+3+11=47% ATTITUDE= A+T+T+I+T+U+D+E=1+20+20+9+20+24+4+5=100% 2、对程序的界面布局参考如下图所示,在第一个单行文本框输入一个单词,点击“计算”按钮,按照以上算法计算出该单词的值。 3、如果在最下面的单行文本框输入一个文件路径,此文件每行记录一个单词,那么经过程序计算出各个单词的值,并把结果输出到当前目录下result.txt文件中。如果文件不存在,应该提示错误。
上传时间: 2014-01-11
上传用户:康郎
#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 (请将此地址复制到浏览器地址栏中访问下载页面)
标签: 成绩查询系统
上传时间: 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);//输入总函数 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
上传用户:啊的撒旦
产品型号:VK3604A 产品品牌:VINKA/永嘉微电 封装形式:SOP16 产品年份:新年份 联 系 人:陈锐鸿 Q Q:361 888 5898 联系手机:188 2466 2436(信) 概述: VK3604/VK3604A具有4个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的 集成度,仅需极少的外部组件便可实现触摸按键的检测。 提供了4路输出功能,可通过IO脚选择输出电平,输出模式,输出脚结构,单键/多键和最 长输出时间。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可减少按键检测错误的 发生,此特性保证在不利环境条件的应用中芯片仍具有很高的可靠性。 此触摸芯片具有自动校准功能,低待机电流,抗电压波动等特性,为各种触摸按键+IO输 出的应用提供了一种简单而又有效的实现方法。 特点: • 工作电压 2.4-5.5V • 待机电流7uA/3.3V,14uA/5V • 上电复位功能(POR) • 低压复位功能(LVR) • 触摸输出响应时间:工作模式 48mS ,待机模式160mS • 通过AHLB脚选择输出电平:高电平有效或者低电平有效 • 通过TOG脚选择输出模式:直接输出或者锁存输出 • 通过SOD脚选择输出方式:CMOS输出或者开漏输出 • 通过SM脚选择输出:多键有效或者单键有效 • 通过MOT脚有效键最长输出时间:无穷大或者16S • 通过CS脚接对地电容调节整体灵敏度(1-47nF) • 各触摸通道单独接对地小电容微调灵敏度(0-50pF) • 上电0.25S内为稳定时间,禁止触摸 • 上电后4S内自校准周期为64mS,4S无触摸后自校准周期为1S • 封装SOP16(150mil)(9.9mm x 3.9mm PP=1.27mm) ———————————————— 产品型号:VK3604B 产品品牌:VINKA/永嘉微电 封装形式:TSSOP16 产品年份:新年份 联 系 人:陈锐鸿 1.概述 VK3604B具有4个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有 较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。 提供了4路直接输出功能。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可 减少按键检测错误的发生,此特性保证在不利环境条件的应用中芯片仍具有很高的可靠性。 此触摸芯片具有自动校准功能,低待机电流,抗电压波动等特性,为各种触摸按键+IO 输出的应用提供了一种简单而又有效的实现方法。 特点 • 工作电压 2.4-5.5V • 待机电流7uA/3.3V,14uA/5V • 上电复位功能(POR) • 低压复位功能(LVR) • 触摸输出响应时间: 工作模式 48mS 待机模式160mS • CMOS输出,低电平有效,支持多键 • 有效键最长输出16S • 无触摸4S自动校准 • 专用脚接对地电容调节灵敏度(1-47nF) • 各触摸通道单独接对地小电容微调灵敏度(0-50pF). • 上电0.25S内为稳定时间,禁止触摸. • 封装 TSSOP16L(4.9mm x 3.9mm PP=1.00mm) KPP841 标准触控IC-电池供电系列: VKD223EB --- 工作电压/电流:2.0V-5.5V/5uA-3V 感应通道数:1 通讯界面 最长回应时间快速模式60mS,低功耗模式220ms 封装:SOT23-6 VKD223B --- 工作电压/电流:2.0V-5.5V/5uA-3V 感应通道数:1 通讯界面 最长回应时间快速模式60mS,低功耗模式220ms 封装:SOT23-6 VKD233DB --- 工作电压/电流:2.4V-5.5V/2.5uA-3V 1感应按键 封装:SOT23-6 通讯界面:直接输出,锁存(toggle)输出 低功耗模式电流2.5uA-3V VKD233DH ---工作电压/电流:2.4V-5.5V/2.5uA-3V 1感应按键 封装:SOT23-6 通讯界面:直接输出,锁存(toggle)输出 有效键最长时间检测16S VKD233DS --- 工作电压/电流:2.4V-5.5V/2.5uA-3V 1感应按键 封装:DFN6(2*2超小封装) 通讯界面:直接输出,锁存(toggle)输出 低功耗模式电流2.5uA-3V VKD233DR --- 工作电压/电流:2.4V-5.5V/1.5uA-3V 1感应按键 封装:DFN6(2*2超小封装) 通讯界面:直接输出,锁存(toggle)输出 低功耗模式电流1.5uA-3V VKD233DG --- 工作电压/电流:2.4V-5.5V/2.5uA-3V 1感应按键 封装:DFN6(2*2超小封装) 通讯界面:直接输出,锁存(toggle)输出 低功耗模式电流2.5uA-3V VKD233DQ --- 工作电压/电流:2.4V-5.5V/5uA-3V 1感应按键 封装:SOT23-6 通讯界面:直接输出,锁存(toggle)输出 低功耗模式电流5uA-3V VKD233DM --- 工作电压/电流:2.4V-5.5V/5uA-3V 1感应按键 封装:SOT23-6 (开漏输出) 通讯界面:开漏输出,锁存(toggle)输出 低功耗模式电流5uA-3V VKD232C --- 工作电压/电流:2.4V-5.5V/2.5uA-3V 感应通道数:2 封装:SOT23-6 通讯界面:直接输出,低电平有效 固定为多键输出模式,内建稳压电路 MTP触摸IC——VK36N系列抗电源辐射及手机干扰: VK3601L --- 工作电压/电流:2.4V-5.5V/4UA-3V3 感应通道数:1 1对1直接输出 待机电流小,抗电源及手机干扰,可通过CAP调节灵敏 封装:SOT23-6 VK36N1D --- 工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:1 1对1直接输出 触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOT23-6 VK36N2P --- 工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:2 脉冲输出 触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOT23-6 VK3602XS ---工作电压/电流:2.4V-5.5V/60UA-3V 感应通道数:2 2对2锁存输出 低功耗模式电流8uA-3V,抗电源辐射干扰,宽供电电压 封装:SOP8 VK3602K --- 工作电压/电流:2.4V-5.5V/60UA-3V 感应通道数:2 2对2直接输出 低功耗模式电流8uA-3V,抗电源辐射干扰,宽供电电压 封装:SOP8 VK36N2D --- 工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:2 1对1直接输出 触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏封装:SOP8 VK36N3BT ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:3 BCD码锁存输出 触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏 封装:SOP8 VK36N3BD ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:3 BCD码直接输出 触摸积水仍可操作,抗电源及手机干扰,可通过CAP调节灵敏 封装:SOP8 VK36N3BO ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:3 BCD码开漏输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP8/DFN8(超小超薄体积) VK36N3D --- 工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:3 1对1直接输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N4B ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:4 BCD输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N4I---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:4 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N5D ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:5 1对1直接输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N5B ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:5 BCD输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N5I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:5 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N6D --- 工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:6 1对1直接输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N6B ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:6 BCD输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N6I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:6 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N7B ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:7 BCD输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N7I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:7 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N8B ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:8 BCD输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N8I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:8 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N9I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:9 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) VK36N10I ---工作电压/电流:2.2V-5.5V/7UA-3V3 感应通道数:10 I2C输出 触摸积水仍可操作,抗电源及手机干扰 封装:SOP16/DFN16(超小超薄体积) 1-8点高灵敏度液体水位检测IC——VK36W系列 VK36W1D ---工作电压/电流:2.2V-5.5V/10UA-3V3 1对1直接输出 水位检测通道:1 可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOT23-6 备注:1. 开漏输出低电平有效 2、适合需要抗干扰性好的应用 VK36W2D ---工作电压/电流:2.2V-5.5V/10UA-3V3 1对1直接输出 水位检测通道:2 可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP8 备注:1. 1对1直接输出 2、输出模式/输出电平可通过IO选择 VK36W4D ---工作电压/电流:2.2V-5.5V/10UA-3V3 1对1直接输出 水位检测通道:4 可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16 备注:1. 1对1直接输出 2、输出模式/输出电平可通过IO选择 VK36W6D ---工作电压/电流:2.2V-5.5V/10UA-3V3 1对1直接输出 水位检测通道:6 可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16 备注:1. 1对1直接输出 2、输出模式/输出电平可通过IO选择 VK36W8I ---工作电压/电流:2.2V-5.5V/10UA-3V3 I2C输出 水位检测通道:8 可用于不同壁厚和不同水质水位检测,抗电源/手机干扰封装:SOP16/DFN16 备注:1. IIC+INT输出 2、输出模式/输出电平可通过IO选择 KPP841
标签: 3604 输出 VK 体积 蓝牙音箱 检测 方式 芯片 触控 锁存
上传时间: 2022-04-11
上传用户:shubashushi66
产品型号:VK2C23A/B 产品品牌:VINKA/永嘉微/永嘉微电 封装形式:LQFP64/48 裸片:DICE(邦定COB)/COG(邦定玻璃用) 产品年份:新年份 联 系 人:许硕 原厂直销,工程服务,技术支持,价格最具优势!QT394 VK2C23A/B概述: VK2C23A/B是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。 特点: ★ 工作电压 2.4-5.5V ★ 内置32 kHz RC振荡器 ★ 偏置电压(BIAS)可配置为1/3、1/4 ★ COM周期(DUTY)可配置为1/4、1/8 ★ 内置显示RAM为56x4位、52x8位 ★ 帧频可配置为80Hz、160Hz ★ 省电模式(通过关显示和关振荡器进入)
标签: VK2C I2C LCD 23 抗干扰 高稳定 接口 控制 驱动IC
上传时间: 2022-04-16
上传用户:2937735731