51单片机(呼吸灯)C语言版

51单片机(呼吸灯)C语言版
51单片机(呼吸灯)C语言版

基于单片机与PWM的呼吸灯设计

实训指导教师:

班级:

设计人姓名:

设计日期:

设计地点:

完成时间:

摘要

本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以C 语言编程实现LED渐亮再渐暗类似人的呼吸一样的效果。

关键词

AT89C51,PWM(脉宽调制)

一、设计要求:

呼吸灯就是让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Ω的电阻接入电源。

(2)时钟电路:外部时钟方式是使用外部振荡脉冲信号。

六、软件设计及系统仿真调试

(1)调试方法:利用keil软件进行C语言程序编写及调试,再利用Proteus 仿真软件进行仿真实验。

(2)调试过程所遇问题:

1、由于呼吸灯的程序在仿真软件Proteus中实现的效果不明显,很难辨别LED是否具有呼吸的效果。所以边用keil调试程序边用STC烧写软件直接写入开发板,从而很明显看出LED是否具有呼吸效果;

2、程序运行时,出现LED闪烁过快,由于人眼的暂留效应看似LED全部一直亮着,经调试,修改延时时间,实现呼吸效果。

七、结论与心得

在本次设计中,C语言程序在开发板中得以实现应有的功能。在调试过程中,发现很多问题都是由于不细心导致的,因此在以后的设计方案中,要集中精力,莫粗心大意。再者就是知识量的不足,虽然是一个小小的设计方案,但是查阅了很多相关资料,在日后,要多充足自己的知识量,保证C程序的编写质量。

参考文献

[1]郭天祥,《新概念51单片机C语言教程》,电子工业出版社,2009年1月

[2]徐爱钧,《单片机高级语言C51应用程序设计》,电子工业出版社,2000年5月

附件A:呼吸灯设计电路图

附件B:C语言程序清单

#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=500,PWM_LOW=0;//定义周期并赋值

while (1) //主循环

{

/*--------整排LED灯呼吸---------*/

P1=0x00;

Delay(500); //加延时,可以看到熄灭的过程(下面程序同理)

for(PWM_LOW=1;PWM_LOW

P1=0x00;

Delay(PWM_LOW);

P1=0xff;

Delay(CYCLE-PWM_LOW);

}

P1=0xff;

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

{

P1=0x00; //点亮LED

Delay(PWM_LOW);

P1=0xff; //熄灭LED

Delay(CYCLE-PWM_LOW); //主循环中添加其他需要一直工作的程序,延时长度,600次循环中从599减至1

}

/*--------第一颗LED灯呼吸---------*/

LED0=1;

Delay(500);

for(PWM_LOW=1;PWM_LOW

{

LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);

}

LED0=0;

for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)

{

LED0=0;

Delay(PWM_LOW);

LED0=1;

51单片机32位流水灯

51单片机32位流水灯 摘要:随着电子工业的发展,电子元器件急剧增加,C51单片机应用非常广泛。本文介绍了一种简易的单片机应用的设计思路及硬件结构。首先研究了51单片机流水灯的基本原理,画出整机框图,接着提出系统的性能指标,计算确定电路形式和元器件参数,然后根据原理图通过Simulink软件进行建模仿真,验证系统的可行性。 关键字:C51;LED;S imulink软件;Protel99SE; 1引言 1.1设计背景及意义 目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用围也逐渐广泛起来,在我们的生活当中有许多地方要应用中到灯光,因此,设计全自动,可靠,安全,便捷的灯光效益具有极大的现实必要性。 2.系统概述 该系统主要有C51单片机,LED灯,晶振等。 2.1 设计目的 (1)掌握简易流水灯的工作原理,以及程序的编写等等。 (2)进一步熟悉和掌握常用数字电路元器件的应用; (3)学习数字电路仿真、调试、测试、故障查找和排除的方法、技巧; (4)培养实践技能,提高分析和解决实际问题的能力。 2.2设计容及要求 1、51单片机x1、40Pin 座x1 2、LED x32(建议用5mm 七彩的) 3、电阻470Ωx33 4、晶振12MHz x1 5、10uf 电解电容x1、谐振瓷片电容30pf x2 6·其他的可以看自己的爱好去加 7、其实也可以不用那么多的电阻,用几个排阻就OK了。

2.2电路原理图

2.2重要元器件介绍

(1)C51单片机 (2)12MHZ晶振分为两种封装形式: SMD3225产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC SMD5032产品详细参数: 频率围:12 ~ 54 MHz 频率公差(25℃)± 10ppm± 30 ppm, or specify 在工作温度围的频率稳定度:± 10ppm± 30 ppm, or specify 工作温度围:- 20 ~ +70 oC, or specify 并联电容(C0):7 pF Max. 驱动级:1~200μW(100μW typical) 负载电容:Series, 8 pF, 12 pF, 15 pF, 20pF, or specify 老化(25℃):± 3 ppm / year Max. 储存温度围:- 40 ~ + 85 oC 3实物

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) ;

