版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于RA8835的液晶屏驱动程序设计摘要:液晶显示器(LCD)是现代电子产品中应用非常广泛的一种显示设备。本设计主要介绍了一个基于RA8835的液晶屏驱动程序的设计,该功能由C8051F020单片机和RA8835液晶驱动芯片两个核心器件来实现,C8051F020控制RA8835来完成液晶显示功能。软件局部用C语言来编写,详细介绍了基于单片机C8051F020的应用软件设计。本设计是在原有的硬件平台的根底上根据液晶屏的根本驱动指令给出了各个模块的驱动程序设计,如任意位置打点、画线、画圆、任意位置字符、字符串、汉字的显示,并且分析了最根底的功能模块——打点的算法原理。作为打点功能的延伸,编写了一个支持图片显示的程序。作为显示汉字功能的延伸,编写了一个支持任意大小汉字显示的程序。最后,把以上各个功能模块综合起来显示,也完成了一个简单信息界面的显示。实验证明这是一种简单但有效的工作方案,对此进行少量修改就可用于很多不同场合,实用性强。关键词:C8051F020单片机;LCD;RA8835;驱动程序ThedesignationofLCDdriverbadedonRA8835Abstract:LCDisoneofthemostpopulardisplayinmodernelectronicdevices.ThedesignmainlyintroducesadesignationofLCDdriverbasedonRA8835.Thefunctioncanbecompletedwithtwocoredevices,C8051F020MCUandRA8835LCDdriverIC.C8051F020controlsRA8835tocompletetheLCDfunction.ThesoftwarepartiscomplieswiththeClanguage,theapplicatonsoftwaredesignbasedonC8051F020MCUwasintroducedindetail.AccordingtotheLCDbasicdriveinstructions,thedesign,basedontheoriginalhardwareplatform,giveseachmoduledriverdesign.Forexample,showapointinanyposition,drawline,drawcircle,showacharacter,characterstringorChinesecharacterinanyposition.Thealgorithmtheoryofbasicfunctionmodule——showapointinanypositionisanalysed.Astheextendfunctionofshowingapoint,aprogramsupportingpicturedisplayiswritten.AstheextendfunctionofshowingaChinesecharacter,aprogramsupportinganysizeofChinesecharacteriswritten.Finally,theaboveallfunctionmodulecombined,alsoasimpleinterfacedisplayiscompleted.Experimentsshowthatthisisasimplydesignedbutwellworkedproject,itisprovedthatthedesigncanbeusedinmanydifferentoccasionsmodifiedalittle,itcanbewidelyused.Keywords:C8051F020MCU;LCD;RA8835;driver目录1绪论11.1研究的意义及背景11.2系统概述31.3小结42硬件系统组成及工作原理52.1硬件系统原理框图52.2C8051F020系列单片机52.2.1C8051F020系列单片机系统概述52.3RA8835液晶驱动芯片72.3.1液晶屏显示的原理82.3.2模块接口定义82.3.3模块主要硬件构成说明92.3.4地址计算方法113软件设计根底123.1KeilC51简介123.2RA8835的根底指令模块133.2.1系统设置〔SYSTEMSET〕133.2.2显示状态设置〔DISPLYON/OFF〕143.2.3CGRAM首址设置〔MR〕15光标地址设置〔CSW〕163.2.5读出光标地址〔CSRR〕163.2.6显示数据写入〔MITE〕163.2.7显示数据读出〔MREA〕163.3RA8835的根本驱动函数173.3.1写命令函数173.3.2写数据函数173.3.3读取命令函数173.3.4读取数据函数173.3.5检测“忙〞标志函数173.4RA8835与C8051F020的接口定义173.4液晶屏初始化183.4.1初始化流程图183.4.2初始化程序194应用程序局部214.1打点214.1.1打点的算法214.1.2打点函数214.2画直线224.2.1画直线的算法224.2.2画直线函数224.3画圆224.3.1画圆的算法224.3.2画圆函数234.4显示字符和字符串234.4.1显示字符和字符串的算法234.4.2显示字符和字符串的函数234.5显示汉字234.5.1显示汉字的算法234.5.2显示汉字的模式244.5.3显示大小不同的汉字244.5.4显示汉字的函数244.6显示简单图片254.6.1显示简单图片的算法254.6.2显示简单图片的模式254.6.3显示简单图片的程序255演示程序局部265.1演示流程图265.2演示过程及画面显示275.2.1打点275.2.2画直线275.2.3画一组同心圆285.2.4显示字符串285.2.5显示大小不同的汉字295.2.6显示简单图片306结论31参考文献32致谢331绪论1.1研究的意义及背景随着电子产品设计技术的不断开展,电子产品的设计,尤其是人机交互界面的设计日益趋向人性化。显示器件在人们的日常生活中扮演着越来越重要的角色,这主要表达在它的桥梁角色〔bridgingrole〕或者说人机界面角色〔man-machineinterfacerole〕中,其开展趋势在信息社会中越来越重要。显示器件分类有多种,但最常见的是按显示原理分类,即主动发光显示和非主动发光显示。主动发光型〔自发光型〕是利用信息来调制各像素的发光亮度和颜色,进行直接显示。非主动发光型本身不发光,利用信息调制光源使其到达显示的目的。主动发光显示器主要有:CRT〔阴极射线管显示〕;PDP〔等离子体显示〕;ELD〔电致发光显示〕;LED〔发光二极管显示〕;VFD〔真空荧光显示〕;FED〔场致发射显示〕;OLED〔有机发光二极管显示〕。非主动发光显示器主要有:LCD〔液晶显示〕;ECD〔电化学显示〕;EPID〔电泳成像显示〕。其中,ECD、EPID和ELD这几种显示器应用面不大,市场小。早期的显示器以显像管〔CRT〕显示器为主,但随着科技不断进步,各种显示技术如雨后春笋般诞生,近来由于液晶显示器〔LCD〕具有轻薄短小、低耗电量、无辐射危险,能显示复杂文字及图形、显示面积大小随意、平面直角显示以及影像稳定不闪烁等优点,在近年来价格不断下跌的吸引下,逐渐取代CRT之主流地位,而得到广泛的应用。液晶显示器与传统的显示器相比,有新的特点:显示质量高液晶显示器的每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器〔CRT〕那样需要不断刷新亮点。因此,液晶显示器画面质量高而且绝对不会闪烁,能把眼睛疲劳降到最低。没有电磁辐射传统显示器的显示材料是荧光粉,通过电子束撞击荧光粉而显示,电子束在打到荧光粉上的一刹那间会产生强大的电磁辐射,尽管目前有许多显示器产品在处理辐射问题上进行了比拟有效的处理,尽可能地把辐射量降到最低,但要彻底消除是困难的。相对来说,液晶显示器在防止辐射方面具有先天的优势,因为它根本就不存在辐射。在电磁波的防范方面,液晶显示器也有自己独特的优势,它采用了严格的密封技术将来自驱动电路的少量电磁波封闭在显示器中,而普通显示器为了散发热量的需要,必须尽可能地让内部的电路与空气接触,这样内部电路产生的电磁波也就大量地向外“泄漏〞了。〔3〕可视面积大对于相同尺寸的显示器来说,液晶显示器的可视面积要更大一些。液晶显示器的可视面积跟它的对角线尺寸相同。阴极射线管显示器显像管前面板四周有一英寸左右的边框不能用于显示。〔4〕应用范围广最初的液晶显示器由于无法显示细腻的字符,通常应用在电子表、计算器上。随着液晶显示技术的不断开展和进步,字符显示开始细腻起来,同时也支持根本的彩色显示,并逐步用于液晶电视、摄像机的液晶显示器、掌上游戏机上。而随后出现的DSTN和TFT那么被广泛制作成电脑中的液晶显示设备,DSTN液晶显示屏用于早期的笔记本电脑;TFT那么既应用在笔记本电脑上〔现在大多数笔记本电脑都使用TFT显示屏〕,又用于主流台式显示器上。〔5〕画面效果好与传统显示器相比,液晶显示器一开始就使用纯平面的玻璃板,其显示效果是平面直角的,让人有一种耳目一新的感觉。而且液晶显示器更容易在小面积屏幕上实现高分辨率,例如,17英寸的液晶显示器就能很好地实现1280×1024分辨率,而通常18英寸CRT彩显上使用〔6〕数字式接口液晶显示器都是数字式的,不像阴极射线管彩显采用模拟接口。也就是说,使用液晶显示器,显卡再也不需要像往常那样把数字信号转化成模拟信号再行输出。理论上,这会使色彩和定位都更加准确完美。〔7〕“身材〞匀称小巧传统的阴极射线管显示器,后面总是拖着一个笨重的射线管。液晶显示器突破了这一限制,给人一种全新的感觉。传统显示器是通过电子枪发射电子束到屏幕,因而显像管的管颈不能做得很短,当屏幕增加时也必然增大整个显示器的体积。而液晶显示器通过显示屏上的电极控制液晶分子状态来到达显示目的,即使屏幕加大,它的体积也不会成正比的增加,而且在重量上比相同显示面积的传统显示器要轻得多。〔8〕功率消耗小传统的显示器内部由许多电路组成,这些电路驱动着阴极射线显像管工作时,需要消耗很大的功率,而且随着体积的不断增大,其内部电路消耗的功率肯定也会随之增大。相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比传统显示器也要小得多。近年来,随着单片机技术的飞速开展,涌现了多种性能优良且本钱很低的单片机品种。C8051F系列单片机就是其中之一。在工程应用中,C8051F020可在满足性能要求的前提下,减少浪费、降低本钱。为此,本文给出了一种基于C8051F020和RA8835实现的低本钱液晶显示方案。1.2系统概述最新液晶显示技术应用离不开最新液晶显示技术的开展。液晶显示的开展是当代持续开展速度最快的产业之一,它的开展是有规律的。一个产业的开展,最根本的动力是市场。市场的角度市场,不外需求和竞争。液晶显示产业面对的市场核心也是如此。市场对液晶显示的需求和各类显示器件与液晶显示的竞争是液晶显示开展的最大动力,并决定,主导了液晶显示的开展趋势。市场对液晶显示的需求不断扩大,这是有目共睹的,特别是个人便携式产品的开展,例如,移动通讯产业的迅速开展,为液晶显示的开展注入了动力。市场需求的扩大,将决定了液晶显示持续开展的根本态势。而各类显示与液晶显示在市场上的竞争那么不仅是液晶显示开展的动力,而且将决定液晶显示开展的方向和特点。所以液晶显示的市场竞争是决定液晶显示持续开展趋势的。〔2〕液晶显示内部竞争各个液晶显示厂商间的竞争和各类液晶显示器件之间的竞争是液晶显示内部竞争的主要构成。各厂商间的竞争主要内容是产品的质量和性价比。质量越好,市场越欢送,你就会卖得多,赚钱多;性价比高,客户越快乐,销售量越大,你的利润就更多。所以,液晶显示各厂商间的竞争将会不断的促进液晶显示质量的提高和性价比的提高。换句话说,产品越来越好,价钱越来越廉价——这是液晶显示持续开展的第一个趋势。各类液晶显示之间的竞争对液晶显示开展趋势影响也很大。我们知道,液晶显示的分类是很多的,例如:TN,STN,TFT等。各种类别的液晶显示优缺点各异,对用户来说,他们是互补的,但对各类液晶显示来说,竞争就促成了他们各自克服缺点,发挥优点的不断进步,甚至会激发出灵感开创出新的显示模式。〔3〕液晶显示与各类显示的竞争液晶显示与其他几种平板显示在市场上的竞争是驱动液晶显示持续开展的又一大动力。近年来,PDP、OLED、DMD、FED等多种非液晶的平板显示都已经陆续成熟上市,它们针对液晶显示的某些缺乏,如亮度低,不易大屏幕化等缺陷,来势汹汹地发起了对液晶显示的挑战。某些观点喜欢将显示器分为“代〞,而且认为“新一代〞的显示会取代“老一代〞的显示,如最近,某些人即声称OLED将会取代液晶显示。事实上,由于各种显示各有不同的优缺点和各自特性,一般不可能互相取代,但是,利用本身的某一特长局部取代或冲击另一类显示器件是完全现实的。液晶显示不得不面对这一挑战和竞争。这一挑战和竞争既是对液晶显示产业的威胁,又是液晶显示产业的开展动力。可以预见,各类平板显示器件将直面液晶显示的几大弱势——被动显示、亮度低、比照度不高、背光源功耗大、大屏幕化难度高等发起挑战。这既是各类平板显示器件开展趋势也是液晶显示为保持持续开展的努力方向。1.3小结本设计分为两个局部,即硬件设计局部和软件设计局部。硬件设计局部包括以单片机C8051F020为主的驱动局部和基于RA8835的320×240液晶显示屏局部。本论文中对设计所需要的开发软件KeiluVision3有简单的说明,对作为硬件设计核心的C8051F020单片机的管脚配置也有说明,对单片机C8051F020和RA8835芯片的接口连接也有相应说明。软件局部采用C语言编写驱动程序,其软件实现流程图、图解说明及实现程序都在文中有表达,文中对程序也有详细的解释。2硬件系统组成及工作原理2.1硬件系统原理框图图2-1LCD控制驱动及其接口2.2C8051F2.2.1C本系统选用性能优良且本钱较低的SOC单片机C8051F020作为控制核心。C8051F020/1/2/3器件是完全集成的混合信号系统级MCU芯片,具有64个数字I/O引脚〔C8051F020/2〕或32个数字I/O引脚〔C8051F021/3〕。其主要的内部资源有:高速、流水线结构的8051兼容的CIP-51内核〔可达25MIPS〕,全速、非侵入式的在系统调试接口〔片内〕,真正12位〔C8051F020/1〕或10位〔C8051F022/3〕、100ksps的8通道ADC,带PGA和模拟多路开关,真正8位500ksps的ADC,带PGA和8通道模拟多路开关,两个12位DAC,具有可编程数据更新方式,64K字节可在系统编程的FLASH存储器,4352〔4096+256〕字节的片内RAM,可寻址64K字节地址空间的外部数据存储器接口,硬件实现的SPI、SMBus/I2C和两个UART串行接口,5个通用的16位定时器,具有5个捕捉/比拟模块的可编程计数器/定时器阵列,片内看门狗定时器、VDD监视器和温度传感器。每个MCU都可在工业温度范围〔-45℃到+85℃〕内用2.7V-3.6V的电压工作。端口I/O、/RST和JTAG引脚都容许5V的输入信号电压。C8051F020为100脚TQFP封装〔见图图2-2C8051F020的TQFP—100图2-3C8051F2.3RA8835液晶驱动芯片320240B使用功能强大的RA8835/SED1335作为控制器。适配Intel8080系列和M6800系列MPU的两种操作时序电路,通过硬件设置,可选择二者之一。4位显示数据线,传输数据迅速;具有强大的作图功能;支持文本显示、图形显示以及图形和文本混合显示具备简捷的MPU接口和功能齐全的控制指令集。采用SMT工艺制作,结构稳固,使用寿命长。芯片特性如下:供电电压为5.0V±10%,320×240点阵显示,LCD:FSTN,1/240duty,1/17bias,6:00视角,64KB显示RAM,内含160种5×7点阵字体的字符,温度补偿功能,对环境的适应性强。外形尺寸如图2-7所示:图2-7320240液晶显示器外形图表2-1320240液晶显示器外形图尺寸项 目标 准 尺 寸单 位模 块 体 积160L×109W×12Hmm视 域122×92mm行列点阵数320×240dots点 距 离mm点 大 小mm2.液晶屏显示的原理液晶是一种介于液体与固体之间的热力学的中间稳定相。在一定的温度范围内,它既有液体的流动性和连续性,又有晶体的各向异性。其分子呈长棒形,长度比拟大,分子是一个刚性体,不能弯曲,分子中心一般有一个桥链,分子两头有极性。液晶是一种特殊的物质,它具有四壁效应。在定向膜的作用下,液晶分子在正、背玻璃电极上呈水平排列。但是,它们排列的方向互为正交,而玻璃间的分子呈连续扭转过渡。这样的构造能使液晶对光产生旋光作用,使光的偏振方向旋转90度。平时,当外部光线通过上偏振片之后就形成了偏振光,偏振方向呈垂直方向。当此偏振光通过液晶材料后,旋转90度,偏振方向变成水平方向。由于此方向与下偏振片的偏振方向一致,因此光线完全能够穿过下偏振片而到达反射板,再经反射后沿原路返回,从而呈现出透明状态。当在液晶盒的上、下电极施加一定的电压后,电极局部的液晶分子就会转成垂直排列,从而失去旋光性。因此,从上偏振片入射的偏振光不会发生旋转。当此偏振光到达下偏振片时,因为其偏振方向与下偏振片的方向垂直,而被下偏振片吸收,光线无法到达发射极板形成反射,所以呈现出黑色。实际应用时,可根据需要将电极做成各种文字、数字或点阵。2.3.2表2-2RA8835模块接口定义DB0~DB7:三态数据总线,可直接挂在MCU的数据总线上;CS:片选信号,低电平有效,MCUI访问RA8835时,应将其置低;RD:为8080接口时,该脚为读操作信号;为M6800接口时,那么为使能信号;WR:为8080接口时,该脚为写操作信号;为M6800接口时,那么为是写操作信号;A0:I/O缓冲器选择信号,当A0为0时,写数据参数和读忙标志,当A0为1时,写指令代码和读数据;RES:复位信号,低电平有效,当重新启动RA8835时,还需要使用指令SYSTEMSET。SEL1、SEL2:接口时的类型选择信号。2.3.3模块主要硬件构成说明〔1〕SEL1脚接低时选择Intel8080时序〔模块上JP1-80接10K电阻〕,接高时选择M6800时序〔模块上JP1-68接10K电阻〕。〔2〕忙标志〔BF〕MPU访问RA8835不需要判断其是否“忙〞,RA8835随时准备接受MPU访问并在内部时序下及时地把MPU发来的数据、指令就位。在MPU访问显示存储器时这样做虽然满足了MPU的实时控制,但是牺牲了内部显示扫描的数据读取周期,也就是要中断为显示驱动而读取显示数据的操作,因而不可防止地将在显示屏上出现“雪花〞现象。如果仅仅几次操作,这种中断在瞬间出现,由于人眼在视觉上的惰性而看不出“雪花〞现象,但当大量的数据被传送时,“雪花〞对显示的影响将不可忽略。为了防止“雪花〞的影响,使MPUD的操作对显示的影响最小,RA8835在接口部提供一个状态信号——“忙〞标志BF。忙标志存放器是一个只读存放器,它仅有1位“忙〞标识位BF。在传送完1行有效显示数据到下1行传送开始之间的间歇内BF=0。在这段时间内RA8835将不读取显示数据,此时RA8835接应MPU对显示存储器的访问将不会影响显示效果。BF=1那么表示控制器正在向显示模块传送有效数据,此时RA8835接应MPU对显示存储器的访问将会影响显示效果,只是根据MPU访问的频率决定影响显示的强弱。BF标志可以在数据总线的D6位上读出。〔3〕复位电路RA8835内部配置有复位电路,其控制端/RES为施密特触发器输入,复位信号为低有效,其低电平宽度应大于200uS。复位电路将RA8835内部电路复位,重新启开工作需要写入指令SYSTEMSET指令代码及其P1参数。〔4〕显示RAMRA8835的64K显示RAM分为文本显示特性区和图形显示区2个显示特性区。RA8835中还有专门的存放器来控制2种显示特性区。可以用1种特性单独显示,也可以通过某种逻辑关系将两种显示特性合成显示,这些都是通过软件指令设置实现的。2个显示特性区:=1\*GB3①文本显示特性区此RAM区专用于文本方式显示,在访问RAM区中每个字节的数据都认为是字符代码。控制器将使用该字符代码确定字符库中字符的所在位置,然后将相应的字模数传送至液晶显示屏模块上。在液晶屏上出现该字符的8×8点阵块,即文本显示RAM的1个字节对应显示屏上的8×8点阵。=2\*GB3②图形显示区此RAM区专用于图形方式显示。在该显示RAM区中每个字节的数据直接被送到液晶模块上显示。每个位的电平状态决定显示屏上1个点显示状态,“1〞为显示,“0〞为不显示,所以图形显示RAM的1个字节对应显示屏上的8×1点阵。RA8835能够同时管理三到四个显示区。每个显示区都拥有自己的的显示特性。这里将四个区定义为第一显示区L1、第二显示区L2、第三显示区L3、第四显示区L4。RA8835以第一和第二显示区为主显示区,第三第四显示区为辅显示区。在控制单屏结构液晶显示驱动系统时,RA8835可以分别或同时使用第一、第二和第三显示区。在控制双屏液晶显示驱动系统时,RA8835需要组合使用所有四个显示区。在这种情况下,第一、第二仅管理显示屏上半屏的显示数据,第三、第四显示区管理显示屏的下半屏的显示数据,并规定第一和第三显示区合成为一控制全屏显示,第二和第四合成为一控制全屏显示。管理显示区由如下几个参数存放器:显示起始地址存放器SAD:该地址存放器为16位存放器,其作用是为显示驱动提供显示区域的首地址。该存放器由四个,分别管理四个显示区,它们是:SAD1~SAD4,分别为第一到第四显示区的首地址存放器。显示区宽度存放器AP:该存放器为16位存放器,指示显示区一行所占的单元数,也可以称为显示区的宽度。显示区的宽度对四个显示区来说是统一的。显示区长度存放器SL:该存放器为8位存放器,指示显示区占多少行,每行由AP个字节。显示区长度存放器有两个SL1和SL2。分别管理第一、三显示区,第四、四显示区间接地受SL1和SL2管理。(5)字符发生器内嵌字符发生器CGROM:在此字符发生器中固化了160种5×7点阵字符的字模。随机字符发生器CGRAM:可根据用户需要随时建立和修改。RA8835能给用户提供2个自定义字符发生器的数据区,每个区占有256个字节,为32个代码。第一自定义字符数据区CGRAM1的代码范围规定为80H~9FH;第二自定义字符数据区CGRAM2的代码范围规定为E0H~FFH。当使用这2个区的字符代码时,控制部自动的到CGRAM1或CGRAM2内寻址,提取相应的字模数据。由于2个区的代码不连续,所以地址就不会连续,这样造成显示空间的浪费,因此控制器在管理第二自定义字符数据区时配置了40H异或电路,使E0H~FFH范围内的代码经异或电路后产生新的代码A0H~BFH,由此使其与第一自定义数据区的地址连接起来,这一特点在建立第二自定义数据区时需特别注意。2.3.4地址计算方法如表2-3所示,是屏幕与DDRAM的对应关系。可以看出,从00H到257FH为第一显示区的地址,从2580H到4AFF为第二显示区的地址,依次类推。控制器将水平方向320点分为40个字节,寻址范围为0~39。垂直方向240点以点为最小寻址单位,故寻址范围为0~239。其简单地址映射关系如图2-8所示,写数据时以字节为单位写入,每个字节对应屏幕上的8列。例如,向地址01H写入数据0x11,那么第0行的第7-15列的第7、9、11、13列被点亮显示。表2-3屏幕与DDRAM的对应关系表SG1SG8SG9SG6……SG05S32SG13S30CM10H0H……2H2HCM22H2H……4H4H………………CM3923H23H……25H25HCM4025H25H……27H28H图2-8简单地址映射关系图3软件设计根底KeilC51简介KeilC51是KeilSoftware公司推出的51系列单片机兼容汇编语言和C语言的软件开发工具。它提供了基于Windows的集成开发环境uVision3,拥有丰富的库函数和功能强大的集成开发调试工具,同时具备功能强大的软件仿真和硬件仿真功能;另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KeiluVision3是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,在调试程序,软件仿真方面有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。与汇编语言相比,C语言在功能、结构、可读性和可维护性上有明显的优势,因而易学易用。KeilC51生成的目标代码效率非常高,多数语句生成的汇编代码紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。KeilC51编译器是一个完全支持ANSI标准的C语言编译器,除少数关键地方外,KeilC51和标准ANSIC语言是根本相似的;但是由于51单片机结构的特殊性,KeilC51在ANSIC的根底上进行了一些扩展,使其能够更有效的利用单片机的各种资源。深入理解并应用C51对ANSIC的扩展,是学习C51的关键之一,因为大多数扩展功能都是直接针对C51系列单片机硬件设计的。常用的KeilC51的扩展主要包括:数据类型;存储类型;存储模型;指针;中断函数;再入函数。在整个设计过程中我们主要使用keilC51这个软件进行编写程序,所以我们首先先了解下这个软件的使用方法。点击PROJECT菜单,给程序工程命名,以后可以直接点击此文件以翻开先前做的工程;选择所要的单片机;在工程中创立新的程序文件或者参加旧程序文件;保存新的程序、看是否有语法错误并将其参加到工程中;掌握新建程序工程和编译运行仿真的根本方法,使用软件默认的编译设置,对参加在工程中的C程序文件进行编译;进入调试模式,翻开串行调试窗口,再按运行键,这时就可以看到串行调试窗口中的结果了,这样就完成了第一个C工程;最后,要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启\关闭调试模式按钮,然后就可以进行关闭KEIL等相关操作了。3.2RA8835的根底指令模块3.2.1系统设置〔SYSTEMSET〕0101000000该指令为RA8835等的初始化而配置的。它规定了RA8835工作所必需的各种参数。该指令是MPU操作RA8835控制器时首先要写入的指令。如果该指令参数的设置不适合所要控制的液晶模块的特性那么MPU就不能对液晶显示模块的控制系统做所希望的显示效果。该指令带有8个参数。各参数的功能如下:DR0IVDR0IV1/SM2M1M0R:辅助位移时钟周期的选择位。DR=0为正常运行;DR=1为使用辅助位移时钟周期。通常选取DR=0。IV:负向字符显示时屏面边界选择位IV=0为画面首行作为边界IV=1那么无边界。通常选取IV=1。说明在文本显示方式下第一行显示的字符时顶天的没有天头所以在制作负向字符显示时的效果就不太理想。此时使用IV参数位在显示控制时制造出一行空行作为天头,以到达理想的显示效果。/S:适配驱动系统选择位。该位将选择产生驱动时序信号的类型。/S=0为单屏LCD驱动系统,/S=1为双屏LCD驱动系统。M2:外部字符发生器的字体选择位M2=0为8×8点阵字体M2=1为8×16点阵字体。M1:外部字符发生器M代码区选择位M1=0择CGRAM1字体代码为80~9F;M1=1选择CGRAM1+CGRAM2,字符代码为80~9FH和E0~FFH。M0:字符发生器选择位M0=0选择内部字符发生器=1选择外部字符发生器,此时内部字符发生器被屏蔽,字符代码全部供应外部字符发生器使用。WF00WF0000FXF:交流驱动波形选择位。通常选F=1。FX:字符体宽度设置参〔点列数FX=字符宽+字间距FX的范围是0~7。WF00WF0000FYFY:字符体高度设置参〔点行数。FY=字符高+行间距FY的范围是0~F。P4: C/RC/R:有效显示窗口设置。C/R值设置了显示屏上有效显示的字符数,它的值可以选择比显示屏的实际长度小一些但是余留的局部不能超过64点列C/R值的范围是00~EF。P5: TC/RTC/R:驱动频率的时间常数TC/R是晶振频率转换成模块的工作频率FR的时间常数。它可以由下式求出:fOSC≥9×TC/R×L/F×FRTC/R≥C/R+4FR为帧扫描频率通常取值为FR=70Hz在控制大规模显示模块时在最大振荡频率10MHz下,要满足TR/C取值要求,就要降低液晶显示的帧扫描频率FR。该参数的设置有时非常重要,错误的设置可引起以下几种现象:——行扫描停止且出现高比照度的水平线;——显示不稳定,出现闪烁或全亮或全暗;——LP信号缺乏或不存在P6: L/FL/F:扫描驱动的帧参数。L/F值设置了控制器所要控制的液晶显示驱动系统的扫描行数,其倒数为占空比系数。范围是00H~FFH。P7: APLAP:在显示存储器内分配给一个显示行的单元数〔字节数。P8: APHAP:在显示存储器内分配给一个显示行的单元数〔字节数。AP为双字节参数,APL为低8位APH为高8位通常AP取值为C/R+1或大于C/R的整数以方便计算显示行的显示存储器地址。3.2.2显示状态设置〔DISPLYON/OF010101100ON/OFF该指令设置了显示的各种状态。包括:显示的开关状态、光标的显示状态和各显示区显示状态的设置。该指令带有一个参数。其功能如下:FP5FP4FP3FP2FP1FP0FC1FC0代码:FC1,FC0:光标状态设置。如下表所示:FC1FC0光标显示状态00光标显示关闭01光标显示,但不闪烁10光标以FR/32Hz的频率闪烁显示11光标以FR/64Hz的频率闪烁显示FP1,FP0:显示一区状态设置位。FP3,FP2:显示二,四区状态设置位。FP5,FP4:显示三区状态设置位。FC1FP3FP5FC0FP2FP4显示一区状态显示二,四区状态显示三区状态00画面显示关闭01画面显示,但不闪烁10画面以FR/32Hz的频率闪烁显示11画面以FR/64Hz的频率闪烁显示说明:这些参数位都是控制着各显示区的显示状态,该状态的实现需要在显示总开关为开显示状态的前提下。CGRAM首址设置〔MR〕0101011100该指令设CGRAM的起始地址SAG。从该地址SAG起的2K字节的空间〔M2=0或4K字节空〔M2=1为CGRAM区域该指令带有两个参数他们是:P1: SAGLP2: SAGHSG:CRM起始地址。SAGL为SAG的低8位。SGH为SG的高8位。说明:SAG所指地址对应的是字符代码00H的字模首地址所以对CGRAM1的首地址为SAG+80H×8。CRAM2区域的字符代码为E0~FFH但是由于控制部在CGRAM2寻址上安置了异或40H电路,所以M2的地址应按A0~BFH计算,即CGRAM2的首地址为SAG+A0H×8。3.2.4光标地址设置〔CSW0101000110该指令由两个功能其一作为当前光标显示的位置其二作为显示存储器当前的地址指针如果光标指针指向有效显示区域之外时光标将自动消失但不影响显示数据的读、写。光标指针在MPU的每次读、写显示数据操作后,将根据最近设置的光标指针移动方向而自动修正。光标指针不受画面滚动操纵的影响。该指令带有两个参数,功能如下:P1: CSRLP2: CSRHCSR:光标指针。CSRL为低8位,CSR为高8位。3.2.5读出光标地址〔CSRR0101000111该指令代码写入后MPU将从RA8835数据通道读出当前的光标指针值光标指针读出的顺序是先CSRL,再CSRH。P1: CSRLP2: CSRHCSR:光标指针。CSRL为低8位,CSR为高8位。显示数据写入〔MITE〕0101000010该指令写入后将允许MPU连续地向显示存储器内写入数据。写入的单元地址由光标指针CSR提供写操作完成后光标指针自动根据所设置的光标指针移动方向进行修改。显示数据写入操作在MPU送入下一个指令后结束。3.2.7显示数据读出〔MREA0101000011该指令写入后将允许MPU连续地从显示存储器读出数据。读出的单元地址由光标指针CSR提供,读操作完成后光标指针自动根据所设置的光标指针移动方向进行修改。显示数据读出操作在MPU送入下一个指令后结束。3.3RA8835的根本驱动函数3.3.1写命令函数voidlcd_cmdwrite(unsignedcharcmdx):写命令函数的函数名称是lcd_cmdwrite,该函数的入口参数是一个无符号的字符形数据cmdx,调用该函数后无返回值。写数据函数voidlcd_datawrite(unsignedchardatax):写数据函数的函数名称是lcd_datawrite,该函数的入口参数是一个无符号的字符形数据datax,调用该函数后无返回值。读取命令函数unsignedcharlcd_cmdread(void):读取命令函数的函数名称是lcd_cmdread,该函数没有入口参数,调用该函数后返回一个无符号的字符形数据。读取数据函数unsignedcharlcd_dataread(void):读取数据函数的函数名称是lcd_dataread,该函数没有入口参数,调用该函数后返回一个无符号的字符形数据。检测“忙〞标志函数voidlcd_chkbusy(void):检测“忙〞标志函数的函数名称是lcd_chkbusy,该函数没有入口参数,调用该函数后无返回值。3.4RA8835与C8051F020的接口定义RA8835与C8051F020的接口连接在第可以很直观地看出,作为补充,下面给出其接口定义程序:/****接口定义程序****/#definelcd_WRP1_3//RA8835的lcd_WR端口接C8051F020的口#definelcd_RDP1_4//RA8835的lcd_RD端口接C8051F020的口#definelcd_CSP1_5//RA8835的lcd_CS端口接C8051F020的口#definelcd_A0P1_6//RA8835的lcd_A0端口接C8051F020的口#definelcd_RESP1_7//RA8835的lcd_RES端口接C8051F020的口#definelcd_CMDP4//RA8835的lcd_CMD端口接C8051F020的P4口#definelcd_DATAP4//RA8835的lcd_DATA端口接C8051F020的P4口3.4液晶屏初始化3.4.1初始化流程图液晶屏初始化流程图如下列图3-1所示:图3-1初始化流程图初始化程序/****显示器复位程序****/voidlcd_reset(void)/****光标地址设置****/voidlcd_cursorxy(unsignedcharx,unsignedchary)/****清第一显示区****/voidlcd_clear(void)/****清第二显示区****/voidlcd_clear1(void)/****液晶屏初始化****/voidlcd_initial(void){lcd_cmdwrite(0x40);//初始化设置lcd_datawrite(0x30);//p1lcd_datawrite(0x87);//p2lcd_datawrite(0x87);//p3lcd_datawrite(0x27);//p4(C/R)lcd_datawrite(0x37);//p5lcd_datawrite(0xef);//p6(L/F)lcd_datawrite(0x28);//p7(APL)lcd_datawrite(0x00);//p8(APH)lcd_cmdwrite(0x44);//显示区域设置lcd_datawrite(0x00);//sa1-Llcd_datawrite(0x00);//sa1-Hlcd_datawrite(0xf0);//sL1第一显示区对应240行lcd_datawrite(0x80);//sa2-Llcd_datawrite(0x25);//sa2-Hlcd_datawrite(0xf0);//sL2第二显示区对应240行lcd_datawrite(0x00);lcd_datawrite(0x3a);lcd_datawrite(0x00);//sa4-Llcd_datawrite(0x3a);//sa4-Hlcd_cmdwrite(0x5a);//点位移设置lcd_datawrite(0x00);lcd_cmdwrite(0x58);//显示关lcd_datawrite(0x54);lcd_cmdwrite(0x5d);//光标形状设置lcd_datawrite(0x07);//CRXlcd_datawrite(0x00);//CRYlcd_cmdwrite(0x59);//显示开lcd_datawrite(0x56);lcd_cmdwrite(0x5b);//显示合成方式设置lcd_datawrite(0x04);}4应用程序局部4.1打点打点的算法打点的前提是先知道要打的点在液晶屏中所处的位置,故设所打点在液晶屏中的坐标为〔x,y〕,其中x为所打点在液晶屏中所处的行数〔从上往下数,第一行对应的x为0,往下依次加1,320*240的液晶屏中x最大为239〕,y为所打点在液晶屏中的列数〔从左往右数,第一列对应的y为0,往右依次加1,320*240的液晶屏中y最大为319〕。令bnum=y%8,每个字节为8位,故bunm表示所打的点在液晶屏中所在字节里的从左边数在该字节中的位置,bitmask=7-bnum,把液晶屏的每行以8个字节分成各个位,每次执行写命令时是从高位向低位写,故bitmask表示所打的点在液晶屏中所在字节的从右边数在该字节中的位置。在320*240的液晶屏中每8位作为1个字节来执行写命令写入数据,故每行有320/8=40个字节,令l=x*40+y/8,l表示所打的点在液晶屏中所处第几个字节,这样我们可以由l来计算要打的点在存放器中的地址,令x=l%256,y=l%256,在c8051f020中,是按16位存放器方式来寻址,其中x表示位寻址存放器的低8位,y表示位寻址存放器的高8位,这样我们就可以通过存放器寻址来确定要写入的数据的位置,在该位置写入2bitmask,即可完成打点功能,例如:表4-1地址计算方法图表0○○○○○○○○1○○○○○○○○2○○○○○○○○3○○○○○○○○4○○○○○○○○5○○○○○○○○6○○○○○○○○7○○○○○○○○8○○○○○○○○9○○○●○○○○10○○○○○○○○11○○○○○○○○…………如果每行有4个字节,要在第3行,第12列打点,即x=2,y=11,令bnum=y%8=3,bitmask=7-bnum=4,由l=x*4+y/8可知l=9,令x=l%256,y=l/256,其中x表示位寻址存放器的低。位,y表示位寻址存放器的高8位,这样我们就可以通过存放器寻址来确定要写入的数据的位置,在该位置写入2bitmask=24,即可完成打点功能。4.1.2打点函数voidpset(unsignedcharx,unsignedinty):打点函数的函数名为pset,可实现在任意位置打点,x和y为两个入口参数,其中x为所打点在液晶屏中所处的行数,y为所打点在液晶屏中的列数,调用该函数后无返回值。4.2画直线画直线的算法画直线是打点功能的延伸,我们可以通过打画圆一个个的点来完成画直线功能。画直线的前提是要知道直线两个端点的坐标,即〔x1,y1〕、(x2,y2),在此要分三种情况来讨论:〔1〕当x1=x2时,画水平直线,此时选y为自变量,从〔x1,y1〕开始打点,以后y依次加1,依次在〔x1,y〕进行打点,直到打完最后一个点(x2,y2),即可画出该直线。〔2〕当y1=y2时,画垂直线,此时选x为自变量,从〔x1,y1〕开始打点,以后x依次加1,依次在〔x,y1〕进行打点,直到打完最后一个点(x2,y2),即可画出该直线。〔3〕当x1≠x2且y1≠y2时,画斜直线,为了防止因均匀取点造成画的线呈虚线,我们规定当〔y2-y1〕/〔x2-x1〕>1时,取y作为自变量从〔x1,y1〕开始打点,以后y依次加1,通过直线的斜率k=〔y2-y1〕/〔x2-x1〕,计算得到x=x1+〔y-y1〕/k=x1+x=x1+〔y-y1〕*〔x2-x1〕/〔y2-y1〕,依次在〔x,y1〕进行打点,直到打完最后一个点(x2,y2),即可画出该直线。当〔y2-y1〕/〔x2-x1〕<1时,取x作为自变量,取x作为自变量从〔x1,y1〕开始打点,以后x依次加1,通过直线的斜率k=〔y2-y1〕/〔x2-x1〕,计算得到y=y1+k*〔x-x1〕=y1+〔y2-y1〕/〔y-y1〕*〔x-x1〕,依次在〔x,y1〕进行打点,直到打完最后一个点(x2,y2),即可画出该直线。画直线函数画直线函数的函数名为为四个入口参数,其中〔〕〔〕为直线的两个端点坐标,x的范围是0-239,y的范围是0-319,调用该函数后无返回值。4.3画圆画圆的算法画圆也是打点功能的延伸,首先确定圆心坐标〔x,y〕,由于按直角坐标来画圆,无论采用x作为自变量,还是采用y作为自变量,都会造成在圆上打的点不均匀,所以采用极坐标来画圆,采用极坐标画圆选角度作为自变量,这样可使所打的点变得均匀,由圆心坐标加上坐标增量即可得到所打点的坐标,由于角度是均匀变化的,故可得到一系列点,依次打点从而得到所要画的圆。画圆函数voiddraw_circle(unsignedintox,unsignedintoy,unsignedintr):画圆是打点的延伸,可以打点为根底完成画圆。画圆函数的函数名为draw_circle,ox,oy,r为三个入口参数,其中ox,oy〕为圆心坐标,r为圆的半径,x,y和r的值要取得适当,调用该函数后无返回值。4.4显示字符和字符串显示字符和字符串的算法字输符出时,用一个点阵来表示一个字符。点阵的每个点位只有两种状态:有点或无点。用二进制代码来表示即为该位取值为1表示有点,取值为0表示无点,把这个点阵用二进制的形式表示出来放入字符库中,我们只需定义一个字符或字符串,RA8835可使用该字符代码确定字符库中字符的所在位置,然后将相应的字模数据传送到液晶显示模块,并在液晶屏上出现该字符的8x8点阵块,即文本显示RAM区的一个字节对应液晶屏上的8x8点阵。在字符库中有要显示的各个字符,我们只需定义一个字符或字符串,调用字符或字符串显示函数,即可显示要显示的字符或字符串。显示字符和字符串的函数voidshow_string(unsignedcharsx,unsignedcharsy,unsignedchar*text,unsignedintm):此函数能够显示8*16的字符〔串〕,函数名为show_string,其中sx,sy,*text,m为四个入口参数,其中〔s〕为显示字符串的位置,x的范围是0-14,y的范围是0-39,调用该函数后无返回值。4.5显示汉字显示汉字的算法描述一个汉字点阵信息的二进制代码串称为汉字的“字模〞。所有汉字的点阵信息就组成汉字的“汉字库〞。要显示汉字,必须确定汉字库里有要显示的汉字,可以用字模提取软件来提取汉字的字模,提取完成后放到汉字库里,编写显示汉字的函数,调用汉字显示函数,从字库中取出该汉字点阵信息,利用显示驱动程序将这些信息送到显示缓冲存储器中,显示器的控制器把点阵信息整屏顺次读出,并使每一个二进制位与屏幕的一个点位相对应,就可以将汉字字形在屏幕上显示出来。显示汉字的模式〔1〕普通模式:按照字模在相应位置写入相应数据,所显示的汉字为黑色,背景为白色;〔2〕反白模式:将提取出来的字模取反后,再在相应位置写入相应数据,所显示汉字为白色,背景为黑色;〔3〕花纹模式:按照提取出来的字模在相应位置写入数据,所显示的汉字为黑色,背景为花纹状。显示大小不同的汉字可以显示宽度为8的倍数个位的汉字,例如可显示16×16、24×24、32×32、40×40等宽度的汉字,即所显示的汉字的宽度必须为整数个字节。〔1〕16×16的汉字:先把要显示的汉字按16×16提取字模后放入汉字库里,显示时按照每行显示2个字节的模式显示,显示完一行后转入下一行的显示,这样共循环显示16行即可完成16×16汉字的显示。〔2〕24×24的汉字:先把要显示的汉字按24×24提取字模后放入汉字库里,显示时按照每行显示3个字节的模式显示,显示完一行后转入下一行的显示,这样共循环显示24行即可完成24×24汉字的显示。其它大小的汉字显示依次类推。显示汉字的函数Voidshow_hanzi(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[32]):以大小为16*16的汉字显示为例,显示汉字函数的函数名为show_hanzi,其中hanzi[32]为四个入口参数,其中〔〕为显示汉字的位置,x的范围是0-239,y的范围是0-20,m为显示模式,hanzi[32]为汉字取模的数组,调用该函数后无返回值。其它大小汉字的显示函数类似,其调用函数分别如下:大小为24*24的汉字显示:voidshow_hanzi1(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[72])大小为32*32的汉字显示:voidshow_hanzi2(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[128])大小为40*40的汉字显示:voidshow_hanzi3(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[200])4.6显示简单图片显示简单图片的算法要显示图片,先用字模提取软件提取该图片的字模,提取完成后放到图片库里,编写显示图片的函数,调用图片显示函数即可显示图片。显示简单图片的模式〔1〕普通模式:按照字模在相应位置写入相应数据,所显示的图片为黑色,背景为白色。〔2〕反白模式:将提取出来的字模取反后,再在相应位置写入相应数据,所显示图片为白色,背景为黑色。〔3〕花纹模式:按照提取出来的字模在相应位置写入数据,所显示的图片为黑色,背景为花纹状。显示简单图片的程序voidshow_pic(unsignedcharx,unsignedchary,unsignedcharmode,unsignedcharwidth,unsignedcharhigh,unsignedchar*pic):显示图片的函数名为show_pic,其中modewidth,high,*pic为六个入口参数,其中〔〕为显示图片的位置,x的范围是0-239,y的范围是,mode为显示模式,width为图片的宽度,high为图片的高度,*pic为图片函数可完成在〔x,y〕位置写width*high的图片,调用该函数后无返回值。5演示程序局部编写的基于RA883的320×240液晶屏C语言驱动程序,支持任意位置打点显示,支持任意位置的字符、字符串显示,支持任意位置的汉字显示,还具有划直线、划圆、显示简单图片的功能。5.1演示流程图演示液晶屏显示的简单流程图如图5-1所示:图5-1显示流程图5.2演示过程及画面显示5.2.1打点打点是显示文字和图片的根底,在液晶屏的显示中占有重要地位。打点的函数如下所示,其算法在第中已有详细说明,打点的显示画面如图5-2所示:……voidpset(unsignedcharx,unsignedinty)//在〔x,y〕位置打点……pset(119,159);//在(119,159)位置打点……图5-2打点画面5.2.2画直线画直线是打点功能的延伸,打出一系列连续的点即可完成画直线的功能,画直线的函数如下所示,画直线的显示画面如图5-3所示:……voiddraw_line(unsignedintx1,unsignedinty1,unsignedintx2,unsignedinty2)//点(x1,y1)和点(x2,y2)表示直线的起点和终点case0:……//画水平线case1:……//画垂直线case2:……//画斜线,(y2-y1)/(x2-x1)>1时case3:……//画斜线,(y2-y1)/(x2-x1)<1时……图5-3画直线画面5.2.3画一组同心圆画一组同心圆即为画多个大小不同的圆,屡次调用画圆函数即可,画圆函数调用如下,同心圆显示画面如图5-4所示:……voiddraw_circle(unsignedintox,unsignedintoy,unsignedintr)//(ox,oy)为圆心坐标,r为圆半径……/*画一组同心圆*/draw_circle(119,159,10);draw_circle(119,159,20);draw_circle(119,159,30);draw_circle(119,159,40);draw_circle(119,159,50);draw_circle(119,159,60);draw_circle(119,159,70);draw_circle(119,159,80);图5-4画同心圆画面5.2.4显示字符串显示字符串的函数如下,其显示画面如图5-5所示:……voidshow_string(unsignedcharsx,unsignedcharsy,unsignedchar*text,unsignedintm)……unsignedcharxdatastr[]="Xi'anShiyouUniversity";……show_string(60,15,str1,0);……图5-5显示字符串画面5.2.5显示大小不同的汉字显示大小不同的汉字,调用不同的汉字显示函数即可,下面举两个调用函数的例子来说明,其调用函数如下,显示画面如下列图5-6所示:……voidshow_hanzi(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[32])//大小为16*16的汉字显示……voidshow_hanzi1(unsignedcharx,unsignedchary,unsignedcharm,unsignedcharhanzi[72])//大小为24*24的汉字显示……show_hanzi(10,2,0,xi);show_hanzi(10,6,0,an);show_hanzi(10,10,0,shi);show_hanzi(10,14,0,you);show_hanzi(10,18,0,da);show_hanzi(10,22,0,xue);……show_hanzi1(41,2,1,xi1);show_hanzi1(41,7,1,an1);show_hanzi1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理病情观察课件
- 《小兵张嘎》读后感600字(5篇)
- 毒性药材销售合同
- 承接灯具销售合同
- 手术中输血的伦理监督
- 2026年黔南州州属事业单位招考工勤人员易考易错模拟试题(共500题)试卷后附参考答案
- 护理病例分析课件
- 2026年黑龙江穆棱市文物管理所招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2026年黑龙江大庆市让胡路区税务局城管局招聘外聘人员11人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年黑龙江七台河市“黑龙江人才周”人才引进660人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年高考化学一轮复习:必修1默写小纸条(57天含答案)
- 吡喹酮在不同温度条件下的保质期确定研究-洞察及研究
- 2026年二级建造师之二建水利水电实务考试题库300道附答案【模拟题】
- 智能无人驾驶车辆标准体系研究报告
- 隧道安全隐患排查培训课件
- 教育部突发事件应急预案
- 讲解软体家具方案
- 数控刀具刀柄讲解
- GB/T 15620-2025镍及镍合金实心焊丝和焊带
- 小学生安全用电知识课件下
- 具身智能机器人的关键技术创新与挑战
评论
0/150
提交评论