毕业设计(论文)基于51单片机的公交车电子显示屏控制器设计_第1页
毕业设计(论文)基于51单片机的公交车电子显示屏控制器设计_第2页
毕业设计(论文)基于51单片机的公交车电子显示屏控制器设计_第3页
毕业设计(论文)基于51单片机的公交车电子显示屏控制器设计_第4页
毕业设计(论文)基于51单片机的公交车电子显示屏控制器设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要本文介绍了一种利用51单片机设计一个基于单片机实现的公交车电子显示屏控制器设计原理,提出了以51单片机为核心,通过3*1独立键盘获取外部指示以控制isd1700语音芯片电路以及lcd、点阵led显示的硬件设计和软件设计方案。该系统语音音质好,功能强,成本很低,是提供公交服务的一种较好的手段。本文介绍了at89c55的基本原理和控制模块、显示系统和存储系统的总体设计思想和实现方案,并且详细阐述了硬件系统和软件系统的设计。硬件系统包括电源电路、控制电路、信息存储电路、显示电路、语音资源存储电路等;软件驱动程序由开发系统提供的c语言库函数及汇编语言来实现。经过调试和仿真运行,使系统最终达到了课

2、题设计的要求。关键词:语音处理,lcd显示,led显示,isd1700abstractthis paper explains the principles of a bus dias, and offer a hardware and software design program that the microcontroller core at89c55controls the isd1700 voice chip circuit and lcd and led display as the external command from the 3*1 keyboard. this syste

3、m will provide a well bus service with its high quality voice, strong function and low cost. this paper introduces the fundamental principle and development methods of at89c55 at first. it discusses the total design idea and the realization method of voice control, display system and memory system.

4、then it describes the design project of hardware system and software system in detail. the hardware system consists of power circuits, control circuits, information storage circuits, display circuits etc. the software to drive the hardware was developed with the c language function library and assem

5、bly language, provided by development system. the system behaved well after debug and simulation. the result shows that the system comes to our expectation.keywords: speech processing, lcd display, led display, isd1700目 录摘 要iabstractii第1章 概 述11.1选题的目的和意义11.2设计的主要目标任务1第2章 系统硬件电路设计22.1 单片机最小系统22.1.1时钟

6、电路与复位电路32.1.2 键盘电路32.2 电源模块42.3 温度传感器52.4单片机与lcd接口电路52.5点阵led显示电路62.6 语音电路82.6.1 isd1700芯片及引脚介绍、82.7 通讯电路9第3章 软件系统设计113.1 主控程序设计113.1.1 系统结构图113.1.2 系统流程图123.2 语音系统设计133.2.1流程图133.2.2 程序清单133.3 led汉字显示程序的设计173.3.1 led汉字显示程序流程图173.3.2 程序清单183.4 lcd显示程序设计193.5 232串口通信程序设计223.5.1 232串口通信流程图223.5.2 程序清单

7、223.6 ds18b20温度显示程序设计243.6.1 ds18b20温度显示流程图243.6.2 程序清单24结论和展望28致 谢29参考文献30附录 电路原理图31第1章 概 述1.1选题的目的和意义 随着城市化进程的加快,公共交通作为城市的基础设施之一,仍然是绝大多数出行者的首选交通方式。为使得人们特别是为外来旅游、出差、就医、求职等急需了解本地的公交路线的人提供高效、方便、快捷的公交系统,让他们得到自己所需要的各种相关信息,以便减少各种可能产生不必要的交通流量,提高公交的运作效率,公交车电子显示屏控制器系统便应运而生。现今社会,公交事业关乎到大多数城市居民的出行,可公交车上的传统的报

8、站系统依然无法满足大家对其的要求。主要表现为:(1) 报站不准确: 由于司机在操作报站系统时经常会按错键或忘记按键,而且在调整系统时会连续报出几个站点,让不熟悉路线站点的乘客不知所措。(2)乘客易误过报站信息:每次报站时都需要由驾驶员对报站器进行操作,而在车辆起动与进站时,往往是车厢内比较吵闹的时候,这是乘客容易因为吵闹而听不清报站信息,给不熟悉路线的乘客带来不便。1.2设计的主要目标任务本设计利用51单片机设计一个基于单片机实现的公交车电子显示屏控制器。可实现语音报站,即在进站和出站时语音播报提示信息及服务用语等。同时利用lcd、led双屏显示时间、文明用语、站名、英文、车厢温度等。可方便、

