《花样流水灯设计.doc》由会员分享,可在线阅读,更多相关《花样流水灯设计.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .一、原理图设计的目的:利用AT89C51,通过控制按键来实现六种流水灯把戏的转换,实现把戏流水灯的设计,同时通过外部中断0,来控制流水灯的速度。二、各器件的功能作用:1、AT89C51AT89C51有40个引脚,每个引脚都有其功能。本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。利用P1.0P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的把戏。利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3.3引脚外接按键接地,通过控制按键来提高流水灯的速度。利用P3.7输出低电平,导通三极管Q1,从而给八个发光二
2、极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。2、八个发光二极管: 通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭。3、按键通过P1.0-P1.5外接的按键来实现流水灯各种把戏的变化,当按键按下时,驱动一种流水灯把戏的闪烁。同时,利用按键来提供外部中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。 通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态。4、排阻因为P0口作为输出口时需要外接上拉电阻三、设计原理图:四、程序如下:#incl
3、ude /51系列单片机定义文件#define uchar unsigned char /定义无符号字符#define uint unsigned int /定义无符号整数void delay(uint);/声明延时函数void main(void) uint i;uchar temp;TCON=0x05;IE=0x85;PX1=1;PX0=0;while(1) temp=0x01;for(i=0;i8;i+) /8个流水灯逐个闪动 P0=temp;delay(100);/调用延时函数temp=1;temp=0x80;for(i=0;i=1; temp=0xFE;for(i=0;i8;i+)
4、/8个流水灯依次全部点亮 P0=temp; delay(150); /调用延时函数temp=1; temp=0x7F; for(i=0;i=1; temp=0x03; for(i=0;i4;i+) /两个流水灯顺序点亮P0=temp;delay(150);temp=2;temp=0x30; for(i=0;i=2;temp=0x07; for(i=0;i3;i+) /3个P0=temp;delay(150);temp=3;temp=0xe0; for(i=0;i=3;temp=0x0f; for(i=0;i3;i+) /4geP0=temp;delay(150);temp=4;temp=0xf
5、0; for(i=0;i=4;void int0() interrupt 0uint i;uchar temp;while(1) temp=0x01;for(i=0;i8;i+) /8个流水灯逐个闪动 P0=temp;delay(800);/调用延时函数temp=1;temp=0x80;for(i=0;i=1; temp=0xFE;for(i=0;i8;i+) /8个流水灯依次全部点亮 P0=temp; delay(800); /调用延时函数temp=1; temp=0x7F; for(i=0;i=1; temp=0x03; for(i=0;i4;i+) /两个流水灯顺序点亮P0=temp;delay(800);temp=2;temp=0x30; for(i=0;i=2;temp=0x07; for(i=0;i3;i+) /3个流水灯顺序点亮P0=temp;delay(800);temp=3;temp=0xe0; for(i=0;i=3;temp=0x0f; for(i=0;i3;i+) /4个流水灯顺序点亮P0=temp;delay(800);temp=4;temp=0xf0; for(i=0;i=4;void delay(uint t) /定义延时函数 register uint bt; for(;t;t-) for(bt=0;bt255;bt+); . .word.
限制150内