当前位置:文档之家› 呼吸灯程序

呼吸灯程序

呼吸灯程序
呼吸灯程序

呼吸灯(简单易懂)

如题呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。二、设计原理:用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。三、整体方案设计8个LED按照顺序逐个实现呼吸效果。加以其他闪烁花样增加更炫彩的效果。四、实验元件及器材(1)元件:LED(发光二极管) 8个1KΩ电阻8个 1nf电容2个晶振1个AT89C51芯片 1个(2)器件:Atmega128开发板 1块计算机 1台五、硬件原理(1)主电路:8个LED分别连接A T89C51的P1口,使用共阳方式,并加以1kΩ的电阻接入电源。

#include //包含头文件,一般情况不需要改动,

//头文件包含特殊功能寄存器的定义

/*-------------------------IO口定义----------------------------*/ sbit LED0=P0^0;// 用sbit 关键字定义 LED到P0.0端口,LED是自己任意定义且容易记忆的符号

sbit wei=P1^1;

sbit duan=P1^0;

sbit lcden=P1^7;

sbit dianzhen=P1^3;

sbit leden=P1^2;

void Delay(unsigned int t); //函数声明

/*------------------------------------------------

主函数

------------------------------------------------*/

void main (void)

{

unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值

lcden=0;

P0=0x00;

dianzhen=0;

P0=0xff;

wei=0;

duan=0;

while (1) //主循环

{

LED0=1;

Delay(150000); //特意加延时,可以看到熄灭的过程

for(PWM_LOW=1;PWM_LOW

//,这个循环中低电平时长从1累加到CYCLE(周期)的值,即600次

LED0=0; //点亮LED

Delay(PWM_LOW);//延时长度,600次循环中从1加至599

LED0=1; //熄灭LED

Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1

}

//LED0=0;

for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--){//与逐渐变亮相反的过程

LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);

}

//主循环中添加其他需要一直工作的程序

}

}

/*------------------------------------------------

延时函数,含有输入参数unsigned int t,无返回值

unsigned int 是定义无符号整形变量,其值的范围是

0~65535

------------------------------------------------*/

void Delay(unsigned int t)

{

while(t--) ;

}

原理:用定时器模拟PWM,改变其占空比,用以控制LED的亮度。

呼吸灯主要是控制好亮度显示的时间。

顺便复习一下中断和定时/计数器的知识。

LED呼吸灯C51源程序

* 【使用说明】: 晶振为11.0592M 利用定时器控制产生占空比可变的PWM 波 按K3,PWM值增加,则占空比减小,LED 灯渐亮 按K4,PWM值减小,则占空比增加,LED 灯渐暗 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警 ******************************************************************************* ***/ #include #include sbit K1 =P3^4 ; //PWM值增加键 sbit K2 =P3^5; //PWM值减少键 sbit BEEP =P0^4; //蜂鸣器 unsigned char PWM=0x7f ; //赋初值 void Beep(); void delayms(unsigned char ms); void delay(unsigned char t); /*********************************************************/ void main() { P1=0xff; TMOD=0x21 ; TH0=0xfc ; //1ms延时常数 TL0=0x66 ; //频率调节 TH1=PWM ; //脉宽调节 TL1=0 ; EA=1; ET0=1; ET1=1; TR0=1 ; while(1) { do{ if(PWM!=0xff) {PWM++ ;delayms(10);} else Beep() ;

} while(K1==0); do{ if(PWM!=0x02) {PWM-- ;delayms(10);} else Beep() ; } while(K2==0); } } /*********************************************************/ // 定时器0中断服务程序(频率) /*********************************************************/ void timer0() interrupt 1 { TR1=0 ; TH0=0xfc ; TL0=0x66 ; TH1=PWM ; TR1=1 ; P1=0x00 ; //启动输出 } /*********************************************************/ // 定时器1中断服务程序(脉宽) /*********************************************************/ void timer1() interrupt 3 { TR1=0 ; P1=0xff ; //结束输出 } /*********************************************************/ //蜂鸣器子程序 /*********************************************************/ void Beep() { unsigned char i ; for (i=0 ;i<100 ;i++) { delay(100) ;

最新51单片机花样呼吸灯程序