9、快捷的提供给乘客所需的旅途信息。第2章 系统硬件电路设计硬件电路由单片机的最小系统、电源电路、lcd电路、led液晶显示电路、按键电路、语音电路、通讯电路等组成。2.1 单片机最小系统 图2.1 最小单片机系统图2.1中的at89c55是美国atmel公司生产的低电压,高性能cmos8位单片机,片内含有20k字节可重复擦写flash闪速存储器,该器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内具有通用8位中央处理器(cpu)和flash存储单元,功能强大at89c55单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。【1】at89c55具

10、有以下标准功能:片内含有20k字节可重复擦写flash闪速存储器,256字节内部数据存储器ram,32根i/o线,三个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,at89c55可降至0hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止cpu的工作,但允许ram,定时/记数器,串行通信口及中断系统继续工作。掉电方式保存ram中的内容,但振荡器停止工作直到下一个硬件复位。本设计的晶振采用的是11.0592mhz晶体振荡器,此晶振比较常见,易于购得。因此,在设计中,使用11.0592mhz的晶振与2个30pf的瓷片电容组成单片机的晶体

11、振荡电路,为单片机的正常工作提供了振荡信号。at89c55的复位引脚reset为at89c55提供了初始化的手段。有了它可以使程序从指定处开始执行,即从程序存储器中的0000h地址单元开始执行程序。它的时钟电路工作后,只要在rs引脚上比现2个机器周期以上的高电平,单片机即可复位。只要rst保持高电平,则at89c55循环复位。只有当rst由高电平变低电平以后 ,89c55才从0000h地址开始执行程序。2.1.1时钟电路与复位电路系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。单片机内部有一个用于构成振荡器的高增益反相放大器。引脚x1和x2分别是此放大器的输入端和输出端。这个放大

12、器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容c1和c2构成并联谐振电路,接在放大器的反馈回路中,大小为30pf。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为11.0592mhz,复位是由外部的上电复位电路来实现的。复位引脚reset通过一个极性电容连接,大小为10uf。下接一个下拉电阻,大小为10k,外接+5v电压。2.1.2 键盘电路键盘按键电路主要是为了实现液晶显示屏的显示控制,s1与单片机p3.0引脚连接,s2与单片机的p3.1(rs)引脚连接,s3与

13、单片机的p3.2(wr)引脚连接。通过上述几个按键可以实现对液晶显示屏中所显示站名、时间及文明用语内容的前后切换等。其中s1控制前一站,s2控制后一站,s3为复位按钮。按键控制电路如下图2.2所示: 图2.2 按键电路 本设计键盘采用独立式键盘。独立式按键就是各按键相互独立,每个按键单独占用一根i/o口线,每根i/o口线的按键工作状态不会影响其他i/o口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。优点为电路配置灵活,软件结构简单;缺点为每个按键需占用一根i/o口线,在按键数量较多时,i/o口浪费大,电路结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场

14、合。2.2 电源模块图2.3汽车内部供电系统公交车上的所使用的电源电压为12v,而at89c55芯片的工作电压为5v,所以需要将12v的电压转换成5v的电压。设计中采用了三端固定正电压集成稳压器7805,来得到的+5v稳定电压。电压变换电路图如2.3图所示,集成稳压器是指将不稳定的直流电压变成稳定的直流电压的集成电路。由于集成稳压器具有稳压精度高、工作稳定可靠、外围电路简单、体积小、重量轻等显著优点,在各种电源电路中得到了普遍使用。78xx系列的集成稳压器是常用的固定正输出电压的集成稳压器,输出电压有5v、6v、9v、12v、15v、18v、24v等规格,最大输出电流为1.5a。他的内部含有限

15、流保护、过热保护和过压保护电路,采用了噪声低、温度漂移小的基准电压源,工作稳定可靠。2.3 温度传感器ds-18b20 数字温度传感器,该产品采用美国dallas公司生产的 ds18b20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。其独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。测温范围 55+125,固有测温分辨率0.5。支持多点组网功能,多个ds18b20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多

