单片机课程设计-触控调光灯

合集下载

基于单片机的智能调光灯设计

基于单片机的智能调光灯设计

基于单片机的智能调光灯设计一、设计背景与意义随着科技的不断进步,人们对于生活品质的要求越来越高。

传统的固定亮度灯光已经无法满足多样化的需求。

智能调光灯能够根据环境光线、时间以及用户的个人喜好自动调节亮度和颜色,不仅为人们提供了更加舒适的照明体验,还有助于节约能源。

在办公场所,合适的灯光亮度可以提高工作效率,减少眼睛疲劳;在家庭中,智能调光灯可以营造出温馨、浪漫的氛围;在公共区域,如走廊、楼梯等,根据人员活动情况自动调节亮度,能够有效降低能源消耗。

二、系统总体设计本智能调光灯系统主要由单片机控制模块、光线传感器模块、按键输入模块、LED 驱动模块和 LED 灯珠组成。

单片机作为核心控制部件,负责接收来自各个模块的数据,并根据预设的算法进行处理,输出相应的控制信号。

光线传感器用于检测环境光线强度,将其转换为电信号传输给单片机。

按键输入模块供用户手动设置亮度、颜色等参数。

LED 驱动模块根据单片机的控制信号,为 LED 灯珠提供合适的电流和电压,实现亮度和颜色的调节。

三、硬件设计1、单片机选择选用 STM32 系列单片机,具有高性能、低功耗、丰富的外设接口等优点,能够满足本系统的控制需求。

2、光线传感器采用 BH1750FVI 光线传感器,它具有高精度、低功耗的特点,能够准确测量环境光线强度,并通过 I2C 接口与单片机进行通信。

3、按键输入采用独立按键,通过检测按键的按下状态,实现用户对灯光的手动控制。

4、 LED 驱动模块选择恒流驱动芯片,如 XLSEMI XL7015,能够为 LED 灯珠提供稳定的电流,确保灯光的稳定性和可靠性。

5、 LED 灯珠选用高亮度、低能耗的贴片式 LED 灯珠,如 5050 型号,具有发光均匀、色彩丰富等优点。

四、软件设计1、主程序流程系统初始化后,单片机不断读取光线传感器和按键输入的数据。

根据光线强度和用户设置,计算出 LED 灯珠的亮度和颜色值,并通过LED 驱动模块进行控制。

单片机控制LED灯的设计教学课件

单片机控制LED灯的设计教学课件

3
单片机的发展历程
从20世纪70年代开始,单片机经历了几代的技术演进和发展,如今已经成为嵌入式系 统设计的核心。
LED灯简介
在这一节,我们将学习LED灯的基本概念、分类以及它的优缺点。
LED灯的概念
LED(Lig ht Em itting Diode)是一种能够直接将电能转换为光能的固态发光器件。
2 本课程适用对象
本课程适用于对单片机和电路设计感兴趣的初学者,无需任何前置知识。
3 本课程前置知识
无需任何前置知识,适合初学者入门。
单片机简介
这一节中,我们将介绍什么是单片机、它的分类以及发展历程。
1
单片机的概念
单片机是一种集成了处理器、存储器和输入输出设备的微型计算机。
2
单片机的分类
根据不同的架构和指令集结构,单片机可以分为不同的类型,如8051、AVR、PIC等。
实验设备介绍
我们将使用一块开发板、若干个LED灯和面包板 等设备来完成实验。
实验步骤
实验步骤包括连接电路、编写程序、上传程序 以及观察LED灯的亮灭效果。
实验注意事项
在实验过程中需要注意安全,避免触电和短路 等问题。
实验效果展示
我们会展示实验完成后LED灯的控制效果,并说 明实验结果。
总结
在这个部分中,我们会回顾本课程的内容并提出学习建议。
单片机控制LED灯的设计教学 课件PPT
在这个教学课件中,我们将探讨如何使用单片机来控制LED灯。通过本课程, 你将学习到单片机的基本概念、LED灯的工作原理以及如何使用单片机来实现 LED灯的控制。
引言
在本节中,我们将介绍本课程的目标、适用对象以及前置知识要求。
1 本课程目标

