数码管以及流水灯

数码管以及流水灯
数码管以及流水灯

单片机课程设计论文

中文题目: 数码管以及流水灯

英文题目:Digital tube, and running water lamp

姓 名: 姚银涛

系 别: 电子科学系 班 级: 08电科(1)班 学 号: 080702128 日 期: 2011年6月26日 指导老师: 魏晓慧

教务处制

惠州学院

HUIZHOU UNIVERSITY

课程设计任务书

设计任务:以89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。

设计要求:利用动态扫描和定时器1在数码管上显示出从888920开始以1%秒的速度往下递减直至888888并保持显示此数,与此同时利用定时器0以500ms速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯全部闪烁7次,同时蜂鸣器发声,3s 后流水灯全熄灭,数码管则显示110629。

摘要

数码管的动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端有效”,并送出相应的字型显示编码。此时其他位的数码管因位选端无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。通过定时器可以控制单片机上的数码管以及流水灯的显示时间,从而达到设计的要求。

关键词:单片机,数码管,动态显示,流水灯,定时器

目录

引言 (4)

正文 (4)

一、数码管 (4)

二、74HC573锁存器 (6)

三、流水灯 (6)

四、编程程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7结束语 (10)

谢辞 (10)

参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

引言

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL 公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51

的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM 数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

正文

一、数码管

在单片机系统中,经常采用LED数码管来显示单片机系统的工作状态、运算结果等各种信息,LED数码管是单片机人机对话的一种重要输出设备。LED 数码管由八个发光二级管组构成,通过不同的发光字段组合可用来显示数字0-9、字符A-F、H、L、P、R、U、Y、符号“-”及小数点“.”等。数码管分为共阴极和共阳极,8个发光二极管的阳极连接在一起,作为公共控制端,接高电平。阴极作为“段”控制端,当某段控制端为低电平时,该段对应的发光二极管导通

并点亮。通过点亮不同的段,显示出不同的字符;8个发光二极管的阴极连接在一起,作为公共控制端接低电平,阴极作为“段”控制端,当某段控制端为高电平时,该段对应的发光二极管导通并点亮。使用LED 显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED 显示器提供的编码正好是一个字节。如图:

七段数码管的字型代码表

显示字

g f e d c b a 段码

0 0 1 1 1 1 1 1 3fh

1 0 0 0 0 1 1 0 06h

2 1 0 1 1 0 1 1 6bh

3 1 0 0 1 1 1 1 4fh

4 1 1 0 0 1 1 0 66h

5 1 1 0 1 1 0 1 6dh

6 1 1 1 1 1 0 1 7dh

7 0 0 0 0 1 1 1 07h

8 1 1 1 1 1 1 1 7fh

9 1 1 0 1 1 1 1 6fh A

1

1

1

1

1

1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h

a b

c d e g GND f dp

GND a b c e

f g

d ·

dp

a

b c d e f g dp

dp

g f e d c b a +5V

(a)(b)

二、74HC573锁存器

74HC573锁存器是高性能硅CMOS 器件,SL74HC573 跟LS/AL573 的管

脚一样。器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和

LS/ALSTTL 输出兼容。

当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输

出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。三、流水灯

89C52内有程序控制连接流水灯引脚的输出电平,来决定LED的亮灭。一般LED 和单片机之间会接一块74hc573来加强控制,LED接上拉电阻连电源,用于降压。

四、程序编程如下:

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit d=P2^3;

sbit dula=P2^6;

sbit wela=P2^7;

uchar temp,t0,t1,bai,shi,ge,flag,flag1;

uint shu;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0x36,0x79,0x38,0x3f,0};

display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge); delay(uint z);

void init();

void main()

{

init();

while(1)

{

if(flag1!=1)

display(8,8,8,bai,shi,ge);

else

display(1,1,0,6,2,9);

}

}

display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge) { dula=1;

P0=table[aa];

dula=0;

P0=0xff;

wela=1;

P0=0xfe;

wela=0;

delay(5);

dula=1;

P0=table[bb];

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

delay(5);

dula=1;

P0=table[cc];

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

delay(5);

dula=1;

P0=table[bai];

dula=0;

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

delay(5);

dula=1;

P0=table[shi];

dula=0;

P0=0xff;

wela=1;

P0=0xef;

wela=0;

delay(5);

dula=1;

P0=table[ge];

dula=0;

P0=0xff;

wela=1;

P0=0xdf;

wela=0;

delay(5);

}

