设为首页 - 加入收藏
  • 热门搜索: 心得体会 施工合同
  • 当前位置:首页 > 范文大全 > 五号文库

    利用51单片机、LCD显示器设计一个单片机显示系统,要求在液晶上显示“HELLO,PROTUS”

    栏目:五号文库 来源:网络 作者:花开彼岸 时间:2024-10-11 13:07:30 下载.docx文档

    第一篇:利用51单片机、LCD显示器设计一个单片机显示系统,要求在液晶上显示“HELLO,PROTUS”

    电子设计应用软件训练总结报告

    第1章 任务说明

    1.1 设计任务

    (1)利用51单片机、LCD显示器设计一个单片机显示系统,要求在液晶上显示“HELLO,PROTUS”。

    (2)按照设计任务在Proteus 6 Professional中绘制电路原理图;

    (3)根据设计任务的要求编写程序,画出程序流程图,并在Proteus下进行仿真,实现相应功能。

    1.2系统框图

    根据设计的要求使用16位LCD显示“HELLO,PROTUS”。设计的核心元件是AT89C51单片机,AT89C51是集成了运算电路,控制电路,存储器,中断系统,定时器/计数器以及输入/输出电路等一身的可编程芯片。采用复位电路进行上电复位,时钟振荡电路中选用12MHz的石英晶体作为晶体振荡器,其中补偿电容采用30pF的瓷片电容。

    图1 系统框图

    电子设计应用软件训练总结报告

    第2章 原理图绘制说明

    总体而言,一个完善的系统最重要的是稳定,精确,设计简单,修护容易,成本低,体积小。满足以上条件的系统我们都可以说是完善的系统。因此,我在设计中选用了一些比较成熟的器件,这些器件都经过时间的考验,能稳定的工作,同时,价格也相对便宜。下面对原理图中主要的硬件进行简单介绍。

    2.1 AT89C51的基本概述

    AT89C5l单片机,是一种低功耗、高性能的、片内含有4KB Flash ROM的8位CMOS单片机,工作电压范围为2.7~6V(实际使用+5V供电),8位数据总线。它有—个可编程的全双工串行通信接口,能同时进行串行发送和接收。AT89C51具有4K并行可编程的非易失性FLASH程序存储器,可实现对器件串行在系统编程ISP和在应用中编程(IAP)。在系统编程ISP(In-System Programming)当MCU安装在用户板上时允许用户下载新的代码在应用中编程。IAP(In-Application Programming)MCU可以在系统中获取新代码并对自己重新编程,这种方法允许通过调制解调器连接进行远程编程。片内ROM中固化的默认的串行加载程序Boot Loader允许ISP通过UART将程序代码装入Flash存储器,而Flash代码中则不需要加载程序对于IAP用户程序通过使用片内ROM中的标准程序对Flash存储器进行擦除和重新编程。

    U?******81920P10/TP11/TP12P13P14P15P16P17RESETRXDTXDINT0INT1T0T1WRRDX2X1GNDP89C51RAEA/VPALE/PPSEN313029VCCP00P01P02P03P04P05P06P***43332P27P26P25P24P23P22P21P***221图 2 AT89C51引脚图

    引脚功能说明: VCC:电源电压。GND:接地。

    电子设计应用软件训练总结报告

    P0 口:一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在Flash编程中,P0口接收指令字节;在校验时,输出指令字节,校验时,要求外接上拉电阻。

    P1口:一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路。

    P2口:一个带有内部上拉电阻的8位双向I/O口,P2 口的输出缓冲级可驱动4个TTL逻辑门电路。

    P3口:一组带有内部上拉电阻的8位双向I/O口,P3 口的输出缓冲级可驱动4个TTL逻辑门电路。第二功能如1所示:

    表1 P3口的引脚的第二功能

    端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

    第二功能 RXT(串行输入口)TXD(串行输出口)INT0(外中断0)INT1(外中断1)T0(定时/计数器0)T1(定时/计数器1)WR(外部数据存储器写选通)RD(外部数据存储器读选通)RST:复位输入。在振荡器工作时,该引脚出现两个机器周期以上的高电平将使单片机复位。

    PSEN:程序储存允许输出是读通信号。当AT89C51由外部程序存储器取指令(数据)时,每个机器周期两次PSEN有效。

    EA/VPP:外部访问允许。要使CPU仅仅访问外部程序存储器,EA端必须保持低电平。如果EA端为高电平,接Vcc端,CPU则执行内部程序存储器中的指令。

    XTAL1:振荡器反向放大器及内部时钟发生器的输入端。XTAL2:振荡器反向放大器输入端。单片机的注意事项:

    电子设计应用软件训练总结报告

    1.用表测电压是不是在5v+1.5v到5v-1.5v之间,因为电压太大会给单片机工作造成硬件的损害,电流要求是(1.5A到5A)安全电流。

    2.确保电压输入,电流的安全情况下。先断电源,再插89c51芯片测量各个端口电压。

    3.在各个端口的电压在调试相关的用电器件达到了规定的数值,然后就可以编程了。

    4.要是出现电压为0v的情况我们就要首先查看有没有虚焊的现象。5.在P0口加上拉电阻(10K)目的是提供单片机的内部电压。单片机P0口内部是由CMOS管构成的,电压偏低,不能使单片机P0口正常工作。

    2.2 LCD显示模块

    字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。一般1602字符型液晶显示器实物如图3所示:

    1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。

    图3 1602LCD尺寸图

    2.3复位电路模块

    为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5V,4.75到5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

    当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平

    电子设计应用软件训练总结报告

    时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。复位电路如图2-6所示。电阻R2和C1构成上电复位电路。按下S1可实现手动复位。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值。

    图4 复位电路模块

    2.4 振荡电路模块

    不需要外加信号就能自动地把直流电能转换成具有一定振幅和一定频率的交流信号的电路就称为振荡电路或振荡器。这种现象也叫做自激振荡。或者说,能够产生交流信号的电路就叫做振荡电路。

    单片机芯片内部设有一个反向放大器所构成的振荡器,18脚和19脚分别为振荡电路的输入端和输出端,时钟由内部电路产生,定时器件为石英晶体和电容组成的并联谐振回路,电容C1,C2的取值在 10-40pf。

    图5 振荡电路模块

    电子设计应用软件训练总结报告

    2.5 系统电路设计

    系统电路图如下图所示,其中单片机的P1口用来对LCD进行数据的发送,P3.6口用来控制LCD的读写操作,P3.7口用来控制LCD的使能信号。

    图6 系统电路图

    电子设计应用软件训练总结报告

    第3章 流程图绘制以及说明

    LCD显示程序设计如图7所示,将48H-55H单元设置成LCD显示缓冲区,分别存放LCD要显示的数据“HELLO PROTEUS!”,将LCD的代码存于TABL E列表中。当调用显示程序时,根据预先记录的个数决定LCD显示的位数。这样就得到了显示程序的入口。

    开始清除LCD的屏幕发写指令程序延时查忙发写命令结束

    图7 显示程序设计流程图

    电子设计应用软件训练总结报告

    第4章 Proteus仿真说明

    在程序设计方法上,模块化的程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计,编程和调试,然后组成起来。这种方法便于设计和调试,容易实现多个模块共存,但各个模块之间的连接有一定的难度。

    (1)程序功能模块化的优点:单个模块结构的程序功能单一,易于编写、调试和修改;便于分工,从而可使多个程序员同时进行程序的编写和调试,加快软件研制进度;程序可读性好,便于功能扩充和版本升级;对程序的修改可局部进行,其他部分可以保持不变;对于使用频繁的子程序可以建立子程序库,便于多个模块调用。

    (2)在进行模块划分时,应首先弄清楚每个模块的功能,确定其数据结构以及与其他模块的关系;其次是对主要任务进一步细化,把一些专用的子任务交由下一级即第二级子模块完成,这时也需要弄清楚它们之间的相互关系。按这种方法一直细分成易于理解和实现的小模块为止。

    模块的划分有很大的灵活性,但也不能随意划分。划分时应遵循下述原则:(1)每个模块应具有独立的功能,能产生一个明确的结果,这就是单模块的功能高内聚性。

    (2)模块之间的控制耦合应尽量简单,数据耦合应尽量少,这就是模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换(传递)方式、交换量的多少及交换的频繁程度。

    (3)模块长度适中。模块语句的长度通常在20条至100条的范围较合适。模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;过短则模块的连接太复杂,信息交换太频繁,因而也不合适。

    4.1 Proteus介绍

    电子设计应用软件训练总结报告

    Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2024年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

    该软件的特点:

    (1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

    (2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

    (3)目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

    (4)支持大量的存储器和外围芯片。总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真

    51、AVR、PIC。

    4.2 Proteus仿真电路图

    电子设计应用软件训练总结报告

    图8 Proteus仿真电路图

    第5章 体会及合理化建议

    近年来,随着电子技术飞速的发展,出现了各式各样,各种型号的单片机,但是51单片机是所有单片机的基础,只有学好51系列单片机才能更好的学习更高端的单片机。

    由于知识和经验方面的不足,本设计还存在不足的地方,本人还要不断学习相关知识和查阅资料,使系统结构和功能上不断完善。

    参考文献

    [1] 楼然苗,李光飞.51系列单片机设计实例[M].北京:北京航空航天大学出版社,2024.

    [2] 松井邦彦,梁瑞林.传感器应用技术141例[M].北京:科学出版社,2024,5:39-44.

    电子设计应用软件训练总结报告

    [3] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,1994. [4] 张洪润,张亚凡.传感器技术与应用教程[M].北京:清华大学出版社,2024. [5] 张毅刚,刘杰.AT89S52单片机原理及应用[M].哈尔滨:哈尔滨工业大学出版社,2024.

    [6] 黄河,郭纪林.单片机原理及应用[M].大连:大连理工大学出版社,2024. [7] 刘灿军.实用传感器[M].北京:国防工业出版社,2024. [8] 何希才.传感器及其应用[M].北京:国防工业出版社,2024. [9] 陈雪丽.单片机原理及接口技术[M].西安:化学工业出版社,2024.

    附录1

    电子设计应用软件训练总结报告

    第二篇:单片机课程设计报告LCD显示温度

    《单片机原理与应用》

    课程设计报告

    题 目:LCD数字式温度湿度测量计 专 业:自动化 班 级:A1332 学 号:10 姓 名:曾志勇 指导老师:查兵

    2024-06-08

    目 录

    1.设计题目、要求及分工..................................1 1.1.设计要求.........................................1 1.2.分工.............................................1 2.系统设计方案论证与选择................................1 3.系统硬件电路设计......................................1 3.1.单片机的选择......................................1 3.2.温度传感器电路的设计..............................2 3.3.LCD1602显示设计..................................3 4.系统软件设计..........................................4 4.1.主程序...........................................4 4.2.读出温度子程序....................................6 5.系统仿真调试结果记录及分析...........................11 6.总结.................................................13 参考文献................................................14

    设计题目、要求及分工

    1.1.设计要求

    (1)熟悉掌握单片机的中断,定时器及各并行口的应用;(2)熟悉掌握单片机温度湿度的测量方法;(3)利用温度传感器及单片机完成对温度的检测;(4)掌握将检测的温度信号转换为数码管显示的数字信号;

    (5)设计一个简单数字温度计,能够测量通常环境下的温度,能够实现零下温度的测量,能够测量小数,精度为0.01度。

    1.2.分工

    经过我和队友的商讨,为了能最大发挥各自的长处。我主要负责程序的编写与单片机的调试。他主要负责一些相关资料文献的查找与课程设计报告。

    1.系统设计方案论证与选择

    在日常生活和生产中,我们经常要测量环境的温度湿度,传统的测量方式采用水银温度计和干湿球湿度计查算法,存在着误差大,操作使用不便等问题,采用工业级测量仪表价格昂贵。采用AT89C51和温度传感器等构成的LCD数字式温度湿度测量计精度高且价格便宜。

    由于本设计是测温电路,可以使用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行A/D转换,将数据传入80C51单片机中,单片机处理后,通过LED显示出当前实测温度。

    2.系统硬件电路设计

    2.1.单片机的选择

    单片80C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统。

    本次设计需要注意的几个端口: P0口(39—32):是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。P3口(10—17):是一组带有内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。作输出端口时,被外部拉低的P3口将用上拉电阻输出电流。

    2.2.温度传感器电路的设计

    DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

    64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图2.3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义:低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率S18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒,可以将检测到的温度直接显示到80C51的两个数码管上。

    高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

    当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单 片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB式表示。

    当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。

    DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。

    在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。

    另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

    图 2-1 温度传感器电路

    2.3.LCD1602显示设计

    图 2-2 LCD显示电路图

    LCD1602显示流程:

    图3-3 流程图

    3.系统软件设计

    3.1.主程序

    主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1s进行一次。主程序流程图如图4.1所示:

    #include #include“lcd.h” #include“temp.h” void LcdDisplay(int);void main(){ LcdInit();

    //初始化LCD1602

    //写地址 80表示初始地址 LcdWriteCom(0x88);LcdWriteData('C');while(1){ LcdDisplay(Ds18b20ReadTemp());Delay1ms(1000);//1s钟刷一次 // } }

    /* 函数名 : LcdDisplay()* 函数功能

    : LCD显示读取到温度/ void LcdDisplay(int temp)//lcd显示

    { unsigned char datas[] = {0, 0, 0, 0, 0};//定义数组

    float tp;if(temp< 0)

    //当温度值为负数

    {

    LcdWriteCom(0x80);

    //写地址 80表示初始地址 LcdWriteData('-');//显示负

    temp=temp-1;

    temp=~temp;

    tp=temp;

    temp=tp*0.0625*100+0.5;} else {

    LcdWriteCom(0x80);

    LcdWriteData('+');

    tp=temp;

    temp=tp*0.0625*100+0.5;

    } datas[0] = temp / 10000;datas[1] = temp % 10000 / 1000;datas[2] = temp % 1000 / 100;datas[3] = temp % 100 / 10;datas[4] = temp % 10;LcdWriteCom(0x82);

    //写地址 80表示初始地址

    LcdWriteData('0'+datas[0]);//百位 LcdWriteCom(0x83);

    //写地址 80表示初始地址

    LcdWriteData('0'+datas[1]);//十位 LcdWriteCom(0x84);

    //写地址 80表示初始地址

    LcdWriteData('0'+datas[2]);//个位 LcdWriteCom(0x85);

    //写地址 80表示初始地址 //显示 ‘.’

    //写地址 80表示初始地址 LcdWriteData('.');LcdWriteCom(0x86);

    LcdWriteData('0'+datas[3]);//显示小数点 LcdWriteCom(0x87);

    //写地址 80表示初始地址

    } LcdWriteData('0'+datas[4]);//显示小数点

    图 3-1主程序流程图

    3.2.读出温度子程序

    读出温度子程序的主要功能是读出RAM中的9字节。在读出时必须进行CRC 校验,校验有错时不能进行温度数据的改写。读出温度子程序流程图如下图所示:

    #include“temp.h” void Delay1ms(uint y){ uint x;

    } uchar Ds18b20Init(){

    uchar i;DSPORT = 0;i = 70;

    //将总线拉低480us~960us for(;y>0;y--){ for(x=110;x>0;x--);} while(i--);//延时642us DSPORT = 1;

    //然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低

    } void Ds18b20WriteByte(uchar dat)i = 0;while(DSPORT)//等待DS18B20拉低总线 {

    } return 1;//初始化成功 i++;if(i>5)//等待>5MS { } Delay1ms(1);return 0;//初始化失败 { uint i, j;for(j=0;j<8;j++)

    {

    DSPORT = 0;i++;DSPORT = dat & 0x01;//然后写入一个数据,从最低位开始 i=6;while(i--);//延时68us,持续时间最少60us DSPORT = 1;

    //然后释放总线,至少1us给总线恢复时间才能接 //每写入一位数据之前先把总线拉低1us 着写入第二个数值

    } uchar Ds18b20ReadByte(){

    uchar byte, bi;uint i, j;for(j=8;j>0;j--){

    DSPORT = 0;//先将总线拉低1us i++;DSPORT = 1;//然后释放总线 i++;i++;//延时6us等待数据稳定

    bi = DSPORT;//读取数据,从最低位开始读取

    /*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉 } dat >>= 1;那位补0。*/ byte =(byte >> 1)|(bi << 7);

    } i = 4;//读取完之后等待48us再接着读取下一个数

    while(i--);

    }

    return byte;void Ds18b20ChangTemp(){

    Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);

    //跳过ROM操作命令

    Ds18b20WriteByte(0x44);//温度转换命令

    //等待转换成功,而如果你是一直刷着的话,就不// Delay1ms(100);用这个延时了 } void Ds18b20ReadTempCom(){ Ds18b20Init();

    } int Ds18b20ReadTemp(){ int temp = 0;

    命令

    tml = Ds18b20ReadByte();tmh = Ds18b20ReadByte();temp = tmh;temp <<= 8;Delay1ms(1);Ds18b20WriteByte(0xcc);//跳过ROM操作命令 Ds18b20WriteByte(0xbe);//发送读取温度命令

    uchar tmh, tml;Ds18b20ChangTemp();Ds18b20ReadTempCom();

    //先写入转换命令

    //然后等待转换完后发送读取温度

    //读取温度值共16位,先读低字节 //再读高字节

    } temp |= tml;return temp;读出温度子程序 读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。得出温度子程序流程图如下图所示。

    图 3-2

    温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图所示。

    图 3-2

    4.系统仿真调试结果记录及分析

    硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试 由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。

    电路Isis仿真测试

    烧写程序至单片机:

    液晶显示室温为+28.06度 用手触摸DS18B20,发现温度上升为+32.75度,证明温度传感正常工作。

    5.总结

    这次课程设计,主要是以STC89C51单片机为核心的,对温度的检测与显示进行了简单的设计与阐述。因没有湿度传感器模块,所以未进行湿度检测。本次课程设计可以说是软硬结合,又以硬件为主。当今科技发展迅速,单片机开发有着光明的前景。由于单片机经济实用、开发简便等特点依然在工业控制、家电等领域占据了广泛的市场。所以我选择这样的设计课题,并且能通过此次设计来提高自己软件编制和硬件电路设计的能力。在我完成这次课程设计的过程中,当看到自己将专业知识用于解决实际的问题时,那份成就感和喜悦感是难以形容的。在这次实际的编程以及调试程序过程中,我发现自己学很多课本以外的东西。光靠自己在书本上所学过的这点知识是远远不够的,真正地认识到了工作就是学习的道理。尤其是对于编程来说,需要硬件的功底,也需要软件的能力。当程序有一点点错误时,将使整个程序无效,需要自己静下心来发现错误,改正错误,一次又一次得进行调试,锻炼了沉着踏实的心态。

    通过这次对数字温度计的设计与制作,让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真,仿真成功之后才实际接线的。

    但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。

    通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只有在经常写和读的过程中才能提高,这就是我在这次课程设计中的最大收获。这次课程设计对我来说是一次比较全面的、富有创造性和探索性的锻炼,令我深有感触,对于我今后的学习、工作和生活都将是受益非浅。

    参考文献

    (1)江世明.单片机原理与应用.上海交通大学出版社.2024;(2)朱清慧.电子线路设计、制版与仿真.清华大学出版社.2024.6;

    (3)黄同成.程序设计基础与教程(C语言).湖南人民出版社.2024.12;

    (4)王东峰等.单片机C语言应用100例[M].北京电子工业出版社,2024;

    (5)陈海宴.51单片机原理及应用[M].北京航空航天大学出版社.2024;

    (6)胡汉才.单片机原理及接口技术[M].北京清华大学出版社.1996;

    (7)高稚允,高岳.光电检测技术[M].北京国防工业出版社.1983;

    第三篇:单片机_利用键盘显示接口芯片8279显示电子钟

    利用键盘显示接口芯片8279显示电子钟

    一.实验要求

    利用8279键盘显示接口电路,做成一个电子钟。该钟使用T1作50ms的定时中断。

    利用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其有显示稳定、程序简单、不会出现误动作等特点。本实验利用8279实现显示扫描自动化。

    8279操作命令字较多,根据需要来灵活使用,通过本实验可初步熟悉使用方法。

    电子钟做成如下格式:

    XX XX XX 由左向右分别为: 时、分、秒。

    二.实验目的

    1.掌握在8031系统中扩展8279键盘显示接口的方法。

    2.掌握8279工作原理和编程方法。

    3.进一步掌握中断处理程序的编程方法。

    三.实验电路及连线

    参看实验十。

    四.实验说明

    8279通用接口芯片,根据应用需要可以在多种模式下工作,详见有关手册。

    五.实验程序框图

    Z8279 EQU 08701H;8279 状态/命令口地址 D8279 EQU 08700H;8279 数据口地址

    LEDMOD EQU 00H;左边输入 八位字符显示

    ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 2FH;扫描速率

    LEDCLS EQU 0C1H;清除显示 RAM LEDWR0 EQU 80H;设定的将要写入的显示RAM地址

    ORG 0000H AJMP START ORG 001BH;INT T1 入口地址

    AJMP INT_T1 ORG 0040H START: MOV SP,#60H LCALL INIT8279;初始化8279 MOV R3,#0H;时

    MOV R2,#0H;分

    MOV R1,#0H;秒

    MOV R6,#0H;标志 MOV TMOD,#10H MOV TL1,#00H;50 mS 的时间常数

    MOV TH1,#04CH MOV R0,#20 SETB TR1 SETB ET1 SETB EA;允许中断 WAIT: CJNE R6,#0FFH,WAIT LCALL DISPLAY MOV R6,#0 SJMP WAIT

    INIT8279:;8279初始化子程序

    PUSH DPH;保存现场

    PUSH DPL PUSH ACC LCALL DELAY;延时

    MOV DPTR ,#Z8279 MOV A,#LEDMOD;置8279工作方式

    MOVX @DPTR,A MOV A,#LEDFEQ;置键盘扫描速率

    MOVX @DPTR,A MOV A,#LEDCLS;清除 LED 显示

    MOVX @DPTR,A LCALL DELAY;延时

    POP ACC;恢复现场

    POP DPL POP DPH RET;显示字符子程序;输入: R4,位置 R5,值

    DISLED: PUSH DPH;保存现场

    PUSH DPL PUSH ACC MOV A,#LEDWR0;置显示起始地址

    ADD A,R4;加位置偏移量

    MOV DPTR,#Z8279 MOVX @DPTR,A;设定显示位置

    MOV DPTR,#LEDSEG;置显示常数表起始位置

    MOV A,R5 MOVC A,@A+DPTR;查表

    MOV DPTR,#D8279 MOVX @DPTR,A;显示数据

    POP ACC;恢复现场

    POP DPL POP DPH RET DELAY:;延时子程序 PUSH 0;保存现场

    PUSH 1 MOV 0,#0H DELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1;恢复现场

    POP 0 RET

    INT_T1:;INT_T1中断服务子程序

    PUSH DPH;保护现场

    PUSH DPL PUSH ACC PUSH PSW CLR TR1 MOV TL1,#00H;50mS 定时常数

    MOV TH1,#4CH SETB TR1 DJNZ R0,EXIT;判断毫秒=0 MOV R0,#20;DELAY 1 SECOND MOV R6,#0FFH;置秒标志

    CJNE R1,#59H,SECOND;判断秒=59 MOV R1,#99H CJNE R2,#59H,MINUTE;判断分=59 MOV R2,#99H CJNE R3,#23H,HOUR;判断时=23 MOV R3,#99H HOUR: MOV A,R3 ADD A,#1;时加1 DA A MOV R3,A MINUTE: MOV A,R2 ADD A,#1;分加1 DA A MOV R2,A SECOND: MOV A,R1 ADD A,#1;秒加1 DA A MOV R1,A EXIT: POP PSW;恢复现场

    POP ACC POP DPL POP DPH RETI;中断返回 DISPLAY: MOV A,R3 ANL A,#0FH MOV R5,A MOV R4,#6 LCALL DISLED;显示小时低位

    MOV A,R3 SWAP A ANL A,#0FH MOV R5,A MOV R4,#7 LCALL DISLED;显示小时高位

    MOV A,R2 ANL A,#0FH MOV R5,A MOV R4,#3 LCALL DISLED;显示分钟低位

    MOV A,R2 SWAP A ANL A,#0FH MOV R5,A MOV R4,#4 LCALL DISLED;显示分钟高位

    MOV A,R1 ANL A,#0FH MOV R5,A MOV R4,#0 LCALL DISLED;显示秒低位

    MOV A,R1 SWAP A ANL A,#0FH MOV R5,A MOV R4,#1 LCALL DISLED;显示秒高位

    RET

    LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F' DB 6DH,02H,08H,00H,59H,0FH,76H;'U,-,_, ,I,O,P, ' END

    第四篇:51单片机最小系统电路板设计过程

    51单片机最小系统电路板设计过程:

    一、设计需求分析:

    在这里设计51单片机最小系统电路板,首先我们给出最小系统板电路原理图:

    二、启动99SE,新建工程,命名为“mini51.ddb”

    三、绘制原理图:

    1、新建原理图(mini51.sch文件)

    2、放置元器件

    3、连接

    4、以上过程随时保存

    四、生成网络表

    五、绘制PCB

    1、新建PCB电路文件(mini51.pcb文件)

    2、设置好禁止布线层后导入网络表

    3、器件布局

    4、布线

    5、以上过程随时保存

    总结:通过上面的过程同学们了解到PCB电路板绘制的过程,首先根据设计需求得到原理电路,然后绘制电路原理图,有电路原理图得到用于PCB设计的网络表,最后进行PCB的设计。

    上面的过程只是一个简单的设计演示,实际中,每一个步骤都还有很多细节工作没有介绍,而这些工作也就是我们下面课程逐步要学习内容。

    第五篇:基于MSP430单片机的太阳能LED自行车显示系统设计论文

    摘 要:本文介绍了太阳能LED自行车显示系统的硬件构成、主要部件和器件的选型原则及系统的软件框架。在MSP430单片机系统控制下,4条LED灯条实现文字,图片的稳定显示,并且配合传感器可以进行车速检测,稳定显示等作用。整个系统充分利用了LED寿命长、光效高、无辐射与低功耗的特点,最大程度地简化了硬件电路,使系统具有较高的性价比和可靠性。

    关键词:动屏显示;自行车LED装饰;POV LED

    0 引言

    LED寿命长、光效高、无辐射与低功耗,基于太阳能LED的自行车显示系统稳定可靠、方便快捷,以自行车作为传媒载体,打破了目前市场上的广告大多通过平面报刊、电视电台、手机网络等进行宣传的传统方法,较之更有广泛的群众基础和性价比。本作品充分考虑了LED在我国的良好市场前景,以及自行车的广大群众基础,将两者完美的结合在一起,相得益彰。

    1.自行车LED显示系统简介

    本文介绍的自行车车轮LED显示系统是通过安装在自行车轮辐上的LED旋转形成较清晰画面的装置。其工作原理是:在自行车车轮上对称地安装4条LED灯条,每条灯条上有32个独立的高亮LED以及灯条外侧有一霍尔传感器,灯条上的LED采用矩阵形式使得线路简化I/O口占用较少,白天的时候太阳能电池通过TP4056充电芯片为锂离子电池充电,晚上时整个系统开始工作,LED灯条彼此配合利用人眼的视觉惰性在自行车轮辐上显示出画面来。

    自行车车轮LED显示系统结构框图如图2所示,由太阳能电池、充电电路、锂电池、电源稳压电路、MSP430单片机控制系统、LED灯条、传感器等主要部分组成。该系统具有充电过程自动调节、根据环境光强自动启动显示电路,显示画面随车轮转速自动调节等功能。

    2.系统硬件设计

    2.1 系统电源设计

    在系统的整体设计时,估算本系统的总功耗为0.264W(系统电压3.3V电流0.08A)。市面上一块50X50mm的太阳能电池,一般输出功率为0.35W(5V/0.07A),因为白天充电时间大于晚上使用时间,所以满足系统要求。充电电路白天为系统锂电池充电,同时提供太阳能电池电压信号给单片机,单片机通过辨别外界光强从而确定是否启动LED灯条。

    2.2 系统主控芯片

    主控芯片选用MSP430F149单片机,采用精简指令集(RISC)结构,数据存储器都可以参加多种运算,功能强,运行速度快,在3V工作电压主频为1MHz下最大功耗为430uA,在低功耗模式下最小功耗可以降为0.1uA,功耗极低。同时MSP430有6组I/O口满足系统需要。

    2.3 LED灯条设计

    本系统利用人眼的视觉暂留,让LED灯条快速在人的眼前形成画面。LED灯条以阵列的形式,通过本身的移动来显示文字,依靠车轮转动带动灯条移动,实现文字或图案的显示。

    在LED灯条数的选取上,以人眼的视觉暂留时间为0.1秒计自行车一般行驶的速度为20km/h,为获得良好的显示效果则需要LED显示的刷新率为0.1s也就是10次每秒,自行车轮每转一圈前进2m,自行车速v=20km/h=5.56m/s。若自行车轮周长l=2m,刷新率为 10次/秒,车速为20km/h则自行车轮安装LED灯条条数n=10*l/v,经过计算得出n为4时成本最低,效果较好。

    LED灯条采用4X4矩阵布局,在每个节点上安装两个极性相反的LED,即在一个节点的两端控制电流的方向就能控制在该节点是哪个LED点亮。用该种LED阵列可以让32个独立的LED用8根导线控制,大大减少了成本已经系统端口的占用。

    2.4 传感器设计

    为了使每一次显示的画面都能稳定,且显示的位置相对自行车固定则需要在系统上加装传感器,因为自行车轮相对自行车是旋转的,所以采用非接触式传感器--霍尔传感器,在自行车车架上安装磁铁,当霍尔传感器接近磁铁时则会有一次电平跳变,单片机检测这一电平跳变进行数据显示输出,以及进行测速和显示的调整。

    3.系统软件设计

    3.1系统主程序软件设计

    本系统由主程序、LED显示子程序和显示校正子程序组成。系统供电后进入到低功耗模式,充电电路与单片机连接,外界无阳光时停止充电,此时低电平触发单片机中断,退出低功耗模式,系统开始工作,检测LED灯条是否经过磁铁。若检测到LED灯条的传感器电平跳变时则执行LED灯条子程序。

    在LED灯条1检测到传感器信号跳变时单片机还启动内部的计数器,等到LED灯条2传来跳变信号时停止计数器,进入显示校正子程序。系统的主程序流程图如图3所示。

    3.2灯条显示子程序

    在系统进入到LED显示子程序后,从内存中读取需要显示的数据,显示数据为四组2位16进制数,对应灯条上的每一个LED。程序从LED1到LED32依次与显示数据进行比较,相同的点亮该LED。当1列LED比较完毕后进入到循环程序,循环次数越多,字的显示时间越长。通过控制循环的次数就能控制在不同的车速下都能显示出稳定的图像来。

    当循环结束后在从内存中读取下一列需要显示的数据,直到显示结束。

    3.3显示校正子程序

    因为自行车车速是实时变化的,固定方法显示的画面肯定不稳定。于是采用计算两个传感器反馈的电平信号的时差计算出当前的车速,修改灯条显示子程序内的循环变量的办法,达到校正的目的。同时当自行车车轮转速较慢或不转时,内部计数器溢出,此时系统进入低功耗模式LED灯关闭。

    4.结束语

    本系统能源利用低碳环保。太阳能光电池的安装使本系统清洁,高效,无污染,完全符合全球倡导的低碳理念。同时文字显示稳定可靠。整个系统充分利用了LED寿命长、光效高、无辐射与低功耗的特点最大程度地简化了硬件电路,使系统具有较高的性价比和可靠性。

    参考文献:

    [1] 徐开芸,汪木兰,邵宇峰,邓 乐等.可折叠便携式微型太阳能光伏电站控制系统设计[J].1002-6673(2024)TP273.5,TK514

    [2] 沈建华,杨艳琴等.MSP430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2024.



    推荐阅读:
    利用51单片机、LCD显示器设计一个单片机显示系统,要求在液晶上显示“HELLO,PROTUS”
    综合治理总结
    东营小学2024
    高校班主任管理办法
    2024秋计划
    中学生
    Top