#include /*-----------定义单片机引脚--*/ sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; void Delay(unsigned int t); //函数声明 unsigned int z,y; void main (void)//主函数 { unsigned int CYCLE=1000,PWM_LOW=0;//定义周期并赋值 while (1) //主循环 { /*--------整排LED灯呼吸---------*/ P1=0x00; Delay(1000); //加延时,可以看到熄灭的过程(下面程序同理) for(PWM_LOW=1;PWM_LOW0;PWM_LOW--) //与逐渐变亮相反的过程 { P1=0x00; //点亮LED Delay(PWM_LOW); P1=0xff; //熄灭LED Delay(CYCLE-PWM_LOW); //主循环中添加其他需要一直工作的程序,延时长度,600次循环中从599减至1 } /*--------第一颗LED灯呼吸---------*/ /* LED0=1; Delay(1000); for(PWM_LOW=1;PWM_LOW

三路PWM呼吸灯程序及原理图

PWM三路呼吸灯系统 主要是靠定时器产生最小时间,通过定时中断重装定时值和置位标记位22H。 总原理图 中断按钮可以调节灯一(D3)的呼吸时间

两位数码管显示灯的呼吸时间 复位电路和晶振电路

程序如下: ORG 0000H LJMP S00 ORG 0003H LJMP AN ORG 000BH LJMP DSQ ORG 0030H S00: SETB P2.0 CLR P2.1 CLR P2.2 MOV IE,#83H SETB IT0 MOV TMOD,#01H MOV TL0,#0DCH MOV TH0,#0BH SETB TR0 MOV 30H,#00H //30H保存幅值 MOV 31H,#00H MOV 32H,#00H MOV 33H,#04H CPL P2.4 SETB 20H SETB 21H SETB 22H SETB 23H SS00: MOV C,22H //判断总刷新 JNC S003 CLR 22H SJMP S001 S003: LJMP S030 S001: CLR C //判断31H值,每段的加/减值MOV R2,30H CJNE R2,#00H,SS01 SETB 20H MOV 31H,#5 LJMP S019 SS01: MOV A,30H SUBB A,#50 JNC S010 MOV 31H,#5

S010: CLR C MOV A,30H SUBB A,#130 JNC S012 MOV 31H,#4 SJMP S019 S012: CLR C MOV A,30H SUBB A,#220 JNC S013 MOV 31H,#3 SJMP S019 S013: CLR C MOV A,30H SUBB A,#240 JNC S014 MOV 31H,#2 SJMP S019 S014: CLR C MOV R2,30H CJNE R2,#0FAH,S015 CLR 20H S015: MOV 31H,#1 S019: NOP S020: MOV C,20H //执行加/减JNC S021 CLR C MOV A,30H ADD A,31H MOV 30H,A MOV R2,A CJNE R2,#0FAH,S022 CLR 20H LJMP S029 S022: JNC S004 SJMP S029 S004: LJMP S00 S021: CLR C MOV A,30H SUBB A,31H MOV 30H,A JC S100

呼吸灯课程设计

郑州科技大学 《数字电子技术》课程设计 题目LED 呼吸灯 学生姓名 专业班级 学号 院(系) 指导教师 完成时间 2013年 3 月13日

目录 1 课程设计目的 (1) 2 课程设计任务与要求 (2) 3 设计方案与论证 (4) 3.1 设计任务分析 (4) 3.2 设计电路 (4) 3.3 调试 (5) 4 设计原理及其功能 (6) 5 单元电路的设计 (7) 5.1 LED日光灯 (7) 5.2 电阻 (8) 5.3 电容 (8) 5.4 三极管 (9) 5.5 LM358 (11) 6 硬件的制作与调试 (13) 6.1 电路焊接 (13) 6.2 功能实现 (13) 6.3 外观 (13) 7 设计总结 (14)

参考文献 (16) 附录一:总体电路原理图 (17) 附录二:元器件清单 (18)

1 课程设计目的 电子技术是一门实践性很强的课程,加强工程训练,特别是技能的培养,对于培养工程人员的素质和能力具有十分重要的作用。在电子信息类本科教学中,电子技术课程设计是一个重要的实践环节,它包括选择课题、电子电路设计、组装、调试和编写总结报告等实践内容。通过课程设计要实现以下两个目标:第一,让学生初步掌握电子线路的试验、设计方法。即学生根据设计要求和性能参数,查阅文献资料,收集、分析类似电路的性能,并通过组装调试等实践活动,使电路达到性能指标;第二,课程设计为后续的毕业设计打好基础。毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法,同时,课程设计报告的书写,为今后从事技术工作撰写科技报告和技术资料打下基础。