void init()

{ shu=920;

temp=0xfe;

P1=temp;

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET1=1;

TR0=1;

TR1=1;

}

void exter0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

if(flag!=1)

{

if(t0==10)

{

t0=0;

temp=_crol_(temp,1);

P1=temp;

}

}

else

{

if(t0%4==0)

P1=~P1;

if(t0==60)

{ d=1;

TR0=0;

P1=0xff;

flag1=1;

}

}

}

void exter1() interrupt 3

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t1++;

if(t1==2)

{ t1=0;

shu--;

bai=shu/100;

shi=shu%100/10;

ge=shu%10;

if(shu==888)

{ d=0;

TR0=0;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

flag=1;

t0=0;

P1=0xff;

TR1=0;

}

}

}

delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

结束语

本次论文介绍了数码管的动态显示以及流水灯,通过自己的编程以及思考,我对单片机的学习更深一步了,在今后的学习中,我会更加认真地学习基础知识,以便能够更熟练地应用单片机的功能,为以后的工作和学习奠定良好的基础。

谢辞

论文的顺利完成,离不开老师、同学和朋友的关心和帮助,通过这次课程设计的完成,我和同学之间的配合逐渐默契,也增强了自己的动手能力。

参考文献:

1、吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用[M].清华大学出版社,2001

2、魏立峰,王宝兴.单片机原理与应用技术[M].北京:北京大学出版社,2006.

3、胡辉单片机原理与应用,北京:中国水利水电出版社,2007年

4、陈明荧.8051单片机课程设计实训教材[M].北京:清华大学出版社,2003年9月.

基于plc控制的流水灯设计

课程设计任务书 题目:基于plc控制的流水灯课程设计专业:电气工程及其自动化 姓名: 胡进森 学号: 1002120121 班级: 10级电气工程(1)班 完成期限:2013年05月25日 指导教师签名: 课程负责人签名: 2013年04月15日

课程设计说明书 题目:基于plc控制的流水灯课程设计 姓名:胡进森 院(系):机电工程学院 专业班级:10级电气工程一班 学号:10102120121 指导教师:张国栋李好丽 成绩: 时间:2013 年05 月20 日至2013 年05 月25 日

目录 摘要 (1) 1.绪论 (3) 1.1 引言 (3) 1.2 采用流水灯的意义和目的 (3) 1.3 本次设计的主要内容 (3) 2. 流水灯系统的主要硬件设备的介绍 (4) 2.1可编程控制器的发展历史 (4) 2.1.1 可编程控制器的定义 (4) 2.1.2 可编程控制器的特点 (5) 2.1.3 PLC的基本结构和工作原理 (5) 2.2三菱FX系列PLC计数器(C) (9) 2.2.1内部计数器 (9) 2.2.2高速计数器(C235~C255) (9) 2.3三菱FX系列PLC定时器(T) (10) 2.3.1 通用定时器 (10) 2.3.2 积算定时器 (10) 2.4三菱FX系列辅助继电器(M) (10) 2.4.1通用辅助继电器(M0~M499) (11) 2.4.2断电保持辅助继电器(M500~M3071) (11) 2.4.3特殊辅助继电器 (11) 2.5三菱FX系列PLC输出继电器(Y) (11) 2.6三菱FX系列PLC输入继电器(X) (12) 3. 硬件电路设计及软件设计 (12) 3.1控制系统I/O点及地址分配 (12) 3.2电气控制系统原理图 (12) 3.3时序图 (13) 3.4梯形图 (13) 3.5指令表 (15) 4.系统调试 (16) 5.设计总结 (19) 6.参考文献 (21)

三极管流水灯电路设计

