编程实现自检
⑴ 单片机编程,自检程序
我在这里给出思路如下:
启动周期为1秒的定时器中断,在中断程序中根据跑马灯显示标志、L1显示标志、L2显示标志、L1显示的当前数值、L2显示的当前数值(这些应该定义在RAM中,并在启动程序时初始化),控制输出口以实现跑马灯以及L1和L2的显示。
整个程序应该是一个循环,在循环中监测键盘(P3.0、3.1、3.2、3.3 ),根据键盘的状态设置相关的标志。
详细的代码在这里我就不给出了,没有时间去做。
⑵ c语言编程 发出像开机自检时的声
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
void main()
{
unsigned int a;
while(1)
{
a=getchar();
switch(a)
{
case'1':
sound(100);
delay(100);
nosound();
break;
case'q':
{
exit(1);
break;
}
}
}
}
主要是调用库函数.
⑶ c语言编程里自动检测到输入结束的方法
char str[1000];
gets(str);
再根据需要对字符串的内容进行处理。
⑷ C语言编程实现
所有转换
一个函数实现
原来贴的有点问题
改了
#include<stdio.h>
#define size 64
void transform(int n1,char c[size],int n2)
{
int a[size]={0},j,i=0;
long int num=0;
if(n1>10)
{
while(c[i])
{
if(c[i]>='0'&&c[i]<='9')
num=num*n1+c[i++]-48;
else if(c[i]>='A'&&c[i]<='Z')
num=num*n1+c[i++]-55;
else if(c[i]>='a'&&c[i]<='z')
num=num*n1+c[i++]-87;
else
{
puts("error\n");
return;
}
}
i=0;
}
else
while(c[i])
{
if(c[i]<'0'||c[i]>'9')
{
puts("error\n");
return;
}
num=num*n1+c[i++]-'0';
}
i=0;
while(num!=0)
{
a[i++]=num%n2;
num/=n2;
}
printf("(%s)%d转换为:\n(",c,n1);
if(n2<10)
{
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf(")%d\n",n2);
}
else
{
for(j=i-1;j>=0;j--)
if(a[i]>=10)
printf("%c",a[j]+55);
else
printf("%d",a[j]);
printf(")%d\n",n2);
}
}
main()
{
int n1,n2;
char c[size]={0};
do
{
puts("输入现在数的进制类型:\n");
scanf("%d",&n1);
puts("输入需要转换的数据:\n");
scanf("%s",c);
puts("输入目标数的进制类型:\n");
scanf("%d",&n2);
transform(n1,c,n2);
puts("输入y继续,按任意键退出:\n");
getchar();
}while(getchar()=='y');
}
这个程序有错误提示
还有好可以实现16进制之内的任意进制数的相互转换
我真不想拿上来
如果不明白
留言
必回
⑸ C语言:编程实现输入,输出
方法很多,我用数组实现。
定义20大小数组,下标加1就是1~20的数字,数组元素值就是输入状态。
#include<stdio.h>
#include<windows.h>
#include<conio.h>
void show(int *nums);
int main()
{
int nums[20]={0};//表示1到20个数字的状态,0表示未被输入,1表示已被输入
int save[19],*p=save,n=19,in=0,flag;
while(n--)
{
flag=1;
system("cls");
show(nums);
printf("请输入一个数字(1~20):"),scanf("%d",&in);
while(in<1 || in>20 || nums[in-1]==1)
{
if(in<1 || in>20)
printf("输入错误!只能输入1~20的整数!...按任意键重新输入... "),getch();
else if(nums[in-1]==1)
printf("输入错误!数字%d已输入,不能重复!...按任意键重新输入... ",in),getch();
flag=0;
n++;
break;
}
if(flag)
*p=in,nums[in-1]=1;
}
return 0;
}
void show(int *nums)
{
int i;
printf("已输入数字:");
for(i=0;i<20;i++)
if(nums[i])
printf("%d ",i+1);
printf(" 未输入数字:");
for(i=0;i<20;i++)
if(!nums[i])
printf("%d ",i+1);
printf(" ");
}
⑹ 用C语言编程实现~~急
#include "stdio.h"
#include "stdlib.h"
#define M 3
#define N 3
//指针数组
int a[M][N];
int b[M][N];
int c[M][N];
void matrixMul(int b[][M],int c[][N]);
void matrixAdd(int b[][N],int c[][N]);
void matrixSub(int b[][N],int c[][N]);
int main()
{
int i,j,temp=0;
printf("Please input int matrix b[%d][%d]\n",M,N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
scanf("%d",&temp);
b[i][j]=temp;
}
printf("Please input int matrix c[%d][%d]\n",M,N);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&temp);
c[i][j]=temp;
}
}
//输出原矩阵
printf("Now print resource matrix b[%d][%d]=",M,N);
for(i=0;i<M;i++){
printf("\n");
for(j=0;j<N;j++)
printf("%d ",b[i][j]);
}
printf("\n");
printf("Now print resource matrix c[%d][%d]=",M,N);
for(i=0;i<M;i++){
printf("\n");
for(j=0;j<N;j++)
printf("%d ",c[i][j]);
}
if (M == N)
{
matrixMul(b,c); //调用矩阵相乘
//输出矩阵相乘结果
printf("\n");
printf("Now printm matrixMul results matrix a[%d][%d]=B*C:",M,N);
for(i=0;i<M;i++)
{
printf("\n");
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
}
}
else
{
printf("matrix Error,check and try again!!! ");
}
//输出矩阵相加结果
matrixAdd(b,c);
printf("\n");
printf("Now printm matrixAdd results matrix a[%d][%d]=B+C:",M,N);
for(i=0;i<M;i++)
{
printf("\n");
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
}
//输出矩阵相减结果
matrixSub(b,c);
printf("\n");
printf("Now printm matrixSub results matrix a[%d][%d]=B-C:",M,N);
for(i=0;i<M;i++)
{
printf("\n");
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
}
return 0;
}
void matrixMul(int b[][M],int c[][N])
{
int i,j,k;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
a[i][j]+=b[i][k]*c[k][j];
}
}
void matrixAdd(int b[][M],int c[][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[i][j]+c[i][j];
}
}
}
void matrixSub(int b[][M],int c[][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[i][j]-c[i][j];
}
}
}
我大概看了下,加减乘都能实现
网上资料
⑺ 编程实现
我写过一个,不过我设置的是10个小朋友做得测试,你看看:
代码:
--------------------------------------------------------------------------------------------------------
#include<iostream>
using namespace std;
const int MAX_USER=10;
const int OUT_NUM=3;
const int STATUS_IN=1;
const int STATUS_OUT=0;
const int MARK_OUT=2;
const int MARK_MASK=OUT_NUM;
typedef struct{
int id;
int status;
int marked;
} uinfo,*pinfo;
void print_info(pinfo user);
int circle(pinfo users,int total,int nth)
{
int tu=total;
int i=0;
int cur_mark=0;
while(tu>1)
{
i=i%total;
cur_mark%=nth;
if(users[i].status!=STATUS_OUT)
{
users[i].marked=cur_mark;
if(users[i].marked==MARK_OUT)
{
tu--;
users[i].status=STATUS_OUT;
cout<<"remove user's info:\n";
print_info(&users[i]);
}
}else{
//check next element
i++;
continue;
}
i++;
cur_mark++;
}
i=0;
while(users[i].status==STATUS_OUT)i++;
return i;
}
void init_info(pinfo user,int size)
{
int i=0;
for(i=0;i<size;i++)
{
user[i].id=i+1;
user[i].status=STATUS_IN;
user[i].marked=MARK_OUT-OUT_NUM;
//print_info(&user[i]);
}
}
void print_info(pinfo user)
{
cout<<"--------------------info -----------------\n";
cout<<"id:\t"<<user->id<<endl;
cout<<"status:\t"<<user->status<<endl;
cout<<"marked:\t"<<user->marked+1<<endl;
cout<<"----------------------------------------\n";
}
int main()
{
uinfo *users=new uinfo[MAX_USER];
init_info(users,MAX_USER);
int findNO=0;
findNO=circle(users,MAX_USER,MARK_MASK);
cout<<endl;
cout<<endl;
cout<<"**************************************************\n";
//cout<<findNO<<endl;
cout<<"find last one :\n";
print_info(&users[findNO]);
cout<<"**************************************************\n";
return 0;
}
运行结果:
----------------------------------------------------------------------------------------------------------
remove user's info:
--------------------info -----------------
id: 3
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 6
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 9
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 2
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 7
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 1
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 8
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 5
status: 0
marked: 3
----------------------------------------
remove user's info:
--------------------info -----------------
id: 10
status: 0
marked: 3
----------------------------------------
**************************************************
find last one :
--------------------info -----------------
id: 4
status: 1
marked: 2
----------------------------------------
**************************************************
⑻ 求PLC编程软件及模拟自检软件。
欧姆龙的CX-one就可以模拟的。
⑼ 三菱plc中如何编自检程序,用fx3u
摘要 双击桌面上三菱plc编程软件 GX work2 创建新工程 点击工程——新建工程选择工程类型:简单工程 —— plc系列:FXCPU—— plc类型:FX3U/FXUC——编程语言:梯形图设置