編程實現自檢
⑴ 單片機編程,自檢程序
我在這里給出思路如下:
啟動周期為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——編程語言:梯形圖設置