三极管流水灯电路设计 王雅 20111041105;韦梦娜 20111041107 摘要:3组12只LED流水灯是特别针对电子装配与调试技能设计出来的,值得学习和电路分析。本文分析了该流水灯电路的特点及其电路工作原理的说明。 关键字:3组12只LED流水灯;电路设计;循环。 1 引言 随着科学技术的发展,电力电子设备与人们的工作、生活的关系日益密切。各种小套件层出不穷,功能多样。本文所设计的电子制作可以说是电子初学者学习电子的最佳入门制作!其制作方式容易,趣味横生,更能提高初学者的动手能力!让初学者在制作学习中感受电子技术带来的乐趣! 2 系统的功能描述 这款3组12只LED流水灯具有制作容易、有趣易学的特点,电路焊接成功后,装入电池,即可正常工作,3组12只发光二极管便会被轮流点亮,不断的循环发光,达到流动的效果。 3 设计原理 3.1 电路工作原理说明: 本电路是由3只三极管组成的循环驱动电路。每当电源接通时,3只三极管会争先导通,但由于元器件存在差异,只会有1只三极管最先导通。这里假设V1最先导通,则V1集电极电压下降,使得电容C2的左端下降,接近0V。由于电容两端的电压不能突变,因此此时V2的基极也被拉到近似0V,V2截止,V2的集电极为高电压,故接在它上面的发光二极管LED5-LED8被点亮。此时V2的高电压通过电容C3使V3基极电压升高,V3也将迅速导通,因此在这段时间里,V1、V3的集电极均为低电压,因此只有LED5-LED8被点亮,LED1-LED4、LED9-LED12熄灭。但随着电源通过电阻R3对C2的充电,V2的基极电压逐渐升高,当超过0.7V时,V2由截止状态变为导通状态,集电极电压下降,LED5-LED8熄灭。与此同时,V2的集电极下降的电压通过电容C3使V3的基极电压也降低,V3由导通变为截止,V3的集电极电压升高,LED9-LED12被点亮。接下来,电路按照上面叙述的过程循环,3组12只发光二极管便会被轮流点亮,不断的循环发光,达到流动的效果。改变电容C1、C2、C3的容量可以改变循环速度,容量越小,循环速度越快。电源使用2节5号干电池即可。 3.2元件清单: 3.3 电路图

tc蜂鸣器流水灯数码管显示作息时间控制单片机课程设计(2)

