一、利用定时器实现:/***预处理命令***/ include define OUT P0 //晶振:12MHZ /***重新定义数据类型***/ typedef unsigned char unit8;typedef unsigned short unit_16;/ 函数名:main()函数功能:

每隔50ms从左到右不断依次循环点 速度够快的。人眼,辨别不出来。看起来,就是同时亮,全亮。

EA=1;//打开总中断 TR0=1;//打开定时器 } void main(){ Timer0Init();while(1);} void timer0() interrupt 1 { uchar i;for(i=0;i<8;i++){ P2=tab[i];delay(1);} for(i=0;i<8;i++){ P2=

//sbit d1=P1^0;void main(){ TMOD=0x10; //选择定时器 t0的工作方式为1 EA=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET1=1;TR1=1;aa=0xfe;while(1){ if(tt==2){ tt=0;P1=aa;aa=_crol

利用定时器T1产生定时时钟,由P1口控制8个发光二极管使8个灯依次闪烁,闪烁频率10次/秒,循环 - 用定时/计数器t1定时50ms,晶振频率取12mhz,定时器初值为3cb0h,采用中断方式,用变量计数中断次数.p1口控制8个发光二极管

LED负极接单片机IO口,本程序接P1,低电平点亮 include //52系列单片机头文件 include define uint unsigned int //宏定义 define uchar unsigned char void delayms(uint); //声明子函

这就是典型的8个LED的流水灯,并用定时器来控制点亮的时间。可用定时器定时50ms,采用中断方式,对中断计数40次就是2s,每到2s移动点亮下一个LED灯。可先画出仿真图再写程序,如下所示仿真图。

设计一个8灯闪烁的控制电路,系统晶振为12MHZ,编程实现8灯轮流闪烁,每盏灯点亮时间为2s?

材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。以下程序可以直接用Keil C 直接编译执行。//可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。//具体实现

二、AVR_PQ1A开发板实例程序(演示程序)( 1 ) LED LED灯驱动程序,两种演示方式 ( 2 ) SMG 数码管驱动程序,循环滚动显示数字1-6 ( 3 ) 1602 1602液晶驱动程序,除正常显示ASCII码外,还教如何显示中文 ( 4 )

proteus电路图 画法依旧不说,给出元件清单,其实都差不多,与上篇一致51单片机 电容 瓷片电容 晶振 红色二极管 电阻 电路图如图 程序清单 说明:流水灯的闪亮方法肯定不是唯一的,按照各种形式都可以写出所需的程序,这里只用

我们得出在不同LED小灯被点亮的时候,P1端口输出的状态程序流程图还是比较简单的,P1口在间隔一段时间之后,输出不同的值,然后返回到程序执行的起点,重新开始执行,这样就会循环往复不断地出现流水的效果。

实验操作:1、设计8个循环点亮的LED灯,1、2、3、4、5、6、7、8顺序点亮。程序: ORG 0000H LJMP START ORG 0100H START: MOV A,#007FH LOOP: RL AMOV P1,ALCALL DELAY1JMP LOOP DELAY2: MOV R1,#127 DEL

延迟0.5秒.acall t500ms 亮3个LED,mov p1,#11111000b 延迟0.5秒.acall t500ms 亮4个LED,mov p1,#11110000b 延迟0.5秒.acall t500ms 亮5个LED,mov p1,#11100000b 延迟0.5秒.acall t500ms 亮6个LED,mov

//P2.0、P2.1、P2.2三个口分别接黄红绿三个信号灯,每隔59秒红灯和绿灯轮流亮和暗,//第60秒黄灯持续亮一秒,此时其他灯不亮。include define uchar unsigned char sbit yellow=P2^0;sbit red=P2^1;

单片机LED流水灯实验怎么设计?

8个LED流水灯依次循环亮的C语言程序,问题详细内容为:我用的是PROTUSE做的仿真程序,想让这8个流水灯依次亮从P0到P7口要它的C语言程序可以在KEILC51里面运行的,希望在每句C语言后面有个解释不用WHILE和for语句i高分悬赏我

用汇编编程如下:ORG 0000H LJMP MAIN MAIN:ORG 0100H MOV A ,#80H ; 高电平亮灯。如低电平亮灯,改成#7FH ;;正向循环 ZXH :MOV P0 , A RR A LCALL S50MS ; 延时50MS

程序如下:ORG 0000H;程序开始 AJMP MAIN;跳转到主程序MAIN ORG 0030H;主程序从030H开始 ;以下是主程序 MAIN: MOV P0,#0FEH;P0.0灯亮 ACALL DELAY_05s;延时0.5s MOV P0,#0FDH;P0.1灯亮 A