单片机课程设计_触控调光灯

单片机课程设计_触控调光灯

绪论随着经济发展的加快,科学技术的进步,人们生活水平得到了提高,设备逐渐完善。

台灯是生活中的伴侣,我们是不喜欢与强烈的光线打交道的,因为强光对人身体是有害的,为了大家能健康地生活与工作,设计师也想出了一个较为完美的构思,就是台灯的出现,它的出现让很多朋友们得到了满意的效果,但是生活中没有完美的东西,台灯亦不例外,这就需要我们的改进。

例如,很多时候我们并不需要让台灯处于全亮状态,有时候我们只需要微弱的光照即可,过强的光线反而会对使用者造成不必要的干扰,而且这也是对电能的一大浪费。

此外,关于开关的使用寿命,也是影响台灯的耐用性的另一个问题。

因此,本设计的指导思想就是让台灯更耐用、更好用且能够调节亮度,解决过高的亮度对使用者的干扰同时也是为了节能,以及解决普通机械开关易损坏的问题。

对于触模式台灯,手一触到台灯的感应部位灯就会自动亮,如果多触摸几下,台灯就会达到最亮的极限,这样就可以调节了台灯的亮度也避免了开关易坏导致的调节亮度易失灵的问题。

本文介绍了触摸式台灯调光电路的设计及工作过程。

本设计目的是通过设计工作熟悉触摸式调光灯电路基本构成与基本工作原理,并能将这些技术应用实际系统设计,提高自己对电路知识的认识。

一、系统工作原理本设计采用STC公司的12系列单片机为控制芯片,配合外围电路进行对触摸按键的检测及对台灯亮度和开关的控制,利用单片机产生不同占空比的PWM方波实现对灯光的亮暗控制。

此外,本设计的触控功能的实现则是利用单片机的I/O 口的开漏模式且未加上拉电阻,在此模式下I/O更容易接受外界微弱的电平,更容易受到手指的干扰。

本设计中,在被设置成开漏的I/O口要在单片机读该口前将其置1,使其成为高阻状态,当I/O接口被设置到高阻输入状态时,I/O接口就是纯电平输入状态,在接口悬空时为低电平,当有手指触摸到I/O接口时,手指上的微弱电流会使I/O 接口跳变到高电平,只要读出I/O接口的电平高低就可以了解是否有触摸操作,然后加一段按键去抖程序后去调整与PWM占空比相关的数值,从而实现灯光亮度的连续可调。

单片机led灯课程设计

单片机led灯课程设计

单片机led灯课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构和功能。

2. 学生能掌握LED灯的电路连接和工作原理。

3. 学生能理解并运用编程语言,实现对单片机控制LED灯亮灭的操作。

技能目标:1. 学生能独立完成单片机与LED灯的硬件连接,并进行调试。

2. 学生能运用编程软件,编写控制LED灯的程序代码,实现不同的亮灭效果。

3. 学生能通过实验,培养动手操作能力和问题解决能力。

情感态度价值观目标:1. 学生对单片机及其应用产生兴趣,提高学习热情和积极性。

2. 学生在实验过程中,培养团队协作意识和沟通能力。

3. 学生能够认识到科技对社会发展的作用,增强创新意识和责任感。

课程性质:本课程为实践性课程,以学生动手操作为主,结合理论知识,培养学生的实际应用能力。

学生特点:学生为初中生,具有一定的电子知识和编程基础,对新鲜事物充满好奇,喜欢动手操作。

教学要求:教师需结合学生特点,采用启发式教学,引导学生主动探究,注重培养学生的实践能力和创新精神。

在教学过程中,关注学生的个体差异,给予个性化的指导和评价。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合素养。

二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础知识:介绍单片机的内部结构、工作原理、功能和应用领域,使学生了解单片机的基本概念。

2. LED灯电路原理:讲解LED灯的电路连接方式、工作原理和亮灭控制方法,为学生后续实验打下基础。

3. 编程语言及开发环境:学习单片机编程语言(如C语言),介绍编程软件的使用,使学生能够编写程序代码。

