版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、I / 25心形流水灯设计摘 要本课题是利用 STC89C52 设计了一个心形流水灯电路,该电路可以实现 32个 LED 灯循环闪亮、依次熄灭、对角闪亮、对角熄灭、间隔闪亮、间隔熄灭等多种功能。该电路主要由单片机芯片 STC89C52、电源电路、时钟电路、复位电路和显示电路组成。利用 Keil 软件编写 C 语言程序,并生成目标代码 Hex文件。使用 Proteus 软件设计仿真电路,并调入已编译好的目标代码,即可在仿真图中看到模拟实物的运行状态和过程。使用 Altium Designer 软件对电路进行原理图设计和 PCB 设计,并对该电路行安装和调试,调试结果可以实现流水灯的多种亮灭循环的
2、功能。关键词:AT89C52,复位电路,时钟电路,发光二极管 II / 25目 录1 绪论.11.1 课题描述.11.2 基本工作原理及框图.12 相关芯片及硬件电路设计.22.1 AT89C52 芯片.22.1.1 AT89C52 的功能特性 .22.1.2 AT89C52 的主要性能参数 .22.2 时钟电路.32.3 复位电路.42.4 显示电路.42.6 总原理图设计.53 系统软件设计.63.1 程序主要流程.63.2 程序设计.73.4 电路功能仿真.20总 结.21致 谢.22参考文献.231 / 251 绪论1.1 课题描述 随着现代科学技术的持续进步和发展以及人们生活水平的不
3、断提高,以大规模、超大规模集成电路为首的电子工艺技术的使用也越来越广泛,结合单片机技术设计的电子电路也层出不穷。 LED 彩灯由于其丰富的灯光色彩、低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。利用控制电路可使彩灯按一定的规律不断的改变状态,不仅可以获得良好的观赏效果,而且可以省电。 彩灯的运用已经遍布于人们的生活中,从歌舞厅到卡拉 OK 包房,从节日的祝贺到日常生活中的点缀,这些不仅说明了我们对生活的要求有了质的飞跃,也说明科技在现实生活中的运用有了较大的发展。在这一设计中我们将运用单片机技术,与单片机芯片 STC89C52 的功能,对心形流水
4、灯系统进行设计,来实现流水灯的多种亮与灭的循环,给人带来美感1。1.2 基本工作原理及框图本课程设计的 XX 系统原理如图 1 所示。图 1 基本工作原理框图电源电路 显示电路 AT89C52时钟电路复位电路2 / 252 相关芯片及硬件电路设计2.1 AT89C52 芯片。图 2 AT89C52 引脚图2.1.1 AT89C52 的功能特性STC89C52 是 STC 公司生产的一种低功耗、高性能的微控制器,具有 8K的系统可编程 Flash 存储器,其具有传统 51 单片机不具备的功能,在经典的MCS-51 内核上做了很多的改进,使得 STC89C52 在处理嵌入式控制应用系统时更加高效、
5、灵活。STC89C52 具有以下标准功能:4 个外部中断、全双工串行口、一个 7 向量 4 级中断结构、3 个 16 位定时器/计数器、8K 字节Flash、512 字节 RAM(随机存储器) 、看门狗定时器,其 12 周期和 6 周期可以任意选择,其工作电压在 3V5.5V 之间,工作频率在 040MHZ,实际工作频率可达 48MHZ2。其管脚的封装图如图 2 所示。2.1.2 AT89C52 的主要性能参数3 / 25AT89C52 主要性能参数如下:与 MC51 产品指令系统完全兼容VCC(38 脚):芯片电源,接+5VGND(16 脚):接地端XTAL1(15 脚):片内振荡器反相放大
6、器和时钟发生器电路的输入端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外接时钟源时,该引脚接外部时钟振荡器的信号 XTAL2(14 脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容;当采用外部时钟源时,该引脚悬空ALE(27 脚):用来锁存 P0 口送出的低 8 位位置PSEN(26 脚:外部 ROM 读选通信号RST(4 脚):复位信号输入端EA/Vpp(29 脚):内外 ROM 选择/片内 EPROM 编程电源P0 口:8 位,漏极开路的双向 I/O 口P1 口:8 位,准双向 I/O 口,具有内部上拉电阻P2 口:8 位,准双向
7、I/O 口,具有内部上拉电阻P3 口:8 位,准双向 I/O 口,具有内部上拉电阻2.2 时钟电路单片机内有一个由反相放大器所构成的振荡电路,XTAL1 和 XTAL2 分别为振荡电路的输入端和输出端。在 XTAL1 和 XTAL2 引脚上外接石英晶体和微调电容构成并联振荡回路。晶振频率设置为 11.0592MHZ,作用是产生时钟信号。单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。电容值为 30pF,可以起到频率微调作用3。时钟电路如图 3 所示。4 / 25XTAL130pFC430pFC5GNDXTAL1XTAL2图 3
8、时钟电路图2.3 复位电路单片机 RST 接口为复位信号输入端,高电平有效。在该引脚上加上持续时间大于两个机器周期的高电平,就可以使单片机复位。在单片机正常工作时,此引脚应为小于或等于 0.5V 的低电平。复位电路接单片机 RST 端口,在 RST 输入端出现高电平时实现复位和初始化4。复位电路如 4 所示。R200.1uFC3GNDVCCREST图 4 复位电路2.4 显示电路单片机的 P0 口为 8 位的漏极开路的双向 I/O 口,当 P0 口作为普通的 I/O 口使用时,需要上拉电阻,这时为准双向口。P1 、P2、 P3 都为 8 位的准双向口,具有内部上拉电阻。图 5 为显示电路,单片
9、机 I/O 口一对一直接控制 LED 灯,显示电路中的 325 / 25个电阻既为上拉电阻,也起到电路分压作用,防止烧坏元器件5。显示电路如图 5 所示R1LED1VCCR3LED3R5LED5R7LED7R9LED9R11LED11R14LED13R16LED15R2LED2VCCR4LED4R6LED6R8LED8R10LED10R12LED12R15LED14R17LED16LED1LED2LED3LED4LED5LED6LED7LED8LED17LED18LED19LED20LED21LED22LED23LED24 R21LED17VCCR23LED19R25LED21R27LED23
10、R29LED25R31LED27R33LED29R35LED31R22LED18VCCR24LED20R26LED22R28LED24R30LED26R32LED28R34LED30R36LED32LED9LED10LED11LED12LED13LED14LED15LED16LED25LED26LED27LED28LED29LED30LED31LED32图 5 显示电路图2.6 总原理图设计6 / 25总结时钟电路、复位电路、以及显示电路,把其放入一个电路。得到总体的电路。总体电路如图 6 所示。图 6 电路原理图3 系统软件设计3.1 程序主要流程单片机的应用系统由硬件和软件组成,在硬件原理
11、图搭建完成上电之后,暂时还不能看到流水灯循环点亮的现象,还需要编写程序控制单片机管脚电平的高低变化,来实现 LED 灯的各种亮灭功能。先将 P0、P1、P2、P3 全部置 1,即通入高电平,用 16 进制表示为0XFFH,则 32 个 LED 灯全部处于熄灭状态。然后给 P0 口赋值 0X7FH,即只有 P0.0 处于低电平时,LED1 灯点亮。使用延时函数 delay,并设置延时时间为2 秒,延时时间一到 P0 口的值就变为 0X3FH,即 P0.0 和 P0.1 都为高电平,7 / 25LED2 也开始点亮,如此循环 P0 口控制的 8 个 LED 灯全部点亮,当高电平变为低电平时,LED
12、 灯熄灭。P1、P2、P3 口控制的 LED 灯闪亮和熄灭原理同 P0口一样,所以就可以看到 LED 灯的流水效果了6。程序流程图如图 7 所示, 低电平 高电平 图 7 程序设计流程图3.2 程序设计#include#include #defineuint unsigned int开始读取 I/O 口状态判断 I/O 口状态LED 灯熄灭结束LED 灯点亮 延时灯流动运行8 / 25#defineuchar unsigned charuchar code table=0 xfe,0 xfc,0 xf8,0 xf0,0 xe0,0 xc0,0 x80,0 x00; / 逐个点亮 07uchar
13、 code table1=0 x7f,0 x3f,0 x1f,0 x0f,0 x07,0 x03,0 x01,0 x00; / 逐个点亮 70uchar code table2=0 x01,0 x03,0 x07,0 x0f,0 x1f,0 x3f,0 x7f,0 xff; / 逐个灭 07uchar code table3=0 x80,0 xc0,0 xe0,0 xf0,0 xf8,0 xfc,0 xfe,0 xff; / 逐个灭 70void delay(uint t); /延时void zg(uint t,uchar a);/两边逐个亮void qs(uint t,uchar a);/全
14、部闪烁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,uc
15、har 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
16、t,uchar a)/两边逐个亮uchar i,j; for(j=0;ja;j+) P0=P1=P2=P3=0 xff; P0=0 x7f;delay(t); for(i=0;i7;i+) P0=table1i+1; P2=table1i; delay(t); P2=0 x00;P1=0 xfe; delay(t); for(i=0;i7;i+) P1=tablei+1;P3=table1i;9 / 25delay(t); P3=0 x00;delay(t); void qs(uint t,uchar a) /全部闪烁uchar j;for(j=0;ja;j+) P0=P1=P2=P3=0 x
17、ff; delay(t); P0=P1=P2=P3=0 x00; delay(t); void zgxh(uint t,uchar a) / 逆时针逐个点亮uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 xff;for (i=0;i8;i+)P0=table1i;delay(t);for(i=0;i8;i+)P1=tablei;delay(t);for(i=0;i8;i+)P3=tablei;delay(t);for(i=0;i8;i+)P2=tablei;delay(t);10 / 25void nszgm(uint t,uchar a) / 逆时针逐个灭uch
18、ar i,j;for(j=0;ja;j+)P0=P1=P2=P3=0 x00;for (i=0;i8;i+)P0=table3i;delay(t);for (i=0;i8;i+)P1=table2i;delay(t);for (i=0;i8;i+)P3=table2i;delay(t);for (i=0;i8;i+)P2=table2i;delay(t);void zgxh1(uint t,uchar a) / 顺时针逐个点亮uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 xff;for (i=0;i8;i+)P2=table1i;delay(t);for(i=0
19、;i8;i+) P3=table1i;delay(t);for(i=0;i8;i+)P1=table1i;delay(t);11 / 25for(i=0;i8;i+)P0=tablei;delay(t);void sszgm(uint t,uchar a) / 顺时针逐个灭uchar i,j;for(j=0;ja;j+)P0=P1=P2=P3=0 x00;for (i=0;i8;i+)P2=table3i;delay(t);for (i=0;i8;i+)P3=table3i;delay(t);for (i=0;i8;i+)P1=table3i;delay(t);for (i=0;i8;i+)P
20、0=table2i;delay(t);void djs(uint t,uchar a) /对角闪uchar j;for(j=0;ja;j+) P0=P1=P2=P3=0 xff;P0=P3=0 x00;delay(t);P0=P1=P2=P3=0 xff;P1=P2=0 x00;delay(t);12 / 25void lbzgm(uint t,uchar a)/两边逐个灭 uchar i,j; for (j=0;j1;i-)P1=tablei-1;P3=table1i-2;delay(t);P1=0 xfe;P3=0 xff;delay(t);P1=0 xff;P2=0 x01;delay(
21、t);for(i=7;i1;i-)P0=table1i-1;P2=table1i-2;delay(t);P0=0 x7f;P2=0 xff;delay(t);P0=0 xff;delay(t); void sztl(uint t,uchar a)/顺时逐个同步亮uchar i,j;for(j=0;ja;j+)P0=P1=P2=P3=0 xff;for(i=0;i8;i+)P0=tablei;P1=P2=P3=table1i; delay(t);void nztl(uint t,uchar a)/逆时逐个同步亮uchar i,j;13 / 25for(j=0;ja;j+)P0=P1=P2=P3=
22、0 xff;for(i=0;i8;i+)P0=table1i;P1=P2=P3=tablei;delay(t);void sztm(uint t,uchar a)/顺时逐个同步灭uchar i,j;for(j=0;ja;j+)P0=P1=P2=P3=0 x00;for(i=0;i8;i+)P0=table2i;P1=P2=P3=table3i;delay(t);void nztm(uint t,uchar a)/逆时逐个同步灭uchar i,j;for(j=0;ja;j+)P0=P1=P2=P3=0 xff;for(i=0;i8;i+)P0=table3i;P1=P2=P3=table2i;d
23、elay(t);void hwzjl(uint t,uchar a) /横往中间亮uchar i,j;for (j=0;ja;j+)14 / 25P0=P1=P2=P3=0 xff;for(i=0;i8;i+)P0=P2=P1=table1i;P3=tablei;delay(t);void hwzjm(uint t,uchar a) /横往中间灭uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 x00;for(i=0;i8;i+)P0=P2=P1=table3i;P3=table2i;delay(t);void swzjl(uint t,uchar a) /竖往中间
24、亮uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 xff;for(i=0;i8;i+)P0=P2=P1=tablei;P3=table1i;delay(t);void swzjm(uint t,uchar a) /竖往中间灭uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 x00;for(i=0;i8;i+)P0=P2=P1=table2i;P3=table3i;delay(t);15 / 25void nzdl(uint t,uchar a) /逆时逐段亮uchar i,j;for (j=0;ja;j+)P0=P1=P2=P3=0 x
25、ff;for(i=0;i8;i+)P0=table1i;delay(t);P0=0 xff;for(i=0;i8;i+)P1=tablei;delay(t);P1=0 xff;for(i=0;i8;i+)P3=tablei;delay(t);P3=0 xff;for(i=0;i8;i+)P2=tablei;delay(t);P2=0 xff;void nzdgl(uint t,uchar a) /逆时逐段一个点亮uchar i,j,k,l;for (j=0;ja;j+)k=table10;P0=k;l=table0;P1=P2=P3=l;delay(t);for(i=0;i8;i+)16 /
26、25k=_crol_(k,-1);P0=k;l=_crol_(l,1);P1=P2=P3=l;delay(t);void jgs(uint t,uchar a) /间隔闪uchar j;for (j=0;ja;j+)P0=0 x55;P1=P2=P3=0 xaa;delay(t);P0=0 xaa;P1=P2=P3=0 x55;delay(t);void main()uchar i;while(1) zg(100,1); /两边逐个亮 lbzgm(100,1); /两边逐个灭 jgs(300,10); djs(100,20); /对角闪P1=P2=P3=0 xff;for(i=0;i3;i+)
27、 P0=0 x00;delay(800); P0=0 xff;delay(800); P0=0 x00; for(i=0;i3;i+) P1=0 x00;delay(800); P1=0 xff;delay(800); P1=0 x00; for(i=0;i3;i+)17 / 25 P3=0 x00;delay(800); P3=0 xff;delay(800); P3=0 x00; for(i=0;i3;i+) P2=0 x00;delay(800); P2=0 xff;delay(800); qs(500,3);for(i=0;i6;i+) zgxh(50,1); nszgm(50,1);
28、 djs(100,20); /对角闪for(i=0;i3;i+) zg(100,1); /两边逐个亮 lbzgm(100,1); /两边逐个灭 qs(200,10);djs(100,50); for(i=0;i5;i+) sztl(200,1); /顺时逐个同步亮nztm(200,1); nztl(200,1);sztm(200,1); /顺时逐个同步灭 djs(300,10); /对角闪 nzdgl(300,10); /逆时逐段一个点亮 jgs(300,10); /间隔闪for(i=0;i3;i+) zgxh(100,1); nszgm(100,1); for(i=0;i5;i+) zgxh
29、1(100,1); sszgm(100,1); nzdl(200,3); /逆时逐段亮18 / 25 jgs(50,100); /间隔闪P0=P1=P2=P3=0 xff;for (i=0;i8;i+)P0=table1i;delay(200);for (i=0;i8;i+)P1=tablei;delay(200);for(i=0;i3;i+)P0=P1=0 x00;delay(200);P0=P1=0 xff;delay(200);for (i=0;i8;i+)P2=table1i;delay(200);for (i=0;i8;i+)P3=table1i;delay(200);for(i=0
30、;i3;i+)P2=P3=0 x00;delay(200);P2=P3=0 xff;delay(200);nzdgl(50,40); /逆时逐段一个点亮for(i=0;i4;i+) zg(100,1);qs(100,10); lbzgm(100,1); djs(50,100); /对角闪 for(i=0;i3;i+) zgxh(100,1);19 / 25 nszgm(100,1); djs(1000,10); for(i=0;i10;i+) hwzjl(200,1); /横往中间亮hwzjm(200,1); /横往中间灭 djs(300,10); /对角闪 for(i=0;i10;i+) s
31、wzjl(200,1); /竖往中间亮swzjm(200,1); /竖往中间灭 for(i=0;i5;i+) zgxh(100,1); nszgm(100,1); djs(100,20); /对角闪 zg(300,1); lbzgm(300,1);for(i=0;i5;i+) zgxh1(100,1); sszgm(100,1); for(i=0;i0;x-)for (y=120;y0;y-);3.4 电路功能仿真在各部分电路设计的基础上,按照总体电路图在 Proteus 上一一进行器件选择,并连接。将电路连接好后,为各个器件选择合适的参数,然后调入已编译好的目标代码 Hex 文件,启动仿真。
32、根据 LED 灯是否发亮,判断所设计的电路是否可以实现 32 个 LED 灯依次点亮、依次熄灭、对角闪亮、对角熄灭、间隔闪亮、间隔熄灭等多种功能。刚开始时,LED 灯不亮,仔细检查原来是将LED 灯接反了,改正之后 LED 灯便可以正常发光了。电路仿真的结果为 32 个LED 灯依次发亮、依次熄灭,并可以实现多种亮灭功能。根据仿真结果可知电路原理及程序无误,可以进行 PCB 设计7。如图 8 所示。图 8 电路仿真图21 / 25总 结在设计电路图的过程中,经过了多次分析和仿真验证,并结合所给的器件清单最后确定了需要哪些器件来实现电路的功能,并且保证了所需要的元器件在给出的清单范围内。经过 Proteus 软件多次仿真和修改后,在仿真电路图实现设计要求的前提下确定了最终的原理图。然后在 Altium Designer 中画出来所对应的原理图8,再导入到 PCB 设计的环境中,进行 PCB 设计。在经过小组内多次讨论和听取指导老师的意见后确定了 PCB 的最终布局,布线完成后打印输出制成印刷电路板。将所有的元
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三地理教学设计 水循环视域下陆地水体相互关系深度解析
- 小学一年级道德与法治“做家务 爱劳动”第二课时教学设计
- 2026年6月高考数学真题试卷+答案(全国卷2)
- 小学六年级劳动学科鲁科版“滚汤圆”教学设计
- 2026年安宁疗护相关知识试题(含答案)
- 2026年ccaa三体系考试题库及答案详解
- 2026年CATTI一级笔译真题及答案及答案
- 2026年保安员证考试题库及答案(网校专用)
- 2026年广州商贸投资控股集团有限公司人员招聘考试题库及详细答案解析
- 2026年中国机械工业集团有限公司人员招聘考试备考题库及详细答案解析
- 2026年高级维修电工考试题库及答案
- 亚急性甲状腺炎诊疗专家共识(2025版)
- 4.1 分数的应用(一) 课件 2026-2027学年六年级上册数学北师大版
- 2026年超重和肥胖管理指南课件
- 河北省石家庄市外国语学校2025-2026学年九年级上学期一阶学业水平测试道德与法治试卷(含答案)
- 2026年北京市高考语文试卷(含答案及解析)
- 菏泽城市介绍课件
- 金蝶专业版固定资产操作流程
- A拓斯达机械手说明
- 918主题班会PPT课件《勿忘国耻砥砺前行》
- 高一家长会学校领导讲话稿(3篇)
评论
0/150
提交评论