电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

基于51单片机的流水灯设计VIP免费

基于51单片机的流水灯设计_第1页
基于51单片机的流水灯设计_第2页
基于51单片机的流水灯设计_第3页
基于51单片机的流水灯设计一.基本功能利用AT89c51作为主控器组成一个LED流水灯系统,实现8个LED灯的左、右循环显示。二.硬件设计BUS[0..7]BUS7BUS6BUS5BUS4BUS3BUS2BUS1BUS0BUS0BUS1BUS3BUS5BUS6BUS2BUS4BUS7XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C110uR110kC233pFC333pFX1CRYSTAL234567891RP1RESPACK-8D1LED-REDR21kR31kR410kR510kR610kR710kR810kD2LED-REDD3LED-REDD4LED-REDD5LED-REDD8LED-REDD6LED-REDD7LED-REDR910k图1.总设计图1.单片机最小系统1.1选用AT89C51的引脚功能XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C52图2.AT89C51XTAL1:单芯片系统时钟的反向放大器输入端。XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。P3:端口3是具有内部提升电路的双向I/O端口,通过控制各个端口的高低电平了实现LED流水灯的控制。1.2复位电路如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。RSTC410uR1010k图3.复位电路1.3时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。XTAL2XTAL1C433pFC533pFX2CRYSTAL图4.时钟电路2.流水灯部分BUS0BUS1BUS3BUS5BUS6BUS2BUS4D1LED-REDR21kR31kR410kR510kR610kR710kR810kD2LED-REDD3LED-REDD4LED-REDD5LED-REDD8LED-REDD6LED-REDD7LED-REDR910k图5.流水灯电路三.软件设计3.1编程语言及编程软件的选择本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。而汇编语言使用起来并没有这么方便。本设计选用了Keil作为编程软件,.KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。3.2LED灯的显示LED灯在低电平,即I/O口置‘0’时,会亮,相反就灭。此设计就是通过程序来控制I/O口的电平变化来实现流水灯左右循环闪烁。四.程序#include#include#defineuintunsignedint#defineucharunsignedchar#definekouP3ucharcodedp1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};ucharcodedp2[]={0x80,0x40,0x20};voiddelayms(uintz)//延时函数{uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}voidmain(){inti;for(i=0;i<8;i++){kou=dp1[i];delayms(500);}for(i=0;i<7;i++){kou=dp1[i]+0x80;delayms(500);}for(i=0;i<6;i++){kou=dp1[i]+0x40;delayms(500);}for(i=0;i<5;i++){kou=dp1[i]+0x20;delayms(500);}for(i=0;i<4;i++){kou=dp1[i]+0x10;delayms(500);}for(i=0;i<3;i++){kou=dp1[i]+0x08;delayms(500);}for(i=0;i<2;i++){kou=dp1[i]+0x04;delayms(500);}for(i=0;i<1;i++){kou=dp1[i]+0x02;delayms(500);}for(i=0;i<3;i++){kou=0x00;delayms(500);kou=0xff;delayms(500);}}

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部