用C语言编写一个程序,读入电阻上的前3个色带的颜色,输出相应的阻值,某次运行结果如下

用C语言编写一个程序,读入电阻上的前3个色带的颜色,输出相应的阻值,某次运行结果如下,第1张

#include <stdio.h>

#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

{

printf("此程序根据电阻的色环值计算阻值。\n")

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()…………}楼上主程序似乎太臃肿了,键盘扫描最好还是写成函数形式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7922152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存