呼吸灯代码

写一段程序,使单片机上LED红·蓝·绿三种颜色的灯呼吸 #include"STC89C5xRC.h" void delay100Us(unsigned int cnt) { unsigned int i; while(cnt--) {i=6; while(i--) ; } } void delayMs(unsigned int cnt) { unsigned int i; while(cnt--) {i=82; while(i--) ; } } void delay(unsigned int t) { while(t--); } void main(void) { unsigned int CYCLE=600,PWM_LOW=0; P2=0; while(1) { delay(40000); for(PWM_LOW=1;PWM_LOW

for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { P20=1; P21=1; P22=0; delay(PWM_LOW); P20=1; P21=1; P22=1; delay(CYCLE-PWM_LOW); } delay(40000); for(PWM_LOW=1;PWM_LOW0;PWM_LOW--) { P20=1; P21=0; P22=1; delay(PWM_LOW); P20=1; P21=1; P22=1; delay(CYCLE-PWM_LOW); } delay(40000); for(PWM_LOW=1;PWM_LOW

51单片机PWM呼吸灯源程序

51单片机PWM-呼吸灯源程序 /** ************************************************* *************** * @file : main.c * @xu ran * @date : 2014年5月23日20:55:19 - 2014年5月23日22:32:12 * @version : V2.0 * @brief : PWM脉冲宽度调制技术实现呼吸灯 ************************************************* *************** * @attention * 实验平台 : 51hei开发板 * 单片机 : STC89C52RC MCU 晶振 : 11.0592 MHZ ************************************************* *************** */ #include //使用STC89C52库 /* 三八译码器74HC138 */ sbit ADDR3 = P1^3;

sbit ENLED = P1^4; sbit PWMOUT = P0^0; //LED0 /* PWM占空比 */ unsigned char code pwmTable[] = { 3, 5, 8, 11, 13, 16, 21, 24, 27, 30, 33, 36, 40, 45, 49, 53, 55, 57, 61, 65, 67, 69, 72, 75, 79, 82, 86, 89, 91, 93, 96, 99 }; // dc% /* PWM的高电平和低电平的定时器的重载值 */ unsigned char Highthr0, Hightlr0; unsigned char Lowthr0, Lowtlr0; /* 定时器T1计数装载值 */ unsigned char thr1, tlr1; /* PWM 频率计数值 */ unsigned long tmp = 0; /******************local function defines**************************/ void ConfigPWM(unsigned int fr, unsigned char dc); void ConfigTimer1(unsigned int xms); /************************************************

358呼吸灯CAD设计报告

《电子线路CAD》课程论文题目:358呼吸灯电路的设计

1 电路功能和性能指标 由LM358及外围电路构成了一个三角波信号发生器;三极管构成一个共射电路,将加在基极的三角波信号进行放大,并且由于基极的电压是一个三角波加在直流信号上,导致发射级的输出电压是一个上移的三角波信号,可以控制LED 灯的亮度,形成呼吸的效果。 2 原理图设计 2.1原理图元器件制作 图1 选择文件-创建-库-原理图库,然后进入原理图元器件编辑界面,放置矩形和引脚,并编辑引脚名画好图后如图1,然后点击工具-新器件编辑器件名,最后编辑它的名字和标注并添加如库中,或者直接放置到原理图中就行了。 2.2 原理图设计 新建一个项目后,保存为358呼吸灯,然后新建原理图添加入项目中,然后设置绘图环境就OK了。

绘制原理图如图二所示。 编译后发现有几个错误如图3,然后修改元器件名之后就可以了如图2。

图4 在原理图中,点击设计-生成集成库,然后就得到元器件库如图4。在设计过程中可能有的元器件在第一个库中没有,就需要在路径中搜索,如果还是没有就需要自己画原理图,就好像图中的J1原件。 2.3 原理图报表 图5

图 6 点击报告-元器件报,得到网络表如图5和图6。元器件报表可以使用户掌握本项目或某个元器件库中元器件的相关信息。元器件中以D1为例,它的封装名和标识符都可以看到。网络以NETC1_1为例,C1-1,JP1-1,R9-2引脚都属 于该网络。 图7 元器件清单如图7所示。 3 PCB设计 3.1元器件封装制作

图8 点击文件-创建-库-PCB库,然后选择版层来确定封装颜色,然后画好轮廓后,添加焊盘然后修改焊盘名与原理图元器件相对应,并修改封装名添加如封装库或直接放置如PCB图中即可。 3.2 PCB设计 图9 先新建一个PCB文件,并保存为358呼吸灯PCB,放入项目内,然后设置绘图环境,即可。在原理图界面点击设计-update-使变化生效,看有无错误,如果有就找到有错误的元器件然后在原理图中修改其封装,再检验错误,如果没有就点击执行变化,就可导入原理图中,然后自己摆放封装位置,确定物理边界和

001_雾盈FPGA笔记之一呼吸灯简单实验(Verilog)

基于FPGA的呼吸灯简单实验程序(Verilog) 2016-07-27雾盈 1.呼吸灯 呼吸灯最早是由苹果公司发明并应用于笔记本睡眠提示上,一经展出,立刻吸引众多科技厂商争相效仿。将其广泛用于各种电子产品中,尤其是智能手机。 呼吸灯其实是微电脑控制下,由暗渐亮,然后再由亮渐暗,模仿人呼吸方式的LED灯 2.呼吸灯原理 LED的亮度与流过的电流成正比。在一定的频率之下,如果占空比是0,则LED不亮;如果占空比是100%,则LED最亮;如果占空比刚好是50%,则LED亮度适中。如果我们让占空比从0~100%变化,再从100%~0不断变化,就可以实现LED一呼一吸的效果。 其波形占空比示意图如下所示:

3.呼吸灯程序设计思路 (1)首先确定PWM的频率为1Khz (2)由频率算出周期T = 1/f = 1ms (3)根据每次呼1s,吸1s,算出计数值1s/1ms=1000 (4)然后将1ms分成1000份,每一份是1us (5)写三个1us、1ms、1s的3个计数器count1、count2、Count3,最后count2和count3进行比较 4.程序框图 5.状态机设计 可以将呼吸灯运行过程归为两个状态:S0:由灭渐亮;S1:由亮渐灭。 这里就会有两个问题需要我们解决, 1.状态的翻转 2.在一个状态里如何使pwm波的占空比实现逐增或逐减。

先说第一个问题,两个状态的翻转 由下面的时序图可以看出来,两个状态的翻转只是由时间决定的,S0状态和S1状态分别持续1s, 可以将它看成周期为2s的时钟信号,每当flag_1s信号到来一次,状态就翻转一次。

基于STM32的呼吸灯

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

LED呼吸灯C源程序

L E D呼吸灯C源程序 The latest revision on November 22, 2020

* 【使用说明】: 晶振为 利用定时器控制产生占空比可变的 PWM 波 按K3,PWM值增加,则占空比减小,LED 灯渐亮 按K4,PWM值减小,则占空比增加,LED 灯渐暗 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警 ************************************************************************ **********/ #include<> #include<> sbit K1 =P3^4 ; //PWM值增加键 sbit K2 =P3^5; //PWM值减少键 sbit BEEP =P0^4; //蜂鸣器 unsigned char PWM=0x7f ; //赋初值 void Beep();

void delayms(unsigned char ms); void delay(unsigned char t); /*********************************************************/ void main() { P1=0xff; TMOD=0x21 ; TH0=0xfc ; //1ms延时常数 TL0=0x66 ; //频率调节 TH1=PWM ; //脉宽调节 TL1=0 ; EA=1; ET0=1; ET1=1; TR0=1 ; while(1)

{ do{ if(PWM!=0xff) {PWM++ ;delayms(10);} else Beep() ; } while(K1==0); do{ if(PWM!=0x02) {PWM-- ;delayms(10);} else Beep() ; } while(K2==0); } } /*********************************************************/

STM32f103定时器输出PWM波驱动LED的呼吸灯

STM32f103 定时器输出PWM波控制LED输出呼吸灯 (根据正点原子程序) 定时器部分:time.c 与time.h Time.h函数 #ifndef __TIME_H #define __TIME_H void TIME_PWM_Init(u16 arr,u16 psc); #endif Time.c 函数 #include "time.h" // 定时器输出PWM波,控制LED(PD12),重映射到TIME4_CHI //******************************************************// void TIME_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO,ENABLE);// GPIO_PinRemapConfig(GPIO_Remap_TIM4,ENABLE); //重映射TIM4使能

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitStructure); // 初始化GPIO口为复用推完输出 // 初始化TIM4 TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数 TIM_TimeBaseInitStructure.TIM_Period=arr; // TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//预分频系数 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0; TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure); // 初始化TIM4_CHI—pwm模式 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;// 极性选择 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;// TIM_OC1Init(TIM4,&TIM_OCInitStructure); // TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable); // 使能TIM4在ccr1上的预装载寄存器 TIM_Cmd(TIM4,ENABLE); //使能TIM4 } Main函数 #include "stm32f10x.h"

