51单片机求教
这是我用的编码
/* 名称:定时器控制4 个LED 滚动闪烁
说明:4 只LED 在定时器控制下滚动闪烁。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit B1=P0^0;
sbit G1=P0^1;
sbit R1=P0^2;
sbit Y1=P0^3;
uint i,j,k;
//主程序
void main()
{
i=j=k=0;
P0=0xff;
《单片机C语言程序设计实训100例---基于8051和 PROTEUS仿真》案例
30
上海师范大学信息与机电工程学院—倪继锋
TMOD=0x02; //定时器0 工作方式2
TH0=256-200; //200us 定时
TL0=256-200;
IE=0x82;
TR0=1; //启动定时器
while(1);
}
//T0 中断函数
void LED_Flash_and_Scroll() interrupt 1
{
if(++k<35) return; //定时中断若干次后执行闪烁
k=0;
switch(i)
{
case 0: B1=~B1;break;
case 1: G1=~G1;break;
case 2: R1=~R1;break;
case 3: Y1=~Y1;break;
default:i=0;
}
if(++j<300) return; //每次闪烁持续一段时间
j=0;
P0=0xff; //关闭显示
i++; //切换到下一个LED
求各位指导,谢谢。
粗看了一下,有几个疑问
1.从正面看除了单片机,晶振和LED,没看到其他元件,是放在背面了吗?要单片机运行至少确保最小系统
2.定时器方式2很短,虽然后面用2个函数延长了,但感觉还是直接用方式1或者软件延时简洁点。
如果是普通的51估计时间长短上不会有什么问题(初看闪烁间隔在0.4秒左右),但STC的机器周期好像是普通51的1/8,人眼可能没留意到闪烁现象。(人眼具体要多少帧视觉残留我忘了)
3.执行定时器中断要重装初值
欢迎楼下补充或指出错误
1.led高电平亮还是低电平亮
2.i 满4后没有置0,因此要加满到255才变为零
3.楼上所说的,没有重装
4.可能闪烁时间太短看不出来
对, 你看的没有错, 我只用那些元件别的不用, 说准确的,我不会用, 我看有人那样用就模仿,结合还是那样。 我不知道从哪儿开始学单片机, 我曾经在学校学过C语言编程序, 我的专业也是物理学(教育类),但我非常非常好奇这个单片机。所以希望各位多多指导指导。
我暂时不太懂这些专业名称, 希望多多指导。谢谢。
再说, 这些编码不是我做的, 我也没有仔细的看过,网上下载就用上。
如果有可能的话帮我指导一下,用那些方法可以学这个, 用啥软件什么的? 谢谢!
如果只有那些元件单片机自然不工作,LED没限流电阻都没烧掉我倒是有点好奇为啥了。
另一方面软件还是要学学自己写,不懂软件就谈不上了解单片机。
LZ如果对单片机有兴趣建议上网看 郭天祥老师的十天学会单片机视频教程,看完后相信LZ对单片机就有初步认识了。
原来限流电阻还是有的,没看清楚