找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

花样流水灯PWM输出 思考第一届单片机电子设计大赛的题目

[复制链接]
admin 发表于 2012-9-2 18:39:47 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
由于看着第一届单片机电子设计大赛的题目,所以最近构思了此程序的思路 。我想单片机初学者几乎都做的一个实验就是流水灯实验,因为大家都做,所以就觉得很简单,很多人对这个实验几乎不屑。其实要彻底的玩转这个实验也是很不简单的事情,不信看看你能不能应付我下面的实验题:

硬件前提:用单片机的I/O口控制8个LED,1 点亮,0 熄灭(不限单片机类型,51,
AVR,PIC,430等等都可以,只要做出来效果就行)
(1)第1,3,5,7个灯半亮,其余的全亮。
(2)第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮6/8,第7个亮7/8,第8个全亮。
(3)来点小难的,所有的灯逐渐从暗到全亮,再由全亮到暗。
(4)最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗,直到第一个。如此循环往复。这才是真正的流水灯。


所以我想各位如果是看了下面程序 我想大家应该很好地去解决上面这个问题到底该怎样去写了吧!!

#include "reg51.h"
#include <intrins.h>
unsigned int cd,dd;
unsigned char cc,ee;

void led_int() interrupt 1 using 0
{
TH0=0xf1;
TL0=0xf1;
TR0=1;
dd++;
if(dd==8)
{
if((cc==0x50)&&(ee==0)){cd=0;}
if((cc==0)&&(ee==0x50)){cd=1;}
if(cd){cc++;ee--;}
else {cc--;ee++;}
dd=0;
}
}
void delay(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=0;j<0x20;j++);
}
}

void main()
{
cc=0;
ee=0x50;
TMOD=0x01;
TH0=0xf0;
TL0=0xf0 ;
EA=1;
ET0=1;
TR0=1;
while(1)
{
P1=0x00;
delay(ee);
P1=0xff;
delay(cc);
}
}

可惜我还不知道怎么传送视频,贴个地址方便大家链接看看显示的效果:
http://u.youku.com/user_show/uid_%e5%86%b0%e5%b1%b1%e9%9b%aa%e8%8e%b2ying
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 04:44 , Processed in 0.053279 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表