16、点测温。工作电源: 35v/dc 。其管脚图如下所示图2.4 温度传感器ds18b20管脚图2.4单片机与lcd接口电路ym12864为汉字图形点阵液晶显示模块,可显示汉字及图形,内置819个中文汉字(1616点阵) 、128个字符其内的功有:画面清除、光标显示/隐藏、光标归位、显示打开/关显示字符闪烁、光标移位、显示移位、垂直画面旋转、反白显示、液晶睡眠/唤醒、关闭显示、自定义字符、睡眠模式等液晶显示器ym12864r的控制器st7920可以显示字母、字符号、中文字型及自定图形显示。将液晶显示模块的接口作为 i/o设备直接与单片机接。12864液晶显示器的控制信号有lcdrs、lcdwr、l

17、cden分别对应接在89c51的t1、t0、int1上,而8位数据口对应接在p2口上。背光灯的电源正极、液晶显示器模的电源正极以及lcd驱动电压输入端都接在+5v的稳压源上。背光灯负极和模块的电源负极统一接地。液晶显示器块的复位脚连接开关按纽与地相连。即可实现单片机对液显示汉字的控制。硬件电路图如图2.5所示:图2.5单片机与lcd接口电路2.5点阵led显示电路电路图如图2.6所示图2.6 led显示电路点阵显示用是动态扫描来实现的。在采用扫描方式显示时,由于每行要带动十六个二极管,每行电流较大。若每个二极管安5ma计算,十六个二极管就得80ma电流,超出单片机管脚的承受范围,因此每行都加有

18、一个驱动器,本设计的行驱动用的是十六个pnp型三极管。三极管的发射极接5v电压,集电极接点阵的行线,而其基级本应接单片机,但该接线方式占用为了16个单片机管脚,为了节省单片机管脚,用了一片74ls154译码器,这样就只需要3个管脚了。各行的同名列共用一个列驱动,数据通常存储在单片机的存储器中,按8位一个字节的形式存放。由于列线过多,故多采用串行传输。由于每次要传输16位,而且数据要逐位输给驱动器,只有当一行中各列数据都已传输到位后,这一行的各列才能进行并行显示,耗时较长。为了满足以上要求,驱动选择74ls595移位寄存器。74hc595【2】是硅结构的cmos器件,74hc595是有8位移位寄