1 绪论 1.1课程设计目的 《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。通过课程设计,应能加强学生如下能力的培训: 1、独立工作能力和创造力; 2、查阅图书资料,产品手册和各种工具书的能力; 3、工程绘图的能力; 4、编写技术报告和编制技术资料的能力; 5、综合运用专业及基础知识,解决实际工程技术问题的能力。 1.2 设计要求 1.2.1总体要求 (1) 独立完成设计任务 (2) 绘制系统硬件总框图 (3) 绘制系统原理电路图 (4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释; (5) 制定编写调试方案,编写用户操作使用说明书 (6) 写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。 1.2.2 具体要求 本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。 软件编程是本次工程实践的重要环节。在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点: (1)熟悉Keil C51编程平台及相关编程软件 (2)编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调 (3)编写、调试LED流水灯(循环显示)程序并进行软硬件联调 (4)编写、调试键盘扫描子程序并进行软硬件联调

指示灯数码管的中断控制

学生实验报告 学院:软件与通信工程学院 课程名称:单片机系统设计 专业班级: 姓名: 学号:

学生实验报告(1) 一、实验综述 1、实验目的及要求 【实验目的】 掌握外部中断原理,学习中断编程与程序调试方法 【内容及要求】 (1)熟悉uvision3的软件调试方法; (2)完成c51语言编程 (3)练习uvision3与ISIS的联机仿真方法 【实验原理】 在编程软件配合下,要求实现如下功能:程序启动后,D1处于熄灯、LED1处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。 软件编程原理为:K1和K2的按键动作分别作为INT0和INT1的中断请求,在中断函数中进行指示灯与数码管的信息处理。初始化后,主函数处于无限循环状态,等待中断请求 2、实验仪器、设备或软件 电脑, Keil uVision4, proteus7 二、实验过程(实验步骤、记录、数据、分析)

(1)在Keil uVision4中编写和编译C51程序,生成可执行文件; (2)在uVision4中启动ISIS的仿真运行,并进行联机调试。 【实验代码】 #include<> unsigned char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x58,0x5e,0x79,0x71}; unsigned char count=0; sbit P0_4=P0^4; void INT_0SRV() interrupt 0 { P0_4 = ~P0_4; } void INT_1SRV() interrupt 2 { count++; if(count==16) count = 1; P2 = led_mod[count]; } void main(){ P2=0x00; P0_4=0x01; EA=1; EX0=1; EX1=1; IT1=1; IT0=1;

微机原理课程设计流水灯控制系统.doc

微机原理课程设计 流水灯控制系统 姓名 :XX 学院:物理电气信息学院 班级: 2010 电子 姓名 :12010245

流水灯控制系统 一、设计内容: 本课程设计选用8086 对 8255A的 A口控制来实现模拟流水灯功能的 实现。编写相关程序,通过proteus仿真软件来实现我名字“安亮” 两个字的闪烁,“安”字接 8255 的 A 口的 P0,“亮”字接 A 口的 P1。先让“安”字和“亮”字同时点亮,再让两个字同时暗,接着让“安”字点亮,再让“亮”字点亮,然后让“安”字和“亮”字同时亮暗闪 烁八次,再跳到开始,以此循环。 二、设计目的: 1、了解流水灯的基本工作原理 2、熟悉 8255A 并行接口的各种工作方式和应用 3、利用 8255A 接口,LED 发光二极管,设计一个流水灯模拟系统,让我的名字“安亮”两个字按一定规律点亮。 三、实验原理 在 8086 系统中,采用 16 位数据总线,进行数据传输时,CPU

总是将低 8 位数据线上的数据送往偶地址端口,而过高8位数据线上 的数据送往奇地址端口反过来,从偶地址端口取得的数据总是通过低 8 位数据线传送到CPU,从奇地址端口取得的数据总是通过高8 位数据线送到 CPU。在 8086 系统中,将 8255A的 A1端和地址总线的 A29255A 在对 CPU并且,相连, A1 端和地址总线的 A0 的 8255A 而将相连, 的端口进行访问时,将地址总线的 A0 位总是设置为 0。本课程设计通 过对 8255A 的 A 口控制来实现模拟流水灯功能的实现。“安”接 A 口 的 P0,“亮”接 A口的 P1,实现两个字按一定规律的一个闪烁。 8255 的内部结构 255A 内部结构由以下四部分组成:数据端口A、B、C;A组控制和 B 组控制;读 / 写控制逻辑电路;数据总线缓冲器。 端口 A:包括一个 8 位的数据输出锁存 / 缓冲器和一个 8 位的数据 输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。

流水灯电路的制作

流水灯电路的制作 一、概述: 随着电子技术的快速发展尤其是数字技术的突飞猛进,多功能流水灯凭着简易,高效,稳定等特点得到普遍的应用。在各种娱乐场所、店铺门面装饰、家居装潢、城市墙壁更是随处可见,与此同时,还有一些城市采用不同的流水灯打造属于自己的城市文明,塑造自己的城市魅力。目前,多功能流水灯的种类已有数十种,如家居装饰灯、店铺招牌灯等等。所以,多功能流水灯的设计具有相当的代表性。 多功能流水灯,就是要具有一定的变化各种图案的功能,主要考察了数字电路中一些编码译码、计数器原理,555定时器构成时基电路,给其他的电路提供时序脉冲,制作过程中需要了解相关芯片(NE555、CD4017)的具体功能,引脚图,真值表,认真布局,在连接过程中更要细致耐心。 二、电路原理图 三、电路工作原理 多功能流水灯原理电路图如上图所示。原理电路图由振荡电路、译码电路和光源电路三部分组成。本文选用的脉冲发生器是由NE555与R2、R3及C1组成的多谐振荡器组成。主要是为灯光流动控制器提供流动控制的脉冲,灯光的流动速度可以通过电位器R3进行调节。由于R3的阻值较大,所以有较大的速度调节范围。灯光流动控制器由一个十进制计数脉冲分配器CD4017和若干电阻组成。 CD4017的CP端受脉冲发生器输出脉冲的控制,其输出端(Q0~Q9)将输入脉冲按输入顺序依次分配。输出控制的脉冲,其输出控制脉冲的速度由脉冲发生器输出的脉冲频率决定。10

个电阻与CD4017的10个输出端Q0~Q9相连,当Q0~Q9依次输出控制脉冲时10个发光二极管按照接通回路的顺序依次发光,形成流动发光状态,即实现正向流水和逆向流水的功能。电源电路所采用的电源为。 四、板的设计 五、元器件清单 六、电路的组装与调试 1、电路的组装方法和步骤 (1)筛选元器件。对所有购置的元器件进行检测,注意它们的型号、规格、极性,应该保质量。 (2)按草图在PCB板上组装并焊接。 要求:①元器件布局整齐、美观,同类型元器件高度一致;

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

流水灯控制系统设计

微机原理课程设计 目录 第1章方案的论述以及与最终方案的确定·····································- 1 - 1.1第一种方案的论述 (1) 1.2第二种方案的论证 (1) 1.3第三种方案的论述 (1) 1.4最终方案的确定 (1) 第2章硬件设计 .................................................................................- 2 -2.1总体方案设计分析 .. (2) 2.2系统逻辑框图 (2) 2.3主要元器件简介 (2) 2.3.1 8086CPU ················································································································ - 2 - 2.3.2 地址锁存器74LS373的内部电路与工作原理····················································· - 4 - 2.3.3 可编程外围接口芯片8255A的简介···································································· - 5 -第3章软件设计 ·················································································- 9 - 3.1程序流程设计 (9) 3.1.1 主程序流程··········································································································· - 9 - 3.1.2 程序流程图········································································································· - 10 - 3.1.3 系统硬件连接图 ································································································· - 11 - 3.1.4 源程序设计(附录) ............................................................................................... - 11 -3.2设计最终理想结果及原理 (11) 3.2.1 左向移动流水灯 ································································································· - 11 - 3.2.2 右向移动流水灯 ································································································· - 11 -设计心得 ·····························································································- 12 -参考文献 ·····························································································- 13 -附录······································································································- 14 - - 1 -

花样流水灯设计

单片机课程设计 2014年 6月 15日 课 程 单片机课程设计 题 目 花样流水灯 院 系 电气工程及其自动化系 专业班级 1112班 学生姓名 温亿锋 学生学号 201111631227 指导教师 张瑛

一丶任务 设计一款以AT89C51单片机作为主控核心,按键控制电路、流水灯显示电路以及单片机最小系统等模块组成的核心主控制电路。 二丶设计要求 通过发光二极管显示不同的花样(至少有六种花样),并且可以通过按键来控制流水灯的速度。 三丶设计方案 本方案主要是通过对基于单片机的多控制、多闪烁方式的LED流水灯循环系统的设计,来达到本设计的要求。其硬件构成框图如下图所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED 发光二极管和5V直流电源组成。 单片机流水灯循环控制系统硬件框图 此设计方案中单片机的P1口接5路按键控制电路,实现流水灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对流水灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成流水灯电路,显示流水灯循环情况。 四丶系统硬件设计 4.1 直流稳压电源电路

对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分。本项目直流稳压电源为+5V。 直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。下图为稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。 三端固定式集成稳压电源电路图 AT89C51单片机的工作电压范围:4.0V---5.5V,所以通常给单片机外接5V 直流电源。此处用3节1.5V的干电池供电。 4.2 单片机最小系统 要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成,单片机最小系统如图所示。 时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz 石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。 复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

单片机左右流水灯与数码管动态显示C程序

单片机左右流水灯与数码管动态显示C程 序 本程序所用的原理图下载: 点这里,单片机芯片使用的stc89c52;找到相应部分即可.这是一整个单片机 开发板的电路图其他的忽略.以下是通过测试的源代码: /* *功能:用定时器0实现定时200毫秒流水灯, * 同时用定时器1实现动态显示654321, * 且蜂鸣器发声; *日期:2014-03-24 *作者:徐冉 *注意事项:若打开两个定时器时,必须使用两个定时器,* 否则两个定时器都不工作!!! **/ /**********AT89C52-RC 51hei单片机实验板 **************/ /*************51hei-开发板*********************/

#include ; typedef unsigned int uint; typedef unsigned char uchar; sbit wela = P2^7; //数码管位声明 sbit dula = P2^6; //数码管段选声明 sbit FM = P2^3;//蜂鸣器声明 uchar counter = 0, counter1 = 0, j = 0, flag = 0, flag1 = 0; uchar num = 6, num1 = 0; //数码管段选编码 uchar code table_du [] = { 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4"

用单片机实现流水灯的控制设计知识分享

用单片机实现流水灯的控制设计

用单片机实现流水灯的控制设计 1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本设计课题是流水灯的控制设计,流水灯是一串按一定的规律像流水一样连续闪亮。流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。 2.硬件组成 2.1 总体方案设计分析 要求用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,基本的界限可如下图A所示,在C口的地两位接两个开关,实现两个扩展功能的控制。 i:基本流水灯显示电路 A口和B口两个端口不能同时复制,从而在试验中可以用BX进行需要复制的数据的存储,因为BX可以分从BH BL两个部分进行独立的操作,在本次试验中用BH对A口进行赋值,用BL对B口进行赋值,通过演示一段时间再对BH BL进行移位和输出,实现流水灯的效果。

ii:正反方向选择 把PC.0口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.0为高电平的时候则灯进行左移,同时B口与A口相反。 iii:快慢速度控制 把PC.1口接在开关上,编写程序对C端口的数据进行读取,并进行判断,使得当PC.1为高电平的时候则延时的时间缩短,使得流水灯的流水速度加快,低电平的时候则进行延时的时间变长,使得流水灯的流水速度加快。 3硬件原理设计 A该模块的WR.RD分别练到PC总线接口模块的XIOW和XIOR B该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到PC总线接口模块的数据(D0~D7)、地址线(A0~A7) C 8255模块选通线CA连到PC总线接口模块的IOY3 D 8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16 E 8255的PC0 PC1分别练到开关 K0 K1 F 软件流程框图及程序清单 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极

流水灯电路

流水灯电路的制作与测试 【知识目标】 ●理解时序逻辑电路的基本概念及分类。 ●掌握同步和异步时序逻辑电路的分析方法。 ●理解计数器的逻辑功能及原理。 ●掌握寄存器电路的基本工作原理,理解移位寄存器的逻辑功能。 【技能目标】 ●能用触发器制作与调试各种同步计数器。 ●能用集成计数器制作任意进制的计数器。 ●熟悉集成移位寄存器逻辑功能和各控制端的作用,能构成实用电路。 ●多种方法实现流水灯电路,且进一步完善流水灯功能。 任务一用移位寄存器构成流水灯电路 一、分析任务 在一些数字系统中,有时需要系统按照事先规定的顺序进行一系列的操作。这就要求系统的控制部分能给出一组在时间上有一定先后顺序的脉冲,再用这组脉冲形成所需要的各种控制信号。 二、相关知识 在数字系统中,常常需要将一些数码、运算结果和指令等暂时存放起来,然后在需要的时候再取出来进行处理或运算。这种能够用于存储少量二进制代码或数据的时序逻辑电路,称为寄存器。 寄存器用于暂时存放二进制代码,它是数字系统中重要的部件之一。寄存器的主要组成部分是具有记忆功能的双稳态触发器。一个触发器可以存储一位二进制代码,所以要存放n位二进制代码,就需要n个触发器。 按照功能的不同,可将寄存器分为数码寄存器和移位寄存器两大类。 1. 数码寄存器 数码寄存器具有寄存数据和清除原有数据的功能。现以集成四位数据寄存器74LSl75来说明数据寄存器的电路结构和功能。74LSl75是用D触发器组成的四

位数据寄存器。它的逻辑图和管脚排列图如图7-11所示。 (a)逻辑图 (b)管脚排列图 图7-11 四位集成数码寄存器74LS175 74LS175的功能表见表7-11,CP 是时钟端,CR 是异步清零端,D 0~D 3是数据输入端,Q 0~Q 3是数据输出端。其功能如下。 表7-11 74LS175的功能表 ①异步清零。只要CR =0,就可使输出端清零,而与时钟无关。清零后,将 CR 接高电平,数据才能正常存人。 ②并行输入/输出。在CR =1的前提下,(将需要存人的四位二进制数据送到数据输入端D 0~D 3),在CP 脉冲上升沿的作用下,将D 0~D 3的数据并行存入Q 0~Q 3,同时也可取出存人的数码的反码。 ③记忆保持。当只CR =1且CP =0时,各触发器保持原状态不变,数据寄存器处于保持状态。 无论寄存器中原来的内容是什么,只要送数控制时钟脉冲CP 上升沿到来,加在并行数据输入端的数据D 0~D 3将立即被送入寄存器中,有 32103210Q Q Q Q D D D D

单片机设计(流水灯、矩阵键盘、数码管倒计时)

单片机结业作业 1.电路图 2.程序: #include sbit P1_6=P1^6; sbit P1_7=P1^7; unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char clock[2]={59,59}; //60秒倒计时缓冲数组 unsigned char *dis_p; unsigned char keytest(); //键盘检测函数 unsigned char search(); //查键值函数 void display(unsigned char *p); //显示函数 void main() { unsigned char i,a,c; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; dis_p=clock;

while(1) { P0=0x80; c=P0; for(i=0;i<8;i++) { c>>=1; P0=c; a=keytest(); if(a==0x0f) display(dis_p); else { display(dis_p); a=keytest(); if(a!=0x0f) { P3=0x00; a=search(); switch(a) { case 0x00:P2=0x3f;break; case 0x01:P2=0x06;break; case 0x02:P2=0x5b;break; case 0x03:P2=0x4f;break; case 0x04:P2=0x66;break; case 0x05:P2=0x6d;break; case 0x06:P2=0x7d;break; case 0x07:P2=0x07;break; case 0x08:P2=0x7f;break; case 0x09:P2=0x6f;break; case 0x0a:P2=0x77;break; case 0x0b:P2=0x7c;break; case 0x0c:P2=0x39;break; case 0x0d:P2=0x5e;break; case 0x0e:P2=0x79;break; case 0x0f:P2=0x71;break; default:break; } while((a=keytest())!=0x0f); } } } } }

