LED点阵心形流水灯单片机设计

LED点阵心形流水灯单片机设计
LED点阵心形流水灯单片机设计

河南理工大学

开放实验室单片机设计报

LED点阵心形流水灯礼品

目录

0 前言 (1)

1系统组成与功能 (1)

1.1 系统组成 (1)

1.1.1 AT89C51单片机 (1)

1.1.2 16乘16点阵 (2)

1.2 系统功能 (3)

2系统原理 (3)

2.1系统仿真图 (3)

2.2 实物照片 (4)

3程序流程图 (6)

4程序代码 (7)

5结论 (14)

参考文献 (14)

1 基于单片机控制心形流水灯跟点阵

0 前言

随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。

这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。由于时间紧迫,做的有些仓促,望原谅。

1系统组成与功能

1.1 系统组成

本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。

1.1.1 AT89C51单片机

AT89S51具有如下特点:40个引脚,8k Bytes Flash 片内程序存储器,256 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT ) 电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可

为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。

引脚图如图1-1所示。 管脚说明

图1-1 A T89C51引脚图

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

PSEN:程序储存允许(PSEN)输出。是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许,欲使CPU只访问外部程序存储器(地址为0000H-FFFFH),EA端须保持低电平(接地)。如EA端为高电平(接VCC 端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上相应的编程允许电源VPP。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。

P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个TTL 逻辑电平。作为输入口时要向端口写“1”。

引脚号第二功能:

P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5 MOSI(在系统编程用)

P1.6 MISO(在系统编程用)

P1.7 SCK(在系统编程用)

P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4个TTL逻辑电平。同样作为输入使用时先向该端口写“1”。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4个TTL逻辑电平。作为输入时先向P3 端口写“1”。

端口引脚第二功能:

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 INTO(外中断0)

2

P3.3 INT1(外中断1)

P3.4 TO(定时/计数器0)

P3.5 T1(定时/计数器1)

P3.6 WR(外部数据存储器写选通)

P3.7 RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

2.1.5 存储器结构

MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。

程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。

对于89S52,如果EA 接VCC,程序的读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。

数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。

当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)[]5。

2.1.6 中断源

AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE 还包括一个中断允许总控制位EA,它能一次禁止所有中断。

如图2-4所示,IE.6位是不可用的。对于AT89C51,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。

符号位地址功能

EA IE.7 中断总允许控制位。EA=0,中断总禁止;EA=1,各中

断由各自的控制位设定

IE.6 预留

ET2 IE.5 定时器2中断允许控制位

3

ES IE.4 串行口中断允许控制位

ET1 IE.3 定时器1中断允许控制位

EX1 IE.2 外部中断1允许控制位

ET0 IE.1 定时器0中断允许控制位

EX0 IE.0 外部中断0允许控制位

图2-4 中断允许控制寄存器

1.1.2 16乘16点阵显示模块

本点阵屏采用4块8*8点阵组合,形成一个16*16的点阵,加驱动集成电路SN74HC164和74HC595组成。通过软件控制,本屏以动态扫描的显示方式,可显示文字、图形、动画等多种花样。

1、 SN74HC164是串行移位寄存器,串行输入并行输出,当清零端CLR为高电平时,每来一个时钟脉冲CLK寄存器中的数据就会从Qa向Qh方向移动一位,即Qa→Qb、Qb→Qc、Qc→Qd、Qd→Qe、Qe→Qf、Qf→Qg、Qg→Qh,同时两个输入端A和B与非的结果进入Qa,SN74HC164的逻辑功能如图1-2所示。

图1-2 SN74HC164的逻辑功能图

2、 74HC595有一个8位串行输入,并行输出的移位寄存器,该寄存器向一个8位D型存储寄存器提供数据。74HC595N的存储寄存器具备三态输出。移位寄存器和存储寄存器分别有独立的时钟。74HC595N的移位寄存器带有最高优先级的直接清零端(SRCLR)、串行输入端(SER)和用于级联的串行输出端。当输出使能端(OE)为高时,74HC595的输出将处于高阻态。

不管是移位寄存器时钟(SRCLK)还是存储寄存器时钟(RCLK),都是上升沿