19、存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在schcp的上升沿输入,在stcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(ds),和一个串行输出(q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能oe时(为低电平),存储寄存器的数据输出到总线。其特点:8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态; 输出寄存器可以直接清除 100mhz的移位频率。输出能力: 并行输出,总线驱动;串行输出;标准中等规模集成电路 。2.6 语音电路 图2.

20、7 语音系统2.6.1 isd1700芯片及引脚介绍、isd1700芯片使用不单纯是一个放音电路,还含有其他的控制。因此程序首先要能完成指定地址的放音工作,其次还应能嵌入整个费额显示程序中,即语音程序不能与电路其他功能相影响。费额显示中里面主要有八字板,点阵等其他的控制。试验中采用的是isd1760语音芯片,采样率为8k时,一共能播放60s的语音,最大地址为0x1ef,录音实际地址为0x10-0x1ef,从此最大地址可得出:0x1ef-0x10=0x1df=479,479+1=480;480*125ms =60s,也就是说8k采样率时每1个地址最小语音长度为125ms,因此如果知道单个语音的长

21、度,暂时无编程器的时候,也可自己推断每个语音所占的地址长度。【4】isd1700系列芯片功能特点及电特性如下:功能特点【5】 可录、放音十万次,存储内容可以断电保留一百年 按键模式和mcu串行控制模式(spi协议) mic和anain两种录音模式 pwm和aud/aux三种放音输出方式 可处理多达255段以上信息 有丰富多样的工作状态提示 多种采样频率对应多种录放时间 音质好,电压范围宽,应用灵活电特性 工作电压:dc2.4v5.5v,最高不能超过6v 静态电流:0.5 1 a 工作电流:20ma 图2.8 isd1700管脚图2.7 通讯电路图2.9 max232通讯上位机pc机与下位机单片

22、机通过max-232c串行接口总线进行的串行通信。80c51系列单片机带有一个全双工的串行接口,因此用max-232c串行接口总线非常方便。pc机配置max-232c标准接口,max-232c信号电平为负逻辑(逻辑“0”:+12 v;逻辑“1”:-12 v),80c51单片机输入、输出电平为,ttl电平(逻辑“0”:05 v;逻辑“1”:24 v)。所以8051与pc机间点对点异步通信需加电平转换电路,否则将烧坏ttl电路。max232器件是maxim公司生产的具有两路接收器和驱动器的 ic器件,其内部有一个电源电压变换器,可将输入的+5 v电压变换成max-232c输出电平所需的12 v电压

23、。max232器件的引脚16(c1+、v+、c1-、c2+、c2-、v-)用于电源电压转换,只需在外部接入相应电解电容即可;引脚710 和引脚1114构成两组,ttl信号电平与max-232c信号电平的转换电路,对应引脚可直接与单片机串行口的ttl电平引脚和pc机的max-232电平引脚相连。图2.9采用max232器件的pc机和单片机串行通信接口电路,采用9针标准插座与pc机相连。max232实现电平转换功能,该器件可将单片机txd端输出的ttl电平转换成标准的max-232c标准电平,由max232的14引脚通过9针接口送入pc机;同样,pc机输出的max-232c标准电平,从 max23

24、2的13引脚输入并转换成单片机所需的ttl电平,经单片机的rxd端接收。 第3章 软件系统设计程序就是为计算机某一算式或完成某一工作的若干指令的有序集合。计算机的全部工作概括起来就是执行这一指令序列的过成。这一指令序列称为程序。本章主要讲了主控部分、语音播报部分以及lcd、led显示部分、测温部分、通讯部分的程序设计等。3.1 主控程序设计 3.1.1 系统结构图 图3.1 系统框图系统设计中用到了液晶显示模块,液晶模块有可与单片机直接相连的接口,一般都有数据传送接口、电源接口和控制接口:如指令/数据控制口、读/写控制口。用单片机的i/o口控制液晶模块的指令/数据或读/写接口,就可以通过数据口

25、把数据转送到液晶模块显示。3.1.2 系统流程图图3.2 流程图3.2 语音系统设计3.2.1流程图流程图如图3.3所示图3.3 语音系统流程图 3.2.2 程序清单org 0000hajmp mainmain: mov sp, #10h mov p1, #offh mov p2, #offh mov p3, #0ffh mov p0, #0ffh clr ea acall dstop ;isd掉电mas0: mov 3ah, #200masi: jb p1.4, mas0 ;等按执行键 djnz 3ah, ans1 acall up ;isd上电 mov 20h, #00h ;isd低位地址

26、 mov 21h, #00h ;isd高位地址 mov 22h, #0000h ; 操作码 jnb p1.3, rec ;p1.3=0,录音 ajmp play ;放音rec: mov a, 20 acall isdx mov a, 21h acall isdx mov a, 22h acall isdx setb p0.0 ;关片选rec1: mov 36h, #10rec2: acall ys50 ;延时录音 djnz 36h, rec2 mov a, #0b0h acall isdx setb p0.0 ;关片选rec3: mov 35h, #200rec4: jnb p0.2, rec

27、7 ;ovf=0芯片溢出 jnb p1.4, rec3 djnz 35h, rec4 acall stopp ;停止当前操作rec5: jnb stop, rec6 ;中断reset jb p1.4, rec5 acall stopp ;停止当前操作 ajmp rec1rec6: clr p0.3 ;时钟sclk=0 setb p0.0 ;关片选 acall stopp ;停止当前操作 ajmp maii mov 36h, #15rec7: acall ys50 ;延时录音 jb p1.4, rec6 djnz 36h, rec8 clr p1.7 mov 36h, #15rec8: acal

28、l ys50 jb p1.4, rec6 djnz 36h, rec9 ajmp rec7play: mov a, 20h ;低8位地址 acall isdx mov a, 21h ;高8位地址 acall isdx mov a, 22h ;操作码 acall isdx setb p0.0 ;关片选play1: clr p1.7 mov a, #ofoh ;发11110000 acall isdx setb p0.0 ;关片选play2: jnb stop, rec6 ;停止放音 jb p0.2, play2 ;无ovf eom继续放音 acall stopp ;停止当前操作 clr p0.0

29、 ;开片选 clr p0.3 ;时钟sclk=0 setb p0.3 ;时钟sclk=1 jb p0.4, rec6 ;芯片到来 clr sclk ;时钟sclk=0 setb p0.0 ;关片选 acall stopp ;停止当前操作play3: jnb stop, rec6 ;中断放音 jb p1.4, play3 ajmp play1 ;顺序放音up: mov a, #20h acall isdx setb p0.0 acall ys50 ;延时 acall ys50 retstopp: mov a, #30h acall isdx setb p0.0 acall ys50 acall

30、ys50 retdstop: mov a, #10h acall isdx setb p0.0 acall ys50 acall ys50 retisdx: clr p0.0 ;开片选 mov r6, #8 clr p0.3 ;时钟sclk=0isd1: mov c, acc.0 mov p0.1, c ;数据写mosi setb p0.3 ;时钟sclk=1 rr a clr p0.3 ;时钟sclk=0 djnz r6, isd1 retys1: mov tmod, #01h mov th0, #0d8h ;10ms延时初值置入 mov tl0, #0f0h ;(65536-x)*1=10

31、ms setb tr0 ;65536-(10000/1)=d8f0h jnb tf0, $ clr tf0 clr tr0 retys50: mov tmod, #01h mov th0, #3ch mov tl0, #0b0h setb tr0 jnb tf0, $ clr tf0 clr tr0 ret end3.3 led汉字显示程序的设计3.3.1 led汉字显示程序流程图图3.4 led汉字显示程序流程图3.3.2 程序清单led汉字显示过程:首先p1.5置低电平(平时为高电平),封锁计数器u10的计数脉冲cp,同时选通缓冲器u13和u15的第2组通道,使单片机送入的地址信号a0a8

32、通过缓冲器(u13、u15)作为显存的地址信号,单片机送来的数据(p00p07)就可以通过缓冲器u14写入显存(p1.5已为低电平)中的对应地址单元内,显示信息完全写入后,p1.5被置成高电平,计数脉冲cp开锁,计数器u10工作,循环提供9位地址信号,使显存中的点阵数据被循环送入显示屏),以实现汉字提示信息的显示输出。led汉字显示程序: mov r2, #16 ;16个字 mov dptr, #cdatd ;字模库首地址shu1: mov a, #dat ;要显示字的代码首地址 mov b, #16 ;每个字符占16个字节 mul ab ;代码*16 add a, dpl mov dpl,

