标题:
利用单片机中断-花样霓虹灯设计
[打印本页]
作者:
13170256672
时间:
2018-8-28 22:04
标题:
利用单片机中断-花样霓虹灯设计
这是我自己设计的一个花样霓虹灯设计,及8个led先一次亮灭,然后奇数和偶数灯闪烁,闪烁三次厚,8个灯又开始一次亮,依次循环。
用用单片机实物和proteus都试过,效果很好。
电路原理图如下:
_3B5P26@]@VGE8{5FS5Q63L.png
(6.56 KB, 下载次数: 58)
下载附件
proteus电路图
2018-8-28 22:02 上传
单片机源程序:
//霓虹灯实验: P0口接了8个灯,晶振为11.0592MHZ;
//从D1到D8开始8个灯循环点亮一次,即D1点亮1s熄灭,依次是D8;
//然后是间隔闪烁3次,即D1,3,5,7点亮1S熄灭,紧接着2,4,6,8点亮1s熄灭,
//这为一次,然后循环3次。
/*********主程序*******/
#include <reg52.h>
#define uchar unsigned char
uchar i20,i8,i6; //定义三个正char:-128~127,unsigned char:0~127)
uchar mod1,mod2 ; //定义两种模式,没中模式是8位,所以前面用char
bit F; //循环标志位,用bit定义是为了节省空间
void main ()
{
i20=20; //20x50ms=1s
i8=8; //模式1有8次
i6=6; //模式2有6次
mod1=0x01; //0000 0001,模式1初始状态D1灭,其他亮
mod2=0xAA; //1010 1010,模式2初始状态D1,3,5,7亮,其他灭
F=0;//设置循环点亮阶段标志;=0为循环点亮阶段
TMOD=0x10;//定时,T1,方式1
TH1=0x4C; //11.0592*1000000/12*50*0.001=46080 ,
//(65536-46080)/256=76...0 商是76(ox4C),余数是0(ox00)
TL1=0x00;
IE=0x88; //打开总中断与T1中断
TR1=1;//打开T1控制位开关,在TCON寄存器中
P1=0xF0; //针对这个实验板子,led灯一端连着锁存器和数码管,
//为了防止锁存器数码管干扰,首先就要先关闭位选 ,
//因为使能在硬件始终是开着的,所以关闭位选
while(1);
}
/*****T1中断程序*********/
void time0() interrupt 3 using 1
{
TH1=0x4C; //50ms到,中断跳出,此时继续装初值,直到20次,累计到1s
TL1=0x00;
i20--;
if(i20==0)
{
i20=20;
if(F==0)
{
P0=~mod1;
mod1=mod1<<1;
i8-- ;
if(i8==0)
{
i8=8;
F=1;
mod1=0x01;
}
}
else
{
P0=mod2;
mod2=~mod2;
i6--;
if(i6==0)
{
i6=6;
F=0;
}
}
}
}
复制代码
作者:
13170256672
时间:
2018-8-29 10:00
谢谢,麻烦群主了。初学单片机,我会上传一些自己的心得,但是觉得太简单了,不知道对大家有没有用,刚接触论坛,有什么不对的地方多多包涵,谢谢。
作者:
文凤轩
时间:
2018-8-29 18:01
谢谢楼主分享这个资料非常珍贵
作者:
disalike
时间:
2019-11-15 19:24
可以问下原理图就这样吗
作者:
mengxin@
时间:
2019-12-6 17:38
这个是延时,按键只有当前的模式跑完了才能进入下一个模式
作者:
姜思湃
时间:
2020-5-15 12:32
老哥有没有原理图和ad图
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1