单片机指示灯和数码管的中断控制实验报告

实验四、指示灯与数码管的中断控制 一、实验目的 掌握外部中断的工作原理,学会中断程序设计。 二、实验内容 1、按照教材图A、53,绘制实验四电路原理图; 2、要求采用外部中断原理完成本次实验,其中按键K1、K2均设置为下降沿触发方式,自然优先级; 3、编写C51程序实现如下功能:开机后D1灭灯,LED1黑屏,随后单击K1→D1状态反转,单击K2 →LED1从0开始循环显示0~F字符。 4、观察仿真结果,完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图,外部中断工作原理阐述(以K1为例说明中断响应过程),C51源程序(含流程图与注释语句),运行效果(含运行截图与说明),实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验四。 1、电路原理图 2、外部中断工作原理阐述

持续按下K1则D1将“亮→灭→亮→灭→亮→灭如此循环,表明实现了K1对应于D1状态反转这个功能;持续按下持续按K2则数码显示管依次显示1-F,实现了K2对应于0~F间的数码管加一计数显示。 3、C51程序 #include sbit P0_4=P0^4; unsigned char count=0; unsigned led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0 x5e,0x79,0x71}; void main(){ P2=0x00; P0_4=0; EA=1; EX1=EX0=1; IT1=IT0=1; while(1); } void INT_OSVR() interrupt 0 {P0_4=!P0_4;} void INT_1SVR() interrupt 2