呼吸灯程序

#include #define uInt unsigned int #define uchar unsigned char uchar PWM_T = 0; //占空比控制变量 //////////////////主程序入口////////////////////// void main(void) { bit flag = 1; //控制灯渐亮渐熄方式 uInt n; TMOD=0x02; //定时器0,工作模式2,8位定时模式 TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高) TL0=210; //写入预置值(取值1-255,数越大PWM频率越高) TR0=1; //启动定时器 ET0=1; //允许定时器0中断 EA=1; //允许总中断 P2=0xff; //初始化P1 while(1) { for(n=0;n<600;n++); //延时,将响应定时器中断,灯会自动加/减一个档次的亮度//取值0-65535,数字越大变化越慢 if(flag==1) //灯渐亮 PWM_T++; else //灯渐熄 PWM_T--; if(PWM_T>=100) //设置灯亮度级别为10 flag=0; if(PWM_T==0) //限定最低亮度级别为0 flag = 1; } } ///////////////////定时器0中断模拟PWM//////////////////// timer0() interrupt 1 using 2 { static uchar t ; //PWM计数 t++; //每次定时器溢出加1 if(t==100) //PWM周期 { t=0; //使t=0,开始新的PWM周期 P2=0x00; //使LED灯亮 }

呼吸灯程序

