本文介绍一种用AT89S52单片机构成的“温度、时钟显示仪”,该电路硬件结构简单,程序简练,成本低廉,使用灵活,非常适合对产品增加辅助功能。
1.电路的主要功能和特点
(1)测试室内温度和显示当前时间。
(2)时钟芯片和模数转换芯片都采用串行接口方式,占用MCL,端口较少。
(3)作为工业上的辅助功能,程序占用单片机的内部资源较少。
(4)采用专用时钟芯片,并且合理的电源设计使得电路具有较强的抗干扰能力。
(5)程序均采用模块化方式编写,方便后期维护更新。
2.电路硬件
(1)电源电路(见图1)。工业控制中的干扰在所难免,此电源电路采用常见的7805作为稳压,笔者作了简单改进一在电路中加了共模扼流圈,利用共模扼流圈的漏电感产生适量的差模电感,起到对差模电流的抑制作用。读者在设计时要注意控制共模扼流圈的寄生电容,否则对高频干扰的隔离效果很差。共模扼流圈的匝数越多,寄生电容越大,高频隔离的效果越差。
(2)功能电路(见图2)
AT89S52单片机芯片U1作为本电路的MCU,上电自动复位以及时钟电路均采用简易装置。
①液晶显示12232:是表示显示122列32行,由两片0713作为点阵驱动器(一片0713芯片,驱动61列32行),故引脚端有片选信号CS1和片选信号CS2。第8个引脚(A0),是数据/指令选择端,高电平时把数据DO~D7(9~16脚)送入显示RAM,低电平时把数据DO~D7送入指令执行器。
②时钟芯片BL5372:部分手机电路就是利用BL5372作为时钟模块,该芯片采用I2C接口协议,最高传输速率是400kbit/s,在成功完成读写信号后内嵌的字地址寄存器地址会自动增加。要注意的是FC接口的SCL、SDA引脚往往都是开漏电路,所以在功能实现时要接上10k的上拉电阻。该时钟芯片有自动闰年调节功能,功耗电流400NA/3.6V,其应用范围较广,相当多的电池耗电设备都采用该电路,其中时钟芯片BL5372与PCF8563有异曲同工之处(只需更改器件地址和时间寄存器地址)。
③AD转换芯片ADC0832:工控设备在室内温度测量时,对A/D的转换速率、转换精度要求并不高,同时对MCU的端口使用尽量要少,故选择串行输出且性价比合理的ADC0832作为转换模块,硬件电路采用A/D转换的典型接法,利用热敏电阻的阻值变化,分压后获得不同模拟量,引脚D1是输入模拟通道IN0、IN1的选通引脚(D1为0选通IN01通道、Dl为1选通IN1通道),转换后的数字量伴随着8个CLK脉冲的下降沿,在DO引脚串行输出8位的数据。
④温度传感器:采用MF系列的PTC热敏电阻。
(3)程序介绍
本程序使用C语言编写,编写的总体思路是:在液晶显示器的固定位置显示特定文字,同时把转换后的时钟、温度数据经过查表显示在相应的位置,这样程序可分为液晶显示、时钟显示、温度显示3大模块,具有调用灵活、后期修改方便等特点。主程序的流程如图3所示。开机上电复位后,程序对89S52(MCU)、12232(LCD)初始化后,期间是一个不断读取BL5372(时钟芯片)和ADC0832(模数转换)的过程,编制程序均采用模块化调用方式,笔者在程序中已经对各个模块化程序标注详细注释,其中子程序LCD_Show_tAB的作用是预先定义显示文字的内容表,方便后期显示文字的更改。
编写时钟程序时,BL5 372的I2C接口有三种读数据方式,笔者采取的读数据模式如下:
其中:
写驱动器模式的目的是使单片机选中该时钟芯片,BL5372的器件地址是0l10010+R/W(R时为1,W时为0),由于我们当前是写指令,所以送驱动器地址0x64。
读驱动器模式的目的是读取时钟芯片的内容后,经单片机处理,送液晶显示器。BL5372的I2C协议规定,高四位为内部寄存器地址,低四位为传输模式(读状态时,定义传输模式为“0100”),由于秒的内部地址是(OH),所以在读秒地址的时候应写入0x04H。
应答信号:在I2C接口协议中规定主器件收发每个字节后产生一个时钟应答脉冲,由于BL5372内部已嵌入I2C接口电路,所以当该时钟芯片接受从单片机发送来的一个字节信号时,自动产生ACK应答信号,但由于80C51MCU并没有I2C接口,所以当完成读取时钟芯片内一个字节时,BL5372会把SDA状态保持为高电平,这时我们需要提供一个ACK应答信号,具体做法是接收完一个字节后,人为产生一个SDA的低电平。
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 开关电源设计入门与实例解析
来源:下载中心
- 雷达信号处理和数据处理技术
来源:下载中心
- 二极管工作原理
来源:大学堂
- 麻省理工公开课:电路和电子学
来源:大学堂
- 基尔霍夫定律:支路、节点、回路和网孔
来源:电路图
- 电阻的串联、并联及混联电路介绍及作用
来源:电路图
推荐帖子 最新更新时间:2024-11-13 08:49
- 《电子懒人的基础硬件电路图讲解》68例
- 《电子懒人的基础硬件电路图讲解》68例 包含了简单的,基础的单元电路图。积累这些基础的电路图,对分析一个复杂的电路很有帮助。因为一个复杂的电路图可以按照功能来划分成不同的模块,再对模块进行分解成不同的单元电路。 模拟电路和数字电路中的基础电路一般包括这些:直流稳压电源电路;
- jieke6下载中心专版
- 求助:建立一个窗口 并建三个按钮 为什么按钮不显示?
- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) { static TCHAR szAppName =TEXT( test );
- heima3041嵌入式系统
- 构建可由电池供电运行数十年的楼宇自动化系统
- 凭借业界领先的低功耗MSP微控制器,德州仪器(TI)一直致力于帮助工程师解决开发和构建 楼宇自动化应用 的各种难题。TI的MSP MCU不仅拥有极低的功耗,还具备实现小型化的高度模拟集成,同时包含了参考软件和行业标准通信协议。那么,这些优势和特性对于楼宇自动化的设计究竟意味着什
- maylove微控制器 MCU
- avr studio4 寄存器问题
- 请问定义的变量a,在avr studio4中怎样能看到a中的数据呢?很着急,希望好心人帮忙。先谢谢啦! avr studio4 寄存器问题
- jiayidan6Microchip MCU
- 常见的过电压保护器件
- 对于 电路保护 ,有多种过电压保护元件可用,包括陶瓷气体放电管 (GDT)、 半导体 放电管 ( TSS )和瞬态电压抑制(TVS)二极管。
- langtuodianzi分立器件
- AD15中多层板layer stack manage设置?
- 以前画多层板的时候打开layer stack manage是这样的 直接可以在上图出标记蓝色的地方改电气特性,而现在打开是这样的 这么设置呢?比如我想让我的GND网络连接到我的gnd内电层?这么设置呢? AD15中多层板layer stack manage设置? @soso
- logitech66PCB设计
- 求助:stm32的AD参考电压问题
- ADXL345采用I2C模式与tms320vc5509A接口
- S3C2410 与 S3C2440有何区别。附嵌入式感悟
- EDN51试验版不能正常工作
- 请问TPS65051RSMR 用在那些产品上比较好。为什么?
- No source available for "abort() at 0xc280" 怎么改错啊
- FPGA边缘检测谁有没有有经验的朋友啊?求助
- 刚刚接触stm32,如何入手,怎么去学呢?求帮助!
- WINCE 5.0系统问题
- TI通用质量指南
- 汇总:RCSN玩雅特力新品AT32F437
- 一种基于Matlab的DSP调试及直接代码生成方法
- 分享个程序在外部nor flash运行全套资料
- 各位高手,三极管我列了两个公式,请帮忙看下对不对
- ce驱动怎么测试
- MSP430的ADC参考电压
- MSP430通过耳机接口与手机通信——接收方案的实现 附件
- of_iomap函数在内核中返回值是NULL,这是怎么通过函数返回值得到映射后的地址的?
- Altera系列FPGA芯片IP核详解 .pdf
- X-NUCLEO-53L4A3 飞行时间 (ToF) 传感器 [开箱贴+ 资源整合 + 代码测试]
- SPT7720,8 位模数转换器,在双 DEMUX 模式下工作时的采样率为 200 MSPS
- LT1117IST-3.3 电池充电器的典型应用
- 【课程设计】基于STC8的红外遥控器
- RT8561A 1MHz、20mA 满量程电流模拟调光控制的典型应用
- LT3970IDDB-3.3 3.3V 降压转换器的典型应用
- LT1308BIS8 单节锂离子电池至 5V/1A DC/DC 转换器的典型应用电路
- ESP32_Arduino_UNO_Type-C
- EVAL-ADF7021DB9Z,基于 ADF7021 169 MHz ISM 频段收发器的子板
- LT1764EQ 并联 LDO 稳压器以实现更高输出电流的典型应用
- 单片机控制 交流220