#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
上传用户:啊的撒旦
产品型号(封装形式): VK3702DM VK3702TM VK3702OM——(SOP8 ) VK3706OM VK3706OM VK3706DM VK3708BM VK3710IM——(SOP16) 产品品牌:VIntEK/元泰 产品年份:新年份 深圳永嘉微电原厂直销,大量现货更有优势!让您的生产高枕无忧。 联系人:许硕 QQ:191 888 5898 TEL:188 9858 2398(微信) ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702DM提供2個觸摸感應按鍵,一對一直接輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702TM提供 2 個觸摸感應按鍵,一對一的 Toggle 模式輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702OM提供 2 個觸摸感應按鍵,一對一直接輸出,輸出為開漏(open drain)型態,適合作 AD 鍵。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3706OM提供6個觸摸感應按鍵,一對一直接輸出,輸出為開漏(open drain)型態,適合作AD鍵。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3706DM提供6個觸摸感應按鍵,一對一直接輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3708BM提供8個觸摸感應按鍵,二進制(BCD)編碼輸出,具有一個按鍵承認輸出的顯示,按鍵後的資料會維持到下次按鍵,可先判斷按鍵承認的狀態。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3710IM提供10個觸摸感應按鍵及兩線式串列界面,並有中斷輸出Int腳與MCU聯繫。提供低功耗模式,可使用於電池應用的產品。特性上對於防水和抗干擾方面有很優異的表現! 我们的优势 1:我司为VIntEK/台湾元泰半导体股份有限公司/VINKA的授权大中华区代理商,产品渠道正宗,确保原装,大量库存现货! 2:公司工程力量雄厚,真诚技术服务支持,搭配原厂服务各种应用产品客户。 3:好价格源自连接原厂直销,你有量,我有价,确保原装的好价格。 优势代理元泰VKD常用触控按键IC,简介如下: 标准触控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 VKD232C --- 工作电压/电流: 2.4V-5.5V/2.5uA-3V 感应通道数:2封装:SOT23-6 通讯接口:直接输出,低电平有效 固定为多键输出模式,內建稳压电路 VKD233DH(更小体积2*2)---工作电压/电流: 2.4V-5.5V/2.5uA-3V 1按键 封装:DFN6L 通讯接口:直接输出,锁存(toggle)输出 有效键更长时间检测16S 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 标准触控IC-多键触摸按钮系列 VKD104SB/N --- 工作电压/电流:2.4V-5.5V/13uA-3V 感应通道数/按键数:4 通讯接口:直接输出,锁存输出,开漏输出 封装:SSOP-16 VKD104BC --- 工作电压/电流:2.4V-5.5V/13uA-3V 感应通道数/按键数:4 通讯接口:直接输出,锁存输出,开漏输出 封装:SOP-16 VKD104BR --- 工作电压/电流:2.4V-5.5V/13uA-3V 感应通道数/按键数:2 通讯接口:直接输出, toggle输出 封装:SOP-8 VKD104QB --- 工作电压/电流:2.4V-5.5V/13uA-3V 感应通道数/按键数:4 通讯接口:直接输出,锁存输出,开漏输出 封装:QFN-16 VKD1016B --- 工作电压/电流:2.4V-5.5V/20uA-3V 感应通道数/按键数:16-8 通讯接口:直接输出,锁存输出,开漏输出 封装:SSOP-28 VKD1016L --- 工作电压/电流:2.4V-5.5V/20uA-3V 感应通道数:16-8 通讯接口:直接输出,锁存输出,开漏输出 封装:SSOP-28 (元泰原厂授权 原装保障 工程技术支持 大量现货库存) 标准触控IC-VK36系列 VK3601SS --- 工作电压/电流:2.4V-5.5V/1mA-5.0V 感应通道数:1 通讯接口:1 INPUT/1PWM OUT 封装:SOP-8 VK3601S --- 工作电压/电流:2.4V-5.5V/4mA-3.3V 感应通道数:1 通讯接口:1 INPUT/1PWM OUT 封装:SOP-8 VK3602XS --- 工作电压/电流:2.4V-5.5V/ 60uA-3V 感应通道数:2 通讯接口:2对2 toggle输出 封装:SOP-8 VK3602K --- 工作电压/电流:2.4V-5.5V/ 60uA-3V 感应通道数:2 通讯接口:2对2 toggle输出 封装:SOP-8 VK3606DM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:1对1直接输出 封装:SOP-16 VK3606OM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:1对1开漏输出 封装:SOP-16 VK3608BM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:BCD码直接输出 封装:SOP-16 VK3610IM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:SCL/SDA/Int通讯口 封装:SOP-16 标准触控IC-VK37系列 VK3702DM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:2 通讯接口:1对1直接输出 封装:SOP-8 VK3702OM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:2 通讯接口:1对1开漏输出 封装:SOP-8 VK3702TM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:2 通讯接口:1对1toggle输出 封装:SOP-8 VK3706DM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:1对1直接输出 封装:SOP-16 VK3706OM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:6 通讯接口:1对1开漏输出 封装:SOP-16 VK3708BM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:8 通讯接口:BCD码直接输出 封装:SOP-16 VK3710IM --- 工作电压/电流:3.1V-5.5V/ 3mA-5V 感应通道数:10 通讯接口:SCL/SDA/Int通讯口 封装:SOP-16 标准触控IC-VK38系列 VK3809IP --- 工作电压/电流:2.5V-5.5V/1.1mA-3V 感应通道数:9 通讯接口:IIC/Int通讯口 封装:SSOP-16 VK3813IP --- 工作电压/电流:2.5V-5.5V/1.1mA-3V 感应通道数:13 通讯接口:IIC/Int通讯口 封装:SSOP-20 VK3816IP --- 工作电压/电流:2.5V-5.5V/1.1mA-3V 感应通道数:16 通讯接口:IIC/Int通讯口 封装:SSOP-28 VK3816IP-A --- 工作电压/电流:2.5V-5.5V/1.1mA-3V 感应通道数:16 通讯接口:IIC/Int通讯口 封装:SSOP-28 以上介绍内容为IC参数简介,难免有错漏,且相关IC型号众多,未能一一收录。欢迎联系索取完整资料及样品! 生意无论大小,做人首重诚信!本公司全体员工将既往开来,再接再厉。争取为各位带来更专业的技术支持,更优质的销售服务,更高性价比的好产品.竭诚希望能与各位客户朋友深入沟通,携手共进,共同成长,合作共赢!谢谢。
标签: VK 3708 3710 BM IM 多按键 抗干扰 防水 操作 触控
上传时间: 2019-07-10
上传用户:szqxw1688
pid控制 #ifndef _PID_H #ifndef _PID_H #ifdef _PID_C #define PID_EXT #else #define PID_EXT extern #endif typedef struct PID { Int SetPoInt; unsigned char BitMove; float Proportion; float Integral; float Derivative; Int iError; Int iIncpid; Int LastError; Int PrevError; Int Uk; }PID,*pPID; PID_EXT PID sPID; PID_EXT pPID sptr; void IncPIDInit(void); Int IncPIDCalc(Int NextPoInt); #endif
上传时间: 2019-08-02
上传用户:stcwzy
一.產品描述 提供10個觸摸感應按鍵及兩線式串列界面,並有中斷輸出Int腳與MCU聯繫。特性上對於防水和抗干擾方面有很優異的表現! 二。產品特色 1. 工作電壓範圍:3.1V – 5.5V 2. 工作電流:3mA@5V 3. 10 個觸摸感應按鍵 4. 提供串列界面 SCK、SDA、Int 作為與 MCU 溝通方式。 5. 可以經由調整 CAP 腳的外接電容,調整靈敏度,電容越大靈敏度越高 6.具有防水及水漫成片水珠覆蓋在觸摸按鍵面板,按鍵仍可有效判別 7. 內建 LDO 增加電源的抗干擾能力 三。產品應用 各種大小家電,娛樂產品 四.功能描述 1.VK3610IM 於手指按壓觸摸盤,在 60ms 內輸出對應按鍵的狀態。 2.單鍵優先判斷輸出方式處理, 如果 K1 已經承認了, 需要等 K1 放開後, 其他按鍵才能再被承認,同時間只有一個按鍵狀態會被輸出。 3.具有防呆措施, 若是按鍵有效輸出連續超過 10 秒, 就會做復位。 4.環境調適功能,可隨環境的溫濕度變化調整參考值,確保按鍵判斷工作正常。 5.可分辨水與手指的差異,對水漫與水珠覆蓋按鍵觸摸盤,仍可正確判斷按鍵動作。但水不可於按鍵觸摸盤上形成“水柱”,若如此則如同手按鍵一般,會有按鍵承認輸出。 6.內建 LDO 及抗電源雜訊的處理程序,對電源漣波的干擾有很好的耐受能力。 7.不使用的按鍵請接地,避免太過靈敏而產生誤動。
标签: KEYS VK3610 SOP 10 16 IM VK 抗干扰
上传时间: 2019-08-08
上传用户:szqxw1688
# 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; }
上传时间: 2019-10-13
上传用户:大萌萌撒
概述 VK36N7B具有7个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。提供了BCD输出功能,可方便与外部 MCU 之间的通讯,实现设备安装及触摸引脚监测目的。芯片内部采用特殊的集成电路,具有高电源电压抑制比,可减少按键检测错误的发生,此特性保证在不利环境条件的应用中芯片仍具有很高的可靠性。 此触摸芯片具有自动校准功能,低待机电流,抗电压波动等特性,为各种触摸按键的应用提供了一种简单而又有效的实现方法。 特性 • 工作电压:2.2V~5.5V • 低待机电流10uA/3V • 低压重置(LVR)电压2.0V • 4S自动校准功能 • 可靠的触摸按键检测 • 无键按下4S进入待机模式 • 防呆功能长按10S复位 • 具备抗电压波动功能 • 3位BCD输出+Int中断脚 • 上电时OPT脚选择输出高有效还是低有效 • 专用管脚外接电容(1nF-47nF)调整灵敏度 • 极少的外围组件
标签: 高抗干扰 防呆功能长按10S复位 具备抗电压波动功能
上传时间: 2020-02-25
上传用户:shubashushi66
定义雇员类Employee,包含string型成员变量m_Name(姓名)和m_No(编号),Int型成员变量m_Department(部门号),成员函数SetName(string),SetNo(string),SetDept(Int)分别用来设置姓名、编号和部门号,Display()函数用来输出雇员信息,还包含一个构造函数Employee(string,string,Int)。定义一个经理类Manager,派生于雇员类Employee,新增成员变量m_Level表示级别和成员函数SetLevel(Int)用来设置m_Level。
上传时间: 2020-05-03
上传用户:coisini
参照栈类模板的例子编写一个队列类模板class <T> Queue,私有成员包括:队首指针Front,队尾指针Tail,队列容积max。实现:构造函数Queue,复制构造函数Queue,析构函数~Queue,入队函数In,出队函数Out(每次出队,后面的元素自动前移一位),判队列空函数Empty。并分别用队列类模板定义Int和double对象,通过实例调用各个成员函数。
标签: Queue 函数 double class Front Empty 队列 Tail 模板 Out
上传时间: 2020-05-04
上传用户:1qw2e3r4t5y6u7i8
#include<stdio.h> #define TREEMAX 100 typedef struct BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); Int TreeDepth(BT *T); Int count=0; void main() { BT *T=NULL; char ch1,ch2,a; ch1='y'; while(ch1=='y'||ch1=='y') { prIntf("\n"); prIntf("\n\t\t 二叉树子系统"); prIntf("\n\t\t*****************************************"); prIntf("\n\t\t 1---------建二叉树 "); prIntf("\n\t\t 2---------先序遍历 "); prIntf("\n\t\t 3---------中序遍历 "); prIntf("\n\t\t 4---------后序遍历 "); prIntf("\n\t\t 5---------求叶子数 "); prIntf("\n\t\t 6---------求结点数 "); prIntf("\n\t\t 7---------求树深度 "); prIntf("\n\t\t 0---------返 回 "); prIntf("\n\t\t*****************************************"); prIntf("\n\t\t 请选择菜单号 (0--7)"); scanf("%c",&ch2); getchar(); prIntf("\n"); switch(ch2) { case'1': prIntf("\n\t\t请按先序序列输入二叉树的结点:\n"); prIntf("\n\t\t说明:输入结点(‘0’代表后继结点为空)后按回车。\n"); prIntf("\n\t\t请输入根结点:"); T=CreateTree(); prIntf("\n\t\t二叉树成功建立!\n");break; case'2': prIntf("\n\t\t该二叉树的先序遍历序列为:"); Preorder(T);break; case'3': prIntf("\n\t\t该二叉树的中序遍历序列为:"); Inorder(T);break; case'4': prIntf("\n\t\t该二叉树的后序遍历序列为:"); Postorder(T);break; case'5': count=0;Leafnum(T); prIntf("\n\t\t该二叉树有%d个叶子。\n",count);break; case'6': count=0;Nodenum(T); prIntf("\n\t\t该二叉树总共有%d个结点。\n",count);break; case'7': prIntf("\n\t\t该树的深度为:%d",TreeDepth(T)); break; case'0': ch1='n';break; default: prIntf("\n\t\t***请注意:输入有误!***"); } if(ch2!='0') { prIntf("\n\n\t\t按【Enter】键继续,按任意键返回主菜单!\n"); a=getchar(); if(a!='\xA') { getchar(); ch1='n'; } } } } BT *CreateTree() { BT *t; char x; scanf("%c",&x); getchar(); if(x=='0') t=NULL; else { t=new BT; t->data=x; prIntf("\n\t\t请输入%c结点的左子结点:",t->data); t->lchild=CreateTree(); prIntf("\n\t\t请输入%c结点的右子结点:",t->data); t->rchild=CreateTree(); } return t; } void Preorder(BT *T) { if(T) { prIntf("%3c",T->data); Preorder(T->lchild); Preorder(T->rchild); } } void Inorder(BT *T) { if(T) { Inorder(T->lchild); prIntf("%3c",T->data); Inorder(T->rchild); } } void Postorder(BT *T) { if(T) { Postorder(T->lchild); Postorder(T->rchild); prIntf("%3c",T->data); } } void Leafnum(BT *T) { if(T) { if(T->lchild==NULL&&T->rchild==NULL) count++; Leafnum(T->lchild); Leafnum(T->rchild); } } void Nodenum(BT *T) { if(T) { count++; Nodenum(T->lchild); Nodenum(T->rchild); } } Int TreeDepth(BT *T) { Int ldep,rdep; if(T==NULL) return 0; else { ldep=TreeDepth(T->lchild); rdep=TreeDepth(T->rchild); if(ldep>rdep) return ldep+1; else return rdep+1; } }
上传时间: 2020-06-11
上传用户:ccccy
#include <stdio.h> #include <stdlib.h> #define SMAX 100 typedef struct SPNode { Int i,j,v; }SPNode; struct sparmatrix { Int rows,cols,terms; SPNode data [SMAX]; }; sparmatrix CreateSparmatrix() { sparmatrix A; prIntf("\n\t\t请输入稀疏矩阵的行数,列数和非零元素个数(用逗号隔开):"); scanf("%d,%d,%d",&A.cols,&A.terms); for(Int n=0;n<=A.terms-1;n++) { prIntf("\n\t\t输入非零元素值(格式:行号,列号,值):"); scanf("%d,%d,%d",&A.data[n].i,&A.data[n].j,&A.data[n].v); } return A; } void ShowSparmatrix(sparmatrix A) { Int k; prIntf("\n\t\t"); for(Int x=0;x<=A.rows-1;x++) { for(Int y=0;y<=A.cols-1;y++) { k=0; for(Int n=0;n<=A.terms-1;n++) { if((A.data[n].i-1==x)&&(A.data[n].j-1==y)) { prIntf("%8d",A.data[n].v); k=1; } } if(k==0) prIntf("%8d",k); } prIntf("\n\t\t"); } } void sumsparmatrix(sparmatrix A) { SPNode *p; p=(SPNode*)malloc(sizeof(SPNode)); p->v=0; Int k; k=0; prIntf("\n\t\t"); for(Int x=0;x<=A.rows-1;x++) { for(Int y=0;y<=A.cols-1;y++) { for(Int n=0;n<=A.terms;n++) { if((A.data[n].i==x)&&(A.data[n].j==y)&&(x==y)) { p->v=p->v+A.data[n].v; k=1; } } } prIntf("\n\t\t"); } if(k==1) prIntf("\n\t\t对角线元素的和::%d\n",p->v); else prIntf("\n\t\t对角线元素的和为::0"); } Int main() { Int ch=1,choice; struct sparmatrix A; A.terms=0; while(ch) { prIntf("\n"); prIntf("\n\t\t 稀疏矩阵的三元组系统 "); prIntf("\n\t\t*********************************"); prIntf("\n\t\t 1------------创建 "); prIntf("\n\t\t 2------------显示 "); prIntf("\n\t\t 3------------求对角线元素和"); prIntf("\n\t\t 4------------返回 "); prIntf("\n\t\t*********************************"); prIntf("\n\t\t请选择菜单号(0-3):"); scanf("%d",&choice); switch(choice) { case 1: A=CreateSparmatrix(); break; case 2: ShowSparmatrix(A); break; case 3: SumSparmatrix(A); break; default: system("cls"); prIntf("\n\t\t输入错误!请重新输入!\n"); break; } if (choice==1||choice==2||choice==3) { prIntf("\n\t\t"); system("pause"); system("cls"); } else system("cls"); } }
上传时间: 2020-06-11
上传用户:ccccy