预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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=0011110010110000B=3CB0H。 2系统功能框图设计 3系统硬件设计:在桌面双击图标,打开ISIS7Professional窗口。执行菜单命令“File”→“NewDesign”,新建一个DEFAULT模板,保存文件名为“p0”。在元器件选择按钮中单击“P”按钮,添加下图中所列的元器件。放置好元器件后,布好线。双击各元器件,设置相应的元器件参数,完成电路图的设计。 4软件设计: 程序流图如下 开始 定时/计数器初始值设置 P0.0清0、P0.1置1、P0.2置1 启动定时/计数器1 定时/计数器是否延时50ms? 启动定时/计数器重新赋值 是否循环20次(延时1s)? P0.0=0P0.1=1P0.2=1P0_1=1; P0_2=1; 定时/计数器是否延时50ms? 启动定时/计数器重新赋值 是否循环20次(延时1s)? P0.0=1P0.1=1P0.2=0 定时/计数器是否延时50ms? 启动定时/计数器重新赋值 是否循环20次(延时1s)? P0.0=1P0.1=0P0.2=1 重新计循环次数 N N N N N Y Y Y Y Y Y N 程序设计:#include"reg51.h" #defineuintunsignedint #defineucharunsignedchar sbitP0_0=P0^0; sbitP0_1=P0^1; sbitP0_2=P0^2; uintt=0; voidtime0_server_(void)interrupt3 { TH1=0x3C; TL1=0x00; t++; } voidInit_t0(void) {TMOD=0X10; TH1=0x3C; TL1=0xB0; EA=1; ET1=1; TR1=1; } voidmain(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