33、a mov a, b addc a, dph mov dph, a mov r0, 16 ;每个字符16个字节 clr p1.6 ;写入显存数据 clr cp mov r1, #00h ;显存数据存储首地址shu2: movx r1, dptr inc r1 ;地址值加1 inc dptr djnz r0, shu2 ;第一个字的显存存完否 inc dat djnz r2, shu1 ;16个字存完否 setb p1.6 ;送数、显示 setb cp ret3.4 lcd显示程序设计#include#define uchar unsigned char#define uint unsigned

34、 intsbit rs = p10; /指令数据选择sbit rw = p11; /指令数据控制sbit e= p12; sbit d2=p14;void _nopc_()uchar table=/显示内容;void delay_50us(uint temp)/延时函数uint i,j;for(i=temp;i0;i-)for(j=50;j0;j-) ;void delay_50ms(uint temp)/延时函数uint i,j;for(i=temp;i0;i-)for(j=50000;j0;j-);void write_date(uchar temp) /写数据rw=0;rs=1;e=1;

35、_nopc_();p2=temp;e=0;void write_com(uchar temp) /写命令rw=0;rs=0;delay_50us(1);p2=temp; e=1;delay_50us(1);e=0;void init()/lcd初始化d2=1;delay_50ms(2);write_com(0x30);delay_50us(5);write_com(0x30);delay_50us(2);write_com(0x0f);delay_50us(5);write_com(0x01);delay_50ms(2);write_com(0x06);delay_50ms(10);void

36、display()/显示函数uchar i=0; write_com(0x80); delay_50us(2); for(i=0;i16;i+)write_date(tablei);delay_50us(1);void main() init();while(1)display();while(1);汉字液晶显示程序分析:本次进行汉字的显示主要是以显示为主,这就是说在设计过程中,我们都只是往显示器里送地址与数据,地址就是要在显示器上显示的位置,数据就是要现实的汉字的字模。也就要求单片机只需要给显示器传送地址指令和字模数据。3.5 232串口通信程序设计3.5.1 232串口通信流程图 图3.5