4

5 触发。如果当两个时钟绑定在一起时,则移位寄存器将一直领先存储寄存器一个时钟脉冲。

SN74HC595特性:8位串行输入,并行输出移位;宽工作电压范围:2.0~6.0 V 高强度电流三态输出,最多可驱动高达15个LSTTL 负载;低功耗,最大ICC =80μA ;典型tpd=13 ns ;5V 下驱动电流为±6 mA;移位寄存器可直接清零低输入电流,最大1μA ;8位移位寄存器,具有三态输出锁存。

最后,集成了74HC595、74HC154的点阵实物图见图1-3所示。 3、点阵主要技术参数: 显示容量:16*16个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 4、引脚功能说明 VCC 5V 电源 GND 接地

DS 串行数据输入

STcp 并行数据输出时钟 SHcp 串行数据输入时钟 CS 选择器使能 A0--A3 16位数据选择器输入

不算电源线,共8线,算电源为10线。本点阵已将驱动集成电路74HC595、74HC154等放在点阵后面了,引入10线及信号即可显示。

2 系统设计

2.1 系统设计方案

利用TC89C52RC 单片机,16*16点阵LED ,74HC164N 和74HC595N 芯片,TIP127三极管组成的汉字点阵显示系统。本系统主要分成屏体和控制器两大部分。屏体的主要部分是LED 点阵,还有行列驱动电路。LED 点阵屏采用16*16LED

显示模

图1-3 点阵实物图

6 块连接而成。一块16行16列显示屏,其LED 发光器件数量相当大,不适合使用静态驱动电路,而采用动态扫描驱动电路。扫描驱动电路采用多行的同名列共用一套驱动器,行驱动器一行的行线连接到电源的一端,列驱动器一列的列连接到电源的另一端。控制电路负责有序地选通各行,选通每一行之前还要把该行该列的数据准备好,一旦该行选通,这一行上的LED 发光器件就可以根据列数据进行显示。

本系统的控制电路采用单片机方法,由于单片机的I/O 口数量少,驱动能力不强,则要扩展一定的硬件电路,才能满足显示屏的需要。硬件电路大体上可分为单片机控制器、LED 显示屏行列驱动电路、LED 点阵屏三部分,LED 显示屏驱动电路使用通用的数字电路并尽量减少外围硬件,做到电路简单、适应性强、成本不高、维护方便等要求。

为了增强汉字点阵的显示效果,LED 汉字点阵显示系统也可以有多种显示模式。最简单的显示模式是静态显示。同静态显示模式相对应有多种动态显示模式,它们所显示的文字是动态的。按照文字运动的特点可以分为平移、闪烁、旋转、缩放等多种显示模式。产生不同显示模式的方法可以通过一定的算法从原来的显示数据产生。不过当算法太复杂时就会太浪费时间,也可以考虑预先生成刷新数据,存储备用。

本系统采用动态显示的模式,所谓的动态显示模式是指逐行轮流点亮。我们把所有的同一行发光管的阳极连接在一起,把所有第一列发光管的阴极连接一起,先送出对应第一行的发光管亮灭的数据并且锁存,然后选通第一行使其点亮一定的时间然后熄灭;再送出第二行的数据并且锁存,然后宣统第二行使其点亮同样的时间,然后熄灭;直到第第十六行显示完后再重新点亮第一行,这样反复轮回。如图2所示。

图2 系统的整体结构图

2.2 点阵部分程序流程图

单 片 机

行扫描

LED 点阵屏

列扫描

2.3 流水灯部分

基于单片机的流水灯是一个小设计,其原理就不详细说明。

单片机1(左)控制流水灯,单片机2(右)控制点阵。

下面是系统连线图:

图2—1 系统电路连线图

7

2.2实物照片

具体的实物照片如下图

实物图一

实物图二

8

9

图2—3 实物照片图三

3 合并程序流程图

开始

点阵依次显示 葛静宝宝生日

心形流水灯一个接一个亮起

10

4 部分程序源代码 点阵单片机程序

/**********************************************************************/ #include

#define uchar unsigned char #define uint unsigned int