4. 硬件连接与调试:指导学生完成单片机与LED灯的硬件连接,教授调试方法,培养学生的动手能力。

5. 程序编写与调试:教授如何编写控制LED灯的程序代码,实现不同的亮灭效果,并学会调试程序。

6. 创新设计与实践:鼓励学生发挥想象,设计独特的LED灯控制效果,提高学生的创新能力。

基于51单片机PWM调光灯设计

基于51单片机PWM调光灯设计

基于51单片机PWM调光灯设计引言随着科技的不断发展,人们对照明的要求也越来越高,不再满足于简单的开关式灯光,而是更加注重光线的亮度调节。

PWM调光技术由于其调光范围广、控制精度高等特点成为了一种常见的调光方式。

本文将以51单片机为基础,介绍一种基于PWM调光技术的灯光系统设计。

一、原理概述PWM调光技术即脉宽调制技术,通过不同占空比的高电平信号,控制LED灯的亮度。

根据一个固定的周期周期(T),将周期平均分为一个个等间隔的时间段,根据每个时间段内高电平信号的占空比(即高电平的持续时间占整个周期的比例)控制LED灯的亮度。

二、系统设计本系统主要由51单片机、脉冲宽度调制模块、MOSFET和LED灯组成。

其中,51单片机负责生成PWM控制信号,脉冲宽度调制模块用于接收单片机的PWM信号并产生相应的电压信号,MOSFET用于根据电压信号调节电流,最终通过LED灯发出可调亮度的光线。

三、硬件设计1.电源电路设计:本系统使用12V直流电源供电,通过稳压电路将电压稳定在5V,用于驱动51单片机和脉冲宽度调制模块。

2.PWM信号生成电路设计:需要为51单片机提供一个定时器来生成PWM信号。

可选择定时器2,使用定时器2的PWM输出功能。

将定时器2的输出引脚接到脉冲宽度调制模块。

3.脉冲宽度调制模块设计:根据PWM信号的不同占空比,需要将其转换为相应的电压信号。

可以使用一个RC电路来实现。

具体电路如下:将51单片机的PWM信号通过一个三极管经过RC滤波后,输入到MOSFET的栅极,控制MOSFET的导通和关断。

4.MOSFET和LED电路设计:MOSFET的特点是可以根据栅极电压的变化来控制其通断,并且具有较小的电流损耗。

因此可以使用MOSFET来控制LED的亮度。

五、软件设计1.定时器2初始化:选择定时器2作为PWM输出源后,需要对其进行初始化,设置相关的工作模式和参数。

2.PWM信号输出:在主程序中,可以通过修改定时器2的占空比寄存器来调节PWM信号的占空比。

触摸灯开关灯课程设计

触摸灯开关灯课程设计

触摸灯开关灯课程设计一、课程目标知识目标:1. 学生能够理解电路的基本概念,掌握触摸灯开关的原理和电路组成;2. 学生能够描述触摸灯开关在生活中的应用,认识到科技与日常生活的紧密联系;3. 学生了解安全用电知识,提高安全意识。

技能目标:1. 学生能够独立完成触摸灯开关电路的搭建,培养动手操作能力;2. 学生能够运用触摸灯开关原理解决实际问题,提高创新能力;3. 学生学会使用相关工具和仪器,掌握基本实验操作技能。

情感态度价值观目标:1. 学生对科学实验产生兴趣,培养探究精神和合作意识;2. 学生在实验过程中,学会尊重事实,培养严谨的科学态度;3. 学生通过触摸灯开关的应用,认识到科技改变生活,增强社会责任感。

课程性质:本课程为科学实验课程,结合学生年级特点,注重实践操作和知识探究。

学生特点:六年级学生对科学实验具有较强的兴趣和好奇心,具备一定的动手能力和团队协作能力。

教学要求:教师需引导学生掌握基本电路知识,注重实验操作安全,培养学生的创新能力与合作精神。

通过触摸灯开关课程,将目标分解为具体的学习成果,以便后续教学设计和评估。

二、教学内容本课程依据课程目标,结合教材内容,组织以下教学大纲:1. 电路基本概念:介绍电路的定义、组成和分类,以教材第二章第一节为基础,使学生了解电路的基本原理。