51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 流水灯汇编程序 8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms PUSH PSW ;现场保护指令(有时可以不加) MOV R4,#2 L3: MOV R2 ,#00H L1: MOV R3 ,#00H L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END

51单片机汇编程序集(二) 2008年12月12日星期五 10:27 辛普生积分程序 内部RAM数据排序程序(升序) 外部RAM数据排序程序(升序) 外部RAM浮点数排序程序(升序) BCD小数转换为二进制小数(2位) BCD小数转换为二进制小数(N位) BCD整数转换为二进制整数(1位) BCD整数转换为二进制整数(2位) BCD整数转换为二进制整数(3位) BCD整数转换为二进制整数(N位) 二进制小数(2位)转换为十进制小数(分离BCD码) 二进制小数(M位)转换为十进制小数(分离BCD码) 二进制整数(2位)转换为十进制整数(分离BCD码) 二进制整数(2位)转换为十进制整数(组合BCD码) 二进制整数(3位)转换为十进制整数(分离BCD码) 二进制整数(3位)转换为十进制整数(组合BCD码) 二进制整数(M位)转换为十进制整数(组合BCD码) 三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7 ;二进制整数(2位)转换为十进制整数(分离BCD码) ;入口: R3,R4 ;占用资源: ACC,R2,NDIV31 ;堆栈需求: 5字节 ;出口: R0,NCNT IBTD21 : MOV NCNT,#00H MOV R2,#00H IBD211 : MOV R7,#0AH LCALL NDIV31 MOV A,R7 MOV @R0,A INC R0 INC NCNT MOV A,R3 ORL A,R4 JNZ IBD211 MOV A,R0 CLR C SUBB A,NCNT MOV R0,A RET ;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4 ;占用资源: ACC,B,R7 ;堆栈需求: 3字节 ;出口: R0