其次,1hz闪烁,即代表定时1s开、关灯。所以要用到定时器。代码如下:include "stdio.h"define led_on p1.1 = 1;define led_off p1.1 = 0;bit flag_1s;bit flag_cnt;void main(void){ sys_init();while(1)

RL A MOV P1,A ;1秒一变的花样流水灯。T0E:RETI END

51单片机八个灯的流水灯代码:1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个

8路流水灯汇编语言程序的写法

实训个人总结万能版范本 通过这次实训,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自己动手做项目的能力。本次实训,是对我能力的进一步锻炼,也是一种考验。从中获得的诸多收获,

一、实训目的: 设计流水灯控制系统。 流水灯控制实验 二、实训要求: 要求实现流水灯的依此循环亮,时间间隔为1s。能够实现随时启动随时停止。 三、实训内容: 利用外部按钮和编辑触摸屏界面,分别实现流水灯的启动和停止。 四、实验设备 1

一、实训目的: 设计流水灯控制系统。 流水灯控制实验 二、实训要求: 要求实现流水灯的依此循环亮,时间间隔为1s。能够实现随时启动随时停止。 三、实训内容: 利用外部按钮和编辑触摸屏界面,分别实现流水灯的启动和停止。 四、实验设备 1

在被刺实训中我们每个人通过一个八位流水灯的制作,使我们深深地体会到了单片机在现实生活中的小小应用,既增强了我们的好奇心,又巩固了我们的理论知识。更让我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,单片机就有可能让

《电工电子技术基础》实习报告实习题目:流水式变换彩灯电路设计20年06月06日4设计结果41设计任务设计性实验。设计一电路驱动8只灯,使其一亮七暗,且这一暗灯按一定节拍循环右移。2系统硬件设计555定时器74HC138译码器74HC1

单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注

单片机原理流水灯实验报告:本实验的目的是通过使用单片机,来实现流水灯的功能。实验中,使用了AT89C51单片机,通过设置定时器,实现了不同的流水灯灯序,并使用外部中断按键,来控制流水灯的开关。实验的结果表明,单片机通过定

流水灯实训报告

1)流水灯控制界面:按动启动按钮,三个灯依次循环点亮;按动停止按钮,流水灯熄灭。 2)流水灯控制程序: 实训二 交通灯控制实验 一、实训目的: 设计交通灯控制系统。 二、实训要求: 1.能够实现总停止和总启动; 2.红灯亮灯时间为25s,绿

这个怎么写??X个发光二极管连续依次闪烁,往复不断。能够成功正确地完成编写的程序。体现了单片机工作正常,语句使用得当,试验完美成功。

本实验程序设计可参考程序流程3.2图3.1灯闪烁实验电路原理 图3.2程序流程图2.广告流水灯实验(1)做单一灯的左移右移,硬件电路图如图3.3所示,八个发光二极管L1-L8分别接在单片机的接口上,输出“0”时,发光二极管亮

你当然是可以选择自己的报告啊,可以通过自己实验的报告里面直接写自己的流水账单,之后就可以用了。

《电工电子技术基础》实习报告实习题目:流水式变换彩灯电路设计20年06月06日4设计结果41设计任务设计性实验。设计一电路驱动8只灯,使其一亮七暗,且这一暗灯按一定节拍循环右移。2系统硬件设计555定时器74HC138译码器74HC1

单片机原理流水灯实验报告:本实验的目的是通过使用单片机,来实现流水灯的功能。实验中,使用了AT89C51单片机,通过设置定时器,实现了不同的流水灯灯序,并使用外部中断按键,来控制流水灯的开关。实验的结果表明,单片机通过定

流水灯实验报告

