花样流水灯 单片机课程设计

一、设计题目

花样流水灯

要求:

在单片机控制下,当拨动开关S28发出低电平(S28=0)时,发光二极管DS35-DS42从两头向中间逐个点亮(时间间隔由电位器W1来控制),当DS35-DS42全部点亮后延时2秒钟全部熄灭,如此往复循环。当拨动开关S28发出高电平(S28=1)时,DS39、DS40点亮,然后点亮的灯向两边扩展,直到DS35~DS42全部点亮后延时2秒钟全部熄灭,如此往复循环。

控制功能:

利用89C51的P1口控制DS35~DS42,单片机内部定时器产生定时中断用来控制整个亮灯的时序。利用电位器W1产生的0-5V电压经A/D采样后的数据大小来决定逐个点亮LED灯的时间间隔。A/D输入0V表示时间间隔为10mS,输入5V表示时间间隔为1280mS。利用74HC4040对8MHz晶振产生的脉冲信号进行十六分频做为A/D的时钟信号。

使用的主要元器件:

89C51、11.0592MHz晶振、74LS373、74LS138、ADC0809、8MHz晶振、74HC04、74HC4040、拨动开关S28、发光二极管DS35~DS42、10k电位器W1等。

结果验证:

运行程序后,拨动S28查看DS35~DS42的点亮是否符合要求,同时旋动电位器W1,查看发光二极管的点亮速度是否有变化并满足题目要求。思考是否可以利用查表的办法编写出各种花色的流水灯,这在实际工作中有何作用。

二、原理图

仿真原理图

在这里插入图片描述

实物原理图

在这里插入图片描述

三、程序框图

在这里插入图片描述

四、部分程序清单

c语言

#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define AD0809 XBYTE[0x8000]
uchar adval,cnt,spd;
uchar pos=0;
bit	flag,dir,step;
sbit zk=P3^4;
uchar tab0[4]={0x7e,0x3c,0x18,0x00};
uchar tab1[4]={0xe7,0xc3,0x81,0x00};
main()
{
	TMOD=0x01;
	TH0=0x4c;
	TL0=0x00;
	TR0=1;
	ET0=1;
	EX0=1;
	IT0=1;
	EA=1;
	AD0809=0;
	pos=0;
	spd=1;
	flag=zk;
	P1=tab0[0];
	while(1)
	{
		if(flag!=zk)
		{
			flag=zk;
			pos=0;
			step=0;
		}
	}
}

汇编语言

	UP	 	BIT		00H		;正反向查表标志位
	K1	 	BIT		P3.4	;拨动开关K1控制发光二极管的点亮方向
	T2S	 	BIT		01H		;2秒标志位
	ADC0 	EQU		0000H	;ADC0808的0通道地址
	ORG	 	0000H
	LJMP 	START
	ORG	 	000BH			;T0中断地址
	LJMP 	DISP
	ORG	 	0100H 
;---------------------------------------------------------------------------
START:
	MOV	  	SP,#60H			;设置堆栈
	MOV	  	TMOD,#01H
	MOV	  	TH0,#0ECH		;10ms定时初值
	MOV	  	TL0,#78H
	SETB  	TR0				;启动T0
	SETB	ET0				;允许T0中断
	SETB	EA				;开总中断
	CLR		T2S	    		;2秒标志
	MOV		R1,#0			;R1存延时时间间隔
	MOV		R2,#0			;R2存放查发光二极管表的位置
	MOV		R3,#0			;R3存放查发光二极管表的P1结果
	MOV		R5,#0			;R5用于软件延时
	MOV		R7,#5			;发光二极管的4种状态
	CLR		A
MAIN:
	MOV 	DPTR,#ADC0;
	MOVX 	@DPTR,A;
	ACALL	DELAY
	MOVX 	A,@DPTR
	MOV		B,#2			
	DIV		AB
	INC		A				;采样值/2+1
	MOV		R1,A			;R1存延时时间间隔
	SETB	K1				;P3.4设置为输入端
	JNB		K1,NEXT			;K1=0,转移到NEXT
	CLR		UP				;清正向查表标志
	SJMP	WAIT


五、参考资料

[1]张毅刚 单片机原理及应用 高等教育出版社
[2]吴炳胜80C51 单片机原理与应用技术 冶金工业出版社
[3]邹久明80C51 单片机实用技术 北京航空航天大学出版社
[4]孙俊逸 单片机原理及应用 清华大学出版社
[5]张大明 单片微机控制应用技术实操指导书 机械工业出版社
[6]胡汉才 单片机原理及其接口技术 清华大学出版社

六、资源获取

微信公众号:而为若的宇宙
微信号:lazyjualay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值