单片机课程设计8个流水灯程序
用单片机设计流水灯的方法和程序编写
用单片机设计流水灯的方法和程序编写-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANS51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。
等实验,电路原理图见下图3。
图3单片机流水灯设计方法从原理图可以看出,如果我们想让接在口的LED1亮起来,那么我们只要把口的电平变为低电平就可以了;相反,如果要接在口的LED1熄灭,就要把口的电平变为高电平就可以;同理,接在~口的其他7个LED的点亮和熄灭方法方法同LED1。
因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、低、延时、高、返回到开始、程序结束。
从上面中文表示看来实现单片机流水灯很简单,但是我们不能说你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。
我们又怎样来使单片机按我们的意思去工作呢为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
在上面主程序中用到了五条汇编语言指令:CLR、ACALL、SETB、LJMP、EN D。
CLR:是将其后面指定的位清为0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END:是程序结束的伪指令,意思是告诉编译器,程序到此结束。
8路流水灯课程设计
8路流水灯 课程设计一、课程目标知识目标:1. 学生能理解并掌握8路流水灯的基本原理和电路设计;2. 学生能够运用已学的电子元件知识,正确搭建8路流水灯电路;3. 学生能够解释8路流水灯程序设计中的基本指令和程序逻辑。
技能目标:1. 学生能够独立完成8路流水灯电路的搭建,提高动手实践能力;2. 学生通过编程控制8路流水灯,培养编程思维和问题解决能力;3. 学生能够运用团队协作,共同完成8路流水灯的制作,提高沟通与协作能力。
情感态度价值观目标:1. 学生在探索8路流水灯的过程中,培养对电子技术的兴趣和爱好;2. 学生在自主学习、合作交流中,形成积极的学习态度,增强自信心;3. 学生通过实践,认识到科技与生活的紧密联系,激发创新意识和环保意识。
课程性质:本课程为电子技术实践课程,旨在让学生通过动手实践,掌握电子元件的应用和编程控制,提高学生的实际操作能力。
学生特点:八年级学生具备一定的电子元件知识和编程基础,好奇心强,喜欢动手实践,但需引导培养团队协作能力。
教学要求:课程注重理论与实践相结合,强调学生动手实践,注重培养学生的编程思维、问题解决能力和团队协作能力。
通过课程目标的具体分解,使学生在实践中达成学习成果,提高综合素质。
二、教学内容1. 理论知识:- 电子元件:介绍8路流水灯所需的基础电子元件,如LED灯、电阻、电容、二极管等;- 电路原理:讲解8路流水灯的电路设计原理,包括电路图识别、工作原理等;- 程序设计:分析8路流水灯程序设计的基本指令、流程控制和编程技巧。
2. 实践操作:- 电路搭建:指导学生按照电路图,正确搭建8路流水灯电路;- 程序编写:教授学生编写8路流水灯控制程序,实现流水灯效果;- 调试与优化:培养学生发现问题、分析问题、解决问题的能力,对程序和电路进行调试与优化。
3. 教学大纲与进度安排:- 第一课时:回顾电子元件知识,讲解8路流水灯电路原理;- 第二课时:分析8路流水灯程序设计,进行电路搭建;- 第三课时:编写控制程序,实现流水灯效果;- 第四课时:对8路流水灯进行调试与优化,总结交流学习心得。
单片机课程设计—8个按键控制8个LED自动设定控制流水灯
西南石油年夜学之迟辟智美创作实习总结陈说 实习类型生产实习 实习单元 西南石油年夜学实习基地 实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日 指导教师刘东明、孙鉴 所在院(系) 电子科学学院 班 级电子科学与技术 15-2 学生姓名 学 号 15090124022018 年 7 月 16 日目录第 1 章 按键控制流水灯设计 1 1.1 实习目的错误!未定义书签。
1.2 实习要求错误!未定义书签。
第 2 章 电路工作原理 22.5 本章小结 6 第 3 章 C 法式设计 73.1 法式设计流程图 73.3 本章小结 9 总结及体会 10 参考文献 11 附录 12第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心.通过它实现对八盏 LED 灯的亮灭进 行设定,并在设定完成之后能够依照之前的设定实现流水灯效果.外部电路为按键 控制流水灯.P0 口控制八盏灯,P1 口控制矩阵键盘,P2 口控制自力按键,法式利 用单片机内部计时器中断实现流水效果.要求流水灯能够自行设定、暂停、复位, 工作稳定,可靠性高.生产实习的主要目的是培养理论联系实际的能力,提高实际入手把持能力.本 专业的生产实习旨在广泛了解实际单片机电子产物工作的全过程,熟悉电子产物 的主要技术管理模式,并在实习的把持过程中学习掌握电子产物的焊接装置调试 的实际把持技能.巩固和加深理解所学的理论,开阔眼界,提高潜力,为培养高素 质年夜学本科人才打下需要的基础.透过学习,是理论与实际相结合,能够使学生 加深对所学知识的理解,并为后续专业课的学习带给需要的感性知识,同时直接 了解本业的生产过程和生产资料,为将来走上工作岗位带给需要的实际生产知识.1.2 实习要求1.深入学习单片机开发软件 Keil 的使用,熟悉单片机电路设计,根据实际应 用电路对法式进行调试.2.熟悉单片机硬件开发平台的应用,掌握单片机编程器、仿真器的使用,能 检查和分析软硬件故障.3.体会单片机内部资源的功能使用,以单片机开发板现有资源进行应用性设 计.掌握单片机经常使用外围器件的使用.4.对去年生产实习焊接的 51 开发板的法式有更深入的了解.第2章 电路工作原理2.1 STC89C52 单片机工作原理单片机(Microcontrollers)是一种集成电路芯片,是采纳超年夜规模集成电路 技术把具有数据处置能力的中央处置器 CPU、随机存储器 RAM、只读存储器 ROM、 多种 I/O 口和中断系统、按时器/计数器等功能(可能还包括显示驱动电路、脉宽 调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个 小而完善的微型计算机系统.例如 STC89C52 单片机是通过 32 个输入输出口的高低电平变动来实现对外部 电路的控制,痛过相应的法式实现对 32 个输入输出口的控制,这就是单片机工作 的最基来源根基理.如图 2-1 所示为 STC89C52 单片机工作的最小系统电路图.图 2-1 STC89C52 最小工作系统 整个电路使用 5V 直流电源供电,其中复位电路能够使单片机复位;晶振电路 相当于单片机的心脏,为单片机提供 12MHz 的高频脉冲使单片机正常工作; MAX232 是将单片机输出的 TTL 电平转换成 PC 机能接收的 232 电平或将 PC 机输 出的 232 电平转换成单片机能接收的 TTL 电平,实现单片机与 PC 机之间的通信, 以便于下载法式.2.2 LED 工作原理LED(light-emitting diode),即发光二极管,俗称 LED 小灯,51 开发板使用 的是普通贴片发光二极管.这种二极管通常的正向导通电压是 1.8~2.2V 之间,工作 电流一般在 1~20mA 之间.其中当电流在 1~5mA 之间变动时,随着通过 LED 的电 流越来越年夜,肉眼会感觉到这个灯越来越亮,而当电流从 5~20mA 变动时,看 到的发光二极管的亮度变动不明显了.当电流超越 20mA 时,LED 就有烧坏的危险. 所以在 51 开发板的使用中需要根据相应的电流参数设计一个与 LED 串连的限流 电阻.如图 2-2 所示为单片机 I/O 口控制 LED 的电路原理图.图 2-2 单片机控制 LED 电路图 图中 PR2 为排阻,在电路中起到限流作用,防止 LED 被烧毁.因为单片机是可 以编程控制的,即 P00~P07 的高低电平也是能够控制的,所以对应的 8 个 LED 的 亮灭状态也是能够控制的,这就到达了单片机控制 LED 的目的.2.3 按键工作原理 2.3.1 自力按键工作原理自力式按键比力简单,它们各自与自力的输入线相连接,如图 2-3 所示.图 2-3 自力式按键原理图 4 条输人线接到单片机的 I/O 口上,当按健 K1 按下时,+5V 通过电阻然后再 通过按键 K1 最终进人 GND 形成一条通路,这条线路的全部电压都加到这个电阻 上,P20 这个引脚就是个低电平.当松开按健后,线路断开,就不会有电值通过, P20 和+5V 就应该是等电位,是个高电平.我们就可以通过 P20 这个 10 口的高低电 平来判断是否有按键按下.2.3.2 矩阵按键工作原理在某一个系统设计中,如果需要使用很多按键时,做成自力按键会占用年夜 量 I/O 口,因此引用了矩阵键盘的设计.如图 2-4 所示为 51 开发板上的矩阵按键电 路原理图,使用 8 个 I/O 口来实现 16 个按键.图 2-4 矩阵按键原理图 在法式设计中分别用四个 I/O 口扫描 4 行,另外 4 个扫描 4 列,确定了按键在 哪行哪列也就确定了按键的具体位置.2.4 整体电路图如图 2-5 所示为键盘控制 LED 流水灯整体电路图.图 2-5 总电路原理图2.5 本章小结本章主要介绍了单片机最小系统、LED 工作原理、按键工作原理.并从硬件电 路的设计动身,简单分析单片机控制 LED 的工作过程.理论分析基本完成,接下来 就是具体的法式设计与调试,通过具体的法式来实现相应的功能,这也是单片机 开发中最具技术含量的环节之一.第3章 C 法式设计3.1 法式设计流程图如图 3-1 所示为主法式流程图.开始 开计时器中断K1 是否按下 否是扫描矩阵键盘选 择需要点亮的 LED是K2 是否按下 否K3 是否按下 否是保管选择的数据 择需要点亮的 LED计时器中断法式选择 数据实现 LED 流水灯图 3-1 法式设计框图 主法式由 3 个自力按键控制,K1,K2 和 K3.开始从主函数执行法式语句,不 竭循环扫描按键,当 K1 按下时,进入选择状态,法式会不竭地扫描矩阵键盘,通 过矩阵键盘选择需要点亮的 LED;选择结束后按下 K2,法式会将选定后的数据送 入中断法式,中断法式根据接收的数据选泽对应的 LED 实现流水灯效果;当按下K3 后法式又会进入矩阵键盘扫描重新选择 LED.3.2 实验结果如图 3-2 所示,当按下 K1 后进入选择定状态.图 3-2 选择 LED 如图 3-2,控制矩阵键盘分别选择了第 1,6,8 盏灯. 再按下 K2 键,让选择的第 1,6,8 盏灯实现流水灯效果.如图 3-3 所示.图 3-3 流水灯 如图 3-3,按下 K2 之后,LED 由之前第 1,6,8 盏灯亮酿成第 1,2,7 盏灯 亮,实现了流水灯右移的效果. 当按下 K3 键,实验结果如图 3-4 所示.图3-4回到初始状态由图3-4可知,当按下K3键之后,法式又回到了设定LED的状态.3.3本章小结由实验结果可以看出,本次单片机课程设计已到达预期要求,电路工作稳定,满足设计要求.在整个设计过程中,法式设计与调试最为复杂,呈现过按键灯不亮,没有呈现滚动流水等现象等一系列法式问题.但最终在不竭地检查、调试之后,问题也逐渐获得解决.最终实现按键控制流水灯的效果.总结及体会本次设计通过对单片机进行编程控制,进而控制外部电路,胜利地设计了八个按键控制八盏灯亮灭实现流水灯的效果.深入了解到单片机开发软件Keil的使用,熟悉单片机电路设计,根据实际应用电路对法式进行调试.熟悉单片机硬件开发平台的应用,掌握了单片机编程器、仿真器的使用,能检查和分析软硬件故障.体会到单片机内部资源的功能使用,以单片机开发板现有资源进行应用性设计.通过这次实习使我进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、按时/控制、法式设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践把持技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和立异的基天性力,为结业后从事与单片机相关的工作打下一定的基础.参考文献[1]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:高等教育出书社,2006.[2]阎石.数字电子技术基础(第五版)[M].北京:高等教育出书社,2006.[3]韩建,全星慧,周围.电子技术课程设计指导[M].哈尔滨:哈尔滨工程年夜学出书社,2014.[4]黎小桃.数字电子电路分析与应用[M].北京:北京理工年夜学出书社,2014.[5]高吉祥. 电子技术基础实验与课程设计[M].北京:电子工业出书社,2002.[6]陈明义.电子技术课程设计实用教程(第3版) [M]. 长沙:中南年夜学出书社,2010.[7]程春雨. 模拟电子技术实验与课程设计[M].北京:电子工业出书社,2016.[8]宋雪松,李东明,崔长胜. 手把手教你学51单片机(C语言版)[M]. 北京:清华年夜学出书社,2014.附录:#include <reg52.h>#include <intrins.h>#define KEY P1sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit k4=P2^3;unsigned char LED=0x00,LED1=0x00;unsigned char x=0;unsigned char KeyValue;unsigned char A1=0x00,A2=0x00,A3=0x00,A4=0x00,A5=0x00,A6=0x00,A7=0x00,A8=0x00;void Delay10ms(unsigned int c);void KeyDown(); //矩阵键盘检测void kongzhil();void kongzhi2();void main(void){ TMOD=0x01; //按时器工作状态为1 TH0=(65536-50000)/256;TL0=(65536-50000)%6;EA=1; //开总中断ET0=1; //开按时器中断TR0=1; //开启按时器while(1){ int n=0;if(k1==0){Delay10ms(1);if(k1==0)n=1;}if(k3==0){Delay10ms(1);if(k3==0)n=3;}if(k4==0){Delay10ms(1);if(k4==0)n=4;}switch(n){case 1:KeyDown();break;case 3:kongzhil();break;case 4:kongzhi2();break;default:break;}}}void KeyDown(void){ int k=1;while(k){char a=0;KEY=0x0f;if(KEY!=0x0f){Delay10ms(1); //延时消抖if(KEY!=0x0f){KEY=0X0F;switch(KEY) //扫描行{case(0X07): KeyValue=0;break;case(0X0b): KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e): KeyValue=12;break;}KEY=0XF0;switch(KEY) //扫描列{case(0X70): KeyValue=KeyValue+3;break;case(0Xb0): KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0): KeyValue=KeyValue;break;}while((a<50) && (KEY!=0xf0)) //松手检测{Delay10ms(1);a++;}switch(KeyValue) //选择需要亮的灯{case(0):A1=~A1;break;case(1):A2=~A2;break;case(2):A3=~A3;break;case(3):A4=~A4;break;case(4):A5=~A5;break;case(5):A6=~A6;break;case(6):A7=~A7;break;case(7):A8=~A8;break;default:break;}}}if (A1==0xff) //保管数据(LED1=LED1|0x80);else if(A1==0x00)(LED1=LED1&0x7f);if (A2==0xff)(LED1=LED1|0x40);else if(A2==0x00)(LED1=LED1&0xbf);if (A3==0xff)(LED1=LED1|0x20);else if(A3==0x00)(LED1=LED1&0xdf);if (A4==0xff)(LED1=LED1|0x10);else if(A4==0x00)(LED1=LED1&0xef);if (A5==0xff)(LED1=LED1|0x08);else if(A5==0x00)(LED1=LED1&0xf7);if (A6==0xff)(LED1=LED1|0x04);else if(A6==0x00)(LED1=LED1&0xfb);if (A7==0xff)(LED1=LED1|0x02);else if(A7==0x00)(LED1=LED1&0xfd);if (A8==0xff)(LED1=LED1|0x01);else if(A8==0x00)(LED1=LED1&0xfe);LED=LED1;if(k2==0){Delay10ms(1);if(k2==0){k=0;LED=LED1;};};if(k4==0){Delay10ms(1);if(k4==0){k=0;kongzhi2();};};}}void kongzhil(void){int m=1;LED1=LED,LED=0x00;while(m){if(k3==0){Delay10ms(1);if(k3==0){m=0,LED=LED1;};}}}void kongzhi2(void){LED1=0x00;LED=0x00;A1=0;A2=0;A3=0;A4=0;A5=0;A6=0;A7=0;A8=0;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%6;x++;if(x==6) //6*50MS=300MS{x=0;P0=LED;LED = _crol_(LED,1);//if(++i==8) i=0;}}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--);}}}。
项目二:8位流水灯的单片机控制讲解
内部总线 1 写锁存器
DQ
1
CK /Q
0
1
读引脚 =1
截 引脚P1.X 止
P1口控制流水灯(8个发光二极管)电路
发光二极管的连接方法:若 将它们的阴极连接在一起,阳 极信号受控制,即构成共阴极 接法,如图a所示;若将它们的 阳极连接在一起,阴极信号受 控制,则构成共阳极接法,如 图b所示。由于P1口引脚输出 高电位时电压大约是5V,为保 证发光二极管的可靠工作,必 须在发光二极管和单片机输出 引脚间连接一只限流电阻。
三 、程序PROTUES仿真与调试
人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。
DJNZ R7,D0
RET
;子程序返回指令
END
;程序结束标记
知识点链接
在本项目中,利用P1口实现8个发光二极管的流水灯控制,主要利 用了送数指令,将要显示的现象对应的数据通过P1口送出。在编写控制 程序时,应首先将每个对应现象分析清楚,比如:要让L3亮,其余发光 二极管灭,则P1口的数据应为11110111B;要让L7亮,则P1口的数据 应为01111111B。然后找到能实现此操作的指令即可。下面使用我们在 本项目中学习的移位指令编写程序如下:
R7,D0
;L6亮
指令意义(注释)
; L7亮 ;将立即数FEH送累加器A,L0亮 ;重复执行本条指令(程序结束) ; 延时程序从0F00H开始 ;将立即数10送通用寄存器R7 ;将立即数100送通用寄存器R6 ;将立即数200送通用寄存器R5 ;根据R5减1后的内容判断程序执行方向 ;根据R6减1后的内容判断程序执行方向
项目2---8位流水灯的单片机
二、编程及问答:
1、要使得本项目中发光二极管的闪烁速度加快,程序如何修 改?若变慢呢?
2、试编写两段延时时间不同的子程序,并分别调用。 3、汇编程序的书写格式和注意事项是什么?
项目2个发光二极管的顺序点亮, 学会使用MCS-51单片机芯片的P1口进行输出控 制,进一步学习汇编程序的分析方法,并能熟练 运用RR、RL等基本指令。
项目任务
要求应用AT89C51芯片,控制8个发光 二极管的有序亮灭,呈现流水灯的效果。 设计单片机控制电路并编程实现此功能。
(二)程序编写
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P1,#0FEH LCALL YS MOV P1,#0FDH LCALL YS MOV P1,#0FBH LCALL YS MOV P1,#0F7H LCALL YS MOV P1,#0EFH LCALL YS MOV P1,#0DFH LCALL YS
项目分析
利用单片机P1口连接8个发光二极管, 利用各引脚输出电位的变化,控制发光二 极管的亮灭。P1口各引脚的电位变化可以 通过指令来控制,为了清楚地分辨发光二 极管的点亮和熄灭,在P1口输出信号由一 种状态向另一种状态变化时,编写延时程 序实现一定的时间间隔。
项目实施
一、硬件电路设计 二、控制程序的编写
MOV P1,#0BFH LCALL YS MOV P1,#7FH LCALL YS LJMP MAIN ORG 0100H YS:MOV R7,#2 L1:MOV R6,#0FFH L2:MOV R5,#0FFH L3:DJNZ R5,L3 DJNZ R6,L2 DJNZ R7,L1 RET END
DJNZ R7,D0
LJMP XH
8个流水灯程序
i = 10000; // SW Delay
do i--;
while(i != 0);
break;
}
}
P2DIR=BIT0;//P1.0显示按键起作用
P2OUT=BIT0+BIT3;//P2IN低电平跳转
P2REN=BIT3;//上拉电阻,缺了好像不能用
while(i != 0);
P1OUT ^= 0X20; // Toggle P1.5 using exclusive-OR
i = 10000; // SW Delay
do i--;
while(i != 0);
break;
}
}
while(i != 0);
P1OUT ^= 0X04; // Toggle P1.2 using exclusive-OR
i = 10000; // SW Delay
do i--;
while(i != 0);
P1OUT ^= 0X08; // Toggle P1.3 using exclusive-OR
while(i != 0);
P1OUT ^= 0X04; // Toggle P1.2 using exclusive-OR
i = 10000; // SW Delay
do i--;
while(i != 0);
break;
}
}
{
P1DIR |= 0X01; // Set P1.0 to output direction
P1DIR |= 0X02;
P1DIR |= 0X04;
P1DIR |= 0X08;
P1DIR |= 0X10;
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告一、实验目的本实验旨在通过单片机控制八个LED灯,实现流水灯效果。
通过本实验,我们希望达到以下目的:1.深入理解单片机的I/O端口的工作原理和使用方法。
2.掌握单片机定时器/计数器的工作原理和使用方法。
3.学会编写简单的单片机程序,实现特定的LED灯控制。
4.通过实践操作,提高单片机软硬件的综合应用能力。
二、实验设备1.单片机开发板2.电脑一台3.八个LED灯4.杜邦线若干5.电阻、电容等电子元件三、实验原理本实验采用AT89C51单片机作为主控芯片。
八个LED灯分别连接到P1端口的P1.0到P1.7。
通过编程控制P1端口的每一个引脚,实现对LED灯的亮灭控制。
使用定时器/计数器实现延时,达到流水灯效果。
四、实验步骤和内容1.搭建硬件电路将八个LED灯、一个上拉电阻以及相应的杜邦线连接至单片机开发板。
确保电源正确连接,并注意LED灯的长脚为正极,短脚为负极。
2.编写程序使用Keil C51编写程序,实现如下功能:点亮每个LED灯一定的时间,然后熄灭。
重复此过程,形成流水灯效果。
代码如下:#include <reg51.h> //包含51单片机的头文件#define LED P1 //定义LED为P1端口void delay(unsigned int time) //延时函数{unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);}void main() //主函数{while(1) //程序一直循环执行{unsigned char i=0; //定义一个变量i,用于循环控制LED灯while(i<8) //循环点亮每个LED灯{LED=~(0x01<<i); //点亮第i个LED灯delay(50000); //延时50ms(50*1275us)i++; //变量i加1,控制下一个LED灯}}}3.编译程序将程序编译为二进制文件,生成HEX文件。
8位流水灯课程设计
8位流水灯课程设计一、课程目标知识目标:1. 让学生掌握8位流水灯的基本原理,理解其内部电路结构与工作流程。
2. 学会运用所学知识设计简单的8位流水灯电路,并掌握相关编程技巧。
3. 了解8位流水灯在实际应用中的场景和意义。
技能目标:1. 培养学生动手实践能力,能够独立完成8位流水灯电路的搭建与编程。
2. 提高学生问题分析、解决能力,能够在实际操作过程中发现并解决问题。
3. 培养学生团队协作能力,能够在小组合作中发挥各自优势,共同完成任务。
情感态度价值观目标:1. 激发学生对电子技术的兴趣,培养创新意识和探索精神。
2. 培养学生严谨、细致的学习态度,注重实际操作中的安全意识。
3. 引导学生关注科技发展,认识到电子技术在日常生活中的重要性。
课程性质:本课程为电子技术实践课程,以项目式教学为主,结合理论知识与实际操作。
学生特点:八年级学生,具备一定的电子技术基础,对实践操作有较高的兴趣。
教学要求:注重理论与实践相结合,以学生为主体,教师为主导,鼓励学生积极参与,培养学生的实际操作能力和创新精神。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。
二、教学内容1. 理论知识:- 8位流水灯基本原理介绍- 电路组成:LED、电阻、微控制器等- 编程语言基础:C语言或汇编语言- 8位流水灯程序设计思路及方法2. 实践操作:- 8位流水灯电路图的绘制- 电路板搭建,焊接LED和电阻- 微控制器编程与调试- 8位流水灯功能实现与优化3. 教学安排与进度:- 第一课时:8位流水灯基本原理及电路组成介绍- 第二课时:编程语言基础学习与电路图绘制- 第三课时:电路板搭建、焊接及微控制器编程- 第四课时:8位流水灯功能实现与调试优化4. 教材章节:- 《电子技术基础》第四章:数字电路基础- 《电子技术基础》第六章:微控制器原理与应用- 《C语言程序设计》第一章:C语言概述与基本语法教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,使学生能够在实践中掌握8位流水灯的相关知识。
单片机课程设计-8个LED灯来回点亮
课题简介
当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品。而电子LED灯已跨入了我们生活的众多电子领域。在众多场合随处可见的闪光灯,流水灯不仅大方美观而且十分节能。然而控制它们的单片机却是一个不能被忽视的角色。
单片机简介
第二章设计目的及要求
2.1设计目的
通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于89C51单片机的系统设计有一个比较感性的认识,并具备一定程度的设计能力。
5.2编辑源程序--------------------------------------------------14
第六章系统调试与仿真结果--------------------------------16
6.1系统调试-----------------------------------------------------16
4.5工作电路------------------------------------------------------12
第五章软件设计------------------------------------------------13
5.1程序流程图--------------------------------------------------13
培养实践技能,提高分析和解决实际问题的能力。
2.2设计要求
(1)认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等
课程设计8位流水灯设计
电子技术课程设计《电子设计基础》课程报告设计题目:8位流水灯设计学生班级:通信0902学生学号:20096050学生姓名:卢朝飞指导教师:曹文、黎恒、刘春梅2011年6月21日时间:西南科技大学信息工程学院一、8位流水灯设计目的及要求1. 设计一个8位流水灯循环点亮电路。
2. 要求采用74ls42芯片。
二、流水灯功能设计分析分析:(1)要实现8个led依次循环点亮,只需要将发光二极管依次循环点亮和熄灭,8只led便会依次循环点亮熄灭了三、电路设计基本原理及主要器件1. 74ls42芯片简介74LS42 由8 个反相器和10 个4 输入端的与非门组成。
反相器成对连接以便接受4 位BCD 输入,经由与非门译码后输出,该电路为BCD—十进制的多用途译码器。
其输入为高电平有效,而输出是低电平有效。
74LS42 的逻辑设计保证了当大于9 的二进制代码加到输入端上时,所有的输出端均处于高电平(无效)。
当LS42 用作3 线—8 线译码时,最高有效输入D可产生一个有用的“禁止”功能。
D 输入还可在8 输出的解调应用中用来作为数据输入。
2.74ls1613.74ls104.8个发光二极管5.一个220欧姆电阻四、流水灯仿真图、原理图及PCB板图1.8位流水灯仿真图如下:2. 8位流水灯原理图如下:2. 8位流水灯PCB板图如下:底层:顶层:五、总结与体会1、总结在用protel设计与制板过程中自己总结了一些经验:【1】接地的标号中一定要把Net选项选为GND才可以,不然在PCB制作中将没有接地这一个选项出现;还有Dasignator的选项填写的是元件的标号,只有这个填上了在PCB制作中才会有该元件出现。
【2】对PCB制作过程的要求。
从板层的选择,到对元器件的布局最后是加入输入输出,以及对输入输出的连线,每一个都有很多的细节需要注意。
其中最为典型的就是对输入输出的连线,它需要把两端节点及连线都定义为相同的名称才行,即需要对Net进行统一命名,不然系统将不把它默认为导通的连线。
8个流水灯实验课程设计
8个流水灯实验课程设计一、课程目标知识目标:1. 学生能理解流水灯的基本原理,掌握电路连接和编程方法。
2. 学生能描述8个流水灯实验的电路图和程序流程。
3. 学生了解并掌握数字电路的基本逻辑功能及其应用。
技能目标:1. 学生能够独立完成8个流水灯实验的电路搭建和程序编写。
2. 学生通过实验操作,提高动手能力和问题解决能力。
3. 学生通过小组合作,提高沟通和团队协作能力。
情感态度价值观目标:1. 学生对电子技术产生兴趣,激发学习积极性。
2. 学生培养耐心、细心的实验态度,养成良好的实验习惯。
3. 学生认识到科技发展对社会的重要性,增强科技创新意识。
课程性质:本课程为实践性课程,结合电子技术和编程知识,培养学生的动手操作能力和创新思维。
学生特点:学生为八年级学生,具有一定的物理知识和数学基础,好奇心强,喜欢动手操作。
教学要求:教师需引导学生掌握基本原理,注重实验操作和问题解决能力的培养,关注学生的情感态度价值观培养。
教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容本课程依据课程目标,结合教材相关章节,组织以下教学内容:1. 流水灯基本原理:讲解电路组成、LED特性、控制器等基础知识,对应教材第3章。
2. 电路连接方法:学习电路图的识别,掌握面包板的使用,进行电路搭建,对应教材第4章。
3. 编程方法:学习C语言基础,编写流水灯程序,掌握循环和延时函数的使用,对应教材第5章。
4. 数字电路逻辑功能:介绍基本逻辑门电路,理解并应用与、或、非门等逻辑功能,对应教材第6章。
5. 8个流水灯实验:结合以上知识,进行实验操作,包括电路搭建、程序编写和调试,对应教材第7章。
教学大纲安排如下:1. 第1周:流水灯基本原理学习。
2. 第2周:电路图识别和面包板使用训练。
3. 第3周:C语言基础和编程方法教学。
4. 第4周:数字电路逻辑功能讲解。
5. 第5-6周:8个流水灯实验操作及问题解决。
教学内容科学系统,注重理论与实践相结合,使学生在掌握知识的同时,提高实际操作能力。
【8个流水灯来回点亮设计程序】
单片机C语言如何实现8个LED流水灯来回流动?第一部分参考程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//--------------------------------void DelayMS(uint ms){uchar t;while(ms--) for (t=0;t<120;t++);}//----------------------------------void main(){P2= 0xfe;while (1){P2 =_crol_(P2,1);DelayMS(200);}}2012-06-14 17:06 芯DZ|分类:C/C++|浏览267次现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;uchar p1e;void delay(uint a);void main(){p1e=0xfe;P1=p1e;while(1){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}void delay(uint a){uint x,y;for(x=a;x>0;x--)for(y=150;y>0;y--); }提问者采纳2012-06-14 17:51char i;while(1){for(i=0; i<7; i++){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}for(i=0; i<7; i++){p1e=_cror_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}CYF0316|六级p1e=_cror_(p1e,1);追问这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动回答1,赋值2,右移动3,再赋值4,左移动你程序都写出了只是把程序COPy 粘帖到下面把p1e=_crol_(p1e,1); 改成p1e=_cror_(p1e,1); 就好了呀第二部分参考、归纳、总结得正确程序(仅供参考)#include <AT89X51.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint ms) {uchar t;while(ms--) for (t=0;t<120;t++);}void main(){ char i;P2= 0xfe;while (1){for(i=0; i<7; i++){P2 =_crol_(P2,1);DelayMS(200);}for(i=0; i<7; i++){P2 =_cror_(P2,1);DelayMS(200);}}}以下是附加文档,不需要的朋友下载后删除,谢谢班主任工作总结专题8篇第一篇:班主任工作总结小学班主任特别是一年级的班主任,是一个复合性角色。
八只LED灯做流水灯实验报告
51八只LED灯做流水灯实验第一节:单片机在上电初始后,其各端口输出为高电平。
如果我们现在想让接在P1.0口的LED1亮,那么我们只要把P1.0口的电平变为低电平就可以了。
想让LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED1就熄灭LED2随后既点亮!依始类推如下所示8只LED变会一亮一暗的做流水灯了。
本实验在“SP-51实验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”代码。
我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编和C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
“汉语”语言汇编语言开始:star:P1.0低clr p1.0P1.0高setb p1.0P1.1低clr p1.1P1.1高setb p1.1这里用到了四条汇编指令:clr、setb、ljmp 、end;clr:是将其后面指定的位清为0;setb:是将其后面指定的位置成1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
8位流水灯课课程设计
8位流水灯课课程设计一、教学目标本课程旨在让学生了解8位流水灯的工作原理和设计方法,通过学习,学生能掌握数字电路的基本知识,培养动手实践能力和创新思维。
1.了解8位流水灯的电路结构和工作原理。
2.掌握数字电路的基本知识,如逻辑门、触发器等。
3.学习常用的数字电路设计方法。
4.能够使用电子设计软件进行简单的电路设计。
5.能够独立完成8位流水灯的组装和调试。
6.培养分析问题和解决问题的能力。
情感态度价值观目标:1.培养学生对电子科技的兴趣,激发创新意识。
2.培养团队合作精神,提高沟通与协作能力。
3.培养学生热爱科学、追求真理的品质。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数字电路基本知识:逻辑门、触发器、计数器等。
2.8位流水灯电路原理:了解流水灯的电路结构,理解其工作原理。
3.设计方法与实践:学习常用的数字电路设计方法,并应用于8位流水灯的设计与制作。
4.电路调试与优化:学习如何对电路进行调试,提高电路的性能。
三、教学方法为了提高教学效果,我们将采用多种教学方法进行授课:1.讲授法:讲解数字电路的基本知识和设计方法。
2.讨论法:学生进行小组讨论,分享设计经验和心得。
3.案例分析法:分析典型的流水灯设计案例,引导学生学会分析电路。
4.实验法:让学生动手实践,组装和调试8位流水灯。
四、教学资源为了保证教学质量,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供理论知识的学习。
2.参考书:提供丰富的参考资料,帮助学生拓展知识面。
3.多媒体资料:制作精美的PPT,直观展示电路原理和设计过程。
4.实验设备:准备充足的实验设备,确保每个学生都能动手实践。
5.在线资源:利用网络资源,为学生提供更多学习途径和交流平台。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面客观地评价学生的学习成果。
1.平时表现:评估学生在课堂上的参与度、提问回答等情况,以考查其对课程内容的掌握程度。
单片机课程设计—8个按键控制8个LED自动设定控制流水灯
实用标准东北石油大学实习总结报告实习类型生产实习实习单位东北石油大学实习基地实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日指导教师刘东明、孙鉴所在院(系) 电子科学学院班 级 电子科学与技术 15-2学生姓名学号1509012402文案大全2018 年 7 月 16 日实用标准目录第 1 章 按键控制流水灯设计 ........................................ 1 1.1 实习目的 ................................. 错误!未定义书签。
1.2 实习要求 ................................. 错误!未定义书签。
第 2 章 电路工作原理 .............................................. 2 2.1 STC89C52 单片机工作原理 ................................... 2 2.2 LED 工作原理 .............................................. 3 2.3 按键工作原理 .............................................. 3 2.4 整体电路图 ................................................ 5 2.5 本章小结 .................................................. 6第 3 章 C 程序设计 ................................................. 7 3.1 程序设计流程图 ............................................ 7 3.2 实验结果 .................................................. 8 3.3 本章小结 .................................................. 9总结及体会 ...................................................... 10 参考文献 ........................................................ 11 附录 ............................................................ 12文案大全实用标准第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心。
8盏流水灯课程设计
8盏流水灯课程设计一、课程目标知识目标:1. 学生能理解流水灯的工作原理,掌握基本电子元件的功能和使用方法。
2. 学生能描述8盏流水灯电路的设计步骤,了解编程控制原理。
3. 学生能运用已学知识分析并解决流水灯制作过程中遇到的问题。
技能目标:1. 学生能够独立完成8盏流水灯电路的搭建,提高动手实践能力。
2. 学生能够运用编程软件编写程序,实现流水灯的点亮与熄灭效果。
3. 学生能够通过团队协作,共同完成流水灯项目,提高沟通与协作能力。
情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,激发学习动力。
2. 学生能够在实践过程中,培养解决问题的耐心和毅力,增强自信心。
3. 学生能够认识到团队合作的重要性,培养团队精神和集体荣誉感。
课程性质:本课程为电子技术实践课程,结合理论知识与动手操作,培养学生的创新思维和实践能力。
学生特点:八年级学生已具备一定的物理知识和电子元件认知,具有较强的动手能力和好奇心。
教学要求:教师需关注学生的个体差异,引导他们通过实践发现问题、解决问题,注重培养学生的团队合作意识和创新能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容本课程教学内容围绕以下三个方面展开:1. 理论知识:- 电路基础知识:回顾电路的基本概念,如电流、电压、电阻等。
- 电子元件功能:介绍常用电子元件,如电阻、电容、二极管、三极管等,并讲解其功能。
- 流水灯工作原理:分析8盏流水灯的工作原理,理解电路设计与编程控制。
2. 实践操作:- 电路搭建:指导学生按照电路图搭建8盏流水灯电路。
- 程序编写:教授学生使用编程软件,编写控制流水灯的程序。
- 调试优化:引导学生分析电路和程序可能出现的问题,并进行调试优化。
3. 教学大纲与进度安排:- 第一课时:回顾电路基础知识,介绍电子元件,分析流水灯工作原理。
- 第二课时:讲解电路搭建方法,学生动手实践,搭建流水灯电路。
- 第三课时:教授编程方法,学生编写程序,实现流水灯效果。
单片机应用-流水灯设计
一、任务导入
任务要求
使用单片机控制8个发光二极管按顺序点亮 。 将8个发光二极管连接到51单片机的P1口,用C语言编程来控制 单片机的并行I/O端口,显示流水灯效果。
硬件电路
向P1口写入一个8位二进 制数来改变每个引脚的输出电 平状态,从而控制8个发光二 极管的亮灭。
二、程序设计
#include <intrins.h>
//包含内部函数库,提供移位和延时操作函数
void main()
//主函数
{
P1 = 0x7F;
//P1端口输出0x7F
while(1)
//无限循环
{
//循环体语句组开始
P1 = _cror_(P1,1); //调用内部函数_cror_(),将P1的二进制数值循环右移
将P1端口在: 11111110 、 11111101 、 11111011 、 11110111 、 11101111 、 11011111 、 10111111 、 01111111
这8种状态之间顺序转换, 就可以实现左移流水灯。
0xFE 左
程序设计思路
P1 = _crol_(P1,1);
举一反三2
使用移位运算符和循环程序结构编程,实现流水灯。
左移位运算符: <<
若 a: 11111110
执行:a<<1; //左移一位
高位移出
1 11111100 低位补0
右移位运算符: <<
若 b: 01111111
执行:b>>1; //右移一位
高位补0
00111111 1 低位移出
程序设计思路
a=0x80;