基于液晶电路图原理与设计毕业论文.docx_第1页
基于液晶电路图原理与设计毕业论文.docx_第2页
基于液晶电路图原理与设计毕业论文.docx_第3页
基于液晶电路图原理与设计毕业论文.docx_第4页
基于液晶电路图原理与设计毕业论文.docx_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

基于液晶电路图原理与设计毕业论文目 录第一章 有关液晶12864的一般介绍91.1 12864 特性91.2 12864模块电路图101.3 极限参数101.4 电参数10 1.5 LCD 的驱动方式10 1.5.1 静 态驱动方法10 1.5.2动态驱动方法101.6 液晶模块指令系统111.6.1 显示开关控制(DISPLAY ON/OFF)111.6.2 设置显示起始行111.6.3 设置页地址111.6.4 设置Y 地址(SET Y ADDRESS)121.6.5 读状态(STATUS READ)121.6.6 写显示数据(WRITE DISPLAY DATE)121.6.7 读显示数据(READ DISPLAY DATE)131.7 读写操作时序131.8.1 写操作时序131.8.2 读操作时序131.8.3 读写时序参数表13第二章 STC89C52芯片介绍152.1时钟电路162.2复位及复位电路162.3 STC89C52具体介绍18第三章按键模块20第四章电路框图设计224.1 系统框图224.2 工作原理224.2.1 硬件工作原理224.2.2 软件工作原理22第五章第硬件原理分析及设计245.1 单片机时钟电路245.2 单片机复位电路245.3 键盘电路255.4 显示电路25第六章软件设计276.1 寄存器写入276.2 清屏276.3 光标参数设置276.4 R A M写入276.5图形显示27第七章电路调试297.1 硬件调试297.2 软件调试29第八章小结30参考文献31附录32第一章 有关液晶12864的一般介绍液晶显示器按其功能可分为笔段式和点矩阵式两种。后者又可以分成字符点阵式和图形点阵式,图形点阵式液晶显示器不仅可显示数字、字符等内容,还能显示汉字和任意图形。在中规模图形式液晶显示模块中,内置T6963C 控制器的液晶显示模块是目前较为常用的一种。T6963C 是点阵式液晶图形显示器,可以图形方式、字符方式、图形和字符合成方式显示,以及实现字符方式下的特征方式显示,还可以像CAD 一样进行屏拷贝操作。本设计由于需要显示西文、汉字还有图形,所以采用的就是T6963C 是点阵式液晶图形显示器。1.1 12864 特性显示内容:128 x 64点驱动方式:1/64D可供型号:STN(黄绿模、灰模、黑白模)反射型, 带EL或LED背光源EL/100VAC,400HZLED/4.2VDC1.2 12864模块电路图内部电路见图1-1。图1-1 12864模块内部电路1.3 极限参数极限电压见表1-1。表1-1 极限电压名称符号测试条件标准值单位最小值最大值电源电压VDD-VSSTa=2506.5VLCD驱动电压VDD-V0018.0V输入电压V10VDDV1.4 电参数表1-2 12864电参数名称符号测试条件标准值单位最小值典型值最大值电压逻辑VDD-VSS-4.755.05.25VLCDVDD-V0-15.0-V电流逻辑IDD-7.0-mALCDIEE-3.0-mALCD工作电压(推荐值)VDD-V00-13.0-V25-12.0-V40-11.0-V输入电压H电平VIH高电平0.7VDD-VDDVL电平VIIL低电平0-0.3VDDV1.5 LCD 的驱动方式液晶的显示是由于在显示像素上施加了电场的缘故,而这个电场则由显示像素前后两电极上的电位信号合成产生,在显示像素上建立直流电场是非常容易的事,但直流电场将导致液晶材料的化学反应和电极老化,从而迅速降低液晶的显示寿命,因此必须建立交流驱动电场,并且要求这个交流电场中的直流分量越小越好,通常要求直流分量小于50mV。在实际应用中,由于采用了数字电路驱动,所以这种交流电场是通过脉冲电压信号来建立的。 显示像素上交流电场的强弱用交流电压的有效值表示,当有效值大于液晶的阈值电压时,像素呈显示态;当有效值小于阈值电压时,像素不产生电光效应;当有效值在阈值电压附近时,液晶将呈现较弱的电光效应,此时将会影响液晶显示器件的对比度。 液晶显示的驱动就是用来调整施加在液晶显示器件电极上的电位信号的相位、峰值、频率等,建立驱动电场,以实现液晶显示器件的显示效果。液晶显示的驱动方式有许多种,常用的驱动方法有:静态驱动法和动态驱动法。对于TN及STN-LCD一般采用静态驱动或多路驱动方式。这两种方式相比较各有优缺点。静态驱动响应速度快、耗电少、驱动电压低,但驱动电极度数必须与显示笔段数相同,因而用途不如多路驱动广。 1.5.1静态驱动法静态驱动法是获得最佳显示质量的最基本的方法。它适用于笔段型液晶显示器件的驱动。表2.3示出此类液晶显示器件的电极结构,当多位数字组合时,各位的背电极BP是连接在一起的。振荡器的脉冲信号经分频后直接施加在液晶显示器件的背电极BP上,而段电极的脉冲信号是由显示选择信号A与时序脉冲通过逻辑异或合成产生,当某位显示像素被显示选择时,A1,该显示像素上两电极的脉冲电压相位相差180,在显示像素上产生2V的电压脉冲序列,使该显示像素呈现显示特性;当某位显示像素为非显示选择时,A0,该显示像素上两电极的脉冲电压相位相同,在显示像素上合成电压脉冲为0V,从而实现不显示的效果。这就是静态驱动法。为了提高显示的对比度,适当地调整脉冲的电压即可。表1-3 液晶显示器件电机结构BPASEG0001010111101.动态驱动法当液晶显示器件上显示像素众多时,如点阵型液晶显示器件,为了节省庞大的硬件驱 动电路,在液晶显示器件电极的制作与排列上作了加工,实施了矩阵型的结构,即把水平一组显示像素的背电极都连在一起引出,称之为行电极,把纵向一组显示像素的段电极都连接起来一起引出,称之为列电极。在液晶显示器上每一个显示像素都由其所在的列与行的位置唯一确定。在驱动方式上相应地采用了类同于CRT的光栅扫描方法。液晶显示的动态驱动法是循环地给行电极施加选择脉冲,同时所有为显示数据的列电极给出相应的选择或非选择的驱动脉冲,从而实现某行所有显示像素的显示功能,这种行扫描是逐行顺序进行的,循环周期很短,使得液晶显示屏上呈现出稳定的图象。我们把液晶显示的扫描驱动方式称为动态驱动法。1.6 液晶模块指令系统1.6.1 显示开关控制(DISPLAY ON/OFF) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 0 0 0 0 1 1 1 1 1 D D=1:开显示(DISPLAY ON)意即显示器可以进行各种显示操作 D=0:关显示(DISPLAY OFF)意即不能对显示器可以进行各种显示操作 1.6.2 设置显示起始行 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 0 0 1 1 A5 A4 A3 A2 A1 A0 前面在Z 地址计数器一节已经描述了显示起始行是由Z 地址计数器控制的。A5 A0 的6位地址自动送入Z地址计数器,起始行的地址可以是0 63 的任意一行。 例如: 选择A5 A0 是62, 则起始行与DDRAM 行的对应关系如下: DDRAM 行: 62 63 0 1 2 3 28 29 屏幕显示行: 1 2 3 4 5 6 31 32 1.6.3 设置页地址 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 0 0 1 0 1 1 1 A2 A1 A0 所谓页地址就是DDRAM的行地址,8 行为一页,模块共64 行即8 页, A2 A0 表示0 7 页。读写数据对地址没有影响, 页地址由本指令或RST 信号 改变复位后页地址为0。页地址与DDRAM 的对应关系见DDRAM 地址表。 1.6.4 设置Y 地址(SET Y ADDRESS) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 0 0 0 1 A5 A4 A3 A2 A1 A0 此指令的作用是将A5 A0 送入Y 地址计数器,作为DDRAM 的Y 地址指针。在对DDRAM 进行读写操作后, Y 地址指针自动加1, 指向下一个DDRAM 单元。 DDRAM 地址表: 1.6.5 读状态(STATUS READ) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 1 0 BUSY 0 ON/OFF RET 0 0 0 0 当R/W=1 D/I=0 时, 在E 信号为“ H” 的作用下, 状态分别输出到数据总线( DB7 DB0) 的相应位。 BF: 前面已叙述过( 见BF标志位一节)。 ON/OFF: 表示DFF触发器的状态( 见DFF触发器一节)。 RST: RST=1 表示内部正在初始化, 此时组件不接受任何指令和数据。 1.6.6 写显示数据(WRITE DISPLAY DATE) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 0 1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D0 为显示数据,此指令把D7 D0 写入相应的DDRAM 单元,Y地指针自动加1。 1.6.7 读显示数据(READ DISPLAY DATE) 代码 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 形式 1 1 D7 D6 D5 D4 D3 D2 D1 D0 此指令把DDRAM 的内容D7 D0 读到数据总线DB7 DB0, Y 地址指针自动加1。 1.8 读写操作时序 1.8.1 写操作时序 图1-2 写操作时序1.8.2 读操作时序 图1-3 读操作时序1.7.3 读写时序参数表 表1-3读写时序参数表第二章 STC89C52芯片介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。单片机总控制电路如下图2-1:图2-1单片机总控制电路2.1时钟电路STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图22(a) 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之间选择,电容值在530pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图22(b)所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。(a)内部方式时钟电路 (b)外部方式时钟电路图22时钟电路2.2复位及复位电路(1)复位操作复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表一所示。表2-1 一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H(2)复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的电路逻辑如图43所示:图23复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图24(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图24(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,其电路如图24(c)所示:(a)上电复位 (b)按键电平复位 (c)按键脉冲复位图24复位电路上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图24(b)上电复位方式。2.3 STC89C52具体介绍 主电源引脚(2根)VCC(Pin40):电源输入,接5V电源GND(Pin20):接地线外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。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口(Pin10Pin17):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级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能第三章 按键模块图3-1是按键输入电路。 图3-1 按键电路由于本次设计用到的I/O口较少,有足够的多余I/O口用于按键设计。故采用比较简单的独立式键盘的接口设计。这种按键形式电路简单,配置灵活,但是因为每一个按键需要占用一个I/O口,所以,I/O口占用量很大,它只适合于按键数量少的情况下使用。独立式键盘按键的数量较少,并且各个按键相互独立,每一个按键由一个独立的I/O口控制,一个按键改变的是一个相应I/O口的输入电平,而不会对其他I/O口电平产生影响。这样,通过检测各I/O口的电平变化,即可很容易地确定是否有按键按下及是何键按下。如上图所示按键电路,一开始P1.0口是高电平,按键按下时即转变为接地的低电平,单片机检测到该变化即可按程序规定的情况进行运转。按键扫描的程序流程如图3-2。该流程考虑了去抖动。图3-2 按键扫描程序流程图第四章 电路框图设计4.1 系统框图图4.1 系统框图4.2 工作原理4.2.1 硬件工作原理硬件控制电路主要用了4*4 矩阵键盘、AT89S52 芯片处理器、LCD。由AT89S52 处理器处理从4*4 键盘发出的指令,通过LCD绘制出相应按键的内容。4.2.2 软件工作原理软件控制程序主要有主控程序、时间程序、LCD 控制程序、时间及日期显示程序、键盘扫描程序等组成。主控程序中对整个程序进行控制,进行了时间和LCD 初始化、LCD等控制。LCD 显示程序是整个显示部分中的重要部分,包括写入命令、初始化、写入数据、数据显示、自定义GDRAM 显示、绘图显示、反白显示等。当LCD 的RS=RW= 0,同时EN由1 变0 时,可以对LCD 写入基本指令和扩充指令;当RS=1,RW=0,同时EN 由1 变0时,可以对LCD 写入数据。对LCD 端口写入不同的命令可以写入和显示不同的数据,具体命令请参考LCD12864 和数据手册。LCD 时间控制程序是时间程序重要的部分,时间控制程序体现了年、月、日、时、分、秒的计算方法。此设计采用AT89S52 自带的T0 计时器进行计时,中断程序每隔50ms 中断一次当作一个计数,每中断一次则计数加1,当计数20 次时,则表示1 秒到了,秒变量加1,同理再判断是否1 分钟到了,再判断是否1 小时到了,再判断是否1 天到了,再判断是否1 月到了,再判断是否1 年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第2 月天数为29 天,非闰年则有28 天。在我们的这个设计中只设有100 年的范围,判断是否闰年就只需要用该年份除以4 来判断就行了。键盘扫描程序是整个设计的输入控制程序,4*4 键盘占用单片机的8 个I/O 口。本设计的键盘扫描程序采用行列反转扫描法读取按键键值。单片机先让键盘行线输出全为0,然后读入列线值,再检测有无按键按下,去抖,再读入列线值,输出当前列线值,线值,最后组合行、列线值,得到键盘的码值供调用。第五章 第硬件原理分析及设计5.1 单片机时钟电路内部时钟电路如图所示,在XTAL1 和XTAL2 引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常石英晶体和电容组成的并联谐振回路,晶体振荡器选择12MHZ,电容采用30PF。图5.1 时钟电路5.2 单片机复位电路影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:(1)外因射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。(2)内因振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。5.3 键盘电路4*4 键盘电路由4*4=16 个按键组成,其中4 列经过4 个10K 电阻接入VCC 上拉,接入单片机的P3 口的高4 位口,4 行直接接入单片机低4 位,当有按键按下时,由单片机控制8 个I/O 口读取出当前键值。图5.3 键盘电路5.4 显示电路LCD 显示电路LCD12864 一共有20 个引脚,其中4-15、17 脚接入单片机的P0 全部I/O 口和P2 的三个I/O 口,是LCD 与单片机通讯的桥梁。16 号脚是空脚,1 和20 脚接地,2 和19 脚接VCC,其中3、18、19 三个脚接可调电位器和电阻,组成调节LCD 对比度电路。如图5.4所示。图5.3 显示电路第六章 软件设计此设计名为仪器仪表的键盘绘制模拟系统,顾名思义软件占很大比例。整个设计硬件比较简单,主要就是程序的写法,而软件的调试也是此设计的重点和难点。整个软件结构分为主控程序、显示部分程序、键盘扫描部分程序、时钟部分程序和延时程序。6.1寄存器写入写入液晶寄存器地址,根据写入电平时序可以得到,先使CS和RS置低电平,然后在送上寄存器的地址,再将写信号WR送一低电平脉冲,这样P3口上的寄存器地址被液晶写入,最后再恢复CS高电平,这样寄存器地址就写入了。写入寄存器数据,根据写入脉冲时序可以得到,先使CS低电平先中芯片,使我RS置高电平选中寄存器,然后在送上寄存器的数据,再将写信号WR上送一低电平脉冲,这样P3口送出低8位数据,P4口送入高位数据,最后再恢复CS的高电平,这样寄存器数据就写入了。6.2清屏清屏程序,将光标值(,)位置,先使CS置低电平选中芯片,使RS置高电平选中寄存器,然后在送上寄存器的数据,然后调用LCD函数送入RGB数据,然后WR送出76800个脉冲,将128*64的液晶所有像点全部设置成一个颜色,这样达到了清屏的目的。6.3光标参数设置设置液晶的光标,根据输入的X和Y的坐标数据,会调用到写入寄存器的函数,将X和Y的数据写入控制光标寄存器,将光标设置在所要的地方,这样光标设置好了。6.4 RAM写入写入液晶RAM的RGB数据,先使CS置低电平选中芯片,使RS置高电平选中寄存,然后在送上寄存器的数据,然后调用LCD12864函数送入RGB数据,再向WR写信号送一低电平脉冲,最后恢复CS的高电平,这样写入液晶的一次RGB数据就完成了。6.5图形显示显示图形程序,接到光标的位置(xaddress,yaddress)和图形的长宽还有整个图形的数据data,然后开始从第一个光标的位置开始扫描整张图形,长度从0到picture_long,宽度从0到picture_wide,这些都是在主程序中输入的,然后先引用LcD-setcursor()函数设置光标设置,然后引用LCD-writeram-prepare()函数使RAM准备好,在每次写入RAM前需要先调用这个函数。由于Image2lcd软件的出来的是8位的2位进制数据,12864液晶用的是16位的数据,所以要有2个8位合成1个16位的数据的运算,然后再调用LcD_write-ram()送入RGB数据,让液晶显示所要图形,这样的整个图形就完成了程序见附录图6.1主程序流程图第七章 电路调试本设计的调试涉及到硬件和软件的调试,硬件调试是建立在软件调试的基础上,只有保证硬件正常工作后才能对软件进行调试。7.1 硬件调试一块电路板做好后,并不能保证不会出错,在调试与检测过程中,利用万能表检测供电是否正常;线路是否有短路、断路等现象。我们在硬件调试的时候发现单片机和液晶12864一切正常,比较顺利。7.2 软件调试我们做这个设计的时候碰到的最大的问题就是软件的调试,编写程序需要非常细心,逻辑思维要强,头脑要灵活,第一次接触LCD12864电路,而且单片机编程理解得不是很透,在一开始没有一点眉目,在反复仔细翻阅了它的数据手册,并参考网上别人的思路,在老师的帮助下,能实现了它的大部分功能。当程序写好后用ASP 下载线和AVR_fighter 软件把写好的程序烧录进单片机测试其工作情况和查找漏洞,并逐步完善整个设计功能。 第八章 小结从设计题目下来到现在历时两个多星期,克服了硬件和软件上各种问题,实现大部分的功能。因为本设计硬件比较简单,在硬件上比较顺利,其他功能都正常。而主要的难题是在软件设计上,在软件上碰到以下几点问题:(1) 对LCD 写入命令和数据的格式、时序弄乱。(2) 对LCD 基本指令集、扩充指令集比较模糊,在绘制图形部分时滞留了很久。(3) 对图形的改变位置大小抓不住头绪,图形实心虚心理解不透。(4) 在设计时钟部分时,单片机的定时器/计数器、中断部分出错。而这些问题都是跟自己对单片机的掌握不够深有关,这也提醒了我们要抓好基础功,基础好了,对付起这些问题才会得心应手。参考文献1 李维諟、郭强等, 液晶显示应用手册, 电子工业出版社, 北京,20022 刘永智、杨开愚等, 液晶显示技术,电子科技大学出版社,成都,20003 郭强,液晶显示应用技术,电子工业出版社,北京,20004 范志新,液晶器件工艺基础,北京邮电大学出版社,北京,20005 施善定等,液晶与显示应用,华东化工学院出版社,上海,19936 李宏、张家田等,液晶显示器件应用技术,机械工业出版社,北京,20047 赵秀珍、单永磊,单片微型计算机原理及其应用,中国水力出版社,北京,20018 杨光友、朱宏辉,单片微型计算机原理及接口技术,中国水利水电出版社,北京,20029 苏伟斌,8051系列单片机应用手册,科学出版社,北京,199710 胡汉才,单片机原理及其接口技术,清华大学出版社,北京,199911 王承发 刘岩,微机接口技术,高等教育出版社,北京,199612 耿长清,单片机应用技术,化学工业出版社,北京,199613 徐爱卿等,单片微型计算机及其应用,北京航空学院出版社,北京,198614 余永权,FLASH单片机原理及应用,电子工业出版社,北京,1997附录附录A 软件程序/独立按键检测驱动/说明:按键必须在同一组IOA或IOB口,按一次产生一个有效按键值#include _my51.h/%移植修改该区域内参数%/#define SCANTTIME 1000/按键延时检测时间#define KEYWORD 0x0fextern bit Muen;extern bit Slect;extern bit Adjadd;extern bit Adjsub;/功能:键盘检测程序/输入参数:无/输出参数:输出键盘检测结果;1表示对应按键按下char scankey()int key;P3|=KEYWORD;key=P3&KEYWORD;if(key!=KEYWORD)int i=SCANTTIME;while(i-);while(P3&KEYWORD)!=KEYWORD);return key=KEYWORD;void getkey()switch(scankey()case 0x01:Muen=1;break;case 0x02:Slect=1;break;case 0x04:Adjadd=1;break;case 0x08:Adjsub=1;break;default:break;My51STC89C52头文件#ifndef _MY51_H_#define _MY51_H_/* BYTE Registers */sfr P0 = 0x80; /P0口寄存器sfr P1 = 0x90; /P1口寄存器sfr P2 = 0xA0; /P2口寄存器sfr P3 = 0xB0; /P3口寄存器/* P3 */sbit RD = P37;sbit WR = P36;sbit T1 = P35;sbit T0 = P34;sbit INT1 = P33;sbit INT0 = P32;sbit TXD = P31;sbit RXD = P30;sfr PSW = 0xD0; /处理器的状态寄存器/* PSW */sbit CY = PSW7;/进位标志位sbit AC = PSW6;/辅助进位标志位sbit F0 = PSW5;/通用标志位sbit RS1 = PSW4;/寄存器组选择位高位sbit RS0 = PSW3;/寄存器组选择位低位sbit OV = PSW2;/溢出标志位sbit P = PSW0; /奇偶标志位;8052 onlysfr ACC = 0xE0; /A寄存器sfr B = 0xF0; /B寄存器sfr SP = 0x81; /堆栈指针寄存器sfr DPL = 0x82; /数据地址寄存器低字节sfr DPH = 0x83; /数据地址寄存器高字节sfr PCON = 0x87; /电源控制寄存器,不可位寻址,/bit7:SMOD,串行口通信波特率控制位置位使波特率翻倍;/bit3:GF1通用标志位;/bit2:GF0通用标志位;/bit1:PDWN低功耗标志位置位进入低功耗模式;/bit0:空闲标志位置位进入空闲模式;sfr TCON = 0x88; /定时器控制寄存器/* TCON */sbit TF1 = TCON7; /定时器1溢出中断标志,响应中断后由处理器清零sbit TR1 = TCON6; /定时器1控制位,置位时定时器1工作,复位时定时器1停止工作sbit TF0 = TCON5; /定时器0溢出标志位,定时器0溢出时置位。处理器响应中断后清除该位sbit TR0 = TCON4; /定时器0控制位,置位时定时器0工作。复位时定时器0停止工作sbit IE1 = TCON3; /外部中断1触发标志位,当检测到P3.3有从高到低的跳变电平时置位,处理器响应中断后,由硬件清除该位。sbit IT1 = TCON2; /中断1触发方式控制位,置位时为跳变触发,复位时为低电平触发sbit IE0 = TCON1; /外部中断0触发标志位,当检测到P3.2有从高到低的跳变电平时置位,处理器响应中断后,由硬件清除该位。sbit IT0 = TCON0; /中断0触发方式控制位,置位时为跳变触发,复位时为低电平触发sfr TMOD = 0x89; /定时器控制寄存器,不可位寻址/bit7:GATE,当GATE置位时,定时器1仅当TR1=1并且INT1=1时才工作,如果GATE=0 置位,TR1定时器1就开始工作/bit6:C/T,定时器1方式选择,如果C/T=1定时器1以计数方式工作,C/T=0时以定时方式工作/bit5:M1,定时器1模式选择位高位/bit4:M0,定时器1模式选择位低位/bit3:GATE,当GATE置位时,定时器0仅当TR0=1并且INT0=1时才工作,如果GATE=0 置位,TR0定时器0就开始工作/bit2:C/T,定时器0方式选择,如果C/T=1定时器0以计数方式工作,C/T=0时以定时方式工作/bit1:M1,定时器0模式选择位高位/bit0:M0,定时器0模式选择位低位/方式0:为十三位定时/计数器方式,定时器溢出时置位TF0或TF1并产生中断/方式1:将以十六位定时/计数器方式工作,定时器溢出时置位TF0或TF1并产生中断/方式2:8位自动重装工作方式,定时器的低8位TL0或TL1用来计数,高8位TH0或TH1用来存放重装数值,/当定时器溢出时,TH中的数值被装入TL中定时器0和定时器1在方式2时是同样的定时器1常用此方式来产生波特率。/方式3:定时器0成为两个8位定时/计数器,TH0和TL0 TH0对应于TMOD中定时器0的控制位,而TL0占据了TMOD中定时器1的控制位,这样定时器1将不能产生溢出中断了,/但可用于其它不需产生中断的场合,如作为波特率发生器或作为定时计数器被软件查询,当系统需要用定时器1来产生波特率而又同时需要两个定时/计数器时这种工作方式十分有用,/当定时器1设置为工作方式3时将停止工作。sfr TL0 = 0x8A; /定时器0低字节sfr TL1 = 0x8B; /定时器1低字节sfr TH0 = 0x8C; /定时器0高字节sfr TH1 = 0x8D; /定时器1高字节sfr IE = 0xA8; /中断使能寄存器;/* IE */sbit EA = IE7; /使能标志位置位则所有中断使能复位则禁止所有中断sbit ET2 = IE5; /定时器2中断使能;8052 onlysbit ES = IE4; /串行通信中断使能sbit ET1 = IE3; /定时器1中断使能sbit EX1 = IE2; /外部中断1使能sbit ET0 = IE1; /定时器0中断使能sbit EX0 = IE0; /外部中断0使能sfr IP = 0xB8; /中断优先级寄存器,从低比特到高比特,中断优先级从高到低/* IP */sbit PT2 = IP5; /定时器2中断优先级;8052 onlysbit PS = IP4; /串行通信中断优先级sbit PT1 = IP3; /定时器1中断优先级sbit PX1 = IP2; /外部中断1优先级sbit PT0 = IP1; /定时器0中断优先级sbit PX0 = IP0; /外部中断0优先级sfr SCON = 0x98; /串行控制寄存器/* SCON */sbit SM0 = SCON7;/串行模式选择sbit SM1 = SCON6;/串行模式选择sbit SM2 = SCON5;/多机通讯允许位,当模式0时此位应该为0模式1时当接收到停止位时该位将置位模式2或模式3时当接收的第9位数据为1时将置位sbit REN = SCON4;/串行接收允许位sbit TB8 = SCON3;/在模式2和模式3中将被发送数据的第9位sbit RB8 = SCON2;/在模式0中该位不起作用,在模式1中该位为接收数据的停止位,在模式2和模式3中为接收数据的第9位。sbit TI = SCON1;/发送中断标志位,由软件清零sbit RI = SCON0;/接收中断标志位,由软件清零/SM0SM1工作方式功能波特率/00方式08位同步移位寄存器fosc/12/01 方式110位UART可变/10 方式211位UARTfosc/64或fosc/32/110 方式311位UART可变sfr SBUF = 0x99; /串口数据缓冲器/* 8052 Extensions */sfr T2CON = 0xC8; /定时器2控制寄存器/* T2CON */sbit TF2 = T2CON7;/定时器2溢出标志位,定时器2溢出时将置位,当TCLK或RCLK为1时将不会置位sbit EXF2 = T2CON6;/定时器2外部标志,当EXEN2=1并在引脚T2EX检测到负跳变时置位,如果定时器2中断被允许将产生中断sbit RCLK = T2CON5;/接收时钟标志,当串行口以方式1或3工作时,将使用定时器2的溢出率作为串行口接收时钟频率sbit TCLK = T2CON4;/发送时钟标志位,当串行口以方式1或3工作时,将使用定时器2的溢出率作为串行口接收时钟频率sbit EXEN2 = T2CON3;/定时器2外部允许标志,当EXEN2=1时,在T2EX引脚出现负跳变时将造成定时器2捕捉或重装,并置位EXF2,产生中断sbit TR2 = T2CON2;/定时器运行控制位,置位时定时器2将开始工作,否则定时器2停止工作sbit C_T2 = T2CON1;/定时器计数方式选择位,如果C/T2=1,定时器2将作为外部事件计数器,否则对内部时钟脉冲计数sbit CP_RL2 = T2CON0;/捕捉/重装标志位,当EXEN2=1时,如果CP/RL2=1,T2EX引脚的负跳变将造成捕捉,如果CP/RL2=0,T2EX引脚的负跳变将造成重装/通过由软件设置T2CON可使定时/计数器以三种基本工作方式之一工作,第一种为捕/捉方式。设置为捕捉方式时,和定时器0或定时器1一样以16位方式工作。这种方式通过/复位EXEN2来选择。当置位EXEN2时,如果T2EX有负跳变电平将把当前的数锁存在RCAP2H/和RCAP2L中,这个事件可用来产生中断。/第二种工作方式为自动重装方式,其中包含了两个子功能,由EXEN2来选择,当EXEN2/复位时,16位定时器溢出将触发一个中断并将RCAP2H和RCAP2L中的数装入定时器中,当/EXEN2置位时,除上述功能外,T2EX引脚的负跳变将产生一次重装操作/最后一种方式用来产生串行口通讯所需的波特率,这通过同时或分别置位RCLK和TCLK/来实现,在这种方式中,每个机器周期都将使定时器加1,而不像定时器0和1那样需/要12个机器周期,这使得串行通讯的波特率更高sfr RCAP2L = 0xCA; /定时器2捕获、重载控制寄存器低字节sfr RCAP2H = 0xCB; /定时器2捕获、重载控制寄存器高字节sfr TL2 = 0xCC; /定时器2寄存器低字节sfr TH2 = 0xCD; /定时器2寄存器高字节/* P1 */sbit T2EX = P11; /定时器2触发事件输入引脚 8052 onlysbit T2 = P10; /定时器2计数脉冲输入引脚 8052 only/* STC89C52数据e2rom/flash */sfr ISP_DATA=0xe2;sfr ISP_ADDRH=0xe3;sfr ISP_ADDRL=0xe4;sfr ISP_COMD=0xe5;sfr ISP_TRIG=0xe6;sfr ISP_CONTR=0xe7;/等待时间设使能操作#define ENABLE5 0x83/5MHz#

温馨提示

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

评论

0/150

提交评论