#include <string.h>
#include <math.h>
int value_of_color(char *input)
{
int i = 0
char color[][4] = {"黑", "棕", "红", "橙", "黄", "绿", "蓝", "紫", "灰", "白"}
for(i = 0i <10++i)
{
if(0 == strcmp(color[i], input))
{
break
}
}
if(10 == i)
{
i = -1
}
return i
}
int main(void)
{
int ret = 0
char input[4] = {0}
int value = 0
do
{
do
{
printf("请输入第1个色环的颜色:")
scanf("%s", input)
if((ret = value_of_color(input)) <0)
{
printf("输入有误,请重新输入!\n")
}
} while(ret <0)
value = ret * 10
do
{
printf("请输入第2个色环的颜色:")
scanf("%s", input)
if((ret = value_of_color(input)) <0)
{
printf("输入有误,请重新输入!\n")
}
} while(ret <0)
value += ret
do
{
printf("请输入第3个色环的颜色:")
scanf("%s", input)
if((ret = value_of_color(input)) <0)
{
printf("输入有误,请重新输入!\n")
}
} while(ret <0)
value *= pow(10, ret)
printf("此电阻的阻值为%d。\n", value)
printf("退出程序,请按q,其他按键继续执行程序\n")
scanf("%s", input)
} while(0 != strcmp("q", input))
return 0
}
我在linux下测试通过。由于使用了math库,编译时别忘了连接上。
gcc main.c -lm -Wall
测电阻办法很多:1、恒流源:有一些芯片比如lm334本身就是个恒流源。让恒定电流流过被测电阻,然后用ad测出电压(电压过小时用一下运算放大器组成的比例放大电路,将它放大),送单片机分析就ok了,计算得时候倒过来算。
假定电流是1ma(这个电流是你在设计恒流源时就知道的),被测电阻假定在100欧姆左右,那么电流流过后产生的电压大概是100mv左右,但这个电压太小,ad检测不太方便,你可以搭一个放大20倍的放大器(放大器的倍数,也是事先根据电路可以计算出来的,属于已知量),把电压放大到2v左右。检测出结果(比如2.1v)后,然后倒推即可,先除以20,然后除以1ma,就可以计算出比较精确的电阻值。
2、电桥法:这个稍微麻烦一点,要用到电桥平衡,差分放大等电路,具体你要查一下网络资料,不是几句话能说清楚的。
设置个全局变量,放在键盘识别函数中,并把它设定为用后自加。 这样每次按下按键时调用键盘函数时候它就会自加,到时候调出来显示就可以了 例如:unsigned char num=0(如果你的num可能大于255的话就用int)unsigned char keyscan(void) //键盘输入函数{unsigned char key……省略……return key;num } main(){unsigned char key…………key=keyscan()…………}楼上主程序似乎太臃肿了,键盘扫描最好还是写成函数形式。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)