呼吸灯(简单易懂) 如题呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。二、设计原理:用C语言编程实现 PWM(脉宽调制)输出驱动LED,逐渐增加PWM 的占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。三、整体方案设计8个LED按照顺序逐个实现呼吸效果。加以其他闪烁花样增加更炫彩的效果。四、实验元件及器材(1)元件:LED(发光二极管)8个1KΩ电阻8个1nf电容2个晶振 1个 AT89C51芯片1个(2)器件:Atmega128开发板1块计算机1台五、硬件原理(1)主电路:8个LED分别连接AT89C51的P1口,使用共阳方式,并加以1kΩ的电阻接入电源。 #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 /*-------------------------IO口定义 ----------------------------*/

sbit LED0=P0^0;// 用sbit 关键字定义 LED到P0.0端口,LED是自己任意定义且容易记忆的符号 sbit wei=P1^1; sbit duan=P1^0; sbit lcden=P1^7; sbit dianzhen=P1^3; sbit leden=P1^2; void Delay(unsigned int t); //函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值 lcden=0; P0=0x00; dianzhen=0; P0=0xff; wei=0; duan=0;

msp430呼吸灯程序

/******uestc*****/ //******************************************************************* //MSP430G2553 呼吸灯演示程序- 使用Timer_A,Up Mode, DCO SMCLK // // 介绍: 该程序利用TIMER A 的UP模式在P1.6脚产生PWM输出 // 将CCR0设置为1500来定义PWM的周期,利用循环不断改变CCR1的值,// 实现利用改变PWM的占空比来改变LED亮度. // ACLK = na, SMCLK = MCLK = TACLK = default DCO // // MSP430G2553 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.6/TA1|--> CCR1 - PWM // // 使用MSP430 LaunchPad , MSP430G2553芯片 // 在IAR Embedded Workbench for MSP430 5.40下编译测试通过 //******************************************************************* #include "msp430g2553.h" // ************************************************************* // 延时函数,对于1M主频,约延时1ms // ************************************************************* void delay_1ms(void) { unsignedint k; for (k=0;k<195;k++); } // ************************************************************* // 延时函数,延时n*ms // ************************************************************* voiddelay_nms(unsigned int n) { unsignedint j; for (j=0;j