C51单片机实行流水灯程序

#include #define LEDPort P1 unsigned char LED01_[9]= {0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,}; //方式0,方式1灯开关数组。unsigned char LED23_[5]= {0xFF,0x7E,0xBD,0xDB,0xE7}; // 方式2,方式3灯开关数组。 unsigned char LED4_[16]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00,0X01,0X03,0X07,0X0f,0X1 f,0X3f,0X7f}; //方式4 unsigned char LED56_[8]={0XFF,0X3F,0X9F,0XCF,0XE7,0XF3,0XF9,0XFC}; unsigned char LED7_[]={0X0F,0XF0,0X33,0XCC,0X3C,0XC3,0XFF}; unsigned char TAB[9]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//定义断码表。 unsigned char i=0,j=9; //数据选择计数。 unsigned char Mode=0; //模式选择,默认为模式0。 unsigned char Count=1; //定时器中断计数。 unsigned char Delay=1; //延迟计数,通过改变改数值改变灯状态延迟时间。 //灯延迟时间=uc_Dalay*定时器溢出时间。 void main() { P2=0X3F; TMOD=0x01; //定时器0模式一。 TH0=0x3C; TL0=0xB0; //溢出时间:50ms。 TR0=1; //定时器0开启。 IT0=1; //外部中断0下降沿触发。 IT1=1; //外部中断1下降沿触发。

51单片机流水灯C语言源代码

#include #include #define uint unsigned int #define uchar unsigned char uchar z=50,e=0x00,f=0xff; uchar code table1[]={ 0x80,0xc0,0xe0,0xf0, 0xf8,0xfc,0xfe,0xff}; uchar code table2[]={ 0x7f,0x3f,0x1f,0x0f, 0x07,0x03,0x01,0x00}; uchar code table3[]={ 0x01,0x03,0x07,0x0f, 0x1f,0x3f,0x7f,0xff}; uchar code table4[]={ 0xe7,0xdb,0xbd,0x7e, 0xbd,0xdb,0xe7,0xff}; uchar code table5[]={ 0xe7,0xc3,0x81,0x00, 0x81,0xc3,0xe7,0xff}; uchar code table6[]={ 0x7e,0x3c,0x18,0x00, 0x18,0x3c,0x7e,0xff}; void delay(uchar); void lsd1(); void lsd2(); void lsd3(); void lsd4(); void lsd5(); void lsd6(); void lsd7(); void lsd8(); void lsd9(); void lsd10(); void lsd11(); void lsd12(); main() { while(1) { lsd1(); lsd2(); lsd3(); lsd4();

最新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

基于51单片机的智能家居控制系统方案

基于51单片机的智能家居控制系统 目录

作品简介 (3) 智能家居服务背景 (4) 技术与工艺创新 (4) 可行性分析 (5) 行业背景 (8) 竞争优势 (9) 市场前景 (10) 投资分析 (12) 参考文献 (14) 基于51单片机的智能家居控制系统