2. 触摸灯开关原理:讲解触摸灯开关的工作原理,涉及教材第二章第三节的内容,让学生掌握触摸开关的电路组成和操作原理。

3. 安全用电知识:学习安全用电常识,参考教材第二章第四节,提高学生的安全意识。

4. 实践操作:组织学生进行触摸灯开关电路的搭建,结合教材第二章实验部分,培养学生的动手操作能力。

5. 触摸灯开关应用:探讨触摸灯开关在生活中的应用,以教材第二章第六节为例,让学生认识到科技与生活的紧密联系。

6. 创新能力培养:引导学生运用触摸灯开关原理解决实际问题,结合教材第二章第七节,提高学生的创新能力。

教学内容安排和进度如下:第一课时:电路基本概念、触摸灯开关原理;第二课时:安全用电知识、实践操作;第三课时:触摸灯开关应用、创新能力培养。

基于单片机的智能调光灯设计

基于单片机的智能调光灯设计

基于单片机的智能调光灯设计基于单片机的智能调光灯设计随着人们生活质量的提高,家居环境的智能化越来越受到人们的关注。

其中,智能调光灯作为一种智能家居设备,具有广泛的应用前景。

本文将介绍一种基于单片机的智能调光灯设计,包括硬件电路、软件设计和实验结果分析。

一、智能调光灯的背景及应用调光灯在人们的日常生活和工作中具有广泛的应用,例如在会议室、家庭居室、学校教室等场所。

调光灯可以根据环境光线强度和人们的实际需求,调节灯光的亮度,以达到最佳的视觉效果。

此外,智能调光灯还具有节能、环保等优点,能够根据场景需求自动调节亮度,减少能源浪费。

二、设计思路和实现方案基于单片机的智能调光灯设计,选用单片机作为主控芯片,通过接收外部传感器输入的信号,实现自动调节灯光亮度的功能。

具体实现方案如下:1、硬件电路设计硬件电路设计主要包括电源电路、单片机电路、传感器电路和驱动电路。

其中,电源电路为整个系统提供稳定的工作电压;单片机电路负责接收用户输入和控制信号,并输出控制信号;传感器电路包括光敏电阻和红外传感器,用于检测环境光线强度和人体活动,并将信号传输给单片机;驱动电路则根据单片机输出的控制信号,驱动LED灯的亮度和颜色变化。

2、软件设计软件设计主要包括单片机程序设计和传感器数据处理。

单片机程序设计主要实现与外部设备的通信、控制信号的输出等功能;传感器数据处理则对传感器检测到的数据进行处理,判断环境光线强度和人体活动情况,从而输出相应的控制信号给单片机。

三、实验结果和分析为了测试基于单片机的智能调光灯设计的实际效果,我们进行了实验。

实验结果表明,该设计能够根据环境光线强度和人体活动情况自动调节灯光亮度,且调节过程稳定、平滑,具有良好的视觉效果。

同时,实验结果还显示,该设计的节能效果显著,能够有效减少能源浪费。

四、结论和展望本文介绍了基于单片机的智能调光灯设计,包括硬件电路、软件设计和实验结果分析。

实验结果表明,该设计能够根据环境光线强度和人体活动情况自动调节灯光亮度,具有良好的视觉效果和节能效果。

基于单片机实现的调光控制器设计

基于单片机实现的调光控制器设计

基于单片机实现的调光控制器设计1.实验要求:用单片机控制一个普通灯泡的亮度,一路开关控制普通灯泡电源的通断,另外两路开关分别控制普通灯泡亮度的增加和减小。

2.调光控制器设计思想在日常生活中,我们常常需要对灯光的亮度进行调节。

本调光控制器通过单片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。

双向可控硅的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。

所以需要在交流电的每个半波期间都要产生触发信号,触发信号产生时间的长短(触发角的大小)就决定了灯泡的亮度。

调光的实现方式就是在交流电源信号过零点后一段时间触发双向可控硅开关的导通,称这段时间为双向可控硅的触发角。

触发角越大,导通时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。

