焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

点亮led灯实验报告结果分析讨论(led灯闪烁实验报告总结)

工品易达2022-10-19led灯14

单片机实验利用定时器控制八个LED灯每隔1S每四个为一组轮流点亮

03  8只LED左右来回点亮

/*    名称:8只LED左右来回点亮

说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果

*/

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

//延时

void DelayMS(uint x)

{

uchari;

while(x--)

{

for(i=0;i120;i++);

}

}

//主程序

void main()

{

uchari;

P2=0x01;

while(1)

{

for(i=0;i7;i++)

{

P2=_crol_(P2,1);//P2的值向左循环移动

DelayMS(150);

}

for(i=0;i7;i++)

{

P2=_cror_(P2,1);//P2的值向右循环移动

DelayMS(150);

}

}

}

04  花样流水灯

/*    名称:花样流水灯

说明:16只LED分两组按预设的多种花样变换显示

*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

uchar code Pattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

uchar code Pattern_P2[]=

{

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

//延时

void DelayMS(uint x)

{

uchari;

while(x--)

{

for(i=0;i120;i++);

}

}

//主程序

void main()

{

uchari;

while(1)

{     //从数组中读取数据送至P0和P2口显示

for(i=0;i136;i++)

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(100);

}

}

}

05  LED模拟交通灯

/*    名称:LED模拟交通灯

说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0;    //东西向灯

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3;    //南北向灯

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量

//延时

void DelayMS(uint x)

{

uchari;

while(x--)for(i=0;i120;i++);

}

//交通灯切换

void Traffic_Light()

{

switch(Operation_Type)

{

case1:     //东西向绿灯与南北向红灯亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2:     //东西向黄灯闪烁,绿灯关闭

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!=10)return; //闪烁5次

Flash_Count=0;

Operation_Type=3;

break;

case3:     //东西向红灯,南北向绿灯亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4:     //南北向黄灯闪烁5次

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主程序

void main()

{

while(1)Traffic_Light();

}

06  单只数码管循环显示0~9

/*    名称:单只数码管循环显示0~9

说明:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示

*/

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

uchar codeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//延时

void DelayMS(uint x)

{

uchart;

while(x--)for(t=0;t120;t++);

}

//主程序

void main()

{

uchari=0;

P0=0x00;

while(1)

{/* for(;i11;i++){ P0=~DSY_CODE[i]; DelayMS(300);}  //注:另一方案 */

P0=~DSY_CODE[i];

i=(i+1)%10;

DelayMS(300);

}

}

LED灯是一种新型的环保节能灯,小梦为了探究LED灯与家用普通白炽灯、普通节能灯的发光效率,他用如图所示

(1)电能通过灯泡上转化为内能时,会使周围的空气温度升高,根据转换法,用温度计测量空气的温度可知电能转化为内能的多少;即通过观察温度计示数的变化可比较电能转化为内能的多少;

于是比较盒内温度升高最高的是白炽灯,即电能转化为内能最多的是白炽灯,最少的灯是LED灯.

(2)电能通过灯泡上转化为光能时,灯光照射到光敏电阻上,因其电阻值与光照强度成反比,当光照强度很强时,使光敏电阻的阻值减小,电路中的电流变大;所以电能转化为光能的多少,通过观察电流表示数的变化就可知;

由表格数据中可知:使用LED灯时的电流表的示数最大,表明电能转化为光能最多的是LED灯.

(3)分析表中数据可知:

15W的LED灯的发光亮度能使含有光敏电阻的电路中的电流为60mA;

而15W的白炽灯的发光亮度能使含有光敏电阻的电路中的电流为6mA;

则需要与一个LED灯的发光亮度相当的15W的白炽灯的个数是n=

60mA

6mA

=10;

即白炽灯的功率为15W×10=150W.

故答案为:(1)白炽灯;LED灯;温度计示数的变化;(2)LED灯;电流表示数的变化;(3)150W.

[img]

(2011?太原)LED灯是一种新型的环保节能灯,小梦为了探究LED灯与家用普通白炽灯、普通节能灯的发光效率

(1)电能通过灯泡上转化为内能时,会使周围的空气温度升高,根据转换法,用温度计测量空气的温度可知电能转化为内能的多少;即通过观察温度计示数的变化可比较电能转化为内能的多少;

于是比较盒内温度升高最高的是白炽灯,即电能转化为内能最多的是白炽灯.

(2)电能通过灯泡上转化为光能时,灯光照射到光敏电阻上,因其电阻值与光照强度成反比,当光照强度很强时,使光敏电阻的阻值减小,电路中的电流变大;所以电能转化为光能的多少,通过观察电流表示数的变化就可知;

由表格数据中可知:使用LED灯时的电流表的示数最大,表明电能转化为光能最多的是LED灯.

(3)由上可知:在规格相同条件下,LED灯消耗相同的电能,转化成的光能最多,即LED灯的发光效率最高.

(4)分析表中数据可知:

15W的LED灯的发光亮度能使含有光敏电阻的电路中的电流为60mA;

而15W的白炽灯的发光亮度能使含有光敏电阻的电路中的电流为6mA;

则需要与一个LED灯的发光亮度相当的15W的白炽灯的个数是n=

60mA

6mA

=10;即白炽灯的功率为15W×10=150W.

故答案为:(1)白炽灯、温度计示数的变化;(2)LED灯、电流表示数的变化;(3)高;(4)150W.

流水灯实训报告

转载于 ;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_r1; //是,则输出左移一位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。

51单片机LED灯闪烁实验,具体分析一下以下程序每一步的作用,完全看不懂。。。

#includereg51.h

void delay(unsigned int i);

main() //主函数

{

P2=0x55; //P2口:0101 0101 从左到右:第一个口低电平,第二个口高电平。。。。

delay(600); //延时600,不延时你来不及看见灯亮

P2=0xaa; /*P2口输出端取反,1010 1010 高电平变低电平,低电平变高电平,(原来亮的关掉,原来不亮的亮)*/

delay(600);

}

void delay(unsigned int i) //这个是延时函数

{

unsigned char j;

for(i;i0;i--)

for(j=255;j0;j--) ;

}

这样应该明白了吧!不过你这个程序,按一下复位(或者打开一次电源)只亮一下。加个循环就可以不停的闪啦!

点亮led灯实验报告结果分析讨论的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于led灯闪烁实验报告总结、点亮led灯实验报告结果分析讨论的信息别忘了在本站进行查找喔。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~