转载于 http://www.scetop.com/jpkc/pld/ArticleShow.asp?ArticleID=565&BigClassName=%CA%B5%D1%B5%BD%CC%D1%A7 希望对你有帮助 实训项目(一) 流水灯 1. 实验目的通过此实验让用户进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及Ver-ilog HDL的编程方法;学习简单时序电路的设计和硬件测试.2. 实验内容本实验的内容是建立可用与控制LED流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现LED1-LED8发光二极管流水灯显示.3. 实验原理(1) 在引脚上周期性地输出流水数据,如原来输出的数据是11111100则表示点亮LED1、LED2.流水一次后,输出数据应该为11111000,而此时则应点亮LED1~LED3三个LED发光二极管,这样就可以实现LED流水灯.为了观察方便,流水速率最好在2Hz左右.在QuickSOPC核心板上有一个48MHz的标准钟源,该时钟脉冲CLOCK与芯片的28脚相连.为了产生2Hz的时钟脉冲,在此调用了一个分频模块,通过修改分频系数来变改输出频率.当分频系数为24×10时,输出即为2Hz的频率信号.(2) int_div分频模块说明: int_div模块是一个占空比为50%的任意整数分频器.输入时钟为clock,输出时钟为clk_out.其中F_DIV为分频系数,分频系数范围为1~2N(n=F_DIV_WIDTH).若要改变分频系数,则改变参数F_DIV和F_DIV_WIDTH到相应范围即可.在本例中输入时钟频率为48MHz,要得到2Hz的信号,分频系数应为48×10/2=24×10.对于分频系数为24×10的数需要一个25位宽的计数器.在以后的实验中还会多次用到这个模块,用户可以分析它的基本原理.4. 实验步骤(1) 启动QUARTUSⅡ建立一个空白工程,然后命名为.(2) 新建VerilogHDL源程序文件ledwater.v,输入程序代码并保存,然后进行综合编译.若在编译过程中发现错误,则找出并更正错误,直到编译成功为止.(3) 从设计文件创建模块,由ledwater.v生成名为ledwater.bsf的模块符号文件.(4) 将光盘中EDA_component目录下的int_div.bsf和int_div.v拷贝到工程目录.(5) 新建图形设计文件命名为led_wter.bdf在空白处双击鼠标左键,在sym-bol对话框左上脚的的Iibraries中,分别将projet下的ledwater和int_div模块放在图形文件ed_wter.bdf中,加入输入、输出引脚,双击各引脚符号,进行引脚命名.将与ledwater模块led[7..0]连接的引脚命名为led[7..0],与int_div模块clock连接的引脚命名为clock. int_div模块的clk_out与ledwater模块的clk相连接.双击int_div的参数框,并修改参数,将F_DIV的值改为24000000, F_DIV_WIDTH的值改为25,单击“确定”按扭保存修改的文件的参数如果led_water.bdf中部能看到参数设置框,可在空白处右击鼠标,选择Show Parameter Assignments命令来显示参数设置框。(6) 选择目标器件并对相应的引脚进行锁定,正在这里所选择的器件为Altera公司Cyclone系列的EP 1C6Q240C8芯片,引脚锁定方法如表3.1所列。将未使用的引脚设置为三态输入(一定要设置,否则可能会损坏芯片)。 表3.1 引脚锁定方法 信号引脚 信号引脚1C61C12EDA1C61C12EDALed[0]505050led[5]474747led[1]535353led[6]484848led[2]545454led[7]494949led[3]555555clock282828led[4]176176176 (7) 将led_water.bdf设置为顶层实体。对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。(8) 最后将跳线短接帽跳接到smartSOPC实验箱上JP6的LED0~LED7,使LED1~LED8 分别与FPGAD的引脚50、53~55、176和47~49相连。将AlteraByteBlasterⅡ下载电缆的两端分别接到PC机的打印机并口和QuickSOPC核芯板上的JTAG下载口上,打开电源,执行下载命令,把程序下载到FPGA器件中,此时,即可在smartSOPC实验箱上看到流水灯。(9 更改分频模块(int_div)的分频系数,并重新编译下载,观察流水灯的变化。 5. 实验参考程序 程序清单3.2ledwater.v Module ledwater(led,clk); //模块名ledwaterOutput[7:0]led; //定义LED输出口Input clk; //定义时钟输入口Reg[8:0] led_r; //定义输出寄存器Assign led=led_r[7:0]; //寄存器输出always@(posedge clk) //在时钟上升沿触发进程beginled_r<=led_r<<1; //是,则输出左移一位if(led_r==9`d0) //循环完毕吗?led_r<=9`b11111111; //是,则重新赋初值endendmodule 6. 日积月累(1) 思考:如何实现左流水灯或其他花样流水呢?用户自己动手试试。(2) REG数据类型:由两大类数据类型,线网类型和寄存器类型。REG是最常见的寄存器类型,形式如下:REG[msb:lsb]reg1,reg2,…regN;其中,msb和lsb定义了范围,并且均匀为常数值表达式。范围定义是可以选的。如果没有定义范围,默认值为1位寄存器。 reg数据类型的默认初始值是不定值X,它可以赋正值,也可以赋负值。当一个reg类型数据是一个表达式中的操作数时,他的值被当作是无符号值,即正值(如意个4)为寄存器被赋值-1,则在表达式中进行运算时,其值被认为是+15)。 reg型只表示被定义的信号将用在always块内,理解这一点很重要。并不是说reg 型信号一定是寄存器或触发器的输出。虽然reg型信号常常是寄存器或触发器的输出,但并不一定总是这样,只有在时序逻辑中他对应的才是寄存器,而在组合逻辑中他则表达一个节点。(3)按照上述管工程进行编译,会出现“warning: found pins functioning as undefined clocks and/or memory enables Info: Assuming node ”clock” is an undefined clock”的警告,大概意思是指发现clock节点没有定义成时钟信号。消除这个警告的方法如下: ①选择assignments→timing settings命令,在弹出的对话框中的clockseteings选项区中选中settingsfor individual clock signals项。 ②对clocks进行设置,在弹出的对话框中单击按钮添加节点,按图中所示进行设置。图中requiredfmax 为系统需求的最大时钟频率,在这里填50HZ即可。 ③设置好之后连续单击OK按钮保存设置,最后再进行编译,原先的warning就会消除。以上的操作是将“clock”加入时钟域。如果“clock”不是一个时钟信号,可将设置属性改为“not a clock ”,也可以消除warning。
这个怎么写??X个发光二极管连续依次闪烁,往复不断。能够成功正确地完成编写的程序。体现了单片机工作正常,语句使用得当,试验完美成功。
我是一名多年的单片机工程师,下面的单片机最小系统,你参考一下 效果图 从这个仿真电路我们可以看到,这个单片机最小系统共包含4个部分。 1 5V电源。 2 1K电阻。 3 LED发光二极管。 4 STC89C52RC单片机。
这个怎么写??X个发光二极管连续依次闪烁,往复不断。能够成功正确地完成编写的程序。体现了单片机工作正常,语句使用得当,试验完美成功。
汇编语言程序如下: ;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下: ORG 0000H MOV R3, #5 ;N=5 LOOP0: MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;-------------------------------逐个点亮 MOV R2, #8 LOOP1: CLR C RLC A MOV P1, A CALL DL500MS DJNZ R2, LOOP1 ;-------------------------------逐个熄灭 MOV R2, #8 LOOP2: SETB C RLC A MOV P1, A CALL DL500MS DJNZ R2, LOOP2 ;-------------------------------全亮、全灭交替 MOV R2, #4 LOOP3: MOV P1, #0 ;全亮 CALL DL500MS CALL DL500MS ;共1s MOV P1, #255 ;全灭 CALL DL500MS ;0.5s DJNZ R2, LOOP3 ;------------------------------- DJNZ R3, LOOP0 MOV P1, #01001001B ;5、显示为0100 1001 CALL DL500MS CALL DL500MS ;共1s SJMP 0000H ;重新开始N遍 ;-------------------------------延时子程序 DL500MS: MOV R5, #9 ;1T DL1: MOV R6, #128 ;1T DL2: MOV R7, #215 ;1T NOP ;1T DL3: DJNZ R7, DL3 ;2T 2 * 215 = 430 T DJNZ R6, DL2 ;2T [1+1+430+2] * 128 = 55552 T DJNZ R5, DL1 ;2T [1+55552+2] * 9 = 499995 T RET ;2T 1 + 499995 + 2 = 499998 T ;------------------------------------- END 扩展资料: 实现8路流水灯的原理: 下图为主控芯片和流水灯模块的原理图。 流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。 要实现流水灯功能,只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。 实现8个LED流水灯程序用中文表示为: 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高、返回到开始、程序结束。
参考程序: ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R7,#8 ;设置外循环次数 MOV R5,#0FFH LL0: MOV A,R7 MOV R6,A ;设置内循环次数 MOV A,#0FFH CLR C LL1: RLC A ANL A,R5 MOV P1,A LCALL YS20MS ;流水间隔时间为20毫秒 DJNZ R6,LL1 MOV R5,P1 DJNZ R7, LL0 LEND: SJMP LEND ;循环结束后 暂停 YS20MS: MOV R4,#67 ;延时子程序 YSLL1: MOV R3,#200 YSLL2: NOP NOP DJNZ R3,YSLL2 DJNZ R4,YSLL1 RET 呵呵 也没有加分啊 就给选一个满意回答吧
LED负极接单片机IO口,本程序接P1,低电平点亮 #include //52系列单片机头文件 #include #define uint unsigned int //宏定义 #define uchar unsigned char void delayms(uint); //声明子函数 uchar aa; void main() //主函数 { aa=0xfe; //赋初值11111110 while(1) //大循环 { P1=aa; delayms(2000); //延时2秒 aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa } } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--); }
; ORG 0000H LJMP MAIN MAIN: MOV TMOD, #01H MOV TH0, #(65536 - 62500) / 256 MOV TL0, #(65536 - 62500) MOD 256 SETB TR0 M_LOOP: MOV A, #127 MOV R3, #0 OUT: MOV P1, A INC R3 CJNE R3, #60, NEXT ;不到60, 就去流水 CPL F0 ;到了, 就改变方向 SJMP M_LOOP ;从头开始 ;---------------------------------- NEXT: MOV R2, #16 WAIT: JNB TF0, $ MOV TH0, #(65536 - 62500) / 256 MOV TL0, #(65536 - 62500) MOD 256 CLR TF0 DJNZ R2, WAIT ;不到一秒就转移 JB F0, LLL ;选择左右方向 RR A SJMP OUT LLL: RL A SJMP OUT END 上述程序已经得到验证。