急!急!急!!!用C写单片机芯片AT89S52编写一个六路抢答器的程序 20

有一个主持人控制开关和6路抢答按扭,当主持人允许抢答时才能进行抢答操作,并用一个数码管显示抢答选手的号码,同时其他选手不能再抢答。电路上要加个蜂鸣器的电路,当有选手抢答时... 有一个主持人控制开关和6路抢答按扭,当主持人允许抢答时才能进行抢答操作,并用一个数码管显示抢答选手的号码,同时其他选手不能再抢答。电路上要加个蜂鸣器的电路,当有选手抢答时蜂鸣器响一下。要有倒计时功能,开始抢答时开始倒20秒计时,用两个数码管显示,当有人抢答时停止倒计时。 展开
 我来答
kusun397
2011-09-21 · TA获得超过625个赞
知道答主
回答量:465
采纳率:0%
帮助的人:311万
展开全部
拜托给我一个用AT89S52单片机编一个用PWM控制灯亮度的程序 给个邮箱{ for(n=0;n
追问
什么是PWM控制?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒心还温文尔雅灬奇异果1762
2011-09-22 · TA获得超过1050个赞
知道小有建树答主
回答量:747
采纳率:0%
帮助的人:443万
展开全部
/****************************************************
*控制LED亮灯的100个等级,楼主应该看得明白的
****************************************************/

#include <reg51.h>

#define uInt unsigned int
#define uchar unsigned char

uchar PWM_T = 0; //占空比控制变量

//////////////////主程序入口//////////////////////
void main(void)
{
bit flag = 1; //控制灯渐亮渐熄方式
uInt n;

TMOD=0x02; //定时器0,工作模式2,8位定时模式
TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高)
TL0=210; //写入预置值 (取值1-255,数越大PWM频率越高)
TR0=1; //启动定时器
ET0=1; //允许定时器0中断

EA=1; //允许总中断

P1=0xff; //初始化P1

while(1)
{
for(n=0;n<1000;n++); //延时,将响应定时器中断,灯会自动加/减一个档次的亮度
//取值0-65535,数字越大变化越慢

if(flag==1) //灯渐亮
PWM_T++;
else //灯渐熄
PWM_T--;

if(PWM_T>=100) //设置灯亮度级别为10
flag=0;

if(PWM_T==0) //限定最低亮度级别为0
flag = 1;
}

}

///////////////////定时器0中断模拟PWM////////////////////
timer0() interrupt 1 using 2
{
static uchar t ; //PWM计数

t++; //每次定时器溢出加1

if(t==100) //PWM周期

{
t=0; //使t=0,开始新的PWM周期
P1=0x00; //使LED灯亮
}

if(PWM_T==t) //按照当前占空比切换输出为高电平
P1=0xff; //使LED灯灭
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式