作品简介 21世纪是信息化的世纪,各种电信运营商和互联网新技术推动了社会文明的巨大进步。本文介绍的智能化家居控制系统的出现使得人们可以通过手机在任何时候、任意地点对家中的任意电器(空调、电视等)进行远程控制;也可以在下班途中,预先将家中的空调打开调节室温度,这一切的实现都仅仅是发一条简单的短信。此外,该系统还可使家庭具有多途径报警、远程监控等多种功能,如果不幸出现某种险情,您和110可以在第一时间获得通知以便进一步采取行动。舒适、时尚的家居生活是社会进步的标志,智能家居控制系统能够在不改变家中任何家电的情况下,对家里的电器、灯光、电源、家庭环境进行方便地控制,使人们尽享高科技带来的简便而时尚的现代生活。 实现智能化离不开运算和控制单元,本系统采用STC89C52RC作为主控器件,单片机应用系统由硬件和软件组成。硬件由单片机扩展的输入/出设备以及各种实现单片机系统控制要求的接口电路和有关的外围电路芯片或部件组成;而且外置红外控制遥控,可以不改变家居摆设情况下随意控制带红外控制功能的家电,如(空调、电视等)。软件由单片机应用系统实现其特定控制功能的各种工作程序和管理程序组成。本设计的STC89C52RC与各个芯片和模块的接口、各项标准都严格遵循国家有关标准,为以后的产品化提供了良好的基础。 本系统的远程控制是基于全球移动通信系统(GSM)通信方式,程控交换信令作为系统控制命令,采用Siemens TC35 GSM模块实现,单片机通过Siemens TC35 GSM模块识别接收来自手机的控制信号,用户可以根据设定的指令远程控制;各种传感器的检测是利用数据采集系统将多路被测量值转换成数字量,再经过单片机进行数据处理,实现实时测控;短消息发送部分采用基于SIEMENS TC35 GSM模块和TI公司的电平转换芯片MAX3238等器件构成的移动终端的硬件电路可以完成短消息收发等功能。 一、智能家居的服务背景

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。 2. 8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。 3. 8 个发光管来回流动,第个管亮100ms 。 4. 用8 个发光管演示出8 位二进制数累加过程。 5. 8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。重复此过程。 6. 间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。 7. 间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。 1 #include #define uint unsigned int sbit led 仁P"0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() {

uint x,y; for(x=200;x>0;x--) for(y=100;y>0;y--); } #include #include #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a; void delay(); void main() { a=0xfe; P1=a; while(1) { a=_crol_(a,1); delay(); P1=a; delay(); } } void delay() { uint b; for(b=55000;b>0;b--); } 3 #include #include #define uint unsigned int #define uchar unsigned char void delay() { uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--); } void main() { uchar a,i; while(1) a=0xfe; for(i=0;i<8;i++) { P1=a; delay(100); a=_crol_(a,1); } a=0x7f; for(i=0;i<8;i++) { P1=a; delay(100); a=_cror_(a,1);

基于单片机智能家居系统设计

目录 内容摘要 (1) 关键词 (1) Abstract (1) Key words (1) 1引言 (1) 2 系统的总体方案 (3) 2.1系统框图 (3) 2.2系统的组成 (6) 3 硬件设计 (16) 3.1远端模块设计 (16) 3.2本地模拟分机部分的设计 (17) 3.3智能显示和温度部分的电路设计 (18) 4 软件设计 (21) 4.1 软件说明 (21) 4.2 软件流程图 (22) 5 系统调试 (25) 5.1 硬件调试 (25) 5.2 软件调试 (27) 5.3 软硬件联调 (28) 结束语 (30) 附录一 .................................................................错误!未定义书签。参考文献: .. (31) 致谢 (33)

内容摘要:设计了一个模拟智能家居系统,该系统以STC单片机作为控制核心,利用双音多频信号作为远距离的通信信号,利用串口进行模块内部的通信。文章详细介绍了系统的组成、工作原理及其软硬件设计。 关键词: 智能家居;DTMF;STC89C52RC;模拟电话 Abstract: The paper designs a system which simulates the intelligent home system. The system takes STC MCU as the control core, uses the DTMF signals as the long-distance communication signals, and serial communication as the communication method between the internal modules. This paper introduces the composition, working principle and the design of hardware and software. Key words: Intelligent home system, DTMF, STC89C52RC, Analogue telephone

(完整word版)51单片机流水灯

51单片机的流水灯控制 班级:100712 姓名:全建冲 学号:10071047

一、设计要求 用51单片机设计一个流水灯的控制方案,要求采用定时器定时,利用中断法控制流水灯的亮灭,画出电路图和程序流程图,写出程序代码以及代码注释。 二、电路原理图 原理图分析: 本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理图中还给出了晶振与复位端,以保证控制器的稳定工作。

