基于单片机的自动往返小车毕业设计1_第1页
基于单片机的自动往返小车毕业设计1_第2页
基于单片机的自动往返小车毕业设计1_第3页
基于单片机的自动往返小车毕业设计1_第4页
基于单片机的自动往返小车毕业设计1_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的自动往返小车摘要:本设计以一片单片机stc89c52作为核心来控制自动往返小车,其中控制芯片l298n和单片机联合控制小车的前进与后退。路面的黑带检测使用反射式红外传感器,并通过stc89c52对输入的信号进行处理;行驶距离使用霍尔元件进行检测。最后以动态显示的形式通过一个lcd液晶显示即时黑带个数,运行时间,实时路程等。关键词: 微控制器 l298n电机控制 霍尔检测 液晶显示 the automatic round-trip car based on scmabstract:this design use a microcontroller stc89c52 as the co

2、re to control the automatic round-trip car, the control chip l298n and single chip microcomputer to control the car forward and backward together. the reflective infrared sensor detection the black belt on the road surface, then deal with input signal processing through the stc89c52. using the hall

3、element to test the distance. at last displaying instant black belt, running time, real-time distance, etc through a number of lcd liquid crystal in the form of dynamic displaykeywords: mcu l298n motor control hall detection led display i基于单片机的自动往返小车目录摘要i关键字iabstractikeywordsi0绪论21.1 设计任务31.2方案介绍42.

4、1 系统元器件的选择与介绍52.1.1stc89c52r芯片52.1.2l298n芯片112.1.3霍耳传感器(hd3020)142.1.4液晶lcd152.2电路模块的设计182.2.1检测系统182.2.2距离计算系统192.2.3显示系统202.2.4电机驱动以及正反转控制模块203.1主程序213.2中断程序223.2.1外部中断0223.2.2外部中断1233.2.3定时器中断0243.2.4定时器中断1244总结25致谢26参考文献27附录280绪论当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被

5、应用到人们的生活、工作领域的各个方面。单片微型计算机以其其体积小、功能强、速度快、价格低等优点,在数据处理和实时控制等应用中有着无以伦比的优越性,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中。随着微控制技术(以软件代硬件的高性能控制技术)的日益完善和发展,单片机的应用必将导致传统控制技术发生巨大的变化。单片微型计算机的应用广度和深度,已经成为一个国家科技水平的一项重要标志。此论文的题目是自动往返小汽车。要求设计一个能自动往返于起跑线与终点线间的小汽车。车辆从起跑线出发到达终点线后停留10秒,然后自动返

6、回起跑线。在要求的跑道范围内完成快行、慢行、停车等功能。停车后自动显示一次往返的时间和路程。基于上述要求将设计分为以下几个模块:stc89c52rc、电机驱动、电机调速、里程检测、跑道标志检测、液晶显示模块。控制系统采用stc89c52rc单片机;显示系统采用液晶显示里程数和时间;电机正反转采用桥式驱动控制,2档电压调速;里程记录采用霍尔传感器;跑道标志线采用光敏管检测;单片机、电机采用独立稳压电源供电。本论文将详细介绍硬件设计和软件设计的思路及方法。由于本人在单片机的设计方面还存在一些不足,在论文的写作和论证上尚存在一些不足之处,敬请各位老师批评指正。1设计任务及方案介绍1.1 设计任务设计

7、并制作一个能自动往返于起跑线与终点线间的小汽车。跑道宽度0.5m,表面贴有白纸,和黑带。在跑道的b、c、d、e、f、g各点处画有2cm宽的黑线,各段的长度如图1-1所示。车辆从起跑线出发到达终点线后停留10秒,然后自动返回起跑线。de间为限速区,车辆往返均要求以低速通过,通过时间不得少于8秒,但不允许在限速区内停车。跑道顶视图如图1.1。图1.1 跑道顶视图 (一)基本要求(a)车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。(b)到达终点线和返回起跑线时,停车位置离起跑线和终点

