51单片机C语言程序设计实战:LED控制案例解析

需积分: 5 0 下载量 6 浏览量 更新于2024-07-01 收藏 1.8MB DOC 举报
"基于51单片机的C语言程序设计实训100例" 这篇文档主要介绍了如何使用C语言编写程序来控制51系列单片机,实现不同的LED灯效果。51单片机是一种广泛应用的微控制器,其内部集成了CPU、RAM、ROM等基本组件,常用于嵌入式系统开发。C语言因为其结构清晰、可移植性好,成为了编写单片机程序的常用语言。 在这些实例中,我们看到了几个基本的LED控制程序: 1. **闪烁的LED**:这是最基础的程序,通过定义一个延时函数`DelayMS`,使得LED按照设定的时间间隔交替亮灭。这里的`P1^0`表示P1口的第0位,也就是连接LED的引脚。`while(1)`创建了一个无限循环,确保程序持续运行。 2. **从左到右的流水灯**:这个程序在P0口的8个LED上实现了走马灯效果,通过调用`_crol_`函数实现数值的左循环移位,每次循环将P0口的最低位移到最高位,从而达到逐个点亮LED的效果。 3. **8只LED左右来回点亮**:这个例子在P2口的8个LED上实现了来回滚动的效果。程序先用`_crol_`函数使LED向左移动,然后用`_cror_`函数使LED向右移动,形成了连续的滚动感。`for`循环控制了移动的次数。 4. **花样流水灯**:虽然这部分内容不完整,但可以推测这个程序会实现更复杂的LED灯效果,可能涉及到不同顺序或模式的LED灯变化。 这些实例展示了如何使用C语言和51单片机的寄存器操作来控制硬件。`#include<reg51.h>`包含了51单片机的寄存器定义,而`#include<intrins.h>`则提供了内联汇编函数的支持,如`_crol_`和`_cror_`,它们是C语言对位操作的扩展,用于位循环左移和位循环右移。 学习这些实例,可以帮助初学者理解单片机的硬件接口、C语言编程以及中断、定时器等概念。在实际应用中,这样的程序可以被扩展到更复杂的系统,例如传感器数据采集、电机控制、通信协议实现等。同时,这些基本技巧也为学习其他类型的单片机和嵌入式系统打下了坚实的基础。
2023-02-27 上传
电子技术综合设计 设计题目:__基于51单片机的报警器设计_______ 成绩:_________________________ 班级:电气工程与自动化2007-3班 学号:__ _______________________ 姓名:__ ______________________ 基于51单片机的报警器设计 摘要: 随着经济的发展和人民生活水平的提高人们对财产安全的要求也越来越高,报警 器在人民生活中发挥了越来越重要的作用,单片机作为一种可编程嵌入式微机 ,可以利用其通过软件实现设定的功能,该设计就是利用单片机的可控脉冲发 生功能实现光信号变化转换为报警信号。 关键词:防盗报警器 MCS-51 LM386功率放大器 光控开关 引言: 报警器,防盗报警器,是对用于发生警情、危险、紧急情况等状况下以声音、光线、气压 等形式发出警报的电子产品的统称。随着科技 的进步,机械式报警器越来越多地被先进的电子报警器代替,经常应用于系统故障、安 全防范、交通运输、医疗救护、应急救灾等领域,与社会生产、生活密不可分。 防盗报警系统通常由:探测器(又称报警器)、传输通道和报警控制器三部分构成。 报警探测器是由传感器和信号处理组成的,用来探测入侵者入侵行为的,由电子和机械 部件组成的装置,是防盗报警系统的关键,而传感器又是报警探测器的核心元件。采用 不同原理的传感器件,可以构成不同种类、不同用途、达到不同探测目的的报警探测装 置,单片微型计算机,通常简称为单片机,也经常缩写为MCU,它采用大规模集成电路技 术把微处理器和随机存取数据存储器,只读程序存储器,输入输出电路以及定时计数器 。串行通信口,时钟电路。脉冲调制电路。模拟多路转换器,AD转换器等电路集成到单 独的一块芯片上,构成一个最小的完善的计算机系统,这些电路能在软件的控制下单独 。准确,迅速,高效的完成程序设计者现规定的任务。因为由单片机构成的电路玩玩具 有体积小,成本低,功能强,可靠性高,功耗低,电路简洁,开发和改进容易等等一系 列有点,因此就有优异地性价比,从而使它在多方面得到了越来越多的使用,本次设计 就是基于单片机的报警器设计。 报警器主要元器件介绍 1.MCS-51单片机 现在市场上使用的单片机有很多种类,本设计采用MCS-51单片机。 MCS-51单片机是美国IIntel公司于1980年推出的产品,由于MCS- 51单片机优异的性能和低廉的价格,使其在各方面得到了广泛的应用,至今仍经久不衰 ,MCS-51的主要功能如下: 1. 8bit字长CPU,包含了硬件乘除法器以及布尔处理器。 2. 4KB程序存储器(ROM) 3. 128的数据处理器(RAM) 4. 4组8bit的并行口,共32条I/O口线 5. 111条命令,大部分为单字节指令。 6. 21个专用寄存器 7. 2个16bit可编程定时、计数器 8. 5个中断源,2个优先级 9. 一个全双工串行通信口 10. 外部数据存储器寻址空间为64KB 11. 外部程序存储器寻址空间为64KB 12. 逻辑操作位寻址功能 13. 40引脚双列直插(DIP)封装 14. 单一+5V电源 MCS- 51地址线宽为16条,即外部数据存储器和程序存储器的寻址范围达到64KB,同时具备I/ O口访问能力。此外,MCS- 51采用模块化结构,可方便的增删一个模块就可派生出引脚和指令兼容的新产品,从而 容易使产品形成系列化。MCS- 51的指令系统也比较完善,指令系统中包含了全面的数据传送指令,完善的算术和逻辑 运算指令,方便的逻辑操作和控制指令对于编程来说,是相当灵活和方便的。MCS- 51单片机的工作频率为2—12HZ,当振荡频率为12MHZ时,一个机器周期为1us 本次设计采用的就是这种频率,另外MCS- 51中集成了完善的各种中断源,可以设定不同的优先权,用户可以十分方便的控制和使 用其功能,防盗报警器的设计很大程度上就是以这种功能为基础。 2.功率放大电路芯片LM386 LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品 。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容 ,便可将电压增益调为任意值,直至200。输入端以地位参考,同时输出端被自动偏置到 电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池 供电的场合。 LM386的封装形式有塑封8引线双列直插式和贴片式。下图为该芯片基本原理图和元件图 特性(Features): * 静态功耗低,约为4mA,可用于电池供电。 * 工作电压范围宽,4-12V or 5-18V。 * 外围元件少。 * 电压增益可调,20-200。 * 低失真度。 基于以上特征,该芯片很适合本次设计要求,采用
2023-02-27 上传
基于51单片机的多路温度采集控制系统设计 言: 随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中 扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系 统的设计与研究有十分重要的意义。 本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本 设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传 感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后 ,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显 示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过 进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。 我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电 路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度 多路温度采集 驱动电路 正文 : 1、温度控制器电路设计 本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS 164、数码管、和LED显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压 值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7- D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS 164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。89C51的P2 .0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地 址为F0FFH。输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动 指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。当 温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2 灭、LED3亮、LED4灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、 LED2亮、LED3灭、LED4灭。温度继续下降,当温度降到下限温度值时,p1.0信号停止输 出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。当外设电路停止工作 后,温度开始上升,接着进行下一工作周期。 2. 温度控制器程序设计 本软件系统有1个主程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温 度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进 制转换子程序METRICCON及数码管显示子程序DISP。 1. 主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 2. 定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户 可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模 数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机, 然后在调用温度计算子程序CALCU,驱动控制子程序DRVCON,十进制转换子程序MERTRIC CON,温度数码显示子程序DISP。 3. 温度采集及模数转换子程序ADCON 该子程序进行温度采样并将其转换为8位数字量传送给89C51的P0口。采样得到的温度 数据存放在片内RAM的20H单元中。 4. 温度计算子程序CALCU 根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在DATATAB数据表中,由 于篇幅关系,本程序只给出0- 49 的温度数据。一个温度有两个字节组成,前一字节为温度值,后一字节为该温度所对 应的热敏电阻上的电压的数字量。根据采样值,通过查表及比较的方法计算出当前的温 度值,并将其存入片内RAM的21H单元。采用查表法计算温度值时为了克服热敏电阻的阻 值——温度特性曲线的非线性,提高测量精度。 5. 驱动控制子程序DRVCON 该子程序调节温度,当温度高于上限温度时(本程序设为30 ), P1.0输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为25 ),P1.0停止输出,温度上升,周而复始;工作状态有LED1-LED4指示。 6. 十进制转换子程序METRICCON 将存放于内部RAM21H单元的当前温度值得二进制数形式转换为十进制数(BCD码)形式 ,以便输出显示,转换结果存放在片内RAM的32H单元(百位)、31H(十位)、30H单元 (个位)。 7. 数码显示子程序DISP 该子程序利用89C51串口的方式0串行移位寄存器工