大哥 会单片机吗 控制32只单片机发光二极管电路 s形走路变亮 再反走变灭 以此循环 吐血求助!

查看: 3967|回复: 3
用遥控器上的1-4键分别控制8个LED灯的点亮、变亮、变暗和熄灭的程序
求助各位大神,帮忙看以下的程序。用遥控器上的2和3键没有办法调节8个LED灯的亮度。是什么原因?
/*-----------------------------------------------
名称:按下遥控器的1键,8个LED灯会亮;按2键,会慢慢变亮,亮到最高时,蜂鸣器响;按3键,会慢慢变暗,暗道最低时,蜂鸣器会响;按4键,8个LED灯全灭。
内容:遥控器控制8个LED灯亮,灭和调光
------------------------------------------------*/
#include&reg52.h&
#define uint unsigned int
#define uchar unsigned char
sbit ir=P3^2;
sbit fm=P2^3;&&
bit irprosok,
uchar ircode[4];
uchar irdata[33];
uchar pwm,
void delay(uint ms)& && &//ms级延时函数,只在蜂鸣器子函数中用到了
& & & & while(ms--)
& & & & & & & & for(i=0;i&120;i++);
void bee()& && && && &&&//蜂鸣器子函数
& & & & fm=0;
& & & & delay(100);
& & & & fm=1;
& & & & delay(100);
void keyscan2()& & & & & & & & & & & & //PWM占空比增加的子函数,把18ms的脉宽分成了36等分,每一等分是0.5ms,让定时器1每0.5ms中断一次
& & & & if(pwm&36)
& & & & & & & & {
& & & & & & & & & & & & pwm++;
& & & & & & & & & & & & delay(100);
& & & & & & & & }
& & & & else
& & & & & & & & {
& & & & & & & & & & & & bee();
& & & & & & & & }
void keyscan3()& & & & & & & & & & & & //PWM占空比减少的子函数
& & & & if(pwm&1)
& & & & & & & & {
& & & & & & & & & & & & pwm--;
& & & & & & & & & & & & delay(100);
& & & & & & & & }
& & & & else
& & & & & & & & {
& & & & & & & & & & & & bee();
& & & & & & & & }
void init_t1()& & & & & & & & & & & & //定时器1的初始化子函数,让定时器每0.5ms溢出中断一次
& & & & TMOD=0x10;
& & & & TH1=()/256;
& & & & TL1=()%256;
& & & & EA=1;
& & & & ET1=1;
& & & & TR1=1;
void t1() interrupt 3& & & & & & & & //定时器1的中断函数,每中断1次,判断num的值与当前的pwm值,如果小于,则输出高电平
& & & & TR1=0;
& & & & TH1=()/256;
& & & & TL1=()%256;
& & & & num++;
& & & & if(num&32)
& & & & & & & & num=0;
& & & & if(num&=pwm)
& & & & & & & & P1=0
& & & & else
& & & & & & & & P1=0x00;
& & & & TR1=1;
void led()& & & & & & & & & & & & & & & & & & & & & & & &
& & & & init_t1();
& & & & num=0;
& & & & pwm=16;
& & & & while(1)
& & & & & & & & keyscan2();
& & & & & & & & keyscan3();
void timer0init(void)//定时器0初始化 256*(1/12m)*12=0.256ms
&&TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
&&TH0=0x00; //重载值
&&TL0=0x00; //初始化值
&&ET0=1;& & //开中断
&&TR0=1;& &
void tim0_isr (void) interrupt 1 using 1&&//定时器0中断服务函数
&&irtime++;&&//用于计数2个下降沿之间的时间
void int0init(void)&&//外部中断0初始化
IT0 = 1;& &//指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1;& &//使能外部中断
EA = 1;& & //开总中断
void int0 () interrupt 0 //外部中断0服务函数
if(startflag)
&&if(irtime&32&&irtime&63)&&//8-16ms
& & & && & bitnum=0;
& & & & irdata[bitnum]=
& & & & irtime=0;
& & & & bitnum++;
& & & & if(bitnum==33)
& & & && &{
& & & && & bitnum=0;
& & & && & irok=1;
& & & && &}
startflag=1;
void irpros(void) // 红外码值处理
& & & & uchar mun,k,i,j;
& & & & k=1;
& & & & for(j=0;j&4;j++)
& & & & & & & & for(i=0;i&8;i++)
& & & & & & & & {
& & & & & & & & & & & & mun=mun&&1;
& & & & & & & & & & & & if(irdata[k]&6)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & mun=mun | 0x80;
& & & & & & & & & & & & }
& & & & & & & & & & & & & & & & k++;
& & & & & & & & }
& & & & & & & & ircode[j]=
& & & & irprosok=1;
void ir_work(void) //红外键值处理
& & & & switch(ircode[2])& &//判断第三个数码值
& & & && && && & {
& & & & & & & & & & & &&&case 0x0c:P1=0x00;//& & 按键1 点亮8个LED灯
& & & & & & & & & & & &&&case 0x18:led();//& && &按键2 让8个LED灯变亮
& & & & & & & & & & & &&&case 0x5e:led();//& && &按键3 让8个LED灯变暗
& & & & & & & & & & & &&&case 0x08:P1=0//4& &按键4 熄灭8个LED灯
& && && && & default:
& & & & & & & & & & & &&&}
& & & & & & & && &irprosok=0;//处理完成标志
void main(void)
int0init(); //初始化外部中断
timer0init();//初始化定时器
while(1)//主循环
& & if(irok)& && & //如果接收好了进行红外处理
& & & && &{& &
& & & && & irpros();
& & & && & irok=0;
& & & && &}
& & if(irprosok)&&//如果处理好后进行工作处理
& & & && &{
& & & && & ir_work();
&&& & & && &}
你的接收用的什么解码的,也是单片机吗?
有没有大神在?帮我看看我的程序是哪里出现了问题。
你的接收用的什么解码的,也是单片机吗?
我也不是很懂,是在淘宝上买好的开发板。STC89C52的单片机。
Powered by又是一年六一儿童节,虽然,早就超了过这个节日的年纪,……
漫威电影拍了这么多集不但丝毫不油腻,还越来越受欢迎,……
据多家媒体证实,长江存储从荷兰阿斯麦(ASML)公司订购的……
2017年创收录营收超过13亿美元,年同比增长93.5%;2018年……
从去年执行赛普拉斯3.0的战略转型至今,已经有一年之余。……
演讲人:曾伟权时间: 10:00:00
演讲人:黄科涛时间: 10:00:00
演讲人:Tracy Ma时间: 10:00:00
预算:¥50000预算:¥10000
上海市上海市
并行直接驱动LED显示
1. 实验任务如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。2.电路原理图图4.7.13. 系统板
1. 实验任务如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。2.电路原理图图4.7.13. 系统板上硬件连线本文引用地址: 把“ 单片机 系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。4. 程序设计内容(1.LED数码显示原理七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2“0” 3FH   “8” 7FH  “1” 06H   “9” 6FH  “2” 5BH   “A” 77H  “3” 4FH   “b” 7CH  “4” 66H   “C” 39H  “5” 6DH   “d” 5EH  “6” 7DH   “E” 79H  “7” 07H   “F” 71H  (2. 由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH5.程序框图     图4.7.2 6. 汇编源程序ORG 0START: MOV R1,#00HNEXT: MOV A,R1MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYINC R1CJNE R1,#10,NEXTLJMP STARTDELAY: MOV R5,#20D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND7. C语言源程序#include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsvoid delay02s(void){unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){for(dispcount=0;dispcount<10;dispcount++){P0=table[dispcount];delay02s();}}}
据外媒报道,近些年来OLED屏幕逐渐流行,厂商们都希望将其当作自家机器的新卖点,不过由于产能有限,想用上OLED屏幕必须靠“抢”。......关键字:
中国厂商在LCD面板领域一度是烧钱运营,京东方(BOE)就过了很多年亏损的日子,不过现在京东方等国产LCD面板厂商算是熬出头了,去年Q4季度京东方出货的大尺寸LCD面板一跃成为世界第一,中国大陆公司的LCD产能已经超过台湾地区,逐渐赶超韩国......关键字:
据报道,三星电子旗下三星显示器公司已经与苹果达成了一项新协议,为下一代iPhone追加供应6000万块OLED面板,价值5万亿韩元(约合43亿美元)。......关键字:
今天凌晨,苹果新品爆料大神郭明池给出消息称,iPhone 8的电池将会增加,预计将提升至2700mAh容量仅次于现在的2900mAh的iPhone 7 Plus。......关键字:
黑客们通常都神通广大,但它们攻破严密的防御多数还是靠代码这一武器,不过现在有一批大牛要上天了,他们居然能从台式机上闪烁的LED灯搜集到敏感信息。......关键字:
我 要 评 论
热门关键词单片机控制3个LED灯渐亮渐灭
[问题点数:60分,结帖人sss71515]
单片机控制3个LED灯渐亮渐灭
[问题点数:60分,结帖人sss71515]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|用定时器控制51单片机IO口输出PWM信号,如何实现对灯的(或发光二极管)的亮灭的渐变过程(也就是电压的渐变,用c语言写的程序)?谢谢
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;在电子工程世界为您找到如下关于“LED亮灭”的新闻
设计思路:用定时器中断产生最小时间单位T0,每m个T0组成一个子周期T10,其中前n个T0为LED导通时间,即Ton=n*T0,则Toff=(m-n)*T0;每X个T10组成一个母周期T20,其中前y个T10为有效控制时间,后续的(x-y)个T10令LED熄灭或者子周期占空比调至最小。;适当调节n/m和x/y的比例使显示效果达到最佳。;以下是刚刚调试通过的小段程序,显示效果良好...
while (1) {
按0键控制LED亮灭效果图:
// STC-ISP终端乱码的处理办法
// 1,试试下载XP超级终端,Win7超级终端,Hyper_Terminal
// 2,可以按照下图,恢复KEIL原来的字符编码集,把上面的程序粘贴进去,把49行和58行的这两条提示从新修改为中文。
UART串口到此告一段落!...
LED亮灭资料下载
四按键分别控制四个LED灯亮灭的程序和protues仿真原理图,每个按键控制1个LED灯的亮灭,即按一下灯亮,再按一下灯灭...
用组合语言编写的8051控制LED亮灭的程序,适合8051的初学者....
中断法实现串口通信--led亮灭 电压 电流
数码管显示上传到串口助手...
LED亮灭相关帖子
LED亮灭视频
一、开发背景自从国庆60周年联欢晚会开始演练后一个全新的名词——光立方,吸引了全国人民的关注。光立方是由四千多棵光艺高科技“发光树”组成的,在日天安门广场举行的国庆联欢晚会上面世。这是新中国成立六十周年国庆晚会最具创意的三大法宝之首。国庆联欢晚会三样法宝,光立方为最。“光立方”在气...
你可能感兴趣的标签
热门资源推荐}

我要回帖

更多关于 单片机发光二极管 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信