这就要求确定交流电源同步信号的过零点,并以此为基础,控制触发信号触发角的大小,达到白炽灯亮度调节的目的。

3.实验过程:3.1硬件设计3.1.1 I/O 通道的设计:(1)同步信号采集电路a、查明图中所用元器件的参数;b、画出图中1、3、syn三点的信号波形。

(2)可控硅触发电路:a、查明图中所用元器件的参数;b、画出图中L1_D、4两点的信号波形。

3.1.2硬件电路部分单片机控制电路原理图(1)设计时钟电路(2)设计上电复位电路(3)设计开关量信号控制电路(4)电位器电压给定及电压采样电路3.2画出控制原理总图并给出总图中所用元器件的选型清单(清单中应包含序号、元器件名称、规格、单位、数量、单价、合计及总价等)本调光控制器的框图如下:控制部分:为了便于灵活设计,选择可多次写入的可编程器件,本设计方案中选用的是ATMEL公司生产的AT89C51单片机。

驱动部分:由于驱动的对象是交流负载,且为了实现连续调节的目的,本电路中采用了无触点开关元件双向可控硅。

双向可控硅能够对交流电源的导通进行无触点连续控制,以小电流控制大电流,且动作快、寿命长、可靠性高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绪论随着经济发展的加快,科学技术的进步,人们生活水平得到了提高,设备逐渐完善。

台灯是生活中的伴侣,我们是不喜欢与强烈的光线打交道的,因为强光对人身体是有害的,为了大家能健康地生活与工作,设计师也想出了一个较为完美的构思,就是台灯的出现,它的出现让很多朋友们得到了满意的效果,但是生活中没有完美的东西,台灯亦不例外,这就需要我们的改进。

例如,很多时候我们并不需要让台灯处于全亮状态,有时候我们只需要微弱的光照即可,过强的光线反而会对使用者造成不必要的干扰,而且这也是对电能的一大浪费。

此外,关于开关的使用寿命,也是影响台灯的耐用性的另一个问题。

因此,本设计的指导思想就是让台灯更耐用、更好用且能够调节亮度,解决过高的亮度对使用者的干扰同时也是为了节能,以及解决普通机械开关易损坏的问题。

对于触模式台灯,手一触到台灯的感应部位灯就会自动亮,如果多触摸几下,台灯就会达到最亮的极限,这样就可以调节了台灯的亮度也避免了开关易坏导致的调节亮度易失灵的问题。

本文介绍了触摸式台灯调光电路的设计及工作过程。

本设计目的是通过设计工作熟悉触摸式调光灯电路基本构成与基本工作原理,并能将这些技术应用实际系统设计,提高自己对电路知识的认识。

一、系统工作原理本设计采用STC公司的12系列单片机为控制芯片,配合外围电路进行对触摸按键的检测及对台灯亮度和开关的控制,利用单片机产生不同占空比的PWM方波实现对灯光的亮暗控制。

此外,本设计的触控功能的实现则是利用单片机的I/O口的开漏模式且未加上拉电阻,在此模式下I/O更容易接受外界微弱的电平,更容易受到手指的干扰。

本设计中,在被设置成开漏的I/O口要在单片机读该口前将其置1,使其成为高阻状态,当I/O接口被设置到高阻输入状态时,I/O接口就是纯电平输入状态,在接口悬空时为低电平,当有手指触摸到I/O接口时,手指上的微弱电流会使I/O 接口跳变到高电平,只要读出I/O接口的电平高低就可以了解是否有触摸操作,然后加一段按键去抖程序后去调整与PWM占空比相关的数值,从而实现灯光亮度的连续可调。

二、系统硬件组成本设计中所采用的芯片有STC公司的小型封装插件式单片机STC12C2052AD、AMS1117 5.0降压稳压IC、以及若干二极管、三极管,电阻电容等元器件。

其中:2.1 控制部分STC12C2052AD单片机的引脚位置与用途如图2-1所示:图2-1 STC12C2050AD引脚图STC12C2052AD系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成复位电路其优点有以下几个方面:1.性价比高采用STC12系列单片机可以省掉复位电路、外部数据存储器(如24Cxx系列芯片),某些场合还可以省掉晶振,电路简单、价格低廉。