呼吸灯

郑州科技学院 单片机课程设计 题目呼吸灯学生姓名 专业班级 学号 院(系) 指导教师 完成时间

目录 1 前言 (1) 2 课程设计的目的 (1) 3 课程设计的任务与要求 (2) 3.1课程设计的任务 (2) 3.2课程设计的要求 (2) 4 设计方案与论证 (2) 4.1设计方案 (2) 4.2设计论证 (4) 5 设计原理及功能说明 (5) 5.1设计原理 (5) 5.2功能说明 (5) 6 单元电路的设计 (6) 7 硬件的制作与调试 (7) 7.1硬件制作 (7) 7.2实物调试 (8)

8 结论 (8) 参考文献 (10) 附录1:总体电路原理图 (11) 附录2:元器件清单 (12) 附录3:呼吸灯实物图 (13) 附录4:源程序 (14)

1 前言 单片机技术是人类在生产斗争和科学实验中发展起来的。随着科学技术的发展和人类的进步,单片机技术已经成了各种工程技术的核心,特别是进入信息时代以来,单片机技术更成了基本技术,其具体应用领域涵盖了通信领域、控制系统、测试系统、计算机等等各个领域。 众所周知,呼吸灯已经在我们的现实生活中得到了广泛应运,并有涉及到各个领域中。比如手机、电脑等实用工具的呼吸灯,又或是仓库、家庭保安系统中,都有使用呼吸灯电路。因此,呼吸灯的种类呈现出多样化。随着科技的发展,人们对呼吸灯的性能提出了越来越高的要求。本文设计了一种呼吸灯,这种呼吸灯通过AT89C51型单片机把电路中的电流经由单片机构成一个简单的电路系统。设计电路中应用到电阻、电容、LED等元器件。该呼吸灯的设计采用模块化结构,使得设计简单明了、方便、灵活性强。同时可以根据需要在原有的基础上加以扩充,很有经济利用价值。 这种呼吸灯不但使用很简单,可靠性强,并与传统的呼吸灯相比具有很强的稳定性、实用性,但是其应用范围目前来说相对会比较狭隘。 2 课程设计的目的 1.学习基本理论在实践中综合运用的初步经验,巩固和掌握单片机电路设计的综合理论知识和基本方法; 2.培养实践技能,掌握电子电路安装和调试的方法和故障排除方法,提高分析和解决问题的能力; 3.学会光呼吸灯的设计及相关仪表仪器的使用; 4.了解构成呼吸灯的电路及原理; 5.掌握元器件的特点,电路的仿真和线路的焊接; 1

实验3 呼吸灯设计实验 (1)

实验3 呼吸灯设计实验 一、实验目的 1、会使用单片机4个并行I/O端口连接外部设备并构建单片机最小应用系统。 2、能使用工具软件绘制单片机硬件原理图、能编写简单的C语言程序。 3、会编写常见的循环程序和延时子程序。 二、实验内容 采用STC89C52单片机构建最小系统,在P1.0口外接1只发光二极管,编程实现二极管出现呼吸灯的显示效果。 三、实验原理 1、P1口为准双向口,每一位都可独立地定义为输出线或输入线。 2、延时子程序采用指令循环指令来实现,在系统时间允许的情况下采用此方法。 循环时间=机器周期×指令所需机器周期×循环次数 (其中机器周期:晶振频率为12MHz时为1us,晶振频率为6MHz时为2us) 四、思考题 (1)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管闪动频率控制。 (2)采用任务1的单灯控制电路,编程实现P1端口连接的8个发光二极管自动变频控制。 表4 项目二考核标准 任务名称任务一:单灯闪烁控制设计 序号考核内容考核方式分 值 评分 1 工具软 件使用Kile软件操作 使用 实际操作 5 会操作使用3-5分不会操作0-3分 2 Proteus软件操 作使用 5 会操作使用3-5分不会操作0-3分3 下载工具使用 5 会操作使用3-5分不会操作0-3分 4 硬件 电路晶振电路绘制原理 图 4 正确4分不正确0分复位电路 4 正确4分不正确0分 5 电源电路 2 正确2分不正确0分 6 I/O口分配 存储器选择 2 正确2分不正确0分7 输出显示电路8 正确4-8分不正确0-4分 8 程序 设计程序设计思路编写程序 5 可行3-5分不可行0-3分 9 流程图绘制、存 储器分配 5 正确3-5分不正确0-3分 10 源程序编写10 编译正确 10分编译不正确 4-6分 无法编译 0-3分 11 程序 调试调试、仿真运行效果10 实现功能指标10分能仿真,没实现 功能指标0-3分 12 电路调 试制作硬件调试连接实验 板电路或 电路制作 5 电路正常运行5分不正常0-3分联合调试 5 达到功能指标5分没达到0-3分 13 加分 5 小组讨论、独立完 成5分不能独立完成 0-3分 说明:具体评分标准可根据教学过程中的实际情况进行合理调整。