流水灯控制系统的设计正文

黄河科技学院毕业设计说明书第1页 1 绪论 1.1 课题背景及目的 今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,数字逻辑电路的发展也日趋迅速,通常流水灯的设计会选择单片机编程,虽然单片机具有体积小、功能强、成本低、应用面广等优点,但是,选择单片机更大的增加了设计费用,并且对设计者的编程语言要求高,而在数字电路中,中规模集成电路以其功能强大、种类繁多,得到广泛应用。很多中规模集成电路都具有通用性,它的应用已不仅仅局限于其本身所具有的功能。如本文所设计的流水灯电路,就是利用中规模集成电路的功能扩展,将移位寄存器构成移存型计数器,将其输出端接到多个LED指示上。利用数字电路来控制灯的状态,并显示设计结果。其主要的电路原理:整个流水灯电路由时钟产生,流水程序控制驱动及功率控制元件电源供给电路等电路组成。 1.2 课题研究方法 常见的流水灯控制系统中,是使用微机控制,设备复杂,成本较高;另外应用单片机控制,虽然简单,但系统智能化及传输可靠性低,且对语言的编程能力要求较高,均不理想。为了提高系统可靠性、实用性,从而研究了一种基于模拟电子技术和数字电子技术的循环控制系统。这种设计不仅仅应用到流水灯的控制,也在工业生产中提高自动化循环控制得到利用。为了发光二极管形成流水效果,将电源加在555定时器中,定时发送脉冲,通过CD4017循环计数,由CD4066控制开关,使发光二极管逐个接受高电平,循环亮起,设计中,选用四种颜色的发光二极管,从而形成更好的流水效果。 1.3 基本要求设计方案 (1)设计一个彩灯控制电路,使其能够产生一个控制信号控制彩灯实现灯光变换的功能。 (2)该彩灯控制电路,在完成基本变化的基础上,可以实现彩灯的流向性,间歇性变化的要求,从而使彩灯更加丰富化。

