第8章-单片机应用系统开发与实例课件.ppt
第八章第八章 单片机应用系统开发与实例单片机应用系统开发与实例 单片机是面向工业控制设计的微型计算机,单片机是面向工业控制设计的微型计算机,由于其由于其“面向控制面向控制”、使用灵活等一系列特点而、使用灵活等一系列特点而广泛应用于工业自动控制系统、智能化产品、家广泛应用于工业自动控制系统、智能化产品、家电、通信和军事等领域。单片机在工业控制中是电、通信和军事等领域。单片机在工业控制中是以单片机系统形式来运行的。在前面的章节中已以单片机系统形式来运行的。在前面的章节中已经系统地介绍了经系统地介绍了MCS-51MCS-51系列单片机的内部结构、系列单片机的内部结构、指令系统、存储器扩充和主要接口技术。这一章指令系统、存储器扩充和主要接口技术。这一章主要介绍单片机应用系统的开发设计,内容包括主要介绍单片机应用系统的开发设计,内容包括开发过程、开发工具以及实用设计分析等,这些开发过程、开发工具以及实用设计分析等,这些内容能够说明如何应用单片机组成一个实用的系内容能够说明如何应用单片机组成一个实用的系统。统。81 单片机应用系统的开发步骤和单片机应用系统的开发步骤和过程过程n n1.课题、项目的提出n n2.项目总体分析与论证n n3.总体方案设计n n4.硬件设计与软件设计n n5.联机调试n n6.脱机运行考核n n7.产品(项目)定型n n8.交付使用或投入批量生产8.1.1 项目总体分析和论证项目总体分析和论证 n n1、对项目的可行性进行调研分析,即对所研制任务的功能和技术指标详细分析、研究,明确功能的要求;对技术指标进行一些调查、分析和研究。n n2、对产品或项目的先进性、可靠性、可维护性、可行性以及功能/价格比进行综合考虑;同时还要对国内外同类产品或项目的应用和发展情况予以了解。8.1.2 系统总体方案设计系统总体方案设计n n单片机应用系统的总体方案设计主要包括:1、系统功能(任务)的分配 2、确定软硬件任务及相互关系 3、单片机系统的选型和拟定调试方案和手段8.1.3 硬件设计硬件设计n n硬件部分是单片机系统的运行平台,设计开发的第一步是电路原理图的设计,主要是对单片机及其外围功能电路进行原理设计,设计可以采用多种EDA软件,如常用的PROTEL99、PROTUS等等,根据软件版本和功能还可以采用软件模拟仿真。8.1.4 软件设计软件设计n n首先是设计语言的选择,单片机设计语言常规的主要是采用厂家提供的针对单片机的汇编语言进行的,也就是说不同系列的单片机汇编语言也是不同的,但是汇编语言语法冗长,内容抽象,还需了解内部的硬件结构,学习应用有一定难度,随着单片机的广泛应用,出现了能用高级语言C进行编程的解决办法。目前针对不同单片机的C编译器能编译多种常用的单片机程序,如Franklin/Keil编译器。8.1.5 联机调试联机调试n n联机调试,就是借助开发工具对所设计应用系统的硬件进行检查,排除设计和焊接装配的故障。确认应用系统的硬件没有问题后,可将软件装入进行综合调试阶段。该阶段主要任务是排除软件逻辑设计错误,也解决硬件遗留下的问题。8.1.6 脱机运行脱机运行 n n联机调试完成后,可将程序写入EPROM或片内ROM中,脱机运行考核。看应用系统能否可靠、稳定地工作,这个过程一般没有问题。若有问题则大多出在复位、晶体振荡、“看门狗”电路或电源方面,可针对性地予以解决。然后可将系统样机现场运行考核,进一步暴露问题。82 单片机应用系统开发工具单片机应用系统开发工具8 82 21 1 单片机单片机EDAEDA设计工具设计工具1 1、PROTELPROTEL软件软件 ProtelProtel 公司推出的基于公司推出的基于Windows Windows 平台软件平台软件 凭借其强大的功能,能对实际电子电路进行仿凭借其强大的功能,能对实际电子电路进行仿真分析,可极大地提高产品的可靠性,缩短设真分析,可极大地提高产品的可靠性,缩短设计周期,节省设计费用,已成为最流行的计周期,节省设计费用,已成为最流行的EDA EDA 工具。工具。ProtelProtel 随着时代的发展新的版本不断涌随着时代的发展新的版本不断涌现,现,ProtelProtel 99SE 99SE 是其第是其第6 6 代产品,其主要的代产品,其主要的功能模块,包括电路原理图设计、印制电路板功能模块,包括电路原理图设计、印制电路板设计、可编程逻辑器件设计、电路图模拟设计、可编程逻辑器件设计、电路图模拟/仿真仿真等。等。(1)电路原理图设计的步骤n n设置原理图设计环境n n放置元件 n n原理图布线 n n编辑和调整 n n检查原理图 n n生成网络表 单片机最小系统(2)印刷电路板设计的步骤 n n规划电路板 n n设置参数 n n装入网络表 n n元器件布局 n n自动布线 n n手工调整 2、Proteus软件n nProteus是英国Labcenter公司开发的电路分析与实物仿真软件。它可以仿真、分析(SPICE)各种模拟器件和集成电路,其最大的特点是可以支持许多型号的单片机仿真,该软件的单片机仿真库里有51系列、PIC系列、AVR系列、摩托罗拉的68MH1l系列等,另外还提供了SCH(原理图)与PCB(印制板)设计功能,我们可以用该软件模拟通过后再制作印制板。822 单片机程序开发工具Keil软件n n德国德国KeilKeil Software Software公司针对公司针对5151系列单片机推出系列单片机推出了基于了基于3232位位WindowsWindows环境、以环境、以5l5l系列单片机为开系列单片机为开发目标、高效率的发目标、高效率的C C语言集成为基础开发平台的语言集成为基础开发平台的KeilKeil Vision2 IDE Vision2 IDE,即通常所说的。,即通常所说的。Vision2Vision2是一个功能强大的单片机集成开发平台,主要包是一个功能强大的单片机集成开发平台,主要包括:括:C51C51交叉编译器、交叉编译器、A51A51宏汇编器、宏汇编器、BL51BL51连接连接重定位器、重定位器、LIB51LIB51库管理器、库管理器、OH51 Intel OH51 Intel HEXHEX格式文件转换器、格式文件转换器、RTXRTX一一5 15 1实时操作系统以实时操作系统以及单片机软件仿真器及单片机软件仿真器DseopeDseope 51 51。Vision2 IDEVision2 IDE将项目管理、源代码编辑、程序调试等集成到一将项目管理、源代码编辑、程序调试等集成到一个功能强大的个功能强大的windows 32windows 32平台中。平台中。(1)单片机的硬件和软件仿真n n仿真有两种方式:1、通过硬件仿真器与试验样机联机进行的“实时”在线仿真。2、在微机上通过软件进行的模拟仿真。n n“实时”在线仿真的优点是可以利用仿真器的软、硬件完全模拟样机的工作状态,使试验样机在真实的工作环境中运行,可以随时观察运行结果和解决问题,缺点是价格较高。n n软件模拟仿真的方式简单易行,它是在PC机上通过运行仿真软件来创造一个模拟目标单片机的模拟环境,不需单独购买硬件仿真器。(2)单片机在keil c51集成开发环境下的软件模拟仿真n nKEIL公司的 内嵌的软件模拟仿真器可以仿真ATMEL公司的89C(S)51、89C(S)52、89C58和华邦公司的W78E51、78E52以及PHILIPS公司的绝大多数标准51内核的单片机。除了可以模拟单片机的IO口、定时器、中断外,甚至可以仿真单片机的串行通信。进行软件仿真的一般过程n n仿真参数设置仿真参数设置 :选择菜单选择菜单ProjeetProjeet(工程工程)OptionforTargetSimulatorOptionforTargetSimulator(目标属性选择目标属性选择)n n程序的编译和修改程序的编译和修改 :project project build build tagettaget 完成程序编译完成程序编译 n n软件仿真时的单片机内部参数及其状态查看程序软件仿真时的单片机内部参数及其状态查看程序文件的模拟仿真:文件的模拟仿真:源文件编译通过后,选择源文件编译通过后,选择Debug(Debug(调试调试)菜单中的菜单中的开始开始(Start)(Start),停止,停止(StopDebugStopDebug)项,便可进入模项,便可进入模拟仿真状态拟仿真状态 83 单片机应用系统设计开发实践单片机应用系统设计开发实践n n实例实例1 单片机流水灯设计单片机流水灯设计n n1系统硬件设计系统硬件设计 单片机采用AT89C51,P1口作LED发光管输出控制用,P3.0P3.2为闪烁方式控制开关K1、K2、K3按键接口,P33口的按键作备用,限流电阻为310,发光管工作电流约为10 mA,采用12MHz晶振。如下图所示。2系统主要程序的设计n n(1)主程序 通过扫描通过扫描P3.0P3.2P3.0P3.2口,判断是否有按键按下,口,判断是否有按键按下,然后在然后在20H20H内存单元的低内存单元的低3 3位的对应位置位的对应位置l l标志,标志,确定应执行的闪烁功能。确定应执行的闪烁功能。当当20H20H0 0为为1 1时,发光管轮流点亮;当时,发光管轮流点亮;当20H20H1 1为为1 1时,发光管逐点点亮;当时,发光管逐点点亮;当20H20H2 2为为1 1时,发时,发光管间隔闪亮。在主程序对光管间隔闪亮。在主程序对20H20H的低的低3 3位进行使值位进行使值判定后,转入相应的闪烁控制程序。上电初始化判定后,转入相应的闪烁控制程序。上电初始化时,对时,对20H20H的最低位置的最低位置1 1,系统进入轮流点亮方式。,系统进入轮流点亮方式。n n(2)键扫描子程序 因按键较少,采用直接端口扫描键开关,用软件延时因按键较少,采用直接端口扫描键开关,用软件延时去抖动确认后,对去抖动确认后,对20H20H内存单元相应的位置内存单元相应的位置1 1,并把其余,并把其余位清零。位清零。n n(3)闪烁控制程序 闪烁控制程序用来控制闪烁控制程序用来控制P1P1口的发光管发光变化方式,其口的发光管发光变化方式,其中:中:执行功能程序执行功能程序0(FUN0)0(FUN0)时的时的P1P1口输出值变化为口输出值变化为1111111011111110一延时一延时111111101111111101一延时一一延时一1111101111111011一一延时一延时一1111011111110111一延时一延时111101111111101111一延时一延时111011111111011111一延时一一延时一l0111111l0111111一延时一一延时一0111111101111111延延时结束转主程序。时结束转主程序。执行功能程序执行功能程序1(FUN1)1(FUN1)时的时的P1P1口输出口输出1111111011111110一延时一一延时一1111110011111100延时延时111111000111111000一延时一一延时一1111000011110000一延时一一延时一1110000011100000延时结束转主程序。延时结束转主程序。执行功能程序执行功能程序2(FUN2)2(FUN2)时的时的P1P1口输出变化为口输出变化为101010101101010101延时延时0101010101010101延时结束延时结束转主程序。转主程序。n n(4)延时子程序 延时子程序有延时子程序有10m s10m s和和0.5s0.5s两个用作键两个用作键扫描消抖及发光管闪烁延时。发光管闪烁的快慢扫描消抖及发光管闪烁延时。发光管闪烁的快慢可由可由R4R4寄存器内的初值进行改变。寄存器内的初值进行改变。主程序流程图实例实例2 单片机电子时钟的设计单片机电子时钟的设计n n单片机电子时钟可实现24h计时方式,时、分、秒用六位数码管显示的功能。该电路采用AT89C52单片机,使用9V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。1时钟电路硬件的设计n n采用AT89C52单片机最小系统应用设计,LED显示采用动态扫描方式实现,Pl口输出段码数据,P3.0P3.5口作扫描输出,P3.7接按钮开关。为了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确性,采用12MHz晶振。原理图如下。2系统主要程序的设计n n(1)主程序 本设计中的计时采用定时器本设计中的计时采用定时器T0T0中断完成,其余状态循环中断完成,其余状态循环调用显示子程序,当调用显示子程序,当P3P37 7端口开关按下时,转入调时功端口开关按下时,转入调时功能程序。如能程序。如下图下图所示。所示。n n(2)显示子程序 数码管显示的数据存放么内存单元数码管显示的数据存放么内存单元70H70H一一75H75H中,其中中,其中70H70H一一71H71H存放秒数据,存放秒数据,72H72H一一73H73H存放分数据,存放分数据,74H74H一一75H75H存放时数据,每一地址单元内均为十进制存放时数据,每一地址单元内均为十进制BCDBCD码。由码。由于采用软件动态扫描实现数据显示功能,显示用十进制于采用软件动态扫描实现数据显示功能,显示用十进制BCDBCD码数据的对应段码存放在码数据的对应段码存放在ROMROM表中。显示时,先取表中。显示时,先取出出70H70H一一75H75H某一地址中的数据,然后查得对应的显示用某一地址中的数据,然后查得对应的显示用段码从段码从P1P1口输出。口输出。P3P3口将对应的数码管选中,就能显示口将对应的数码管选中,就能显示该地址单元的数据值。该地址单元的数据值。n n(3)定时器T0中断服务程序 定时器定时器T0T0用于时间计时。定时溢出中断周期设用于时间计时。定时溢出中断周期设为为50 ms50 ms,中断累计,中断累计2020次次(即即1s)1s)时对秒计数单元时对秒计数单元进行加进行加1 1操作。时间计数单元地址分别在操作。时间计数单元地址分别在70H70H一一71H(s)71H(s)、76H76H一一77H(min)77H(min)、78H78H一一79H(h)79H(h),7AH7AH单元内存放单元内存放“熄灭符熄灭符”数据数据(#0AH)(#0AH)。在计数。在计数单元中采用十进制单元中采用十进制BCDBCD码计数,满码计数,满6060进位。进位。T0T0中中断服务程序流程图如断服务程序流程图如下图下图所示。所示。n n(4)T1中断服务程序 T1T1中断服务程序用于指示调整单元数字的亮闪。中断服务程序用于指示调整单元数字的亮闪。在时间调整状态下,每过在时间调整状态下,每过0.3s0.3s,将对应单元的显,将对应单元的显示数据换成示数据换成“熄灭符熄灭符”数据数据(#0AH)(#0AH)。这样,在调。这样,在调整时间时,对应调整单元的显示数据就会间隔闪整时间时,对应调整单元的显示数据就会间隔闪亮。亮。n n(5)调时功能程序 调时功能程序的设计方法是:按下按键,若按下调时功能程序的设计方法是:按下按键,若按下时间小于时间小于l sl s,进入省电状态,进入省电状态(数码管不亮,时钟不数码管不亮,时钟不停停),否则进入调分状态,等待操作此时计时器,否则进入调分状态,等待操作此时计时器停止走动。当再次按下按钮时,若按下时间小于停止走动。当再次按下按钮时,若按下时间小于0.5s0.5s,则时间加,则时间加1min1min;若按下时间大于;若按下时间大于0.5s0.5s,则进入小时调整状态。在小时调整状态下,当按则进入小时调整状态。在小时调整状态下,当按键按下的时间大于键按下的时间大于0.5s0.5s时退出调整状态,时钟继时退出调整状态,时钟继续走动。续走动。实例实例3 多路模拟信号数据采集系统多路模拟信号数据采集系统设计设计n n采用单片机AT89C52为核心的多路模拟信号数据采集系统可自动轮流采集显示8路输入模拟信号05V的数值,最小分辨率为0.02V,最大显示数值为255(输入为5v时),可作为数字电压表用。1系统硬件电路的设计n n8 8路输入模拟信号路输入模拟信号AD1AD1AD8AD8由由A/DA/D转换电路、单片机最转换电路、单片机最小系统及小系统及4 4位位LEDLED显示等组成。显示等组成。A ADD转换由转换由A/DA/D转换芯片转换芯片ADC0809ADC0809完成。完成。ADC0809ADC0809具有具有8 8路模拟输入端口,选端路模拟输入端口,选端口地址线口地址线(23(232525脚脚CBA)CBA)接单片机的接单片机的P2.0/P2.1/P2.2P2.0/P2.1/P2.2,三者组合可决定对哪一路模拟输入作三者组合可决定对哪一路模拟输入作A ADD转换。第转换。第2222脚脚ALEALE为地址锁存控制,当输入为高电平时对地址信号进为地址锁存控制,当输入为高电平时对地址信号进行锁存接单片机行锁存接单片机P2.3P2.3;6 6脚脚STRATSTRAT为为ADAD启动控制,当输启动控制,当输入一个入一个2s2s宽高电平脉冲时,就开始宽高电平脉冲时,就开始A ADD转换接转换接P2.4P2.4;7 7脚脚EOCEOC为为A ADD转换结束标志,当转换结束标志,当A ADD转换结束时,转换结束时,7 7脚脚输出高电平接输出高电平接P3.7P3.7;9 9脚脚OEOE为为A ADD转换数据输出允许控转换数据输出允许控制,当制,当OEOE脚为高电平时,脚为高电平时,A ADD转换数据从端口输出接转换数据从端口输出接P2.5P2.5;1010脚脚CLKCLK为为ADC0809ADC0809的时钟输入端,利用单片机的时钟输入端,利用单片机3030脚脚ALEALE的六分频晶振信号再通过的六分频晶振信号再通过1402414024二分频得到。二分频得到。单片机的单片机的P1P1、P3P3端口作四位端口作四位LEDLED数码管显示控制。数码管显示控制。如图如图。2系统软件设计n n(1)(1)初始化程序初始化程序 系统上电时,将系统上电时,将70H70H一一77H77H内存单元清零,内存单元清零,P2P2口置零。口置零。n n(2)(2)主程序主程序 在刚上电时,因为在刚上电时,因为70H70H77H77H内存单入的数据为内存单入的数据为0 0,则每一通,则每一通道的数码管显示值都为道的数码管显示值都为000000。当进行一次测量后,将显示出每。当进行一次测量后,将显示出每一通道的一通道的A ADD转换值。每个通道的数据显示时间在转换值。每个通道的数据显示时间在1s1s左行。左行。主程序在调用显示程序和测试程之间循环,其流程图如主程序在调用显示程序和测试程之间循环,其流程图如下图下图所所示。示。n n(3)(3)显示子程序显示子程序 采用动态扫描法实现四位数码管的数值显示。测量所得的采用动态扫描法实现四位数码管的数值显示。测量所得的A ADD转换数据放在转换数据放在70H70H77H77H内存单元中。测量数据在显示时需内存单元中。测量数据在显示时需经过转换成为十进制经过转换成为十进制BCDBCD码放在码放在78H78H7BH7BH中,其中中,其中7BH7BH存放存放通道标志数。寄存器通道标志数。寄存器R3R3用来作用来作8 8路循环控制,路循环控制,RoRo用作显示数据用作显示数据地址指针。地址指针。n n(4)(4)模数转换测量子程序模数转换测量子程序 模数转换测量子程序是用来控制对模数转换测量子程序是用来控制对08090809八路模拟输入电压的八路模拟输入电压的A ADD转换,并将对应的数值移入转换,并将对应的数值移入70H70H77H77H内存单元,其程序内存单元,其程序流程如图流程如图下图下图所示。所示。实例实例4 单片机液晶显示汉字菜单设计单片机液晶显示汉字菜单设计n n液晶显示(液晶显示(LCDLCD)以其功耗低、显示内容丰富寿)以其功耗低、显示内容丰富寿命长等优点广泛应用于现代智能仪器仪表中。命长等优点广泛应用于现代智能仪器仪表中。SED1335SED1335是日本是日本SEIKOEPSONSEIKOEPSON公司生产的图形公司生产的图形液晶控制器,它在同类产品中功能是最强的,具液晶控制器,它在同类产品中功能是最强的,具有较强功能的有较强功能的I/OI/O缓冲器,功能丰富的指令,支持缓冲器,功能丰富的指令,支持字符、图形合成显示,作图功能强,支持多屏图字符、图形合成显示,作图功能强,支持多屏图形合成及滚屏模式。形合成及滚屏模式。SED1335SED1335常用于控制中大规常用于控制中大规模的点阵图形液晶模块。设计中采用日本模的点阵图形液晶模块。设计中采用日本OPTREXOPTREX公司的公司的DMF50081DMF50081液晶显示模块,它具液晶显示模块,它具有有320240320240点阵的单屏结构,分辨率高点阵的单屏结构,分辨率高(0.270.27mm0.270.27mm),能显示),能显示16161616点阵的汉字点阵的汉字2020行行1515列。列。SED1335SED1335与单片机接口原理图与单片机接口原理图如如图图。n n设计中采用设计中采用SED1335SED1335与单片机采用直接访问方式与单片机采用直接访问方式连接,连接,SED1335SED1335的数据线直接挂在单片机的数据的数据线直接挂在单片机的数据总线上;片选信号总线上;片选信号/CS/CS与单片机的与单片机的A15(P2.7)A15(P2.7)相连,相连,控制液晶的选通;数据控制液晶的选通;数据/指令选择指令选择A0A0连接在单片连接在单片机的机的A8(P2.0)A8(P2.0)上,低为数据,高为命令;液晶驱上,低为数据,高为命令;液晶驱动电源为动电源为VEE(-20V)VEE(-20V),VadjVadj连接到电位器上调节连接到电位器上调节液晶显示的对比度。液晶显示的对比度。SED1335SED1335控制器与控制器与DMF50081DMF50081液晶模块通过相应的口线连接。根据液晶模块通过相应的口线连接。根据图示连接,图示连接,SED1335SED1335控制器数据端口地址为控制器数据端口地址为7EFFH7EFFH,指令端口地址为,指令端口地址为7FFFH7FFFH。n n设计可以采用大屏幕的液晶显示和若干功能键,设计可以采用大屏幕的液晶显示和若干功能键,并且通过液晶显示多级功能菜单形式进行人机交并且通过液晶显示多级功能菜单形式进行人机交互。互。1、SED1335初始化函数n n要实现正确显示,首先必须根据需要对SED1335控制器的各个参数进行设定,以规定液晶显示器的显示窗口、显示区域、显示合成以及显示方式等。这些参数一经正确设定,液晶才能进入工作状态。初始化程序如下:n n#define#define ucharuchar unsigned char unsigned charn n#define#define uintuint unsigned unsigned intintn nucharuchar code sys_code8=code sys_code8=0 x32,0 x87,7,39,47,239,40,0;0 x32,0 x87,7,39,47,239,40,0;n nucharuchar code code scr_code8=0 x00,0 x00,240,0 x00,0 x40,240;scr_code8=0 x00,0 x00,240,0 x00,0 x40,240;n n#define#define iow_ciow_c XBYTE0 x7EFF XBYTE0 x7EFF/写指令地址写指令地址 n n#define#define iow_diow_d XBYTE0 x7FFE XBYTE0 x7FFE/写数据地址写数据地址 n nvoid config1335(void)/void config1335(void)/初始化配置初始化配置SED1335SED1335n n ucharuchar i,ji,j;n n iow_ciow_c=0 x40;/=0 x40;/系统初始化指令系统初始化指令n n for(ifor(i=0;i8;i+)=0;i8;i+)n n iow_diow_d =sys_codeisys_codei;/;/写指令参数写指令参数n niow_ciow_c=0 x44;/=0 x44;/设置显示设置显示RAMRAM区起始地址指令区起始地址指令n n for(jfor(j=0;j8;j+)=0;j8;j+)n n iow_diow_d =scr_codejscr_codej;n n iow_ciow_c=0 x5B;/=0 x5B;/设置显示合成指令设置显示合成指令n n iow_diow_d=4;/=4;/n n iow_ciow_c=0 x59;=0 x59;/显示开指令显示开指令n n iow_diow_d=0 x54;=0 x54;/开所有显示区开所有显示区,关闪烁关闪烁,无光标无光标n n 2、汉字显示函数设计n nSED1335SED1335控制的控制的DMF50081DMF50081是一种点阵图形式是一种点阵图形式液晶显示模块,其显示汉字有两种方式:一种是液晶显示模块,其显示汉字有两种方式:一种是利用字符发生器来显示汉字,另一种是利用图形利用字符发生器来显示汉字,另一种是利用图形方式把汉字字型显示在液晶屏上。前者显示的汉方式把汉字字型显示在液晶屏上。前者显示的汉字数量少且字型单调,故本文设计中采用图形方字数量少且字型单调,故本文设计中采用图形方式显示汉字,其原理是将汉字取字模,在液晶上式显示汉字,其原理是将汉字取字模,在液晶上按字模点亮字型显示,例如一个按字模点亮字型显示,例如一个16161616点阵的汉点阵的汉字需取字需取3232字节的字模存储在程序中,由程序逐字字节的字模存储在程序中,由程序逐字节地向图形显示区相应单元写入,在显示屏上显节地向图形显示区相应单元写入,在显示屏上显示出相应的汉字,用这种方式显示汉字,其显示示出相应的汉字,用这种方式显示汉字,其显示的汉字数量不受限制,并且字型大小可变。的汉字数量不受限制,并且字型大小可变。n nvoid void wrhz_g(ucharwrhz_g(uchar ox,ucharox,uchar oy,ucharoy,uchar tmp32,bit tmp32,bit fxfx)n n uintuint tmpadr,i,jtmpadr,i,j;n n tmpadrtmpadr=oyoy*40+ox;/*40+ox;/求得相对地址求得相对地址n n iow_ciow_c=CSRDIR_DOWN;/=CSRDIR_DOWN;/光标下移光标下移n n j=j=tmpadrtmpadr;n n iow_ciow_c=CSRW;=CSRW;/光标指针设置光标指针设置n n iow_diow_d=(uchar)(tmpadr&0 xff);=(uchar)(tmpadr&0 xff);/设置光标地址设置光标地址CSR CSR 低位低位n n iow_diow_d=tmpadrtmpadr/256+0 x40;/256+0 x40;/高位高位n n iow_ciow_c=MWRITE;/0 x42=MWRITE;/0 x42数据写入指令数据写入指令n n for(ifor(i=0;i32;i+=2)=0;i32;i+=2)n n if(fxif(fx)n n iow_diow_d=tmpitmpi;/;/如果如果fxfx1 1反显反显n n elseelsen n iow_diow_d=tmpitmpi;/;/写入汉字代码左半边写入汉字代码左半边n n n n tmpadrtmpadr=j;=j;n n iow_ciow_c=CSRW;/CSRW=CSRW;/CSRW 代码,光标指针设置代码,光标指针设置n n iow_diow_d=(=(uchar)(tmpadruchar)(tmpadr&0 xff)+1;/&0 xff)+1;/设置光标地址设置光标地址CSR CSR 低位低位n n iow_diow_d=tmpadrtmpadr/256+0 x40;/256+0 x40;/高位高位n n iow_ciow_c=MWRITE;/=MWRITE;/代码代码0 x42,0 x42,数据写入指令数据写入指令n n for(ifor(i=1;i33;i+=2)=1;i33;i+=2)n n if(fxif(fx)n n iow_diow_d=tmpitmpi;如果如果fxfx1 1反显反显n n elseelsen n iow_diow_d=tmpitmpi;/;/写入汉字代码右半边写入汉字代码右半边n n n n 3、绘制波形函数设计n nSED1335SED1335控制器突出的优点是绘图的能力很强,控制器突出的优点是绘图的能力很强,绘制波形实际上是通过移动光标在液晶屏相应的绘制波形实际上是通过移动光标在液晶屏相应的位置写点来绘制波形曲线,为此首先编制画点函位置写点来绘制波形曲线,为此首先编制画点函数数void void drawdot(uintdrawdot(uint ox,ucharox,uchar oy,bitoy,bit flag);flag);其中其中oxox为点横坐标(为点横坐标(0 0319319),),oyoy为点的纵坐为点的纵坐标(标(0 0239239),),flagflag为控制点亮标志,为控制点亮标志,1 1为亮为亮0 0为为灭。逐点比较前后点的值用阶梯折线来逼近曲线。灭。逐点比较前后点的值用阶梯折线来逼近曲线。绘制电压电流实时波形曲线时,首先把接受绘制电压电流实时波形曲线时,首先把接受DSPDSP传输过来的一组电压电流值放到显示缓冲区传输过来的一组电压电流值放到显示缓冲区(tmp256tmp256数组),然后直接调用绘制波形函数组),然后直接调用绘制波形函数就可得到该周期时刻的电压波形。数就可得到该周期时刻的电压波形。n nvoid void draw_wave(uintdraw_wave(uint data data i,uchari,uchar xdataxdata tmp256)tmp256)n n ucharuchar j,xj,x;n nintint m,nm,n,c1;,c1;n ndrawdot(i,tmp0,1);/drawdot(i,tmp0,1);/画起始点画起始点n nfor(jfor(j=1;j256;j+)=1;j1)/mn+1else if(c11)/mn+1n n for(xfor(x=m-1;x=m-1;xn;xn;x-)-)n ndrawdot(i-1,x,1);drawdot(i-1,x,1);n n n nelse/mn-1else/mn-1n n for(xfor(x=m+1;x=m+1;xn;xn;x+)+)n ndrawdot(i,x,1);drawdot(i,x,1);n n n n n n 853 单片机系统设计实例单片机系统设计实例-基于单片机的高精度位置检测系统设计n n(一)系统硬件设计:(一)系统硬件设计:系统硬件电路设计分为单片机最小系统、键盘显示部分、位置距离测量和存储器扩展部分、角度测量等四部分进行。以下分别加以说明。1、单片机最小系统、单片机最小系统n n所谓最小系统指的是所选用单片机的最基本的电所谓最小系统指的是所选用单片机的最基本的电路构成,包括单片机、电源电路、晶振电路和复路构成,包括单片机、电源电路、晶振电路和复位电路。本设计中采用的单片机为与位电路。本设计中采用的单片机为与5151系列兼容系列兼容的的AT89C52AT89C52,其性价比高,内部有,其性价比高,内部有8K 8K FlashROMFlashROM存储器,系统不需扩展外部存储器,系统不需扩展外部ROMROM。电电源部分源部分,系统需要,系统需要5V5V稳压电源供给单片机和外稳压电源供给单片机和外围接口芯片,需要围接口芯片,需要15V15V稳压电源给稳压电源给A/DA/D芯片,所芯片,所以设计中采用三端稳压器结合滤波电容组成直流以设计中采用三端稳压器结合滤波电容组成直流稳压电源电路,电源可采用交流稳压电源电路,电源可采用交流220V220V经过变压器经过变压器和整流桥供电,也可以通过电池给三端稳压芯片和整流桥供电,也可以通过电池给三端稳压芯片供电。供电。2、单片机键盘显示电路、单片机键盘显示电路n n键盘显示是单片机系统和操作者对话的接口,系统根据检测要求采用8155扩展接口,控制16键盘和8位数码管显示。键盘功能有09数字键和部分功能键,8位数码管可分别显示距离测量和角度测量的数值。在8155的片选信号/CE(P270)和IO/M(P260)时,8155选中它内部的RAM工作;在CE(P270)和IO/M(P261)时,8155选中片内三个I0端口。相应地址分配为:n n3F00H3FFFH 8155内部RAMn n7F00H 命令状态口n n7F01H A口n n7F02H B口n n7F03H C口n n7F04H 定时器低8值口n n7F05H 定时器高8位口3、位置距离测量和存储器扩展电路、位置距离测量和存储器扩展电路n n位置距离测量电路采用以位置距离测量电路采用以1212位精度的位精度的AD574AD574芯片,可以芯片,可以完成较高精度的位置和距离测量,如图完成较高精度的位置和距离测量,如图8 81616所示,所示,AD574AD574的的1313脚和传感器的输出端脚和传感器的输出端AD1AD1端相连,输入的端相连,输入的0 0+10V+10V范围的传感模拟电压,经范围的传感模拟电压,经A ADD转换后可由单片转换后可由单片机通过程序从机通过程序从P0P0口分两次输入电压的转换值,先高口分两次输入电压的转换值,先高8 8位,位,再低再低4 4位,然后送到单片机内部位,然后送到单片机内部RAMRAM单元。单元。AD574AD574的控的控制功能表如下制功能表如下 。CECECSCS(接(接P3.0P3.0)R/C(R/C(接接A1)A1)12/812/8A0A0(接(接A2A2)完成操作和操作地址完成操作和操作地址接接单单片片机机WRWR和和RDRD的与的与非非0 00 0接接地地0 0启启动动1212位位A/DA/D转换转换(FDF9HFDF9H)0 01 10 0高高8 8位数字量位数字量输输出(出(FDFBHFDFBH)0 01 11 1低低4 4位数字量位数字量输输出(出(FDFFHFDFFH)1 1x xx x无操作无操作n n其中其中:CLR P3.0:CLR P3.0;n nMOV DPTR,#0FDF9HMOV DPTR,#0FDF9H;n n MOVX DPTR,AMOVX DPTR,A;启动;启动1212位位A/DA/D转换转换n n MOV DPTR,#0FDFBHMOV DPTR,#0FDFBH;n n MOVX A,DPTRMOVX A,DPTR;读取高;读取高8 8位数字量位数字量n nMOV DPTR,#0FDFFHMOV DPTR,#0FDFFH;n n MOVX A,DPTRMOVX A,DPTR;读取低;读取低4 4位数字量位数字量n n给给CSCS(P3.0P3.0)写低,写)写低,写FDF9HFDF9H地址时选通控制信号端从地址时选通控制信号端从而启动而启动1212位位A ADD转换;读转换;读FDFBHFDFBH地址时选通控制信号读地址时选通控制信号读得高得高8 8位数字量;读位数字量;读FDFFHFDFFH用于读取低用于读取低4 4位数字量。这点位数字量。这点可以对照表可以对照表8181看出来。看出来。1212引脚接地表示引脚接地表示89C5289C52需要需要分两次从分两次从AD574AAD574A输人输