uchar N=7; // N 表示有多少个汉字, 如要加多个字,只需改动N 的值即可

sbit DS=P1^0; //74HC595串行数据 sbit STcp=P1^1; //74HC595并行输出时钟 sbit SHcp=P1^2; //74HC595串行时钟 sbit CS=P1^3; //74HC154输出有效信号

//=============P2口作为74HC154的选择控制数据输入=================

点阵流动显示生日快

20406080100第一季度

第三季度

东部西部北部

返回开始

心形流水灯全亮然后全灭

心形流水灯一个

间隔一个亮起

//=============P2口整体控制A0--A4,所以无需单独控制每个信号===========

//sbit A0=P3^0;

//sbit A1=P3^1;

//sbit A2=P3^2;

//sbit A3=P3^3;

//===========================字模表==============================

//================取模方法:阴码,逆向,逐行========================

//==============================================================

uchar code Hanzi[]=

{

/*

0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,

0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40,//*"我",0

0x00,0x1F,0xFC,0x09,0x48,0x08,0x90,0x04,0xFC,0x7F,0x44,0x40,0x42,0x00,0xFC,0x3F,

0x20,0x00,0xE0,0x0F,0x30,0x04,0xD0,0x02,0x08,0x03,0xC6,0x0C,0x31,0x70,0x0C,0x20,//*"爱",1

0x90,0x00,0x90,0x01,0x88,0x20,0xC8,0x7F,0x44,0x20,0x2C,0x12,0x16,0x02,0x45,0x0A,

0xC4,0x12,0x44,0x12,0x24,0x22,0x24,0x62,0x14,0x22,0x84,0x02,0x04,0x01,0x00,0x00,//*"你",2

*/

0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,

0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40,/*"我",3*/

/* (16 X 16 , 宋体)*/

0x00,0x1F,0xFC,0x09,0x48,0x08,0x90,0x04,0xFC,0x7F,0x44,0x40,0x42,0x00,0xFC,0x3F,

0x20,0x00,0xE0,0x0F,0x30,0x04,0xD0,0x02,0x08,0x03,0xC6,0x0C,0x31,0x70,0x0C,0x20,/*"爱",4*/

/* (16 X 16 , 宋体)*/

0x90,0x00,0x90,0x01,0x88,0x20,0xC8,0x7F,0x44,0x20,0x2C,0x12,0x16,0x02,0x45,0x0A,

0xC4,0x12,0x44,0x12,0x24,0x22,0x24,0x62,0x14,0x22,0x84,0x02,0x04,0x01,0x00,0x00,/*"你",5*/

/* (16 X 16 , 宋体)*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,

0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,/*"!",6*/

//一定要在字模后加一个清屏的字模,否则移动显示时出现乱麻

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//清屏

11

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

//====================延时程序==========================

void delay(uint N)

{

uchar i;

uint j;

for(j=0;j

for(i=125;i>0;i--);

}

//=====================逐行测试==============================

//=================目的:查看有无坏点========================

void display_test(uchar N)

{

uchar i,j;

for(j=0;j<100;j++)

{

DS=0; //整行显示

for(i=0;i<16;i++)

{

SHcp=0;

SHcp=1;

}

STcp=0;

STcp=1;

P3=N;

CS=0;

delay(10); //本程序太长,省去部分,需要完整程序请

CS=1; //联系QQ154401855(或154401856)下载

}

}

//++++++++++++++++++++++++++++++静态显示+++++++++++++++++++++++++++++++ //====================++++++++++显示程序=============================== // N表示传递过来的第几个文字,一个文字占32个字节,所以M为32的倍数

//===================================================================== void display_state(uchar M)

{

uchar i,j,n,cont=0;

uchar temp;

for(n=0;n<50;n++) //重复显示50次,以便能清楚显示

{

for(i=0;i<16;i=i+2)

{

temp=~Hanzi[M+i+16]; //取一字模数据存放于temp,高8位

12

//进行8次转换,使8位并行数据转换为串行数据

for(j=0;j<8;j++)

{

if(temp&0x80) //并行数据转为串行数据,高位在前

DS=1;

else

DS=0;

SHcp=0;

SHcp=1; //SHcp上升沿锁存一位数据

temp=temp<<1; //左移一位,进行下一次转换

}

temp=~Hanzi[M+i]; //取一字模数据存放于temp,低8位//进行8次转换,使8位并行数据转换为串行数据

for(j=0;j<8;j++)

{

if(temp&0x80) //并行数据转为串行数据,高位在前

DS=1;

else

DS=0;

SHcp=0;

SHcp=1; //SHcp上升沿锁存一位数据

temp=temp<<1; //左移一位,进行下一次转换

}

STcp=0;

STcp=1; //STcp上升沿使8位数据并行输入

P3=cont; //cont计数器作为74HC154的选择信号,由P2口输出

CS=0; //74HC154 使能,开启显示

delay(2); //延时一下,以便有足够的点亮时间

CS=1; //关显示,不关显示会出现花屏现象

cont++; //cont计数器加一

}

for(i=1;i<16;i=i+2)

{

temp=~Hanzi[M+i+16];

for(j=0;j<8;j++)

{

if(temp&0x80)

DS=1;

else

DS=0;

SHcp=0;

SHcp=1;

temp=temp<<1;

13

}

temp=~Hanzi[M+i];

for(j=0;j<8;j++)

{

if(temp&0x80)

DS=1;

else

DS=0;

SHcp=0;

SHcp=1;

temp=temp<<1;

}

STcp=0;

STcp=1;

P3=cont;

CS=0;

delay(2);

CS=1;

cont++;

}

for(i=0;i<16;i++)

{

DS=0;

SHcp=0;

SHcp=1; //SHcp上升沿锁存一位数据

}

cont=0;

CS=1;

}

}

//+++++++++++++++++++动态显示文字++++++++++++++++++++++++

void display_move(void)

{

uchar i,j,n,cont=0;

uchar temp,hang;

for(hang=0;hang<32*N;hang=hang+2) //每次上移一行,即实现动态移动显示效果{

for(n=0;n<10;n++)

{

……//程序太长,省略一部分,需要完整程序请

} //联系QQ154401855(或154401856)下载

}

}

14

}

