




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 微机检测课程设计说明书交通与汽车工程学院课程设计说明书课 程 名 称: 微机检测课程设计 课 程 代 码: 8416671 题 目: 年级/专业/班: 学 生 姓 名: 学 号: 开 始 时 间: 年 月 日完 成 时 间: 年 月 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日目 录摘要21 引言31.1 问题的提出 31.2 任务与分析32 方案设计42.1 系统设计方案4 2.2 系统总体框图4 3 系统硬件设计53.1 89C51单片机 53.2 LCD12864
2、人机交互设备73.3 ADC0804 AD转换芯片 84系统软件设计104.1 proteus软件环境介绍10 4.2 protel软件环境介绍 11 4.3系统软件分析11 4.4 程序流程图125 系统调试过程14结论21致谢22 参考文献23附录24 摘 要 此次蓄电池电压检测系统设计以89C51单片机为控制核心。随着现代工业蓬勃发展,蓄电池在各行各业的应用越来越广泛,它为各种系统提供必不可少的电源。蓄电池在现代汽车上更是必不可少。此次课程设计电压检测系统原理图以51单片机、AD0804芯片、液晶屏lcd12864和一些常用元器件完成制作。通过滑动变阻器的滑头端输出电压来模拟蓄电池的电压
3、,经AD采样,在液晶屏上显示蓄电池电压,并且当电压低于规定值2V时, 会提醒驾驶员“电压过低,请充电”的显示条目。经测试,该系统的硬件电路设计任务要求。关键词: 汽车蓄电池;LCD12864;51单片机;proteus仿真1 引 言 1.1 问题的提出 伴随着汽车工业全球化的发展,汽车上用于蓄电池检测显示的设备往往很复杂。当下,我们考虑利用现在所学的微机检测知识及相关元器件搭建出能够检测并显示的蓄电池系统,以满足市场的相关需要。此次课程设计题目基于微机检测原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作汽车蓄电池电压检测系统。1.2任务与分析 此次
4、设计的系统的控制单元是89C51单片机。硬件电路图的设计在Protel软件环境中进行,而软件编程则在keil环境中进行,通过编译、调试,生成HEX文件。最后将作源代码的HEX文件是导入到仿真环境Proteus的硬件电路中,进行仿真测试。通过滑动变阻器的滑头端输出电压来模拟蓄电池的电压,经AD采样,在液晶屏上显示蓄电池电压,并且当电压低于规定值2V时, 会提醒驾驶员“电压过低,请充电”的显示条目。本次课程设计是应用51单片机原理和微机控制与接口技术设计蓄电池检测系统控制器的硬件电路,并采用C语言进行程序设计。通过控制外部AD0804芯片来检测滑动变阻器模拟输出的蓄电池电压,当电压低于2V时,系统
5、能够及时的给出提示信息。本系统的难点在于AD芯片的应用以及如何在LCD12864上显示提示信息。由于课程设计需要Proteus软件进行仿真,而软件自带的LCD12864是无字符液晶显示器,所以程序中还要编写显示字符的程序。2 系统方案设计2.1 系统设计方案 通过查阅相关资料,设计初期共有二个方案供我选择,分别是: 方案一:系统采用AT89C51单片机作为主控芯片,AD0804芯片作为电压检测的AD转换模块。在LCD1602上显示。 方案二:系统采用AT89C51单片机作为主控芯片,AD0804芯片作为电压检测的AD转换模块。采用LCD12864显示。进行方案比较,由于要求显示汉字提示信息,方
6、案二可以精确的显示提示信息,最后确定设计采用第2方案,即系统是由89C51单片机,AD0804芯片,LCD12864液晶显示器组成。2.2 系统总体框图LCD12864主控芯片AT89C51AD0804滑动变阻器图1 系统总体框图 在设计里面,利用单片机设计电路,以滑动变阻器模拟蓄电池电压,用AD芯片进行采样,最后通过LCD12864液晶显示器进行显示,由于使用软硬件结合的方式代替了数字电路的复杂性,所以电路结构简单、调试也相对方便,经济实惠。3 系统硬件电路设计3.1 89C51单片机 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable
7、 and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。0C51是INTEL公司MCS-51系列单片机中最基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。 80C51内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,80C51还可工作
8、于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。80C51有PDIP(40pin)和PLCC(44pin)两种封装形式。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其引脚图如图2所示:图2 89C51单片机引脚图 89C51单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统完全兼容,只不过用Flash ROM 替代了ROM/EPROM而已3。89C51单片机内部结构如图3所示。图3 89C51单片机内部结构示意
9、图各引脚的功能如下:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高3。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接
10、收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”
11、后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR 8EH地址上置0。此时, ALE只有在执行MOVX,MO
12、VC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA:当/EA保持低电平时,则在此期间CPU只访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,则执行内部程序存储器中的程序。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的
13、输入。 XTAL2:来自反向振荡器的输出。3.2 LCD12864人机交互设备 为了进行实时的显示,本次设计选用LCD12864作为显示设备,12864可分为无字符型和有字符型。由于Proteus中自带的LCD12864为无字符型,所以还要在程序中加入字符编码。lcd12864液晶显示模块是12864点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。
14、图4 LCD12864实物图3.3 ADC0804 AD转换芯片 ADC0804是用CMOS集成工艺制成的逐次比较型摸数转换芯片。分辨率8位,转换时间100s,输入电压范围为05V,增加某些外部电路后,输入模拟电压可为 5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上,无须附加逻辑接口电路。ADC0804芯片外引脚图如7.25所示图5 ADC0804 引脚名称及意义如下:VIN+ VIN- :ADC0804的两模拟信号输入端,用以接受单极性、双极性和差摸输入信号。DB8DB0 :A/D转换器数据输出端,该输出端具有三态特性,能与微机总线相接。AGN
15、D:模拟信号地。DGND:数字信号地。CLKIN:外电路提供时钟脉冲输入端。CLKR:内部时钟发生器外接电阻端,与CLKIN端配合可由芯片自身产生时钟脉冲,其频率为1/1.1RC。图5 ADC0804引脚图CS:片选信号输入端,低电平有效,一旦CS有效,表明A/D转换器被选中,可启动工作。WR:写信号输入,接受微机系统或其它数字系统控制芯片的启动输入端,低电平有效,当CS、WR同时为低电平时,启动转换。RD:读信号输入,低电平有效,当CS、RD同时为低电平时,可读取转换输出数据。INTR:转换结束输出信号,低电平有效。输出低电平表示本次转换已完成。该信号常作为向微机系统发出的中断请求信号。在使
16、用时应注意以下几点:(1)转换时序:ADC0804控制信号的时序图各控制信号时序关系为:当CS ADC0804控制信号的时序图与WR同时为低电平A/D转换器被启动切在WR上升沿后模数完成转换,转换结果存入数据锁存器,同时,INTR自动变为低电平,表示本次转换已结束。如CS、RD同时来低电平,则数据锁存器三态门打开,数字信号送出,而在RD高电平到来后三态门处于高阻状态。(2)零点和满刻度调节:ADC0804的零点无须调整。满刻度调整时,先给输入端加入电压 ,使满刻度所对应的电压值是,其中是输入电压的最大值,是输入电压的最小值。当输入电压与值相当时,调整端电压值使输出码为FEH或FFH。(3)参考
17、电压的调节:在使用A/D转换器时,为保证其转换精度,要求输入电压满量程使用。如输入电压动态范围较小,则可调节参考电压 ,以保证小信号输入时ADC0804芯片8位的转换精度。(4)接地:模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以至影响转换结果的准确性。A/D、D/A及取样保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别连接,然后将模拟地与数字地仅在一点上相连。地线的正确连接方法 本次课程设计系统采用ADC0804AD转换芯片采样滑动变阻器上的电压,其他外部电路采用芯片资料上的典型应用电路。系统采用AD
18、采样电路如图6所示 图6 AD采样电路 4 系统软件设计4.1 proteus软件环境介绍本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出的效果。Pro
19、teus建立了完备的电子设计开发环境,尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果。Proteus是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件.)。其实Proteus 与 multisim比较类似,只不过它可以仿真MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。当然,硬件实践还是必不可少的。在没有硬件的情况下,Pro
20、teus能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必要的。Proteus软件主要具有以下几个方面的特点:1、设计和仿真软件Proteus 是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字电路的设计能力。2、它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。3、它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。4、它可以仿真目前流行的单片机,如PICS, ATMEL-AVR, MOTOROLA, 8051 等。5、在设计综合性
21、方案中,还可以利用ARES开发印制电路板。4.2 Protel软件环境介绍Protel印制板设计软件包是澳大利亚protel technology公司与1990年推出的电子CAD产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它采用了分层次下拉窗口菜单结构形式,用户基本上不需要记背太多的键盘命令,用鼠标点击菜单命令就能操作,protel有着很高的自动布线布通率。布通率是电子产CAD产品的一项重要指标,它反映电子元件在电路图中连接关系有多少能在印刷版图中实现。在设计常用的单、双面印制板时只要选择适当的元件布局和布线策略方法,protel就可以轻易的达到98%-100%的布通率。对于极
22、少数不能布通的定方,protel可以用飞线指示出来,引导用户用手工方法连通。另外,protel有强大的宏命令设置功能,利用宏命令功能多定义的热键可以大大提高操作速度1。 Protel对微机的软硬件配置要求很低:cpu在8088以上,dos2.0以上版本,内存640kb以上,双软件(或一个软件一个硬盘),单色显示器(多层板设计时最好用彩色),各种兼容打印机。也能在Windows9X平台的模拟DOS下运行。Protel已成为印制板设计加工方面的工业标准。据初步统计protel在CAD的市场占有率达 95%,成为电子产品制造业界的首选CAD软件。4.3系统软件分析 任何一个应用系统,它们都有着自己的
23、硬件系统和软件系统,少了任何一个部分都不可能称之为一个完整的应用系统,它们之间是相互依存的一个整体,硬件系统是软件系统的一个基础和前提,为软件系统提供了一个操作平台;而软件系统是硬件系统的灵魂,它对硬件系统起到扩充和完善的作用。可想而知软件系统与硬件系统同等重要,系统软件设计过程为:系统采用AT89C51单片机进行设计,程序首先对AD进行初始化,滑动变阻器滑片的不同位置将对应不同的电压值,AD采集到的数值也不相同。通过调用转换程序对其进行标度变换,最终显示在LCD12864上。如果标度变换的数值小于所设定的值时,LCD12864上面将会显示提示信息。4.4 程序流程图主程序框图:开始AD模块初
24、始化液晶初始化读AD采样数据将数据转化为电压值电压是否小于2NY显示电压值显示电压值显示提供信息图7 主程序框图数据转换子程序:开始i=(X*15*1000)/255乘以1000提取每一位数字用于显示结束 图8 按键检测子程序框图滤波子程序流程开始:将AD采样值赋给Get用本次采样值减去上次采样值得变化量XX是否大于最大允许差值NY电压取上次采样值电压取本次采样值将Get赋给getI进行数据更新结束 图9 滤波子程序流程图延时子程序框图:开始将实参赋给xX0? X自减1给Y赋初值100Y自减1YNY0?结束Y N 图10 延时子程序框图说明:该程序主要是实现软件可变延时的功能,该延时子程序主要
25、实现1ms延时 (程序由双重循环嵌套实现,外循环执行减1操作1次,内循环执行加1操作100次。调用延时函数的实参值不同,其延时的时间不同,延时时间=实参*1ms。5 系统调试过程通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进行下一步的修改。(1)在Protel 99 SE中,对硬件电路图进行ERC电气规则检查。 图 11 protel原理图图12 ERC电气规则检查结果封装好原理图元件生成网络表加载生成PCB:如图13图13 PCB布局图(2)程序调试程序经过调试显示“0错误,0警告”。表示程
26、序调试通过。如 图14 图14 程序调试结果(3) protues调试 仿真图建立 :系统采用Proteus软件进行仿真,利用软件自带的仿真模块建立系统的仿真图。图15为蓄电池电压检测系统的最小系统图。 图15 主控芯片仿真 系统采用滑动变阻器作为蓄电池的输入电压,通过改变滑片的位置将输出不同的电压。为了显示器件的对比,在此选用了软件自带的电压表进行检测。图16 系统检测系统 系统采用LCD12864液晶屏作为显示器件,其具体的仿真连接图如下图17 系统的显示器件图当系统检测完后得到输入电压小于我所设定的电压值时,显示提示信息。当电压正常时,不显示。Proteus仿真调试结果:在不同的电压输入
27、值中对应的显示情况为,当调节滑动变阻器改变AD输入值,此时可以通过电压表观察此时滑动变阻器的电压为+1.8V,单片机通过采集进行程序处理,在显示器上面对应的显示当前值。由于此时的电压低于设定值2V所以,此时显示器有提示信息“电压过低,请充电”如Proteus仿真图(1)所示Proteus仿真图(1)当逐渐调节滑动变阻器使其电压值大于2V时,此时显示器显示当前的电压值但提示信息将消失。如Proteus仿真图(2)所示 Proteus仿真图(2)结 论本此次设计过程中,我查阅了一些相关资料,使得我更深入的了解51系列单片机芯片的应用以及相关软件、硬件的使用方法。在这段时间里,我不仅完成设计所要求的
28、内容,也掌握了一些AT89C51芯片的具体功能。此外,设计中所涉及到的元器件还有:电容、电阻、液晶显示器、AD0804等,我通过查阅相关元器件的作用及工作原理。在整个设计过程中,我们不仅能将书本上学到的关于单片机相关的知识与实践相结合,而且还培养了查找相关资料和自学能力。这将对我们今后的实践提供很大的帮助。设计中还让我意识到:理论和实践相结合的重要性。虽然电路看上去比较简单,但实际行动起来将会遇到许多困难。因此,设计过程中要保持一种持之以恒、严谨的学习态度,这样才会在设计过程中及时的发现问题、解决问题。致 谢在陈飞老师的指导下,我完成了本次课程设计。陈老师是一个拥有专业知识,严谨治学态度,精益
29、求精作风的老师,他的严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。在课程设计里面,他让我重新认识到了专业知识学习的重要性,还使我明白了许多为人处世的道理。本课程设计从选题到完成,都是老师指导下完成。另外,本次设计的完成也离不开各位同学给我的建议和帮助。在此,我谨向陈飞老师和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢!参考文献1Protel99SE EDA 技术及应用徐峥颖编著,北京:机械工业出版社,20052单片机系统的protues设计与仿真张靖武编著,北京:电子工业出版社,20073单片机原理及接口技术李朝青编著,北京:北京航空航天大学出版社,20054M
30、CS-51单片机应用开发实用子程序边春远编著,北京:人民邮电出版社,20055 刘守义编著.单片机应用技术M.西安:西安电子科技大学出版社,2002.6 韩志军编著.单片机应用系统设计M.北京:机械工业出版社,2005.7 张毅刚,刘喜元编著.新编MCS-51单片机应用设计M.哈尔滨:哈尔滨工业大学出版社,2003.8 唐岚编著.汽车测试技术M.北京:机械工业出版社,2006.附录图protel原理图程序代码:#include /#include #define uchar unsigned char#define uint unsigned int#define lcm P1 sbit p_
31、csl=P04;sbit p_csr=P03;sbit p_di=P02;sbit p_rw=P01;sbit p_e=P00;sbit p_rst=P07;sbit ad_INTR=P24;sbit ad_RD=P25;sbit ad_WR=P26;uchar code HZ;uchar code Ez;uint shi,ge,xiao1,xiao2,xiao3,get,get_l;uint dianya;/电压实际是浮点数,这个电压实际是指AD转化完成后得到的二进制数据,电压的范围定位0到15V/那么得到的真实电压应该是dianya*15整除255得到整数部分,对255取余再乘100对25
32、5取余,得到小数部分/*函数声明*/void delay(uint k);void wcode(uchar c,uchar csl,uchar csr);void wdata(uchar c,uchar csl,uchar csr);void set_statrline(uchar i);void set_xy(uchar x,uchar y);void dison_off(uchar o);void reset();void lcd_init(void);void lw(uchar x,uchar y,uchar dd);/写数据函数void disp_Hz(uchar xx,uchar y
33、y,uchar n,uchar fb);/显示汉字void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb);void data_change(uint x);/数据转化将AD得到的数据按位转化为数字方便显示void Tdelay(unsigned int i);void get0804();/延时void Tdelay(unsigned int i) while(i-);void get0804() ad_WR=0;Tdelay(5) ;ad_INTR=0;Tdelay(5) ;ad_INTR=1;Tdelay(5) ;ad_WR=1;Tdelay(5)
34、;P1=0xff ; ad_WR=0;Tdelay(5);ad_RD=0;Tdelay(30); get=P3;Tdelay(5);ad_RD=1;Tdelay(5);ad_WR=1;void delay(uint k)uint i; for(;k0;k-) for(i=0;i124;i+) ; /LCM忙判断void lcd_busy(void)p_di=0; p_rw=1; /*lcm=0xff; while(1) p_e=1; if(lcm0x80) break; p_e=0; p_e=0;*/写指令到LCMvoid wcode(uchar c,uchar csl,uchar csr)p
35、_csl=csl; p_csr=csr; lcd_busy(); p_di=0; p_rw=0; lcm=c;/将变量C赋予LCM p_e=1; p_e=0;/写数据到LCM子函数void wdata(uchar c,uchar csl,uchar csr)/c表示的是要写的数据8个二进制位p_csl=csl; p_csr=csr; lcd_busy(); p_di=1; p_rw=0; lcm=c;/将变量C赋予LCM p_e=1; p_e=0;/设定起始行void set_startline(uchar i)i=0xc0+i; wcode(i,1,1);/定位X方向,Y方向void set
36、_xy(uchar x,uchar y)x=x+0x40; y=y+0xb8; wcode(x,1,1); wcode(y,1,1);/屏幕开启、关闭void dison_off(uchar o)o=o+0x3e; /o为1为开,为0是关 wcode(o,1,1);/复位子函数void reset()/delay(1000); p_rst=0; delay(20); p_rst=1; delay(20);/LCM初始化void lcd_init(void)uchar x,y; reset(); dison_off(0); for(y=0;y8;y+) for(x=0;x=64) set_xy(
37、x-64,y); wdata(dd,0,1);/写右半屏 else set_xy(x,y); wdata(dd,1,0); /显示汉字子函数void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)/xx为该行第xx个字,共8字,yy为第几行,共8行,n为字库中第N个字。uchar i,dx; for(i=0;i16;i+) dx=HZ2*i+n*32; /2*i为选择偶数行,因其为列扫描 一个字在X方向应该是16个像素,因为用的是整列16个从上到下编码每一列占两个字符 if(fb) dx=255-dx;/反白显示lw(xx*16+i,yy,dx);dx=
38、HZ(2*i+1)+n*32;if(fb) dx=255-dx;lw(xx*16+i,yy+1,dx); void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)/显示数字或英语 uchar i,dx; for(i=0;i10 & x-10) dianya=get_l;else dianya=get;get_l=get;void data_change(uint x)uint i,j;i=(x*15)/255;j=(x*15)%255)*200/51;/本来应该是 (x*15)%255)*1000/255 会出现溢出shi=i/10;ge=i%10;xi
39、ao1=j/100;xiao2=j%100/10;xiao3=j%100%10;/*主函数*/void main()uchar loop,j;/ uchar fb=0; lcd_init(); delay(300);for(loop=0;loop8;loop+)/行1 disp_Hz(loop,0,loop,fb); /dianya=111; while(1) get0804();filter(); data_change(dianya);fb=0;if(shi) disp_Ez(4,4,shi,fb);else disp_Ez(4,4,12,fb); disp_Ez(5,4,ge,fb);d
40、isp_Ez(6,4,10,fb);disp_Ez(7,4,xiao1,fb);disp_Ez(8,4,xiao2,fb); disp_Ez(9,4,xiao3,fb);disp_Ez(10,4,11,fb); if(dianya=34)j+;if(j=5)fb=1;if(j=10) j=0;for(loop=0;loop8;loop+)/行1 disp_Hz(loop,6,loop+8,fb); elsefb=0;for(loop=0;loop16;loop+)/行1 disp_Ez(loop,6,12,fb); uchar code HZ=0x00,0x00,0x40,0x40,0x42,
41、0x44,0x44,0x44,0x58,0x44,0x40,0x44,0x40,0x44,0x7F,0x44,0x40,0x44,0x40,0x44,0x50,0x44,0x48,0x44,0xC6,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,/*当,0*/0x08,0x00,0x08,0x00,0xE8,0xFF,0x29,0x09,0x2E,0x49,0x28,0x89,0xE8,0x7F,0x08,0x00,0x08,0x00,0xC8,0x0F,0x0C,0x40,0x0B,0x80,0xE8,0x7F,0x08,0x00,0x08,0x00,0x00,0x0
42、0,/*前,1*/0x12,0x00,0x12,0x00,0x12,0xFA,0x52,0xAA,0x77,0xAB,0x52,0xAB,0xD2,0xAA,0xDA,0xFA,0x52,0xAA,0x52,0xAA,0x37,0xAA,0x92,0xAA,0x12,0xFB,0x12,0x06,0x12,0x00,0x00,0x00,/*蓄,2*/0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8
43、,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*电,3*/0x10,0x04,0x60,0x04,0x02,0x7E,0xCC,0x01,0x80,0x00,0x80,0x00,0xFC,0x3F,0x40,0x40,0x20,0x40,0xFF,0x4F,0x10,0x40,0x08,0x44,0xF8,0x47,0x00,0x40,0x00,0x78,0x00,0x00,/*池,4*/0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,0x88,0x88,
44、0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*电,5*/0x00,0x80,0x00,0x60,0xFE,0x1F,0x02,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0xFA,0x7F,0x82,0x40,0x82,0x40,0x82,0x44,0x82,0x58,0x82,0x40,0x02,0x40,0x00,0x00,/*压,6*/0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0
45、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*:,7*/0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*电,0*/0x00,0x80,0x00,0x60,0x
46、FE,0x1F,0x02,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0x82,0x40,0xFA,0x7F,0x82,0x40,0x82,0x40,0x82,0x44,0x82,0x58,0x82,0x40,0x02,0x40,0x00,0x00,/*压,1*/0x40,0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,0x00,0x20,0x08,0x40,0x48,0x40,0x88,0x41,0x08,0x40,0x08,0x48,0x08,0x50,0xFF,0x4F,0x08,0x40,0x08,0x40,0x08,0x40,0x00,
47、0x00,/*过,2*/0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0xFC,0xFF,0x84,0x40,0x84,0x20,0x84,0x00,0xFE,0x41,0x82,0x8E,0x83,0x30,0x82,0x40,0x80,0xF8,0x00,0x00,/*低,3*/0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*,,4*/0x40,0x00,0x42,0x00,0xCC,0x7F,0x00,0x20,0x00,0x10,0x44,0x00,0x54,0xFF,0x54,0x15
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 窗户买卖安装合同范本
- 2005监理合同范本
- 分期起租房合同范例
- 2025年-陕西建筑安全员A证考试题库附答案
- 企业担保合同样本
- 轮式塔式起重机行业跨境出海战略研究报告
- 道路工程建筑行业跨境出海战略研究报告
- 艺术陶瓷企业制定与实施新质生产力战略研究报告
- 学前教育企业制定与实施新质生产力战略研究报告
- 西南房地产企业制定与实施新质生产力战略研究报告
- 公司合格供应商清单
- 【农业养殖技术】花鲈淡水池塘标准化养殖技术
- 政治学基础课件全部终稿
- 一园青菜成了精-课件
- 酒店运营管理课件
- 中国古代建筑理论知识考核试题与答案
- 山东省青岛市各县区乡镇行政村村庄村名居民村民委员会明细
- 注浆防水工程检验批质量验收记录
- 绿色建筑评价评分表
- 接触网工程施工方法及技术措施
- 质量奖励(罚款)通知单
评论
0/150
提交评论