8、线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。 (c)de间为限速区,车辆往返均要求以低速通过,通过时间不得少于8秒, 但不允许在限速区内停车。1.2方案介绍设计采用单片机stc89c52rc作为系统的控制中心。电机电路采用两对互补三极管控制电机的驱动;检测电路采用光敏管来控制小车的快行,慢行,停止;用液晶实现对指定行程和所用时间的显示。方案方框图如1.2所示。里程检测stc89c52rc液晶显示电机驱动电机调速跑道标志检测图1.2方案方框图2. 系统的硬件设计与实现2.1 系统元器件的选择与介绍 下面介绍stc89c52rc芯片、l298n芯片、霍尔传感器、液晶

9、等器件。2.1.1 stc89c52r芯片stc89c52是一种带8k字节闪烁可编程可檫除只读存储器(fperom-flash programable and erasable read only memory )的低电压,高性能comos8的微处理器,俗称单片机。该器件采用atmel搞密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。单片机总控制电路如下图2.1:图2.1单片机总控制电路1.时钟电路stc89c52内部有一个用于构成振荡器的高增益反相放大器,引脚rxd和txd分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如

10、图2.2 (a) 所示,在rxd和txd引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212mhz之间选择,电容值在530pf之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图2.2(b)所示,rxd接地,txd接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12mhz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟p1和p2,供单片机使用。示,rxd接地,txd接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12mhz的方波信号。片内时钟

11、发生器把振荡频率两分频,产生一个两相时钟p1和p2,供单片机使用。rxd接地,txd接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12mhz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟p1和p2,供单片机使用。(a)内部方式时钟电路 (b)外部方式时钟电路图2.2时钟电路2.复位及复位电路(1)复位操作复位是单片机的初始化操作。其主要功能是把pc初始化为0000h,使单片机从0000h单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除pc之外,复位操作还对其他一些寄

12、存器有影响,它们的复位状态如表2.1所示。表2.1 一些寄存器的复位状态寄存器复位状态寄存器复位状态pc0000htcon00hacc00htl000hpsw00hth000hsp07htl100hdptr0000hth100hp0-p3ffhscon00hipxx000000bsbuf不定ie0x000000bpcon0xxx0000btmod00h(2)复位信号及其产生rst引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6mhz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的电路逻辑如图2.3所示:图2

13、.3复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(rst)送至施密特触发器,再由片内复位电路在每个机器周期的s5p2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图2.4(a)所示。这佯,只要电源vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与vcc电源接通而实现的,其电路如图2.4(b)所示;而按键脉冲复位则是利用rc

