- 博客(1)
- 资源 (13)
- 收藏
- 关注
51单片机编写的基于串口控制的多路舵机控制器
现在有关舵机控制的51程序很多,大多数经本人测试会出现抖舵、控制不灵敏的问题。不知道是不是操作不当还是怎么样。经过多次试验,我特编写了这个四路的串口舵机控制装置。想再多加几路的话我想不用我细说
2011-03-08
51单片机编写的基于串口控制的多路舵机控制器
现在有关舵机控制的51程序很多,大多数经本人测试会出现抖舵、控制不灵敏的问题。不知道是不是操作不当还是怎么样。经过多次试验,我特编写了这个四路的串口舵机控制装置。想再多加几路的话我想不用我细说,大家看了就明白。里面有仿真图。这个里面有两个单片机源码。上位机可根据你的需要来编写控制代码,里面只有一些可用于避免传输误码而设置的验证重发部分代码。
2011-03-05
模拟红外遥控传输协议的红外无线传输
现在无线传输的方式多种多样,这个是采用红外遥控的通信协议编写的红外无线传输的发射和接收程序。内有仿真图,只是没有无线的仿真,用的有线代替。里面用到两个虚拟串口设备,想试验结果,可再下载我的另一个资源,里面有虚拟串口软件。
2011-03-05
采用虚拟串口与proteus联合调试
你还在为只有一个电脑无法多机多串口联调而烦恼吗?你还在竭力找到多个硬件来实现多个单片机和电脑串口的联合调试吗?这里强烈介绍一款虚拟串口软件。原来串口调试可以如此简单!!
2011-03-05
带秒针51单片机定时器电子时钟
这个是当年学习单片机时的练手之作,时钟没有采用专用时钟芯片,仅用单片机搭建。有意者可借鉴我的源码添加时钟芯片,以达到断电不复原初始时间的目的。写过专门的用1302的时钟。不过这个比较个性,外面有一圈秒针一样的LED,可随时间接次点亮。而且感觉调时部分做的不错,可像普通电子表一样的三键调时。内有源码和Proteus仿真图以及采用1302做的时钟程序,可借鉴函数融合。附加DS1302+1602+DS18B20时钟源码。
2011-03-05
可检测加减速、临时停车、终点站的循迹小车源程序
为参加学校电子设计大赛设计,内有小车实物图片和全部源代码,小车可循迹、计时、记录行驶距离、检测加减速标志、临时停车点标志、终点站标志。团队辛苦所得,不敢独享,有意者可下载。
2011-03-05
基于堆栈运算的科学计算器(可解方程)
进入程序后,键入"1" 选择进入计算器,然后出现">"
输入表达式或者方程
表达式可以是题目所要求的任意式子比如以下的输入是合法的
1+1
+1+1
-1+3
-1*4
(1-5.8)*(4+3.7)
sin(sin(1*6+8))
sin(sqr(4)-9)等等都是合法的输入
解方程时要这样有一个解方程函数是equ( )
括号里是你要求的方程可以是一到4次的任意方程
比如"
equ(x-1=0)
equ(x=1)
equ(x^4+5x^3-2x^2+x-5=0)
equ(x^3+7x-6=x^2+x-4)
等等都是合法的输入
因为解方程的词法分析程序是比较弱的,所以尽量输入正确的式子.
如果想结束运算那么直接键入"end"即可退出
2010-09-30
基于结构体的“学生分数管理”程序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 10 /*N值为所有学生数,可更改*/
#define M 5 /*M值为所有科目数*/
struct STUDENT
{ char num[6];
char name[10];
float score[M];
float sum;
float ave;
}*p;
void input(struct STUDENT *p,int i)
{
int j;
printf(" \n 请输入第%d个学生的数据(共%d个) \n ",i+1,N);
printf(" \n >>学号 : ");
scanf("%s",p->num);
printf(" \n >>姓名 : ");
scanf("%s",p->name);
for(j=0;j<M;j++)
{
printf(" \n >>Score %d : ",j+1);
scanf("%f",&p->score[j]);
}
printf(" \n *********************************************************** \n ");
}
void average(struct STUDENT *p)
{
int i;
float a=0;
for(i=0;i<M;i++)
a+=p->score[i];
p->sum=a;
p->ave=p->sum/i;
}
void print(struct STUDENT *p)
{
int j;
printf("%s\t%s\t",p->num,p->name);
for(j=0;j<M;j++)
printf("%.3f\t",p->score[j]);
printf("%.3f\t%.3f \n ",p->sum,p->ave);
printf(" \n ");
}
void maximum(struct STUDENT stu[N])
{
float max;
int i,j;
struct STUDENT s[N],*q,*r;
q=stu;
max=stu[1].ave;
for(;q<stu+N;q++)
{
if(q->ave>max)
{
max=q->ave;
r=q;
}
else r=q;
}
for(i=0,j=0;i<N;q++,i++)
{
if(stu[i].ave==max)
{
s[j]=stu[i];
j++;
}
}
printf(" \n 2.平均分最高的学生共%d个;其信息为 : \n ",j);
for(i=0;i<j;i++)
printf(" \n 学号 : %s , 姓名 : %s , 平均分 : %.3f \n ",s[i].num,s[i].name,s[i].ave);
printf("\n");
}
void ScoreAverage(struct STUDENT stu[N])
{
float sa[M],s;
int i,j;
for(i=0;i<M;i++)
{
s=0;
for(j=0;j<N;j++)
s+=stu[j].score[i];
sa[i]=s/N;
}
printf(" \n 3.每一科的平均分为 : \n \n ");
for(i=0;i<M;i++)
printf(" Score %d \t ",i+1);
printf(" \n \n ");
for(i=0;i<M;i++)
printf(" %.3f \t ",sa[i]);
printf(" \n \n ");
}
int main()
{
int i;
float s=0,a;
struct STUDENT stu[N],*p,*q;
p=stu;
printf("\n*************************欢迎使用学生成绩管理系统!************************\n");
for(i=0;p<stu+N;i++,p++)
{
input(p,i);
average(p);
s+=p->sum;
}
a=s/(M*N);
printf(" \n 1.所有学生的情况 : \n");
printf(" \n 学号\t姓名\t");
for(i=0;i<M;i++)
printf("Score%d\t",i+1);
printf("总分\t平均分 \n \n ");
for(q=stu;q<stu+N;q++)
print(q);
maximum(stu);
ScoreAverage(stu);
printf(" \n 4.总平均分为 : %.3f\n\n\n ",a);
system("pause");
return 0;
}
2010-09-30
能够解一元一次到四次方程并进行多种常见科学计算的计算器
直接输入算式或者方程,程序将自动识别并进行相应计算。开根号为sqrt,其他科学运算可直接输入。不限括号的层数。算式最长为50字符
2010-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人