基于单片机的,用C如何编程,大侠们看一下流程图和电路图!麻烦帮写个程序!给100分!感激不尽啊!!!

2025-01-05 06:47:23
推荐回答(2个)
回答1:

昨天有回答你,没提交上去,你看下吧!或许能帮你,也有百度私信给你
需要开启定时器设定100MS开启一次,置标志位flag_t0=1;
定时器函数根据资料自己写吧!我很少用51的,对格式不太了解,你自己参照资料改下就好了
void main()
{
init();//单片机初始化部分,包括端口初始化,定时器初始化等

while(1)

{
if(flag_t0==1)//每100MS运行一次程序

{
flag_t0=0;

num_t0++;

if(num_t0>=1200)//每两分钟判断按键是否按下,改变数码管显示状态及LED显示状态

{
num_t0=0;

if(flag_k2==1)//按键标志=1说明两分钟内有按键按下,数码显示数字+1,LED绿亮红灭

{
flag_k2=0;

num_shuma++;

if(num_shuma=10)

num_shuma=0;

p1.1=1;p1.0=0;

}

else //按键标志!=1说明两分钟内没有按键按下,LED绿灭红亮

{
p1.1=0;p1.0=1;

}

P2=DSY_CODE[num_shuma];//给数码管输出

}

if(k2==0)//每100MS检测按键,有按下时flag_k2置为1

{
flag_k2=1;

}
}
}
}

回答2:

#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit P3^2=K1;
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};

void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}

void main()
{
uchar i=0;
P0=0x00;
while(1)
{
if(k==0)
{
DelayMS(5);
if(k==0)
{
i++;
if(i>=10)
i=0;
P0=~DSY_CODE[i];
显示0-9*/
DelayMS(200);
}
}
}