如何单片机控制中c语言编程,控制5个输出端口的值,根据输入电压的多少确定各个端口(如P1-P5)的值为0或1
详细点说就是:假设单片机P1-P5为5个输出端口,刚开始是全为0.输入电压为0-5V(可变),每10秒检测一次输入电压值,当输入电压为2V以下时,P1变为1,10秒后如果...
详细点说就是:假设单片机P1-P5为5个输出端口,刚开始是全为0.
输入电压为0-5V(可变),每10秒检测一次输入电压值,当输入电压为2V以下时,P1变为1,10秒后如果输入电压还是2V以下,则P2也变为1,以此类推直到5个输出口全为1.
请问用C语言该如何写编程,我基础不太好实在是想不出该怎么写。
补充:之前的输入电压已经是AD转换后的值了,可以直接用。
用来控制的逻辑语句我不知道该怎么写,因为亮哪盏灯不是完全固定的,要看前一盏灯亮了没有,请问该用哪种语句啊····· 展开
输入电压为0-5V(可变),每10秒检测一次输入电压值,当输入电压为2V以下时,P1变为1,10秒后如果输入电压还是2V以下,则P2也变为1,以此类推直到5个输出口全为1.
请问用C语言该如何写编程,我基础不太好实在是想不出该怎么写。
补充:之前的输入电压已经是AD转换后的值了,可以直接用。
用来控制的逻辑语句我不知道该怎么写,因为亮哪盏灯不是完全固定的,要看前一盏灯亮了没有,请问该用哪种语句啊····· 展开
3个回答
展开全部
是用51的吧
在主程序判断的时候,加上一句
if(t==200)//由于t=20为1s
t=0;
然后把你要写的写进去就行了,应该。
void init()
{
TMOD=0x01;//使用定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
//定时器中断程序
void Timer0()interrupt 0
{
t++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
在主程序判断的时候,加上一句
if(t==200)//由于t=20为1s
t=0;
然后把你要写的写进去就行了,应该。
void init()
{
TMOD=0x01;//使用定时器0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
//定时器中断程序
void Timer0()interrupt 0
{
t++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的答非所问啊。这样,假设是8位adi满偏是255,那么2V的AD就是 2/5 *255=102,
定义全局变量 unsigned char Led_count,exe_once=0;//adv是ad采样的值,要自己定义
if(adv<102)
{
Led_count++;
if(exe_once==0)
{
switch(Led_count)
{
case1:P1=1;Break;
case2:P2=1;Break;
case3:P3=1;Break;
case4:P4=1;Break;
case5:P5=1;exe_once=1;Break;
}
}
通过控制计数的值你就知道什么灯应该亮,5个IO口全亮之后,就不判断了。另外不能用P1这变量的,应该写成 sbit led1=P1^1;然后led1=1;的
}
}
定义全局变量 unsigned char Led_count,exe_once=0;//adv是ad采样的值,要自己定义
if(adv<102)
{
Led_count++;
if(exe_once==0)
{
switch(Led_count)
{
case1:P1=1;Break;
case2:P2=1;Break;
case3:P3=1;Break;
case4:P4=1;Break;
case5:P5=1;exe_once=1;Break;
}
}
通过控制计数的值你就知道什么灯应该亮,5个IO口全亮之后,就不判断了。另外不能用P1这变量的,应该写成 sbit led1=P1^1;然后led1=1;的
}
}
追问
谢谢,楼上答的是如何用中断实现10秒检测一次。
还有请问一下switch(Led_count)这里用Led_count是什么意思?
追答
就是第几次检测到电压低于2V啊,每检测到加一次,5次之后灯都亮完了啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用定时器,定时时间到时,到定时器中断里面做检测
追问
大体思路我知道,但是我不知道具体程序该怎么写,该用什么逻辑语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询