14、微分电路产生的正脉冲来实现的,其电路如图2.4(c)所示:(a)上电复位 (b)按键电平复位 (c)按键脉冲复位图2.4复位电路上述电路图中的电阻、电容参数适用于6mhz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图2.4(b)上电复位方式。stc89c52具体介绍如下: 主电源引脚(2根)vcc(pin40):电源输入,接5v电源gnd(pin20):接地线外接晶振引脚(2根)xtal1(pin19):片内振荡电路的输入端xtal2(pin20):片内振荡电路的输出端控制引脚(4根)rst/vpp(pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位

15、。ale/prog(pin30):地址锁存允许信号psen(pin29):外部存储器读选通信号ea/vpp(pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)stc89c52单片机有4组8位的可编程i/o口,分别位p0、p1、p2、p3口,每个口有8位(8根引脚),共32根。po口(pin39pin32):8位双向i/o口线,名称为p0.0p0.7p1口(pin1pin8):8位准双向i/o口线,名称为p1.0p1.7 p2口(pin21pin28):8位准双向i/o口线,名称为p2.0p2.7 p3口(p

16、in10pin17):8位准双向i/o口线,名称为p3.0p3.7stc89c52主要功能如表2.2所示。表2.2 stc89c52主要功能主要功能特性兼容mcs51指令系统8k可反复擦写flash rom32个双向i/o口256x8bit内部ram3个16位可编程定时/计数器中断时钟频率0-24mhz2个串行中断可编程uart串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能2.1.2 l298n芯片l298是st公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46v;输出电流大,瞬间峰值电流可达3

17、a,持续工作电流为2a;内含两个h桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准ttl逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。(1)l298芯片的引脚图如下图2.5。图2.5 l298芯片引脚图(2)l298芯片的引脚功能下表2.3表2.3 l298芯片的引脚功能引脚符号功能115sensing asensing b此两端与地连接电流检测电阻,并向驱动芯片反馈检测到的信号23out 1out 2此两脚是

18、全桥式驱动器a的两个输出端,用来连接负载4vs电机驱动电源输入端57in 1in2输入标准的ttl逻辑电平信号,用来控制全桥式驱动器a的开关611enable aenable b使能控制端.输入标准ttl逻辑电平信号;低电平时全桥式驱动器禁止工作。8gnd接地端,芯片本身的散热片与8脚相通9vss逻辑控制部分的电源输人端口1012in 3in 4输入标准的ttl逻辑电平信号,用来控制全桥式驱动器b的开关1314out 3out 4此两脚是全桥式驱动器b的两个输出端,用来连接负载(5)l298有mutiwatt15和powerso20两种封装 两种封装的实物图如下图2.6所示图2.6 l298两

19、种封装的实物图本次选用的是mutiwatt15。2.1.3霍耳传感器(hd3020)霍耳传感器是利用半导体的磁电效应中的霍耳效应,将被测物理量转换成霍耳电势。(1)、霍耳效应:将一载流体置于磁场中静止不动,若次载流体中的电流方向与磁场方向不相同时,则在此载流体中平行于由电流方向和磁场方向所组成的平面上将产生电势,此电势称为霍耳电势,此现象称为霍耳效应。16霍耳电势 u=bbi/neb式中:b外磁场的磁感应强度: i通过基片的电流; n基片材料中的载流子浓度; e电子电荷量; b基片宽度; d基片厚度。 (2)、 霍耳元件一般采用具有n型的锗、锑化铟和砷化铟等半导体单晶材料造成。锑化铟元件的输出

20、较大,但受温度的影响也较大。锗元件的输入虽小,但它的温度性能和线性度却比较好。砷化铟元件的输出信号没有锑化铟元件大,但是受温度的影响却比锑化铟要小,而且线性度也较好,因此,采用砷化铟做霍耳元件的材料受到普遍重视。一般地,在高精度测量中,大多采用锗和砷化铟元件;作为敏感元件时,材料采用锑化铟元件。霍耳元件的结构很简单,它由霍耳片、引线和壳体组成。霍耳片是一块矩形半导体薄片。在长边的两个端面上焊上两根控制电流端引线,在元件短边的中间以点的形式焊上两根霍耳输出端引线,在焊接处要求接触电阻小,而且呈纯电阻性质。霍耳片一般用非磁性金属、陶瓷或环氧树脂封装。2.1.4液晶lcd 带中文字库的128x64是

21、一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ascii字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。17(1)基本特性(1)低电源电压(vdd:+3.0-+5.5v)(2)显示分辨率

22、:12864点 (3)内置汉字字库,提供8192个1616点阵汉字(简繁体可选) (4)内置 128个168点阵字符 (5)2mhz时钟频率 (6)显示方式:stn、半透、正显 (7)驱动方式:1/32duty,1/5bias (8)视角方向:6点(9)背光方式:侧部高亮白色led,功耗仅为普通led的1/51/10 (10)通讯方式:串行、并口可选 (11)内置dc-dc转换电路,无需外加负压 (12)无需片选信号,简化软件设计(13)工作温度: 0 - +55 ,存储温度: -20 - +60(2)模块接口说明如下表2.4所示管脚号管脚名称电平管脚功能描述4rs(cs)h/lrs=“h”,

23、表示db7db0为显示数据rs=“l”,表示db7db0为显示指令数据5r/w(sid)h/lr/w=“h”,e=“h”,数据被读到db7db0r/w=“l”,e=“hl”, db7db0的数据被写到ir或dr6e(sclk)h/l使能信号714db0h/l三态数据线15psbh/lh:8位或4位并口方式,l:串口方式(见注释1)16nc-空脚17/reseth/l复位端,低电平有效(见注释2)18vout-lcd驱动电压输出端表2.4模块接口说明*注释1:如在实际应用中仅使用串口通讯模式,可将psb接固定低电平,也可以将模块上的j8和“gnd”用焊锡短接。*注释2:模块内部接有上电复位电路,

24、因此在不需要经常复位的场合可将该端悬空。(3)rs,r/w的配合选择决定控制界面的4种模式:rsr/w功能说明llmpu写指令到指令暂存器(ir)lh读出忙标志(bf)及地址记数器(ac)的状态hlmpu写入数据到数据暂存器(dr)hhmpu从数据暂存器(dr)中读出数据表2.5控制界面的4种模式(4)e信号e状态执行动作结果高低i/o缓冲dr配合/w进行写数据或指令高dri/o缓冲配合r进行读数据或指令低/低高无动作表2.6 e信号2.2电路模块的设计2.2.1检测系统检测系统主要是黑带采样模块,黑带采样模块我们采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管

25、以一定的角度紧贴跑道,这样可以消除外界光线的干扰。为了加强可靠性采用槽型光耦检测轮子转动的行程。用lm358电压比较器输出高低电平检测信号。如图所示2.7:图2.72.2.2距离计算系统采用霍尔元件感应磁场产生脉冲的原理,再对脉冲进行计数,所以我们在小车的前轮上安装了一块小磁铁并计算出车轮旋转一圈的路程。通过mcu编程后检测到一个脉冲后显示自动上加一个轮子的路程,再通过液晶hj12864m1显示出来下图为霍尔元件的工作原理如图2.8所示:图2.8霍尔元件的工作原理霍尔传感器实际电路图如图2.9所示:图2.9霍尔传感器实际电路图2.2.3显示系统 用到单片机控制的液晶显示17,液晶用到能显示汉字

26、、数字、字母和图像的hj12864m1液晶。通过液晶我们可以很清楚显示出小车在运行是的时间、检测的黑带的条数、运行的速度以及运行的路程。使得一个很机械化的小车变得人性化,更好的了解小车的运动情况和稳定性。液晶的实图(2.10)和液晶的控制电路(2.11)如下: 图2.10液晶的实图 图2.11液晶的控制电路2.2.4电机驱动以及正反转控制模块 考虑到小车的往返以及小车到达限速区时要减速行驶的要求,我们用到了专门的电机驱动模块l298驱动电路。该电路采用电动机驱动芯片l298来控制电动机的正转与反转,加以第二路电机电源保证了电动机启动时有足够的电流。在试验中控制电压为单片机输出的高低电平直接控制

27、。电路连接如图2.12所示:图2.12 l298驱动电路连接图3系统的软件设计单片机控制电路主要由一片stc89c52组成,通过p3口控制小车正转与反转,刹车,加速减速,通过两个四联数码管控制显示时间和里程以及小车行驶的时间。其中p0口进行位选,p2口进行显示段码输出。该系统采用上电复位加上手动复位联合复位系统进行初始化,单片机通过p3.0,p3.1输出脉冲控制电机正转反转以及刹车,当p3.0,p3.1分别输出01是电动机正转,输出10时电动机反转,输出00时电动机两边短路,小车立即刹车。3.1主程序主要完成初始化工作,设定小汽车的初始运行状态,最后循环调用显示子程序, 流程图如3-1所示。

28、开始前进检测黑带调用显示子程序打开电源图3.1 主程序流程图3.2中断程序3.2.1外部中断0车轮每转一次,霍尔元件产生一个脉冲p3.14,通过下降沿触发外部中断0,并且在每进行一次外部中断记录圈数的变量加1,具体流程图如图3.2所示:开始车轮每转一圈霍尔元件产生一个脉冲外部中断int0圈数quanshu+图3.2 外部中断0流程图3.2.2外部中断1光电检测每检测到一条黑带就产生一个脉冲输入p3.2口,通过下降沿的方式触发外中断1,每中断一次记录黑带的变量加1,当检测到第五条黑带时,p1.0=1,p1.1=1,小车的电动机由于短路刹车,当检测到第九条黑带时,小车再次刹车同时关掉所有中断。具体

29、流程图如图3.3所示:开始p3.0=1,p3.1=1ea=0,刹车退出第5条?第9条?黑带数加1y yyn图3.3 外部中断1流程图3.2.3定时器中断0使用定时器t0产生5ms定时中断,每次执行该中断前要先给定时器0赋初值,定时器中断每执行一次,变量加1。当i=200时,即每当计时1秒时,时间变量t加1,速度等于一秒转的圈数和小车车轮的周长相乘。具体流程图如图3.4所示:开始控制一秒定时,i+转的总圈数q;路程=周长*圈数q产生5ms中断退出一秒定时是否到y图3.4 定时器中断0流程图3.2.4定时器中断1主要用来产生不同的占空比的波型进行高低速控制,每次执行时,定时器1要赋初值。4总结本系

30、统以单片机stc89c52芯片为核心部件,在玩具小车上进行改装利用光电检测、传感器检测技术并配合软件实现了小车的黑线检测、里程检测、时间显示等功能,最终使小车完成设计题目要求的各项任务。该系统还有许多值得改进的地方:比如小车两侧可以同样加上传感器来检测路沿,是的小车在固定的轨道上行驶,不至于偏出;另外还可以加上遥控装置更加方便人的控制操作。经过三个多月时间的毕业设计锻炼,我觉得自己对单片机知识有了一定的了解。对单片机硬件结构的研究和软件编程的兴趣增加不少。归纳起来,主要有以下两点:(1)我经过这次系统的毕业设计,熟悉了对一项课题进行研究、设计和实验的过程中要注意团队合作;要有了严肃认真和实事求

31、是的科学态度同时还要有吃苦耐劳的精神以及相对应的工程意识。,这些在我们在将来的工作和学习当中都会有很大的帮助。(2)学会了怎样查阅资料和利用工具书。学习知识不能局限于一本书,应多看几本,这样既可以进行比较又增加了见识。另外平时课堂上所学习的知识大多比较陈旧,作为电子科学与技术的学生,由于专业特点自己更要积极查阅当前的最新电子资料。要及时地有针对性地查阅资料,然后加以吸收利用,以提高自己的应用能力,增长自己见识,补充最新的专业知识。在本次设计过程中,遇到了许多突发事件和各种困难,但通过仔细分析和请教无线电小组的同学,指导老师老师,问题逐一得到了解决。在这个过程中我深刻体会到共同协作和团队精神的重

32、要性,提高了自己解决问题的能力。在科学上需要一个严谨认真的态度,这点对于我以后的学习和工作,都有着非常重要的作用。致谢诚挚感谢指导老师戴新宇的关心、指导和教诲,戴新宇老师严谨治学、追求真理的科研作风和严于利己、宽以待人的崇高品质对学生将是永远的鞭策。还要感谢我的同学许康康,他曾是我们院无线电小组的副组长,在电路设计、编程、电路焊接方面有很强的能力。在制作的过程中给与我很大的帮助,最后小车一些问题他也参与改进。有了他的帮助,设计才能更顺利地完成。同时感谢我的母校江苏师范大学四年来对我的教育和关心,在这里我不仅学习到了专业的知识还学习到了厚重笃实,励志敏行。这使我端正了态度,明确了方向,树立了正确

33、的人生观和价值观,使我受用终身!最后衷心的感谢我的父母多年来对我的养育之恩和在生活上无微不至的关怀,没有他们就有我的今天。四年来父母辛勤工作为我支付昂贵的学费和生活费,嘘寒问暖,看似简单平凡但这其中又包含着朴素伟大和最无私的爱,使我得以安心学习文化知识,成为一个对社会有用的人。这份养育之恩我将永远铭记与心.在此谨向他们致以深深的谢意!参考文献1田立,代方震.2007. 51单片机c语言程序设计快速入门.北京.人民邮电出版社2李朝青.2005.单片机原理及接口技术(第3版).北京.北京航天航空大学出版社.3郭天祥.编著.51单片机c语言教程入门,提高,开发.拓展全攻略4李忠国.陈刚.编著.单片机

34、应用技能实训5刘南平.主编.朱凤芝.欧触灵.副主编.现代电子设计与制作技术6杨翠南.杨碧石.主编 . 数字电子技术与逻辑设计教程7余发山,王福忠.单片机原理及应用技术.徐州:中国矿业大学出版社,20038陈权昌 李兴富 单片机原理及应用. 广东:华南理工大学出版社,20079黄智伟. 凌阳单片机课程设计指导.北京:北京航空航天大学出版社,200610李光飞 .单片机课程设计实例指导 .北京:北京航空航天大学出版,200411 张友德.单片微型机原理、应用与实践m.上海:复旦大学出版社,199212 李华.mcs-51系列单片机实用接口技术m,北京:北京航空航天大学出版社13求是科技. 单片机典

35、型模块设计实例导航. 北京:人民邮电出版社. 2005.814徐淑华, 程退安等.单片微型机原理及应用. 哈尔滨:哈尔滨工业大学出版社.15孙余凯. 精选实用电子电路260例. 北京:电子工业出版社. 2007.616殷春浩, 崔亦飞. 电磁测量原理及应用. 徐州:中国矿业大学出版社. 2003.717lcd1602a数据手册附录:源程序代码#includesbit cs=p11; sbit sid=p12; sbit sclk=p13;sbit dj_in1=p27;sbit dj_in2=p26;sbit dj_in3=p25;sbit dj_in4=p24;sbit hd=p32;#de

36、fine uint unsigned int#define uchar unsigned charuchar code dis1=黑带: 条;uchar code dis2=路程: cm; uchar code dis3=时间: s;uchar code dis4=作者: 0931 王楠;uchar dis53;uchar dis63;uchar dis73;char heidai;uint i;uint miao,num,num1;uint j,quan;uint lucheng;uint ge1,shi1,bai1,ge2,shi2,bai2,ge3,shi3,bai3;void dela

37、yms(uint x)uint i,j; for(i=x;i0;i-) for(j=110;j0;j-);/每次操作由三个字节组成void write_cmd(uchar command_data) /写指令 uchar i; uchar i_data; i_data=0xf8; /第一个:命令控制字,写指令发0xf8 cs=1;/cs必须是高电平 sclk=0; for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i_data1; i_data=command_data; i_data&=0xf0;/第二个字节的高4位为

38、指令或数据的高4位,第二个字节的低4位补0 for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i_data1; i_data=command_data; i_data=4;/第三个字节的高4位为指令或数据的低4位,第三个字节的低4位补0 for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i_data1; cs=0; delayms(10); void write_data(uchar command_data) /写数据 uchar i; ucha

39、r i_data; i_data=0xfa; cs=1; for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i_data1; i_data=command_data; i_data&=0xf0; for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i_data1; i_data=command_data; i_data=4; for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0; sclk=1; i_data=i

40、_data1; cs=0; delayms(10); void lcd_pos(uchar x,uchar y)uchar pos;if(x=0) x=0x80;else if(x=1) x=0x90;else if(x=2) x=0x88;else if(x=3) x=0x98;pos=x+y;write_cmd(pos);void lcd_init()write_cmd(0x30);delayms(5);write_cmd(0x0c);delayms(5);write_cmd(0x01);delayms(5);void display1()lcd_pos(0,0);i=0;while(di

41、s1i!=0) write_data(dis1i); i+;lcd_pos(1,0); i=0;while(dis2i!=0) write_data(dis2i); i+;lcd_pos(2,0);i=0;while(dis3i!=0) write_data(dis3i); i+;lcd_pos(3,0);i=0;while(dis4i!=0) write_data(dis4i); i+; void display()uint k;lcd_pos(0,3);bai1=heidai/100;shi1=heidai%100/10;ge1=heidai%10;dis50=bai1+0x30;/dis

42、50=bai1+0;dis51=shi1+0x30;dis52=ge1+0x30;for(k=0;k3;k+) write_data(dis5k);lcd_pos(1,3);bai2=lucheng/100;shi2=lucheng%100/10;ge2=lucheng%10;dis60=bai2+0x30;dis61=shi2+0x30;dis62=ge2+0x30;for(k=0;k3;k+) write_data(dis6k); lcd_pos(2,3);bai3=miao/100;shi3=miao%100/10;ge3=miao%10;dis70=bai3+0x30;dis71=sh

43、i3+0x30;dis72=ge3+0x30;for(k=0;k3;k+) write_data(dis7k);void main()lcd_init();ea=1;tmod=0x11;th0=(65535-50000)/256;tl0=(65535-50000)%256;th1=(65535-50000)/256;tl1=(65535-50000)%256;et0=1;et1=1;tr0=1;ex0=1;it0=1;ex1=1;it1=1;display1();while(1)switch(heidai) case 0: case 1: case 2: case 4: case 5:dj_in1=1;dj_in2=0;dj_in3=0;dj_in4=1;break; case 3:dj_in1=1;dj_in2=0;dj_in3=0;dj_in4=1;delayms(100);dj_in1=0;dj_in

温馨提示

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

评论

0/150

提交评论