闪烁LED灯闪烁LED灯
LED闪烁灯的设计
设计要求:晶振为12MHz,使用定时/计数器(T1)作为延时控制,利用I/O端口P0点亮三盏灯,三支灯交替闪烁,间隔为1S。
1系统分析:由于定时器直接延时的最大时间Tmax=65536μs=65.536ms,为延时1s,必须采用循环计数方式实现。方法为:定时器设延时50ms(初始值应为:15536μs),单片机内部寄存器加1,然后定时器重新延时,当内部寄存器计数达20次时,表示延时1s。使用定时器T0工作在方式1,延时50ms,初始值TMOD为01H,TH0为3CH,TL0为B0H。 ...
闪烁LED灯
LED闪烁灯的设计
设计要求:晶振为12MHz,使用定时/计数器(T1)作为延时控制,利用I/O端口P0点亮三盏灯,三支灯交替闪烁,间隔为1S。
1系统分析:由于定时器直接延时的最大时间Tmax=65536μs=65.536ms,为延时1s,必须采用循环计数方式实现。方法为:定时器设延时50ms(初始值应为:15536μs),单片机内部寄存器加1,然后定时器重新延时,当内部寄存器计数达20次时,表示延时1s。使用定时器T0工作在方式1,延时50ms,初始值TMOD为01H,TH0为3CH,TL0为B0H。 15536=0011 1100 1011 0000B=3CB0H。
2系统功能框图设计
3系统硬件设计:在桌面双击图标,打开ISIS 7 Professional 窗口。执行菜单命令“File”?“New Design”,新建一个DEFAULT
,保存文件名为“p0”。在元器件选择按钮中单击“P”按钮,添加下图中所列的元器件。放置好元器件后,布好线。双击各元器件,设置相应的元器件参数,完成电路图的设计。
4软件设计:
程序流图如下
开始
定时/计数器初始值设置
P0.0清0、P0.1置1、P0.2置1
启动定时/计数器1
N 定时/计数器是否延时50ms,
Y
启动定时/计数器重新赋值
N
是否循环20次(延时1s)?
Y
P0.0=0 P0.1=1 P0.2=1
P0_1=1;
N 定时/计数器是否延时50ms, P0_2=1;
Y
启动定时/计数器重新赋值
N
是否循环20次(延时1s)?
Y
P0.0=1 P0.1=1 P0.2=0
N 定时/计数器是否延时50ms,
Y
启动定时/计数器重新赋值
N
是否循环20次(延时1s)?
Y
P0.0=1 P0.1=0 P0.2=1
重新计循环次数
程序设计: #include"reg51.h" #define uint unsigned int #define uchar unsigned char sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
uint t=0;
void time0_server_(void) interrupt 3
{
TH1=0x3C;
TL1=0x00;
t++;
}
void Init_t0(void) { TMOD=0X10;
TH1=0x3C;
TL1=0xB0;
EA=1;
ET1=1;
TR1=1; }
void main(void)
{
Init_t0();
while(1)
{
if(t==20)
{
t=0;
P0_0=0;
P0_1=1;
P0_2=1;
}
if(t==20)
{
t=0;
P0_0=1;
P0_1=1;
P0_2=0;
}
if(t==20)
{
t=0;
P0_0=1;
P0_1=0;
P0_2=1;
}
} }
5调试与仿真:运行结果如下图所示
6目前存在的问题:自己不会写程序,只会通过修改书上的程序来完成作业。
7收获与建议:通过这次作业我对C语言的相关知识的理解更加加深了。
8期望成绩:A
本文档为【闪烁LED灯】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。