37、 232串口通信流程图3.5.2 程序清单#include #include #include main()char ch;/*串口初始化*/outportb(0x3fb,0x80); /设置lcr,访问dll、dlm,禁止串口中断,无校验,1位停止位;outportb(0x3f8,0x0c); /设置串口的波特率低八位(dll);outportb(0x3f9,0x00); /设置串口的波特率高八位(dlm);outportb(0x3fb,0x03); /设置lcr,禁止访问dll、dlm,禁止串口中断,无校验,1位停止位;outportb(0x3fc,0x03); /初始化mcr,数据终端准

38、备好,请求发送;while(1) /保持监听状态 /*发送数据*/ if(bioskey(1) ch=bioskey(0)&0x0ff; /若有键盘输入,获取ascii码 if(ch=27) /若输入字符为“esc”,退出程序 exit(0);outportb(0x3f8,ch); /否则将字符送入发送端口 /*接收数据*/ch=inportb(0x3fd); /读取接收端口的线路状态寄存器lsr的状态if(ch&0x01) /若线路状态寄存器lsr的末尾为1,表示接收就绪 ch=inportb(0x3f8); /读取数据putch(ch); /显示数据 3.6 ds18b20温度显示程序设计

39、3.6.1 ds18b20温度显示流程图 图3.6 ds18b20测温流程图3.6.2 程序清单#include #define uchar8 unsigned char #define uint16 unsigned intuchar8 dis6= 0, 0, 0, 0, 0, 0 ;uchar8 code wendu=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; /0到9的代码uchar8 code name=by:wdc 2010-5-1;uchar8 flag,sig; /flag用于判定是否有中断,sig判定温度符号sbit r

40、s = p30; sbit rw = p31; / 读/写sbit en = p32; / 使能端sbit dq = p37; /18b20与单片机连接的dq总线void init(viod) /初始化tmod=0x01; /定时器0设为工作方式1th0 =0x3c; /(65536-50000)/256; tl0 =0xb0; /(65536-50000)%256;ea=1; /开总中断et0=1; /开定时器0中断tr0=1; /启动定时器0 rw = 0; /读/写 置低write_com(0x38); /设置16x2显示,5x7点阵,8位数据口write_com(0x08); /显示关

41、闭write_com(0x01); /显示清屏,数据指针以及所有显示清零write_com(0x06); /读写数据,光标及数据指针加一write_com(0x0c); /开显示,光标不显示/*温度转化*/void tmconvert(void)reset(); /复位delay(1);write_byte(0xcc); /仅一个ds18b20 ,跳过romwrite_byte(0x44); /温度变换/*读取温度*/long gettm(void)uchar8 lsb=0,msb=0; /用于存储读取的温度long temp; reset(); /复位write_byte(0xcc); /写

42、指令,跳过rom,仅一个ds18b20write_byte(0xbe); /写指令,读暂存存储器lsb = read_byte(); /读lsbmsb = read_byte(); /读msbsig=(msb4=0x0f);if(sig) /判断符号位是否为负值,是负值了,转去处理 lsb=lsb; /温度处理 msb=msb; lsb=lsb+1;temp=msb*256+lsb; /十六进制转换为10进制temp=temp*100/16; /12位精度,最小分辨率为0.0625creturn temp; /获得0.01c 的精度并返回void display(long m) uchar8

43、i; /分离各数位dis1= m/10000; /百位 dis2= (m%10000)/1000; /十位dis3= (m%1000)/100; /个位dis4= (m%100)/10; /小数第一位dis5= m%10; /小数第二位delayms(30); write_com(0x80); /0x80+地址码,设置数据地址指针(显示 第一行:0-0fh,第二行:40-4fh;)if(sig) write_dat(0x2d);/如果sig=1,显示负号;否则显示正号else write_dat(0x2b); for(i=1; i6; i+)write_dat(wendudisi);/显示温度

44、if(i=3) write_dat(0xa5); /显示小数点 write_dat(0xdf);/显示“”write_dat(0x43);write_com(0x80+0x40); /显示第二行,设定开始为首位 write_char(name); /显示“by wdc 2010-5-1”void main(void) init(); /初始化 while(1) if(flag=1) /是否有中断产生flag=0; /中断标志位清零tmconvert(); /开始温度转化gettm(); /读取温度display(gettm(); /显示温度 void timer0() interrupt 1 /定时器0 中断 th0 =(65536-50000)/256; tl0 =(65536-500

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论