2.速度快STC12系列单片机为单时钟/机器周期(1T),一些指令执行速度是传统8051的24倍,最低的也是3倍。

3.安全性好目前,很难破译STC12系列单片机加密程序,加之用户数据可以保存到单片机内部,解密者很难通过用户数据分析单片机的运行状况。

4.可以直接代替8051针对传统8051单片机开发的程序,可以直接用于STC12系列单片机,无须重新编写。

在本设计中,单片机的I/O口的P3.4、P3.5、P3.7均在程序中设定为开漏模式,以连接外部触摸板来分别实现对灯光的关闭、渐亮、渐暗的控制。

单片机的P1.7口被程序设定为PWM方波输出口,用来连接驱动灯光的驱动部分。

图2-2为本设计控制部分的原理图:图2-2 控制部分原理图由于此次设计采用8V电压供电,为安全起见,单片机的输出端和接地端均与后面的驱动部分用二极管1N4148进行单向隔离,此外,本设计还预留了程序下载接口,方便日后功能的增强和对程序的调试。

2.2 驱动部分驱动部分我采取的是用NPN型功率三极管13003级联搭建成的达林顿驱动器,以实现对较大电流负载的驱动控制。

由于所使用的LED灯头内无限流电阻,且实测其全亮发光时电流高达0.5A,为防止电流过大所引起的三极管过热烧毁,因此在其负载回路串接了10Ω 2.5W的限流电阻,以牺牲较小的光照强度来换取元件的安全。

图2-3为驱动电路及LED接口的原理图:图2-3 驱动电路与LED接口其中三极管13003为NPN型硅晶体管、功率开关三极管,主要用于:日光灯、电子镇流器、充电器等高压功率开关电路。

其参数为:(TO-92封装)1.芯片面积:1.63×1.63(特制芯片)2.额定电流:1.5 A(加大电流品种)3.饱和压降低、热性能好、反向击穿电压高、漏电流小。

4.13003最大额定值如表2-1:表2-1 三极管13003最大额定值因此,用三极管13003来搭建驱动电路能为负载提供足够的电流,能使LED 发出足够的光照强度供照明使用。

2.3 电源部分本设计之初经试验发现若用单节18650锂电池供电,虽然也能正常工作(即触控调光可用),但由于三极管等驱动部分电路存在较大电压降,导致即使控制状态为全亮,但实际的照明亮度却很低。

后经试验发现采取两节18650串联成8V供电后LED及驱动部分均能正常工作(单节18650锂电池满电状态下实测电压在4.1V左右),单片机部分则用降压稳压芯片AMS1117供电,两路不同电压电路再采取适当隔离后,整个控制驱动板即能正常工作。

其供电、降压以及电源指示电路如图2-4所示:图2-4 电源及指示部分原理图其中:AMS1117是一个正向低压降稳压器,在1A电流下压降为1.2V。

AMS1117有两个版本:固定输出版本和可调版本,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1%的精度;固定输出电压为1.2V的精度为2%,其内部集成过热保护和限流电路,是电池供电和便携式计算机的最佳选择。

AMS1117参数如下:1.输入电压最大:18V2.输出电流最大:1A3.输出电压:5.0V4.功耗:5W5.输入电压最小:6.2V6.封装类型:SOT-223,SOT-897.工作温度范围:-20°C to +125°C(也有0°C to +125°C)由于本设计采取电池纯直流供电,所以可以省去AMS1117周围的滤波电容等元件及其电路连线,让整个控制板更小巧,以便能顺利装入空间不大的台灯底座,经实测,降压稳压芯片AMS1117能正常稳定工作。

三、系统软件设计系统的软件部分分为按键检测部分和PWM方波生成部分。

其中,系统的软件流程图如图3-1所示:3.1 系统流程图图3-1系统软件流程图STC12C2052AD系列单片机所有I/O口均可由软件配置成4种类型之一,如表3-1所示。

4种类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。

每个口配置2个控制寄存器控制每个引脚输出类型。

STC12C2052AD系列单片机上电复位后为准双向口(标准8051输出模式)模式。