单片机指示灯和数码管的中断控制实验报告

实验四、指示灯和数码管的中断控制 一、实验目的 掌握外部中断的工作原理,学会中断程序设计。 二、实验内容 1、按照教材图A.53,绘制实验四电路原理图; 2、要求采用外部中断原理完成本次实验,其中按键K1、K2均设置为下降沿触发方式,自然优先级; 3、编写C51程序实现如下功能:开机后D1灭灯,LED1黑屏,随后单击K1→D1状态反转,单击K2 →LED1从0开始循环显示0~F字符。 4、观察仿真结果,完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图,外部中断工作原理阐述(以K1为例说明中断响应过程),C51源程序(含流程图与注释语句),运行效果(含运行截图与说明),实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验四。 1、电路原理图 2、外部中断工作原理阐述

持续按下K1则D1将“亮→灭→亮→灭→亮→灭如此循环,表明实现了K1对应于D1状态反转这个功能;持续按下持续按K2则数码显示管依次显示1-F,实现了K2对应于0~F间的数码管加一计数显示。 3、C51程序 #include sbit P0_4=P0^4; unsigned char count=0; unsigned led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0 x5e,0x79,0x71}; void main(){ P2=0x00; P0_4=0; EA=1; EX1=EX0=1; IT1=IT0=1; while(1); } void INT_OSVR() interrupt 0 {P0_4=!P0_4;} void INT_1SVR() interrupt 2

基于单片机编程的流水灯设计原理++含程序

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 图1 流水灯硬件原理图 从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~

P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 3.软件编程 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。 3.1位控法 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。程序如下: ORG 0000H ;单片机上电后从0000H地址执行 AJMP START ;跳转到主程序存放地址处 ORG 0030H ;设置主程序开始地址 START:MOV SP,#60H ;设置堆栈起始地址为60H CLR P1.0 ;P1.0输出低电平,使LED1点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭 CLR P1.1 ;P1.1输出低电平,使LED2点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED2熄灭 CLR P1.2 ;P1.2输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED3熄灭 CLR P1.3 ;P1.3输出低电平,使LED4点亮

相关文档
最新文档