三、程序流程图

四、程序代码及注解 1.非中断定时器控制 #include #include//包含了_crol_函数的头文件 #define uchar unsigned char #define uint unsigned int uint i=0; uchar a=0xfe; void main() { TMOD=0x01;//设置工作方式为定时器0,16位手动重装初值 TH0=(65536-46080)/256;//50毫秒定时赋初值 TL0=(65536-46080)%256; TR0=1;//启动定时器0 while(1) { If(TF==1)//读溢出标志位 { TH0=(65536-46080)/256;//重新赋初值 TL0=(65536-46080)%256;

i++; if(i==10)//500毫秒定时 { i=0; P1=a;//P1端口赋值 a=_crol_(a,1);//循环左移 } TF=0;//清除定时器溢出标志 } } } 程序分析:本程序采用非中断定时器法控制流水灯,核心语句在于读取标志位TF位,TF为定时器溢出标志位,溢出时硬件自动置一,所以循环读取标志位以判断定时器是否溢出,而每次溢出需要手动清零,否则定时器无法再次溢出,利用标志i读取10次即可达到500毫秒的定时。另外需要注意的是单片机晶振为11.0592MHz,所以计时一个数的时间为12/11.0592=1.085us,故定时50毫秒的计数为50000/1.085=46080。 2.中断定时器控制 #include

(完整版)基于单片机的智能家居控制系统

基于单片机的智能家居控制系统 智能家居作为家庭信息化的实现方式,已经成为社会信息化发展的重要组成部分,物联网因其巨大的应用前景,将是智能家居产业发展过程中一个比较现实的突破口,对智能家居的产业发展具有重大意义。本文基于容易实现,方便操作,贴近使用的设计理念,采用STC89C52单片机为控制核心,为控制终端,并采用包括红外遥控、按键、Web界面等在内的多个控制源来控制家用电器。本文的二至四章描述了整个设计的软、硬件部分的具体实现,第五章是根据设计好的功能搭建了一个具体的环境实例。 智能家居控制系统功能分析 智能家庭控制系统的主要功能包括家庭设备自动控制、家庭安全防范二个方面。其中家庭设备自动监控包括电器设备的集中、遥控、远距离异地(通过电话或Internet)的监视、控制及数据采集。 (1)家用电器的监视和控制,按照预先所设定程序的要求对热水器、微波炉、视像音响等家用电器进行监视和控制。 (2) 热能表、燃气表、水表、电度表的数据采集、计量和传送根据小区物业管理的要求所设置数据采集程序,通过传感器对热能表、燃气表、水表、电度表的用量进行自动数据采集、计量,并将采集结果远程传送给小区物业管理系统。 (3)空调机的监视、调节和控制,按照预先所设定的程序,根据时间、温度、湿度等参数对空调机进行监视、调节和控制。 (4)照明设备的监视、调节和控制按照预先设定的时间程序,分别对各个房间照明设备的开、关进行控制,并可自动调节各个房间的照度。 (5)窗帘的控制,按照预先设定的时间程序,对窗帘的开启/关闭进行控制。 总体设计

