毕业设计 公交车自动报站系统

上传人:仙*** 文档编号:30153859 上传时间:2021-10-09 格式:DOC 页数:32 大小:768KB
返回 下载 相关 举报
毕业设计 公交车自动报站系统_第1页
第1页 / 共32页
毕业设计 公交车自动报站系统_第2页
第2页 / 共32页
毕业设计 公交车自动报站系统_第3页
第3页 / 共32页
点击查看更多>>
资源描述
公交车自动报站系统【摘 要】本设计介绍了一种利用红外线遥控技术,模拟公交车自动报站的系统。以AT89C52为主芯片。公交车上的接收电路收到站台信息后解码,解码后把信号传送给AT89C52单片机,启动LCD12864显示站名。同时,应用语音模块播报站名.还可以实现手动报站功能。报站的时候,相应的指示灯亮;蜂鸣器蜂鸣一声报警。系统由红外线的发射模块、接收模块、 LCD12864显示模块及ISD4004语音播报模块组成目 录1 引言 (3)1.1本课题研究的意义 (3)1.2 AT89C52单片机介绍 (3)2 设计要求(4)3方案分析与论证 (4)3.1 无线收发模块的分析与论证 (4)3.2控制模块的分析与论证 (4)4 系统硬件设计(4)4.1 系统的硬件设计(4)4.1.1电路设计原理框图 (5)4.2 单元电路的设计和分析(5)4.2.1 遥控收发电路(5)4.2.2 AT89C52控制的LCD12864电路(6)4.2.3 ISD4004语音录放电路 (9)4.2.4 本设计总原理图(11)5 系统软件设计 (12)5.1 系统流程图(12)5.2 程序设计(14)6 系统测试 (15)致谢(15)参考文献(15)附录(16)1 引言1.1 本课题研究的意义现今社会,公交事业关乎到大多数城市居民的出行,可公交车上的报站系统依然无法满足大家对其的要求。现在公交车上普遍使用的人工按键报站会出现报站不准确(由于司机在操作报站系统时经常会按错键或忘记按键,而且在调整系统时会连续报出几个站点,让不熟悉路线站点的乘客不知所措)。并且每次报站时都需要由驾驶员对报站器进行操作,而在车辆起动与进站时,往往是路面情况最复杂的时候,驾驶员既要对行驶中的汽车进行起动或制动等操作,同时还要兼顾报站系统的操作,给行驶中的车辆带来一定的安全隐患。虽然现在已经有些大城市的某些公交车上已经采用GPS定位系统自动报站,但其昂贵的成本,难以实现普及,特别是一些中小城市难以负担。本设计针对目前常见公交车报站系统的主要缺陷,介绍了基于单片机控制的公交车自动报站系统,该系统费用廉价,可以普及。1.2 AT89C52单片机介绍随着计算机技术的发展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪器仪表智能化中扮演着极其重要的角色。实际上,单片机几乎在人类生活的各个领域都表现出强大的生命力,使计算机的应用范围达到了前所未有的广度和深度。单片机的出现尤其对电路工作者产生了观念上的冲击。过去经常采用模拟电路、数字电路实现的电路系统,现在相当大一部分可以用单片机予以实现,传统的电路设计方法已演变成软件和硬件相结合的设计方法,而且许多电路设计问题将转化为纯粹的程序设计问题。诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的控制方法和设计思想。是控制技术的一次革命,是一座重要的里程碑。 AT89C52是ATMEL公司生产的51系列单片机的一个型号,是一个低电压,高性能CMOS 8位单片机,片内含8Kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外部中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性:兼容MCS51指令系统8K可反复擦写(1000次)Flash ROM32个双向I/O口2568bit内部RAM3个16位可编程定时/计数中断时钟频率0-24MHZ2个串行中断可编程UART串行通道2个外部中断,共6个中断源2个读写中断口线,3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能 2 设计要求用AT89C52单片机来设计一个公交车自动报站系统。要求用遥控模拟实现当公交车靠近站点时可以用文字来显示站名,同时相应指示灯亮、有报警功能。3 方案分析与论证3.1无线收发模块的分析与论证方案一:无线AP。由无线AP构成,通信的效果好,数据传送量大,但是其成本比较高,由于采用IEEE 802.11b和IEEE 802.11g的通信协议,因此它比较适合用于移动上网。 方案二:无线数传模块。采用专用收发集成电路的无线数传模块构成,所以性能相对较好,而且容易实现,并且在功耗,抗干扰性等方面都比较优越,但是由于基于此芯片的无线传输模块价格和无线AP模块差不多,所以成本相对偏高。 方案三:PT2262/PT2272-L4集成芯片。方案采用低功耗、低价位、通用编解码电路,发送用高的达林顿管,所以在灵敏度和抗干扰性方面有保障。方案四:红外遥控。可以用现有的遥控装置,我们只要了解其编解码原理,就可以采用现成的简易装置来模拟应用。 以上四种都是可供参考的方案,在考虑了诸多因素之后,决定采用方案四。虽然在软件解码方面比较复杂,但其工作稳定,可靠性高。3.2 控制模块的分析与论证方案一:采用GPRS作为系统的控制器。GPRS即“通用分组无线业务”(GeneralPacketRadioService的英文简称) 是在现有GSM网络上开通的一种新型的分组数据传输技术.相对于原来GSM以拨号接入的电路交换数据传送方式 GPRS是分组交换技术 具有“永远在线”、“自如切换”、“高速传输”等优点。GPRS可作为实现各种复杂的逻辑功能,规模大,但其成本非常高。方案二:采用嵌入式ARM的32位单片机LPC2138。LPC2138功能庞大,内部资源丰富,易于数据的采集,不但具有一般单片机的所有功能,还内置了PWM,具有很强的串行通信功能,引脚非常丰富,功耗低,稳定性好,易于功能扩展,其在线仿真技术,软硬件调试方便,但ARM板成本较高。 方案三:采用AT89C52单片机控制, 它简单易用、成本低廉,软件编程自由度大,可用编程实现各种控制算法和逻辑控制,采用AT89C52单片机为控制核心,系统功能强大,资源配置灵活,运行可靠稳定,是一套相对完善工业低压控制系统,采用板式结构、安装牢靠,操作简洁。综上所说ARM虽功能强但成本高,且用单片机也能很好的控制,所以该系统的设计选用单片机编程即可,我们所以选择方案三。4 系统硬件设计4.1系统硬件设计 本设计采用红外遥控来实现无线数据的收发,采用AT89C52单片机为控制核心,实现公交车的自动报站功能。4.1.1系统总体方框图 +5V电源 C52单片机遥控收发电路语音录放电路液晶显示电路+3V电源按键电路蜂鸣器指示灯图4.1 系统总体方框图4.2 单元电路的设计、分析4.2.1 遥控收发电路 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图4.2所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图4.2 红外遥控系统框图遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图4.3所示。 图4.3 遥控码的“0”和“1”上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图4.4所示。图4.4 遥控信号编码波形图UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。 接收电路如图4.5所示。PC3388是红外接收头,1脚是信号端,2脚是地端,3脚是电源端。当电路正常工作时,发光二极管发亮。测试时可以观察D1的状态来判断是否有接收到信号。 图4.5 红外接收电路4.2.2 AT89C52控制的LCD12864电路LCD12864介绍LCD12864在市面上主要分为两种,一种是采用st7920控制器的,它一般带有中文字库字模,价格略高一点。另一种是采用KS0108控制器,它只是点阵模式,不带字库。我的这块就是KS0108控制器不带汉字库的。LCD12864模块的20个引脚定义如下:1.Vss逻辑电源地2.VDD逻辑电源正5v3.V0 LCD驱动电压4.RS 数据/指令选择:高电平为数据,低电平为指令5.R/W读/写选择:高电平为读数据,低电平为写数据6.E读写使能,高电平有效,下降沿锁定数据7. DB0数据输入输出引脚8.DB1数据输入输出引脚9.DB2数据输入输出引脚10.DB3数据输入输出引脚11.DB4数据输入输出引脚12.DB5数据输入输出引脚13.DB6数据输入输出引脚14.DB7数据输入输出引脚15.CS1片选择号,低电平时选择前64列16.CS2片选择号,低电平时选择后64列17.RET复位信号,低电平有效。18.VEE输出15v电源给V0提供驱动电源19.A背光电源LED正极20.K背光电源LED负极图4.6是LCD12864的内部控制结构:图4.6 LCD12864的内部控制结构图由上图可以看出12864屏是分为左、右两块控制的。所有对屏幕的操作要受片选CS1、CS2来控制。表4-1是屏幕操作数据与屏幕点阵的排布关系图。 表4-1 屏幕操作数据与屏幕点阵的排布关系图 从上表可以看出数据按字节在屏幕上是竖向排列的。上方为低位,下方为高位。因此在横向上(也就是Y)就一共是128列数据。分为CS1和CS2两个64列来写入。在竖方向上(也就是X)一字节数据显示8个点,竖向64个点分为8个字节,称做8页(X=0-7)。了解这些后我们就知道要满屏显示一张图就要从y=0127、X=07一共写1288=1024个字节的数据。同样在AT89S51中存一张图就要1024个字节的空间。表4-2为其指令表。表4-2 指令表 显示开关控制(DISPLAY ON/OFF) D=1:开显示(DISPLAY ON) 意即显示器可以进行各种显示操作 D=0:关显示(DISPLAY OFF) 意即不能对显示器进行各种显示操作 设置显示起始行(DISPLAY START LINE) A5A0 6位地址自动送入Z地址计数器,起始行的地址可以是063的任意一行。 例如: 选择A5A0是62,则起始行与DDRAM行的对应关系如下: DDRAM 行:62 63 0 1 2 3 28 29 屏幕显示行: 1 2 3 4 5 6 31 32 设置页地址(SET PAGE “X ADDRESS”) 所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8页,A2A0表示07页。读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0。页地址与DDRAM的对应关系见DDRAM地址表。 设置Y地址(SET Y ADDRESS) 此指令的作用是将A5A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRA M进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元。 读状态(STATUS READ) 当R/W=1 D/I=0时,在E信号为“H”的作用下,状态分别输出到数据总线(DB7DB0)的相应位。 BF: 前面已叙述过(见BF标志位一节)。 ON/OFF: 表示DFF触发器的状态(见DFF触发器一节)。 RST: RST=1表示内部正在初始化,此时组件不接受任何指令和数据。写显示数据(WRITE DISPLAY DATE) D7D0为显示数据,此指令把D7D0写入相应的DDRAM单元,Y地址指针自动加1。读显示数据(READ DISPLAY DATE)此指令把DDRAM的内容D7D0读到数据总线DB7DB0,Y地址指针自动加1。 下图4.7为AT89C52控制的LCD12864显示电路。 图4.7 89C52控制的LCD12864显示电路4.2.3 ISD4004语音录放电路ISD4004芯片无须A/D转换和压缩就可以直接储存,没有A/D转换误差,具有可多次重复录放、存储时间长,使用时不需扩充存储器、所需外围电路简单。利用AT89C51控制ISD4004芯片的过程。外接输入和输出端口。通过系统功能模块各部分的连接及软硬件设计可以实现数字化语音的存储和回放。ISD4004语音芯片采用CMOS技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储阵列等。因此只需要很少的外围器件就可构成一个完整的声音录放系统。芯片设计是基于所以操作由微控制器控制。操作命令通过串行通信接口(SPI或Microwire)送入。采样频率可谓4.0HZ、5.3HZ、6.4HZ、8.0HZ,频率越低,录放时间越长。而音质有所下降。片内信息存于内存储器中,可在断电情况下保存100年,反复录音10万次。器件工作电压为3V,工作电流为2530mA。单片机录放语音时间816min。图4.8为ISD4004内部框图、图4.9为ISD4004的引脚排列。图4.8 ISD4004内部框图 图4.9 ISD4004的引脚排列引脚12、27为电源线;4、11为地线;17为同相模拟输入端,输入放大器可用单端或差分驱动;16为反相模拟输入端。音频输出(引脚13)提供音频输出,可驱动5K的负载;引脚1为片选,此端为低,即向ISD4004芯片发送指令,两条指令之间为高电平。MOSI为串行输入端口,MISO为串行输出端口,串行时钟SCLK由主控制器产生,用于同步MOSI和MISO的数据传输,数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。中断(INT)为漏极开路输出端口,ISD在任何操作(包括快进)中检测到EOM或IVF时,本端变低并保持。中断状态在下一个SPI周期开始时清除。中断状态也可用RINT指令读取。每个RAC周期表示ISD存储器的操作进行了一行。该信号保持高电平的时间为175ms,低电平时间为25ms。在快进模式,RAC可保持高电平218.75微秒,低电平为31.25微秒。ISD4004工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI以为寄存器在SCLD的下降沿动作,因此,对ISD4004而言,在时钟上升沿锁存MOSI引脚数据,在下降沿将数据送至MISO引脚。如图4.11,在语音芯片的外围只需接一个EMC输入电路和一个功率放大器的输出电路,就构成了一个语音录放系统。ISD4004的27脚接的是由+5V电源改装成的+3V电源。 图4.11 ISD4004语音录放电路4.2.4 本设计总原理图通过以上单元电路的分析我们已经对各单元电路的硬件都有了一定的了解。下面对其总体实现情况作一个简单的说明。红外接收电路接收遥控信息并解码,解码后把信息通过外部中断1与单片机通信。单片机处理后,启动LCD12864及ISD4004模块显示播报站名。P2.0P2.4接LED1LED5等5个指示灯,P2.5控制蜂鸣器。PC3388的信号端连到AT89C52的外部中断1。 图4.12 本设计总原理图5 系统软件设计5.1 系统流程图5.1.1 主程序流程图 功能:通过按键来实现公交车的手动报站。键1实现公交车站名的正顺序显示,键2实现公交车站名的逆显示,键3实现清屏,键4可以用来插入广告等。 开始LCD初始化定时器0的中断设置键1按下?判断是第几次按下执行相应显示,相应的指示灯亮,蜂鸣器蜂鸣一声YNNYWhile(1)键2按下?键3按下?键4按下?NN判断是第几次按下LCD清屏插入广告等YY执行相应显示,相应的指示灯亮,蜂鸣器蜂鸣一声 图5.1 主程序流程图5.1.2 定时器中断0服务子程序流程图功能:按键处理。定时器中断0键盘处理switch退出YCase1Case2Case3Case4图5.2 定时器中断0服务子程序流程图5.1.3 遥控接收程序流程图功能:判断接收到的数据是否正确。开始串行口初始化接收数据数据是否接完?YNN不处理,退出进入外部中断1Y接收到的数据正确?图5.3 遥控接收程序流程图5.1.4 定时中断1子程序流程图 功能:解码来控制播报站点相应信息。定时器中断1解码判断解出的是什么码退出显示相应站名,相应指示灯亮,蜂鸣器蜂鸣一声图5.4 定时中断1子程序流程图5.1.5 外部中断1子程序流程图 功能:通过外部中断1来实现红外的控制。外部中断1定时中断1处理退出图5.5 外部中断1子程序流程图5.2 程序设计源程序见附录三6 系统测试红外接收系统的测试可以通过观察发光二极管D1的状态来辨别该系统是否正常工作,如果接收到遥控信息,发光二极管点亮。还可以用电压表来测试信号端的电压来判断接收系统是否正常工作,如果电压表上显示的电压小幅度摆动,说明接收正常。按下遥控上的任意键,接收电路上的发光二极管D1发光,说明接收电路正常工作。但是,译码不够准确,所以不能很好的按预定的顺序来显示报站。预定的报站顺序是:键1按下,LCD12864显示龙岩学院,LED1点亮;键2按下,LCD12864显示曹溪金鹏,LED2点亮;键3按下,LCD12864显示交警大队,LED3点亮;键4按下,LCD12864显示人民医院,LED4点亮;键5按下,LCD12864显示罗桥西站,LED5点亮。报站的同时,蜂鸣器蜂鸣一声报警。SB1按下:如果是第1次按下,LCD12864显示龙岩学院,LED1点亮;再按下,依次显示曹溪金鹏、交警大队、人民医院、罗桥西站。SB2按下,如果是第1次按下,LCD12864显示罗桥西站LED5点亮;再按下,依次显示人民医院、交警大队、曹溪金鹏、龙岩学院。报站时,相应的指示灯点亮,蜂鸣器蜂鸣一声报警。SB3按下,LCD12864清屏;SB4按下,可以在LCD12864插入广告等。测试基本达到设计要求, ISD4004语音芯片的调试尚未成功。 附 录附录一 原理图附录二 PCB图 图1 89C52控制的LCD12864显示电路 图2 ISD4004语音录放电路附录三 源程序#include /*预定义*/#define uchar unsigned char#define uint unsigned intunsigned char key_temp,key_bak,ychi,keyvalue=0x0f;unsigned char one_cnt=0,two_cnt=0;uchar key=0x0f;unsigned char up,dowm;static unsigned char data IRCode3,IRCON,IRCON2;static unsigned char data DT;/*12864管脚配置*/#define port P1sbit rs=P30;sbit rw=P31;sbit e=P32;sbit cs1=P36;sbit cs2=P37;sbit P3_2 = P33;sbit led1 = P20;sbit led2 = P21;sbit led3 = P22;sbit led4 = P23;sbit led5 = P24;sbit beep = P25;uchar code data_shuju2232 = /*- 文字: 龙 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0xF0,0x12,0x1C,0xD0,0x10,0x10,0x10,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x10,0x08,0x3F,0x42,0x41,0x40,0x40,0x40,0x70,0x00,/*- 文字: 岩 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x40,0x5E,0x50,0x50,0xD0,0x50,0x5F,0x50,0x50,0x50,0x50,0x5E,0x40,0x40,0x00,0x10,0x08,0x04,0x02,0x7F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,/*- 文字: 学 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,/*- 文字: 院 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,/*- 文字: 曹 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x02,0x02,0xFA,0xAA,0xAA,0xAA,0xFF,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0xFA,0x02,0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,/*- 文字: 溪 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x21,0x86,0x60,0x02,0x06,0x4A,0xE2,0x56,0x49,0x21,0x89,0x05,0x00,0x00,0x00,0x04,0xFC,0x03,0x00,0x44,0x45,0x25,0x25,0x15,0x0F,0x15,0x25,0x47,0xC4,0x44,0x00,/*- 文字: 金 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x40,0x40,0x20,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x50,0x20,0x60,0x20,0x00,0x40,0x40,0x42,0x42,0x4A,0x72,0x42,0x7F,0x42,0x62,0x5A,0x42,0x42,0x40,0x40,0x00,/*- 文字: 鹏 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0xFE,0x12,0xFE,0x00,0xFE,0x12,0xFE,0x00,0xFC,0x0E,0x35,0x44,0x7C,0x00,0x00,0x20,0x1F,0x21,0x7F,0x20,0x1F,0x41,0x7F,0x08,0x09,0x09,0x29,0x49,0x21,0x1F,0x00,/*- 文字: 人 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00,/*- 文字: 民 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x9E,0x80,0x80,0x00,0x00,0x00,0x00,0xFF,0x40,0x20,0x10,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0xF0,0x00,0x00,/*- 文字: 医 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0xFE,0x42,0xA2,0x9E,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0xD2,0x82,0x00,0x00,0x00,0x7F,0x40,0x40,0x50,0x48,0x44,0x43,0x40,0x41,0x42,0x5C,0x48,0x40,0x40,0x00,/*- 文字: 院 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,/*- 文字: 交 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x08,0x88,0x48,0x38,0x28,0x09,0x0E,0x0C,0x08,0x98,0x28,0x68,0x48,0x08,0x00,0x00,0x80,0x80,0x40,0x41,0x22,0x14,0x18,0x0C,0x16,0x23,0x61,0xC0,0x40,0x00,0x00,/*- 文字: 警 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x1A,0xFA,0xAF,0xAA,0xEF,0x0A,0xFA,0x10,0x8F,0x54,0x24,0x5C,0x84,0x04,0x00,0x02,0x02,0x02,0xEA,0xAA,0xAA,0xAB,0xAA,0xAB,0xAA,0xAA,0xEA,0x02,0x02,0x03,0x00,/*- 文字: 大 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,/*- 文字: 队 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0xFE,0x02,0x12,0x2A,0xC6,0x02,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x02,0x44,0x43,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x60,0x20,0x00,/*- 文字: 罗 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x00,0x7E,0x22,0x22,0x22,0xFE,0xA2,0xA2,0xBE,0xA2,0xA2,0xA2,0xBE,0x00,0x00,0x80,0x88,0x88,0x84,0x42,0x43,0x25,0x28,0x10,0x10,0x08,0x04,0x03,0x00,0x00,0x00,/*- 文字: 桥 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x88,0x68,0xFF,0x28,0x48,0x18,0x92,0x52,0x32,0x1E,0x32,0x52,0x92,0x12,0x10,0x00,0x01,0x00,0xFF,0x00,0x01,0x41,0x30,0x0F,0x00,0x00,0x00,0xFF,0x00,0x01,0x01,0x00,/*- 文字: 西 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x02,0x00,0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,/*- 文字: 站 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x10,0x50,0x92,0x1C,0x10,0xF0,0x10,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x00,0x10,0x10,0x0B,0x0C,0x0B,0x08,0x00,0x7F,0x21,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,/*- 文字: 到 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x22,0x72,0x2A,0x26,0xE2,0x2A,0x72,0x22,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,0x42,0xC2,0x42,0x22,0x3F,0x22,0x12,0x12,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,/*- 文字: 了 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;/* 函数名称:Delay()* 功 能:延迟时间=a*1ms* 入口参数:* 出口参数:无*/void delay10ms(void) unsigned char i,j; for(i=2000;i0;i-) for(j=2000;j0;j-);/* 函数名称:Lcd_Display_On()* 功 能:LCD显示开* 入口参数:无* 出口参数:无*/void Lcd_Display_On() port=0x3f; rs=0; rw=0; e=1; e=0; /* 函数名称:Lcd_Display_Off()* 功 能:LCD显示关* 入口参数:无* 出口参数:无*/void Lcd_Display_Off() port=0x3e; rs=0; rw=0; e=1; e=0; /* 函数名称:Lcd_Set_X(uchar x)* 功 能:LCD设置X坐标* 入口参数:x * 出口参数:无*/void Lcd_Set_X(uchar x) port=0xb8|x; rs=0; rw=0; e=1; e=0; /* 函数名称:Lcd_Set_Y(uchar y)* 功 能:LCD设置Y坐标* 入口参数:y* 出口参数:无*/void Lcd_Set_Y(uchar y) port=0x40|y; rs=0; rw=0; e=1; e=0; /* 函数名称:Lcd_Set_X_Y(uchar x, uchar y )* 功 能:LCD设置x y坐标* 入口参数:x y* 出口参数:无*/void Lcd_Set_X_Y(uchar x, uchar y) if( y64 ) cs1=1; cs2=0; Lcd_Set_Y( y ); else cs1=0; cs2=1; Lcd_Set_Y( y-64 ); Lcd_Set_X( x);/* 函数名称:Lcd_Write_Command()* 功 能:写指令代码* 入口参数:无* 出口参数:无*/void Lcd_Write_Command(uchar temp) port=temp; rs=0; rw=0; e=1; e=0; /* 函数名称:Lcd_Write_Byte()* 功 能:写数据* 入口参数:无* 出口参数:无*/void Lcd_Write_Byte(uchar temp) port=temp; rs=1; rw=0; e=1; e=0; /*名称:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )*功能:显示16X8字符(字母) *入口参数:*出口参数:*说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示 */void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point ) uchar i , j,temp; temp=y; if( bit_flag ) for( i=0; i2; i+ ) x+=i; y=temp; for( j=0;j8;j+ ) Lcd_Set_X_Y( x, y ); y+; Lcd_Write_Byte( point i*8 + j ); else for( i = 0; i 2; i+ ) x += i; y = temp; for( j = 0; j 8; j+ ) Lcd_Set_X_Y( x, y ); y+; Lcd_Write_Byte( point i * 8 + j ); /* 名称:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point )* 功能:显示16*16字符(汉字) * 入口参数:x y data* 出口参数:无*说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示*/void Lcd_Character_16X16( bi
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!