//=========================主函数===============================

void main(void)

{

uchar i;

P1=0xFF;

P2=0xFF;

while(1)

{

/*

for(i=0;i<16;i++) //16行点阵测试

{

display_test(i);

delay(100);

}

*/

for(i=0;i<32*N;i=i+32) //静态汉字显示

{

display_state(i);

delay(1000);

}

display_move(); //动态汉字显示

}

}

}

}

流水灯阵程序

/**********************************************************************/

#include

//************8位将流水灯编码存于单片机程序存储中******************

unsigned char code LED1_shun[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //顺时针点亮数据

unsigned char code LED2_ni[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; //逆时针点亮数据

unsigned int N=300;

void delay(unsigned int n)

15

{

unsigned int i;

unsigned char j;

for(i=0;i

for(j=100;j>0;j--);

}

……//程序实在太长,省略一部分

void main(void)

{

unsigned char i;

unsigned char LED_temp;

while(1)

{

Display_One();

delay(N+N+N);

Display_Two();

delay(N+N+N);

Display_Three();

delay(N+N+N);

Display_Four();

delay(N+N+N);

Display_Five();

delay(N+N+N);

Display_Six();

delay(N+N+N);

Display_Seven();

delay(N+N+N);

Display_Eight();

delay(N+N+N);

Display_Nine();

delay(N+N+N);

Display_Ten();

// Display_Eleven();

Display_Twelve();

delay(N+N+N);

}

}

5 结论

通过这学期单片机的学习我学到了不少东西,学会了有的东西需要自己通过自己的努力来解决。这次单片机作品的制作学会了焊接的初步技术,以及一些查找问题的方法。软件方面由于本人的技术有限只是对别人的一些程序进行更改,

16

然后通过不断的调试,一步一步实现单片机的预定功能。

由于本人水平有限,扩展部分做的不是太好,希望其他人能够继续改进。老师说本文文字写的较乱,建议下一次做这个实验的人能把文字再写得好点。要出实验室了没有时间了,可能下一批进开放实验室的学弟会弄得更好的。

参考文献

[1]何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998;

[2] 何立民.单片机中级教程[M],北京:北京航空大学出版社,1998;

[3] 郭天祥.51单片机C语言教程[M],北京:机械工业出版社,2008;

[4] 阎石主.数字电子技术基础[M],北京:高等教育出版社,1998。

17

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 0000H AJMP START ORG 001BH AJMP INT

ORG 0100H START:MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA SJMP $ INT:PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA

MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT:POP DPH POP DPL POP PSW POP ACC RETI DATA:DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论

基于单片机的心形流水灯毕业设计论文

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称:讲师 2012年12 月1日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.矚慫润厲钐瘗睞枥庑赖。 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software.聞創沟燴鐺險爱氇谴净。Key words:micro-computer;light water ;C programming language残骛楼諍锩瀨濟溆塹籟。

51单片机流水灯实验报告单片机实验报告流水灯

51单片机流水灯试验 一、实验目的 1.了解51单片机的引脚结构。 2.根据所学汇编语言编写代码实现LED灯的流水功能。 3.利用开发板下载hex文件后验证功能。 二、实验器材 个人电脑,80c51单片机,开发板 三、实验原理 单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。使用rl或rr a实现位的转换。 A寄存器的位经过rr a之后转换如下所示: 然后将A寄存器转换一次便送给P2即MOV P2,A便将转换后的数送到了P2口,不断循环下去,便实现了逐位置一操作。

四、实验电路图 五、通过仿真实验正确性

代码如下:ORG 0 MOV A,#00000001B LOOP:MOV P2,A RL A ACALL DELAY SJMP LOOP DELAY:MOV R1,#255 DEL2:MOV R2,#250 DEL1:DJNZ R2,DEL1

DJNZ R1,DEL2 RET End 实验结果: 六、实验参考程序 #include #define uchar unsigned char #define uint unsigned int uchar table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

sbit P00=P0^0; sbit P01=P0^1; void delay(uchar t) { uchar i,j; for(i=0;i

基于51单片机心形流水灯C语言源程序

基于51单片机心形流水灯C语言源程序

#include unsigned int x,y; void delayms(unsigned int z) //延时 { unsigned int i,j; for(i=z;i>0;i--) for(j=150;j>0;j--); } void On_all() //开启所有灯 { P0=0x00; P1=0x00; P2=0x00; P3=0x00; } void Off_all()//关闭所有灯 { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } void ls()//正向流水灯 { P0=0x00; delayms(400); P2=0x00; delayms(400); P3=0x00; delayms(400); P1=0x00; delayms(400); P0=0x01; delayms(50);

P0=0x04; delayms(50); P0=0x08; delayms(50); P0=0x10; delayms(50); P0=0x20; delayms(50); P0=0x40; delayms(50); P0=0x80; delayms(50); P0=0x00; P2=0x01; delayms(50); P2=0x02; delayms(50); P2=0x04; delayms(50); P2=0x08; delayms(50); P2=0x10; delayms(50); P2=0x20; delayms(50); P2=0x40; delayms(50); P2=0x80; delayms(50); P2=0x00; P3=0x80; delayms(50); P3=0x40; delayms(50); P3=0x20; delayms(50); P3=0x10; delayms(50); P3=0x08; delayms(50); P3=0x04; delayms(50);

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

心形LED流水灯制作方法

LED心形流水灯加程序 1.原件清单:一个万能板,一个底座,一个STC89C52芯片,32个LED 灯,32个贴片电阻,两个30uf电容,一个晶振。 2.原理图: 注:电源处的复位可以不用;就是上面红框里的内容 3.正面图

背面图: 亮灯图: 4. 程序代码: #include #include #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; // 逐个灭7~0

/***********************************************************/ void delay(uint t); //延时 void zg(uint t,uchar a);//两边逐个亮 void qs(uint t,uchar a);//全部闪烁 void zgxh(uint t,uchar a); // 逆时针逐个点亮 //void zgxh1(uint t,uchar a); // 顺时针逐个点亮 void djs(uint t,uchar a); //对角闪 void lbzgm(uint t,uchar a);//两边逐个灭 //void sszgm(uint t,uchar a); // 顺时针逐个灭 void nszgm(uint t,uchar a); // 逆时针逐个灭 void sztl(uint t,uchar a);//顺时逐个同步亮 void nztl(uint t,uchar a);//逆时逐个同步亮 void sztm(uint t,uchar a);//顺时逐个同步灭 void nztm(uint t,uchar a);//逆时逐个同步灭 void hwzjl(uint t,uchar a); //横往中间亮 void hwzjm(uint t,uchar a); //横往中间灭 //void swzjl(uint t,uchar a); //竖往中间亮 //void swzjm(uint t,uchar a); //竖往中间灭 void nzdl(uint t,uchar a); //逆时逐段亮 void nzdgl(uint t,uchar a); //逆时逐段一个点亮 void jgs(uint t,uchar a); //间隔闪 /**********************************************************/ void zg(uint t,uchar a)//两边逐个亮 { uchar i,j; for(j=0;j

嵌入式系统流水灯,按键,定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。 1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。 由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度:

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。 初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。 实验程序流程图如下: 硬件方面,根据实验指南,将实验板做如下连接: 1.3实验结果

爱心流水灯程序

#include #include #define uint unsigned int #define uchar unsigned char sbit p0_1=P0^0; sbit p0_2=P0^1; sbit p0_3=P0^2; sbit p0_4=P0^3; sbit p0_5=P0^4; sbit p0_6=P0^5; sbit p0_7=P0^6; sbit p0_8=P0^7; sbit p1_1=P1^0; sbit p1_2=P1^1; sbit p1_3=P1^2; sbit p1_4=P1^3; sbit p1_5=P1^4; sbit p1_6=P1^5; sbit p1_7=P1^6; sbit p1_8=P1^7; sbit p2_1=P2^0; sbit p2_2=P2^1; sbit p2_3=P2^2; sbit p2_4=P2^3; sbit p2_5=P2^4; sbit p2_6=P2^5; sbit p2_7=P2^6; sbit p2_8=P2^7; sbit p3_1=P3^0; sbit p3_2=P3^1; sbit p3_3=P3^2; sbit p3_4=P3^3; sbit p3_5=P3^4; sbit p3_6=P3^5; sbit p3_7=P3^6; sbit p3_8=P3^7; void delay(uint); uchar temp0;

uchar temp1; uchar temp2; uchar temp3; uint k,s; void delay(uint j) { uint i; for(j;j>0;j--) for(i=120;i>0;i--); } void main() { while(1) { for(k=0;k<4;k++) { P0=0x00; P1=0x00; P2=0x00; P3=0x00; delay(500); P0=0xff; P1=0xff; P2=0xff; P3=0xff; delay(500); } for(k=0;k<7;k++) { temp0=0x01; P0=temp0; delay(100); for(k=0;k<8;k++) { s=temp0<<1; P0=s; delay(50); } P0=0xff;

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________院(部)____________________________专业________________ 班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (2) 一、课程设计目的 (3) 二、课程设计要求 (3) 三、实验内容 (3) 1、设计任务与要求 (3) 2、系统分析 (3) 1).硬件电路设计(画出原理图、接线图) (4) 2)软件框图 (5) 3、用keil建项目流程 (7) 4、程序清单 (7) 4、系统调试 (9) 四、设计总结(结论) (10)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3 新建工程:菜单“Preject->New Preject”,保存为*.uv2,选择芯片型号,copy否 新建文件:菜单“File->New”,保存为*.c,编写程序 将源文件添加到工程:在左侧project workspace的source group1点右键选择addfile加入*.c 设置工程:点菜单栏上的,选Target,设晶振值;选Output,点create Hex file以生成少些文件;选Debug,选择软件仿真(simulator)或硬件仿真(Keil Monitor)方式。 编译链接:点菜单栏上的进行编译,或点菜单栏上的进行编译链接,或点菜单栏上的进行重新编译链接,或点菜单栏上的停止编译。 编译链接后生成*.hex文件,可烧写到单片机。 (2).Proteus 使用Proteus仿真 点击单片机,在Program Files处选择*.hex文件,OK,进行仿真 RESPACK--8 排阻,就是好多电阻连载一起,有一个公共端,1端为公共端接VCC(上拉)或地(下拉) 一般接在51单片机P0口,因P0口内没有上拉电阻,不能输出高电平,所以要接上拉电阻。 3、需求分析

LED点阵心形流水灯单片机设计

河南理工大学 开放实验室单片机设计报 LED点阵心形流水灯礼品 目录 0 前言 (1) 1系统组成与功能 (1) 1.1 系统组成 (1) 1.1.1 AT89C51单片机 (1) 1.1.2 16乘16点阵 (2) 1.2 系统功能 (3) 2系统原理 (3) 2.1系统仿真图 (3) 2.2 实物照片 (4) 3程序流程图 (6) 4程序代码 (7) 5结论 (14) 参考文献 (14)

1 基于单片机控制心形流水灯跟点阵 0 前言 随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路,作为玩具挺有趣的。 这次的作品,初衷是希望通过单片机学习,做个生日礼物送给朋友。由于时间紧迫,做的有些仓促,望原谅。 1系统组成与功能 1.1 系统组成 本系统主要有AT89C51单片机、18b20、1602、蜂鸣器、四位一体七段数码管等元件组成。 1.1.1 AT89C51单片机 AT89S51具有如下特点:40个引脚,8k Bytes Flash 片内程序存储器,256 bytes 的随机存取数据存储器(RAM ),32个外部双向输入/输出(I/O )口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT ) 电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可 为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 引脚图如图1-1所示。 管脚说明 图1-1 A T89C51引脚图

基于单片机的心形流水灯毕业设计论文

基于单片机的心形流水灯毕业设计论文 此文档为WORD版可编辑修改

课程设计(论文)说明书 题目:心形流水灯 院(系):信息与通信学院 专业:通信工程 学生姓名: 学号: 指导教师: 职称: X年X月X日

摘要 本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件. 关键词:单片机;流水灯;C语言;

Abstract This paper Based on the single chip microcomputer and single chip microcomputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microcomputer technology,Understanding of the single chip microcomputer chip AT89S51 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microcomputer; and then introduced chip AT89S51; At the end of this paper applied to software. Key words:micro-computer;light water ;C programming language

心形花样流水灯设计报告

《专业方向课程设计》课程 设计报告 题目:心形花样流水灯与点阵显示 专业:电子信息工程 班级:二班 学号: 姓名: 指导老师: 重庆交通大学信息科学与工程学院 设计时间:2013年9 月8 日到2013 年11 月16 号

一、 设计任务说明 随着社会的发展,单片机得到了广泛的应用,人们越来越重视单片机的应用。比如温度是和每个人息息相关的,并且在有的生产车间里还要进行温度时时测量,甚至是对温度的进一步调控等,这些都是单片机的应用之例。本设计是用单片机和点阵加一个小的流水灯电路, 这次作品的初衷是希望通过单片机学习,做个生日礼物送给朋友。 二、 总体设计 本系统主要有AT89C51单片机、5mm 彩色LED 灯、74HC245、8*8LED 点阵、200欧电阻等元件组成。 1.流水灯设计: (1)AT89C51单片机: AT89C51具有如下特点: 40个引脚,8k Bytes Flash 片内程序存储器, 256 bytes 的随机存取数据存储器(RAM ), 32个外部双向输入/输出(I/O )口, 5个中断优先级2层中断嵌套中断, 2个16位可编程定时计数器, 2个全双工串行通信口, 看门狗(WDT )电路,片内时钟振荡器。 此外,AT89S52设计和配置了振荡频率可 为0Hz 并可通过软件设置省电模式。空闲模式下,CPU 暂停工作,而RAM 定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。 引脚图如右图所示。此次设计把51单片机的4个I/O 口与32个5mm 高亮LED 灯相接,通过单片机控制各I/O 引脚的高低电平控制LED 的亮灭从而形成各种不同亮灭的花样。 2.点阵显示设计: (1)8*8点阵原理图 : 从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述: 一根竖柱:对应的列置1,而行则采用扫描的方法来实现。 AT89C51引脚图

单片机流水灯实验报告

单片机流水灯实验报告 电子信息工程学系实验报告 课程名称:单片机原理及接口 实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247 一、实验目的: 进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输

出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。 以P1口为例,内部结构如下图所示: 图 P1口的位结构 作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。 I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使 用时应外接10K的上拉电阻,其它口则可不必;P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

51单片机爱心流水灯原理及制作

电路原理图:

原件清单: 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。~ 效果展示:

作品程序: #include<> #define uchar unsigned char ; uchar flag=200; /////////////////////////////////////////////////////////////////////// uchar code Tab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF};//暗中左移向下uchar code Tab2[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};//暗中右移向上uchar code Tab3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};//亮中左移向下uchar code Tab4[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};//亮中右移向上uchar code Tab11[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xff};//暗中左移向下uchar code Tab22[]={0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0xff}; //////////////////////////////////////////////////////////////////// uchar code Tab33[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; ; uchar code Tab44[]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF}; uchar code Tab55[]={0x08,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff}; uchar code Tab5[]={0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xff};

单片机课程设计报告--心形流水灯

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:彭玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致谢 (8) 参考文献 (8)

1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述 2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题

单片机实验报告——流水灯

电子信息工程学系实验报告 课程名称: 单片机原理及接口 实验项目名称: 实验2 流水灯实验 时间: 2011-10-21 班级: 电信092 姓名: 蔡松亮 学号: 910706247 一、实 验 目 的: 进一步熟悉keil 仿真软件、proteus 仿真软件的使用。了解并熟悉单片机I/O 口和LED 灯的电路结构, 学会构建简单的流水灯电路。掌握C51中单片机I/O 口的编程方法和使用I/O 口进行输入输出的注意事项。 二、实验原理: MCS-51系列单片机有四组8位并行I/O 口,记作P0、P1、P2和P3。每组I/O 口内部都有8位数据输 入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O 端口即可以按字节操作,又可以按 位操作。当系统没有扩展外部器件时,I/O 端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2 口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。 以P1口为例,内部结构如下图所示: 图 P1口的位结构 作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输 出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电 阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下, 引脚电平出现在内部总线上。 I/O 口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O 接口,单片机的四 个口均可作I/O 口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使

数字电子技术课程设计(心形流水灯)

数字电子技术课程设计(心形流水灯)

电子技术课程设计报告 设计题目:基于555的心形流水灯 专业 班级 学号 学生姓名 指导教师

目录 1、设计目的 (3) 1.1 设计框图 (3) 2、硬件电路设计 (3) 2.1 NE555电路及应用 (3) 2.1.1定时电路NE555简介 (3) 2.1.2 NE555的特点 (3) 2.1.3 NE555基本应用电路(定时器) (4) 2.2、脉冲分配器CD4017 (5) 2.2.1 CD4017引脚属

性 (5) 2 .2.2 CD4017的逻辑功能 (5) 2.2.3 CD4017的内部结构 (6) 3、电路工作原理 (6) 3.1 电路原理图 (6) 3.2 电路仿真图 (7) 3.3 实物图 (8) 3.3 背面布线图 (8) 4、元件清单…………………………………………………………………………

(8) 5、实验调试与分析 (8) 6、心得体会 (9) 7、参考文献 (10) 1、设计目的 随着电子技术的快速发展尤其是数字技术的突飞猛进,多功能流水灯凭着简易,高效,稳定等特点得到普遍的应用。在各种娱乐场所、店铺门面装饰、家居装潢、城市墙壁更是随处可见,与此同时,还有一些城市采用不同的流水灯打造属于自己的城市文明,塑造自己的城市魅力。目前,多功能流水灯的种类已有数十种,如家居装饰灯、店铺招牌灯等等。所以,多功能流水灯的设计具有相当的代表性。 多功能流水灯,就是要具有一定的变化各种图案的功能,主要考察了数字电路中一些编码译码、计数器原理,555定时器构成时基电路,给其他的电路提供时序脉冲,设计过程中需要了解相关芯片(NE555、CD4017)的具体功能,引脚图,真值表,认真布局,在连接过程中更要细致耐心。 1.1 设计框图

相关文档
最新文档