2.1 整体介绍 本次设计以STC89C52芯片为控制核心,温度,湿度等传感器为环境信息采集源,以Web 控制为辅助,来制作一个物联网空调监控系统。在原有的机械式按键开关的基础上,采用无线遥控器与Web 网页远程控制,来控制空调机组(如风机,加湿器,风阀等),实现了远距离,多角度对空调机组进行实时控制。此外在本次设计中,采用多种传感器想结合,智能根据各传感器采集的数值进行自动化控制,如自动开关风机,智能调节冷冻水量,自动调节风阀开度等。并能够实现故障诊断,提供报警,数据实时数据与历史数据查询并Excel 表输出。 2.2系统设计方案 根据设计要求,系统提供了包括了核心控制模块,Web 服务器,Web HTML 模块,数据采集模块,继电器模块,按键模块,报警模块,等等。系统的整体框图如图1所示。 系统整体框图 网页 服务器(串口核心控制设备(以 STC8052为数据库设备状态传感器 (温度,LCD 显示 模式,温 度,湿度 继电风 水阀开 新风开 加湿 回风开用户输入 用户控制 环境信按

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); /************************************************

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

单片机流水灯汇编程序设计 开发板上的8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 程序A: ;用最直接的方式实现流水灯 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: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 程序B: ;用移位方式实现流水灯

ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给A赋值成11111110 loop: mov p1,a ;将A送到P1口,发光二极管低电平点亮 lcall delay ;调用延时子程序 rl a ;累加器A循环左移一位 ajmp loop ;重新送P1显示 delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环250次 djnz r5,$ ;总共延时2us*250*80*20=0.8S djnz r4,d2 djnz r3,d1 ret end 51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。 ORG 0 ;程序从0地址开始 START: MOV A,#0FEH ;让ACC的内容为11111110 LOOP: MOV P2,A ;让P2口输出ACC的内容 RR A ;让ACC的内容左移 CALL DELAY ;调用延时子程序 LJMP LOOP ;跳到LOOP处执行 ;0.1秒延时子程序(12MHz晶振)=================== DELAY: MOV R7,#200 ;R7寄存器加载200次数 D1: MOV R6,#250 ;R6寄存器加载250次数 DJNZ R6,$ ;本行执行R6次 DJNZ R7,D1 ;D1循环执行R7次 RET ;返回主程序

基于单片机的智能家居控制系统

单片机原理与应用技术 课程设计报告 题目基于单片机的智能家居控制系统的设计 专业班级: 姓名:时 间:指导 教师:

单片机课程设计项目系列: 基于单片机的智能家居控制系统的设计 一.设计要求 (一)基本功能 (1)家居内无人时, 切断所有家电的220V 电源, 既消除了各种电器的待机能耗, 又避免了因供电异常、屋内漏水等不可预知事件损坏电器的危险。 (2)通过预设时间和时长控制娱乐性家电, 避免了孩子在家因过度娱乐而延误学习。 (3)所有电器的电源都直接通过系统控制进行供电 / 断电, 在使用电器时无需插拔电源插头, 避免 了因经常插拔电源插头而造成接触不良及触电的危险。 (4)根据预设室内温度和湿度对空调和加湿器自动进行启/ 停控制, 以达到最佳舒适度。 (5)各电器的工作状态在主控面板上以LED直观显示, 并通过键盘集中控制电器, 例如在观看电视时可随手打开/ 关闭厨房电灶。 (6)远程控制家电的启动操作。 (7)设定/ 显示日期、时间、星期及定时叫醒服务。 (8)为避免煤气中毒设置了一氧化碳及燃气报警。 (9)烟感和水感可及时发现家居内的水、火灾并报警。 (10)通过门磁和窗户红外线完成防盗报警。 (二)扩展功能加入住宅配房安全防盗报警功能和住宅门禁系统功能。 二.计划完成时间三周1.第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。2.第二周完成软件的具体设计和硬件的制作。 3.第三周完成软件和硬件的联合调试。

目录 1引言 (3) 2总体设计方案 (3) 2.1设计思路 (3) 2.1.1方案确立 (3) 2.2 总体设计框图 (3) 3设计原理分析 (4) 3.1传感器模块的设计 (4) 3.1.1烟感传感器 (4) 3.1.2门磁、红外探测器 (4) 3.1.3热释电传感器 (4) 3.2矩阵键盘模块 (4) 3.3单片机最小系统 (5) 3.4显示模块 (5) 3.5 输出部分 (6) 4总结与体会 (6) 参考文献 (6) 附录一程序流程图 (7) 附录二程序列表 (8)

基于51单片机的流水灯

基于51单片机的流水灯 利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。可以使用Proteus软件进行仿真调试。 1 硬件设计 利用单片机的PO口控制8个LED,其电路如下图所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示 都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。 /****************************************************************** 流水灯

*******************************************************************/ #include "reg51.h" const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(unsigned int x) //延时 { unsigned int j; unsigned char k; for(j=0;j

单片机PWM技术实现呼吸灯和KTV等娱乐场所的灯光闪烁效果

单片机PWM技术实现呼吸灯和KTV等娱乐场所的灯光闪烁效果 程序是在51hei单片机开发板上面做的,电路很简单,最小系统+P0的八个led即可.ADDR0和ENLED那是开发板上的led使能电路控制端,如果是你自己做的电路 可以删掉这几个语句.或者不用管他,不会影响程序的运行. /** ************************************************* ************************************************* ********** * @file : main.c * @author : xr * @date :

2014年4月15日20:34:05 - 2014年4月15日22:28:08 * @version: V1.2.3 * @brief : PWM技术实现呼吸灯和KTV等娱乐场所的灯光闪烁效果单片机STC89C52RC MCU 晶振 11.0592MHZ ************************************************* ************************************************* ********** */ #include ; //74HC138 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; //sbit PWMOUT = P0^0;//PWM输出 #define PWMOUT P0

用单片机控制的LED流水灯设计(电路、程序全部给出)

1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。 2.硬件组成 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATM EL公司生产的低电压、高性能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。因此,要

51单片机常见的五种流水灯编写方式

51单片机常见的五种流水灯编写方式通过改变赋值实现流水灯 void main() { while(1) { P2=0xfe; delay1ms(500); P2=0xfd; delay1ms(500); P2=0xfb; delay1ms(500); P2=0xf7; delay1ms(500); P2=0xef; delay1ms(500); P2=0xdf; delay1ms(500); P2=0xbf; delay1ms(500); P2=0x7f; delay1ms(500); } } 通过公式运算实现流水灯 void main() { while(1) { uint a,b=1; P2=0xfe; delayms(500); for(a=0;a<7;a++) {

P2-=b; // P2=P2-b delayms(500); b=b*2; //都化为同一类型进制运算 } } } 通过操作符<<与“|”实现流水灯 (通过移位实现流水灯) void main() { uchar a,i; while(1) { a=0xfe; //点亮第一位LED灯 for(i=0;i<8;i++) { P2=a; a=a<<1; //左移一位 a=a|0x01; //左移一位后与0x01相或,保证左移后最低位为1 delay_ms(500); } } } 通过库函数_crol_(字符左移)实现流水灯 void main() { uint a; a=0xfe; while(1) { P2=a;a=_crol_(a,1); delay_ms(500); } } 采用数组实现流水灯

基于51单片机的流水灯设计说明

基于51单片机的流水灯设计 一.基本功能 利用AT89c51作为主控器组成一个LED流水灯系统,实现8个LED 灯的左、右循环显示。 二.硬件设计 图1.总设计图

1.单片机最小系统 1.1选用AT89C51的引脚功能 图2. AT89C51 XTAL1:单芯片系统时钟的反向放大器输入端。 XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。 RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得部特殊功能寄存器容均被设成已知状态。 P3:端口3是具有部提升电路的双向I/O端口,通过控制各个端口的高低电平了实现LED流水灯的控制。

1.2复位电路 如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。 图3.复位电路 1.3时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。 在AT89C51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。

图4.时钟电路 2.流水灯部分 图5.流水灯电路 三.软件设计 3.1编程语言及编程软件的选择 本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言

基于单片机的智能家居控制系统毕业设计

摘要 智能家居作为家庭信息化的实现方式,已经成为社会信息化发展的重要组成部分,物联网因其巨大的应用前景,将是智能家居产业发展过程中一个比较现实的突破口,对智能家居的产业发展具有重大意义。本文基于容易实现,方便操作,贴近使用的设计理念,采用STC89C52单片机为控制核心,为控制终端,并采用包括红外遥控、按键、Web界面等在内的多个控制源来控制家用电器。本文的二至四章描述了整个设计的软、硬件部分的具体实现,第五章是根据设计好的功能搭建了一个具体的环境实例。 关键词:物联网、智能家居、单片机、STC89C52、多源控制

Abstract Smart Home as the implement mode of Family Information has become an important part of the social information development .The networking because of its huge prospect to develop .It will be a real way during the Smart Home`s development .Networking means a lot to the Smart Home .This article base on the design concept of trying to use easiest way to deliver handle and closing to use .We take the STC89C52 as the control core of the design .The relay as the control terminal mean .While we also use the trared remote control key webpage etc to control the home appliances . Two to four chapters of this paper describes the design of software and hardware to achieve the specific. Chapter V is based on features designed to build a specific environment instance. Key word:Networking、Intelligent、Home、Microcontroller、STC89C52、multi-source control

相关文档
最新文档