其中P3口设定(P3.7,X,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0,无P3.6口)如下表:表3-1 STC12C2052AD I/O口配置方式在本设计中P3口的配置为P3M0=0xb0; P3M1=0xb0;即:P3.5,P3.4,P3.7为开漏输入,其余为普通双向I/O口3.2 系统程序/****************************************************************文件名:LED调光修改调试:@春阳最后修改:2015.11.17功能:触控调光台灯备注:此次设计采用定时器0生成PWM信号,另外,stc12系列头文件,type.h 则在本主程序下方****************************************************************/#include "stc12c5a.h" //stc12系列单片机总头文件,其包含各I/O口位定义#include "type.h" //见文档末尾#define FRE 22118400#define TIME_FRE 10000000 //计时1/10000000=0.0000001s=0.0001ms (此时间是用来加快LED闪烁频率)#define T0RELOAD (65536 - (FRE / TIME_FRE))/****************初始化变量**************************/volatile U32 SYS_TIME = 0;volatile U32 LED_PWM = 0;/******************************************************************** 函数名:毫秒级CPU延时函数调用:delay(?);参数:1~65535(参数不可为0)返回值:无结果:占用CPU方式延时与参数数值相同的毫秒时间备注:应用于1T单片机时i<600,应用于12T单片机时i<125********************************************************************/void delay(unsigned int a){unsignedinti;while( --a != 0){for(i = 0; i< 600; i++);}}/******************************************************************** 函数名:定时器0初始化函数调用:Timer0_Init();参数:无返回值:无结果:设置定时器0工作方式备注:********************************************************************/ void Timer0_Init(){TMOD &= 0XF0;TMOD |= 0X01; //定时器0的16位计数方式TH0 = T0RELOAD / 256;TL0 = T0RELOAD % 256;AUXR |= 0X80; // 计数器0时钟为Fosc,即1TPT0 = 1; // 定时器0优先级控制位, 1 为高优先级0 为低优先级EA = 1; //开总中断ET0 = 1; //开定时器0中断TR0 = 1; //启动定时器0}/******************************************************************** 函数名:主函数调用:无参数:无返回值:无结果:程序开始处,无限循环备注:触控调光台灯主程序,包含按键检测及占空比调节********************************************************************/ void main(){Timer0_Init();P3M0=0xb0; //P3口配置:P3.7,P3.5,P3.4为开漏输入,其余为普通双向I/O 口P3M1=0xb0;while(1){P34 = 1; //p3.4置为开漏高阻态if(P34 == 1) // KEY1 直接关灯键{delay(2); //延时消抖if(P34 == 1){LED_PWM = 0; // 熄灭LED}}P35 = 1; //p3.5置为开漏高阻if(P35 == 1) // KEY2 按键一直按着,LED逐渐变亮{delay(2); //延时消抖if(P35 == 1){if(LED_PWM < 100)LED_PWM ++; //灯光渐亮}}P37 = 1; //p3.7置为开漏高阻if(P37 == 1) // KEY3 按键一直按着,LED逐渐变暗{delay(2); //延时消抖if(P37 == 1){if(LED_PWM >0)LED_PWM --; //灯光渐暗}}}}/******************************************************************** 函数名:T0定时器中断服务程序调用:无参数:无返回值:无结果:提供PWM波输出I/O口的电平翻转备注:********************************************************************/ void Timer0_Routine() interrupt 1{TH0 = T0RELOAD / 256;TL0 = T0RELOAD % 256;SYS_TIME ++;if(SYS_TIME < LED_PWM){P17 = 1; //点亮LED}else{P17 = 0; //关闭LED}if(SYS_TIME > 100){SYS_TIME = 0;}}/****************************** type.h ***************************/#ifndef _TYPE_H_#define _TYPE_H_typedef unsigned char U8;typedef signed char S8;typedef unsigned int U16;typedef signed int S16;typedef unsigned long U32;typedef signed long S32;#endif四、总结与体会经过一段时间的焊接与调试,总算把台灯制作完成,期间也经历过各种意想不到的问题。

相关文档
最新文档