51单片机实现七彩呼吸灯程序

51单片机用PWM的RGB呼吸灯程序 程序设计思路:灯在高速闪烁人眼是看不出来的,开的时候,以非常快的速度开-关,逐渐加大开的时间比率,减小关的时间比率。关的时候,以非常快的速度开-关,逐渐加大关的时间比率,减小开的时间比率。程序如下: #include typedef unsigned int WORD; /*-----------定义单片机引脚-----*/ sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; void Delay(WORD t); //函数声明 WORD z,y; void main (void)//主函数 { WORD CYCLE=500,PWM_LOW=0;//定义周期并赋值 while (1) //主循环 { /*--------第一颜色LED灯呼吸---------*/ LED1=1; Delay(500); for(PWM_LOW=1;PWM_LOW0;PWM_LOW--) //实现亮缓慢到暗{ LED1=0; Delay(PWM_LOW); LED1=1; Delay(CYCLE-PWM_LOW); } //同理可以实现剩下的六种颜色 /*--------第二颜色LED灯呼吸----------*/ LED2=1; Delay(500); for(PWM_LOW=1;PWM_LOW

51单片机呼吸灯实验报告

呼吸灯 1 功能与技术分析 呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。可以展示出各种酷炫的图像。 1.1 呼吸灯的实现效果 使用调制的方法,灯在高速闪烁时人眼是看不出来的,每个循环给闪烁的熄灭时间加1,灯就会慢慢变暗,在设置熄灭时间加到一定程度就开始减一,就会渐渐变亮了。使得LED灯按照顺序逐渐改变亮度。 1.2 功能分析 灯光在微电脑控制之下完成由亮到暗的绝剑变化,感觉就像是在呼吸。广泛应用与数码产品,起到装饰和指示工作效果。目前被广泛用于手机之上,并成为各大品牌新款手机的卖点之一。 1.3 技术分析 用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,

看上去就和人的呼吸一样。 2 硬件基础与设计 整个系统的搭建,由以下元器件组成: 1、12MHz晶振一个; 2、stc89c51单片机一个; 3、30pf无极性电容2个; 4,、按钮一个; 5、10K电阻一个; 6、10uf有极性电容一个; 7、洞洞板一个; 8、LED灯若干。

2.1 基于51单片机的最小系统的设计 STC89C51RC是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes 的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。STC89C51RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。 组成部分包括: 1、一个八位中央处理器CPU; 2、一个片内震荡电路,时钟电路产生时钟信号,频率越高,速度越快; 3、128B的RAM。51中共有256BRAM单元,后面128B是寄存器; 4、4KB的ROM; 5、2个16位定时器/计数器; 6、32条可编程的I/O线,4个8位并行I/O端口P0、P1、P2、P3; 7、一个全双工串行口;

光立方呼吸灯程序

#include #define uint unsigned int #define uchar unsigned char int i=0; uchar code table[]={ 0,0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45, 46,47,48,49,50,51,52,53,54, 55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72, 73,74,75,76,77,78,79,80,81,82, 83,84,85,86,87,88,89,90,91, 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109, 110,111,112,113,114,115,116,117,118,119,120,121,122,123,124}; void delay(uint z) { uint x,y; for(x=15;x>0;x--) for(y=z;y>0;y--); } void light1(uchar num1) { uchar j; P2=0xff; P1=0x00; P2=0x00; j = table[num1]; delay(j); P2=0xff; P1=0xff; P2=0x00; delay(126-j); } void light2(uchar num2) { uchar j; P2=0xff; P1=0xff; P2=0x00;

相关主题
文本预览
相关文档 最新文档