1029.多路数据采集系统.doc

上传人:文库蛋蛋多 文档编号:4140743 上传时间:2023-04-07 格式:DOC 页数:54 大小:372KB
返回 下载 相关 举报
1029.多路数据采集系统.doc_第1页
第1页 / 共54页
1029.多路数据采集系统.doc_第2页
第2页 / 共54页
1029.多路数据采集系统.doc_第3页
第3页 / 共54页
1029.多路数据采集系统.doc_第4页
第4页 / 共54页
1029.多路数据采集系统.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《1029.多路数据采集系统.doc》由会员分享,可在线阅读,更多相关《1029.多路数据采集系统.doc(54页珍藏版)》请在三一办公上搜索。

1、 设 计 报 告 书题目 多路数据采集系统 参赛学校 参赛学生 时 间 2008年7月13日 设计任务书1、设计任务设计一个八路数据采集系统,系统框图如图所示。现场信号1数据采集器1主控系统数据存储现场信号2数据采集器2现场信号8数据采集器8数据显示图1 八路数据采集系统框图主控系统能对100米外的各路数据采集器的数据进行巡呼接收,通过串行传输线(测试可以用100米电缆线代替)进行采集和显示。具体设计任务是:(1)设计现场信号产生器(2)设计八路数据采集器(3)设计主控器,不允许使用PC机替代2、设计要求2.1、基本要求:(1)、设计一台现场信号产生器,能够产生稳定可调的02V直流信号,并保证

2、输出低阻抗特性,能够在带10K电阻负载后输出无明显变化。(2)、设计数据采集器(不要求显示功能),能够采集自己设计的02V直流信号,采集精度0.5。支持与主机通讯,就能够将采集的数据上传。数据传输采用串行方式,传输的电器特性自己选择。系统能够容纳8台子机,实际要求制作2台子机即可,但要求2台子机能够模拟18号中的任意一台子机。(3)设计一台主控器,主控器通过串行传输线对各路数据采集器进行采集存储。采集方式暴扣循环采集(即1路、2路、8路、1路)和选择采集(任选一路)两种方式。如果采用循环方式,采集8路信号的采集周期为1S。设计主控器显示功能,要求能够显示:采集器路数18;能够显示各路数据02.

3、000V。支持手动显示和自动巡回显示。(4)所有电源要求自制。2.2、发挥部分:(1)、提高数据采集器的采集精度到0.1以上。(2)、主机具有历史数据保存功能,每10S保存1点。要求煤炉可以连续保存20点,循环刷新,要求数据存储在非易失数据存储器中,人机界面支持历史数据查看。(3)支持8路采集器上限报警功能,上限数据可以任意设定,要求数据存储在非易失数据存储器中,掉电不丢失,要求显示界面能够清晰显示报警状态。(4)、其他功能的改进。多路数据采集系统摘 要本设计是一个主从系统,采用单片机控制,从机负责采集八路数据,采集精度可以达到0.1以上,同时应答主机发送的命令,将采集的数据上传;主机进行数据

4、处理,数据显示,键盘输入,系统报警。在主机与从机的通讯中,采用国际标准的RS485差分方式接口,使通讯的速率和传输距离均大于RS232的标准接口方式,并且用线最少(只要两根)。本设计通讯距离可达100米。关键词 数据采集系统;单片机;RS485Multi-channel data acquisition systemABSTRACTThis design is a master and slave system, using SCM control, eight-way from the plane responsible for collecting data, the gathering

5、precision may achieve above 0.1%, simultaneously replies the order which the main engine transmits, will gather data upload; mainframe data processing, data show , Keyboard input, alarm system. And from the host machine communication, using international standards RS485 differential way interface, s

6、o that communication and the rate of transmission distance was greater than the standard RS232 interfaces, and the use of at least (as long as two). The design of communications range of up to 100 meters.Key words Data Acquisition System;SCM;RS485目 录设计任务书I摘 要IIIABSTRACTIV1、系统方案11.1 系统概述11.2 方案论证11.2

7、.1 信号源产生电路11.2.2 A/D转换器11.2.3 温度采集21.2.4 通信21.2.5 键盘与显示21.2.6 监控21.2.7 存储器22、理论分析与计算32.1 测量与控制方法32.1.1 信号源32.1.2 信号采集32.1.3 通信32.2 理论计算42.2.1 信号源制作42.2.2 数据采集器43、电路与程序设计53.1 电路设计53.1.1 信号源53.1.2 数据采集器53.1.3 主机63.1.4总体电路图73.2 程序设计83.2.1 程序流程图83.2.2 主要程序分析104、结果分析10参考文献12附录131、系统方案1.1 系统概述本系统可模拟远距离多路采

8、集的现场,实现多路模拟信号同时采样,A/D采集、主从CPU通信与数据处理、键盘控制与数据显示。系统结构框图如图1-1-1所示:现场数据A/D从机RS485接口主机键盘与显示存储器监控温度图1-1-1 系统结构框图11.2 方案论证1.2.1 信号源产生电路方案一、制作一个稳压直流电源,在输出端通过电位器分压获得02V连续可调的直流信号,此方法简便易行,缺点是通过电位器分压输出,输出阻抗较大,带负载能力弱,并且不能得到0V电压。方案二、通过基准源获得稳定的电压,再经运算放大器反相,最后再在输出端采用运放跟随输出,这样经反相既可以获得0V电压输出,采用运放跟随输出又保证了低输出阻抗的特点。考虑到设

9、计任务中要求信号源低输出阻抗,并且要求包括02V可调输出,故本设计采用方案二。1.2.2 A/D转换器方案一、采用MC14433(国产5G14433)位(BCD码)单片双积分式A/D转换器,模拟输入电压范围为01.999V或0199.9mV,因为它有一个超量程标志,所以可以认为当显示超量程标志位时为2.000V。缺点是不能测量超过1.999V的电压2。方案二、采用位A/D,ICL7135,测量精度可达0.005,可以轻松满足测量精度0.1以上的要求,具有精度高和价格低的特点。本设计采用方案二。1.2.3 温度采集方案一、采用一线式数字温度传感器DS18B20,由于只有一根线控制,可节省大量的引

10、线和逻辑电路,但也正是由于只有一根线控制,对它进行操作不允许被打断,同时占用的机时较长。方案二、采用LM71集成温度传感器,功耗低,具有三线串行接口SPI总线,在操作过程中不受中断影响,因此使用更为方便。故本设计采用方案二。1.2.4 通信方案一、采用RS232通信,但RS232的可靠通信距离仅为15米。方案二、采用RS485总线,它采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。由于本设计要求主控器能对100米以外的数据采集器的数据进行采集和控制,故本设计采用RS485总线。1.2.5 键盘与显示由于

11、本设计要显示的内容较多,LED已不能胜任,故采用图形液晶显示模块12864,显示分辨率为12864点。由于功能按键数量较少,故直接使用I/O口控制。1.2.6 监控方案一、对MCU采用手动复位,此方法电路简单,但需要操作者每时每刻注意MCU的工作状态,很不方便。方案二、采用监控电路MAX813L,可以对电源电压及MCU工作状态进行监控,当电源电压降低或工作状态不正常时,便会输出一个复位信号,使MCU复位,此方法大大增加系统可靠性。本设计采用方案二。1.2.7 存储器方案一、采用EEPROM 24C256,存储空间有256K,足以满足每路每10S存一点,一共存20点的要求,但是读写速度较慢。方案

12、二、使用X5045,看门狗芯片X5045内部有512字节的存储空间,每一路存20点,一共8路,需要存储160点,每一点需要2个字节,所需内存为320字节。所以本设计采用方案二,并且X5045的读写速度较快。2、理论分析与计算2.1 测量与控制方法2.1.1 信号源信号源要求能够产生稳定可调的02V直流信号,并保证输出低阻抗特性。首先信号源必须涵盖0V和2V这两个临界值,所以可以用运放将信号反相,得到负值,再将输出信号通过一级运放跟随,便可以得到02V的低输出阻抗的信号源。由于电源的电压波动较大,故不能直接用来作为运放的输入,这时就需要用到基准源芯片。它能在负载电流、温度和时间变化时电压保持稳定

13、不变。2.1.2 信号采集信号采集主要通过ICL7135将输入模拟量转换成数字量,芯片的积分过程包括了对测量信号的积分阶段及对基准电压的放电阶段,对测量信号积分时间固定为10000个时钟周期,而对基准放电的时间计数就是A/D转换结果。只要对BUSY信号的高电平进行时钟同步计数,再减掉10000就能够得到A/D结果。具体的设计是使用单片机T0计数,INT0接BUSY做门控,同时使用INT0的后沿中断获得A/D转换结果。接口及BUSY信号波形参见图2-1-1:图2-1-1 ICL7135管脚排列、接口及积分波形图2.1.3 通信RS-485是一种应用十分广泛的通信协议。其显著特点是信号采用“差分”

14、的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。在RS-485通信中,发送过程主要采取了总线仲裁机制:在向485总线写数据时,主设备先写一字节的地址请求,所有的从设备均会收到,只有地址与之相等的从设备端口打开,其他设备全部关闭。这样,主设备与从设备之间的通信就是点对点的。每一个从设备均有一根请求线与主设备相连,若从设备需要与主设备通信时,先通过请求线进行请求,当请求成功后,从设备应能检测到总线上的地址与自身地址相同,从设备才能打开发送中断,才能发送消息,发送完之后必须关闭发送中断,释放总线,以保

15、证其他从设备这段时间能与主设备正常通信,提高通信效率。数据接收时,采用中断方式,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。接收方判断开始485通信帧的条件是,设备不报告接收错误的情况下,接收到结束标志之后的第一个非结束标志。判断帧结束的条件是,帧接收已经开始,遇到第一个尾标志字符。当链路层的通信帧接收已经开始的情况下,设备报告字符接收错误,此时应当丢弃本帧,结束帧的接收,重新开始搜索下一帧。长度字段后面的字节个数不等于长度字段指示,并且也不等于长度字段加2时,指示长度错误,作无效帧。帧长度小于帧头的长度的帧视为无效帧。当接收的字符个数超过最大的485通信帧字节数262时,也认为

16、接收错误,重新开始搜索头标志,检出下一帧数据。超时保护:如果接收收方在接收一帧数据时,在未接收完一帧时,超过20ms(2个Ticks)仍未有数据到达,则认为本帧数据接收结束,并将其丢弃。2.2 理论计算2.2.1 信号源制作信号源输出要求02V稳定的电压,所以不能用电源直接提供基准电压,应该使用基准源芯片。要求信号源输出包括0V,便需要用到运放反相来获得负电压,从而保证信号源能够输出0V。故要采用双电源对运放供电,这里采用双5V电源。考虑到最大输出电压为2V,应留有一定的余量,故采用2.5V的基准源。选用LM338-2.5,基准源只要流过1mA的电流便能稳定工作。由于采用5V电源供电,在基准源

17、上的压降为2.5V,所以为保证基准源能够稳定工作,应该串一个2.2K的限流电阻。2.2.2 数据采集器ICL7135基准电压的大小与满度值的关系是:为了留出一定的余量这里选用基准电压为1.23V,则输入电压最大值可以达到2.46V。ICL7135要求每秒钟至少进行3次A/D转换,每次转换需要40000个时钟脉冲,因此晶振频率应大于120KHz,这里取250KHz,可以有2MHz的晶振经过8分频得到。以输入电压Vx为例,“BUSY”输出端(ICL7135的21脚)高电平的宽度等于积分和反积分时间之和,如图2-1-1所示。ICL7135内部规定积分时间固定为10001个时钟脉冲时间,反积分时间长度

18、与被测电压的大小成比例。如果利用单片机内部的计数器对ICL7135的时钟脉冲计数,利用“BUSY”作为计数器门控信号,控制计数器只能在BUSY为高电平时计数,将这段BUSY高电平时间内计数器的内容减去10001,其余数便等于被测电压的数值。3、电路与程序设计3.1 电路设计3.1.1 信号源信号源电路如图3-1-1所示:图3-1-1 直流信号源电路图图中D1为基准源,只要有1mA的电流流过D1,在D1的输出端便会输出稳定的2.5V电压。经过U1反相,在R6的下端输出-2.5V的电压,在R2的上端输出+2.5V的电压,这样通过调节R4便可以得到V的输出电压,再经过一级电压跟随,便得到了低输出阻抗

19、的信号源。3.1.2 数据采集器图3-1-2 数据采集器电路图图中U8为位A/D,ICL7135,它只有三根线控制,其中sclk为时钟输入端,POL为输出数据的符号位,BUSY为数据输出端。sclk信号是由2MHz晶振经过8分频而得到的250KHz的方波信号。LM71是温度传感器,测温范围为-40150,温度分辨率为0.03125,测温精度在-40150范围内为1.5,电源电压为2.65V5.5V,具有三线串行接口SPI/MICROWIRE兼容接口,容易和微处理器连接。图3-1-2中U11的串行时钟SC、串行输入输出SI/O、片选CS分别与单片机的P2.5,P2.6,P2.7相连,用来监测机箱

20、内温度。U15,MAX813L是MAXIM公司推出的低成本微处理器监控芯片,它用来监测单片机的电源电压,当电源电压降到+4.65V以下时,RESET输出高电平,对单片机进行复位,从而保证单片机正常工作。S1为拨码开关,可以设定子机的地址,当开关导通时I/O口为低电平,四位拨码开关可以设定16个地址。U10是RS485通信芯片75LBC784。3.1.3 主机图3-1-3 主机电路图主机能对8路子机进行巡呼,能够将子机发送上来的数据进行显示。图中U14为X5045,在本设计中当作存储器使用。MAX813L为看门狗电路,用来监测电源电压,当电源电压下降时,给P3.2一个信号,单片机便进入掉电保护程

21、序,将当前数据写入X5045中。S2S5为设置用的功能按键。D6为超限报警指示灯,当某一路或某几路的值超过设定值时,便会闪烁。DS1302用来提供实时时钟。3.1.4总体电路图图3-1-4总体电路图本系统的所有设计电路如图3-1-4所示,其中共有四个模块,信号源、主机和两个子机,每个模块都是一个独立的整体,都自带电源。3.2 程序设计3.2.1 程序流程图图3-2-1为子机的程序流程图,图3-2-2为主机的程序流程图。串口中断入口接收标志RI置位?清RI收1字节,按收计数器存缓冲区发计数-1,发送完毕?发送完标志TI清零T0赋初值并启动,同时开中断中断返回发下1字节T2中断入口关计数器,关中断

22、收计数=3、符合子机地址、校验正确?清除接收计数器制作返回信息数据,发送首字节中断返回NNNYYY图3-2-1子机程序流程框图通讯开始置发送计数器=0发送当前数据,计数+1发送完1字节?全部发送完毕?延时固定时间后接收成功收到数据?准备返回失败信息准备返回接收的信息将接收的数据结果返回通讯开始图3-1-2主机程序流程框图3.2.2 主要程序分析4、结果分析参考文献1 冯涛,秦永左,赵巍.实用多路数据采集系统J.长春理工大学学报.2003,26(2):832 赵茂泰.智能仪器原理及应用M.2004年7月第1版.7-121-00017-2.北京:电子工业出版社,2004.23283 张萌,和湘,姜

23、斌.单片机应用系统开发综合实例M.2008年7月第1版.978-7-302-15458-7.北京:清华大学出版社,2007.94117附录1、主机源程序#include#include#define uchar unsigned char#define WriteDeviceAddress 0xa0/写驱动地址指令#define ReadDeviceAddress 0xa1/读驱动地址指令/变量说明:/I循环发送时存放的通道数/td用于循环显示电压的变量值/time show_time time为128ms扫描一次的时间标志位 屏幕刷新的频率,大约是16时累计时间为1秒/temp为属性变量寄存

24、器,即页面属性的变量寄存器/sel_flag,show_flag为为sel的菜单状态寄存器和显示结果的状态标志位,根据不同的情况调出不同的菜单/x_sw,x_gw,x_time 分别代表的是十位,个位,即计数的个数/x_dat=0,x_add=0; x_sz=0,代表的是X5045的双字节读写时数据和地址。以及读取出数字数据暂存变量uchar e=0,sec=1,select; /sec为秒的十位uchar at_add=0;unsigned int sec_page;uchar idata x_rdat40; /at_add为在AT24C02中所存的数值(掉电)bit w = 0; /调时标

25、志位uchar at_i=0; /用于作为通道的标志位uchar idata t10=0,0,0,0,0,0,0,0; /作为温度显示uchar alarm8=0,0,0,0,0,0,0,0,alarm_td,alarm_flag,alarm_stop=0,x_j,alarm_i;uchar idata x_tdat16=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;unsigned int r_dat;unsigned char time, show_time;unsigned char temp,sel_flag,show_flag;unsigned char fs_td

26、,td; / td用于循环显示的通道数目/键盘引脚定义sbit dog=P20;sbit alarm_led=P21;sbit e_485 = P24; /485数据传输和接收使能端。sbit KEY_1 = P16; /左上功能:退出显示数据功能sbit KEY_2 = P17; /左下功能:加一sbit KEY_3 = P15; /右上功能:设置时间sbit KEY_4 = P14; /右下功能:减一sbit ep_sck=P22;sbit ep_si=P23;sbit ep_so=P35;sbit ep_cs=P34;/向5045中写入数据void xinput(unsigned cha

27、r v)unsigned char data v1; for(v1=0;v18;v1+) ep_sck=0;/拉低时钟 ep_si=v&0x80;/送出一位数据 ep_sck=1;/拉高时钟触发移位寄存器 v=v1; /准备输出下一位 ep_si=1;/数据的读出/辅助函数:从5045输入一个字节8位数据,首先输出高位。unsigned char xout()unsigned char data v1,x,y; ep_sck=0;/拉低时钟 for(v1=0;v18;v1+) ep_sck=1;/拉高时钟x=x1;/输出字节先左移 y=ep_so;/获得一位输出x=x|y;/组装输出结果 ep

28、_sck=0; return x;/辅助函数:写结束测试void wip_poll() unsigned char data v;doep_cs=1;ep_cs=0;xinput(0x05);/准备读状态寄存器v=xout();ep_cs=1;v=v&0x01;while(v=1); /测试寄存器低位,为零则写结束。/辅助函数:打开写开关,所有写操作前必须运行本程序,命令字为06Hvoid wren()ep_cs=1;ep_cs=0;xinput(0x06);/发出打开开关命令ep_cs=1;/辅助函数:关闭写开关,所有写操作后必须运行本程序,以防止误写,命令字为04Hvoid wrdi()e

29、p_cs=1;ep_cs=0;xinput(0x04);ep_cs=1;/辅助函数:写状态寄存器,包含WREN_CMD命令。/功能:改变块锁定控制位BL1,BL0(D3,D2)及看门狗超时控制位WD1,WD0(D5,D4)void wrsr(unsigned char x)wren();/打开写开关ep_cs=1;ep_cs=0;xinput(0x01);/送入命令xinput(x);ep_cs=1;wip_poll();/测试写结束wrdi();/关闭写开关/辅助函数:读状态寄存器。unsigned char rdsr() unsigned char data x;ep_cs=1;ep_cs

30、=0;xinput(0x05);x=xout();ep_cs=1;return x; /单字节写子程序,使用中调用wren()。如果使用了块锁定,还需要先写状态寄存器解除锁定。/函数带有形参wrdat和wradd,前者为写入的字符型数据,后者为整形地址。void byte_write(unsigned char wrdat,unsigned int wradd)unsigned char data x;wren();ep_cs=1;ep_cs=0;if(wradd256)/据输入地址决定写前256地址块或者后256块 xinput(0x02);/02表示使用低256区块else xinput(

31、0x0a);/0a表示使用高256区块x=wradd%256;/高位地址已经输入,此处只需要输入低8位地址xinput(x);xinput(wrdat);ep_cs=1; wip_poll(); wrdi();/单字节读子程序,本函数返回字符型结果unsigned char byte_read(unsigned int rdadd)unsigned char data x;ep_cs=1;ep_cs=0;if(rdadd256)/根据要读取的地址写入命令字 xinput(0x03);else xinput(0x0b);x=rdadd%256;xinput(x);x=xout();ep_cs=1

32、;return(x); /双字节写子程序。使用中调用wren()。如果使用了块锁定,还需要先解除锁定。/函数带有形参wrdat1和wradd1,前者为写入的整型数据,后者为整形地址。void word_write(unsigned int wrdat1,unsigned int wradd1)unsigned char data x;wren();ep_cs=1;ep_cs=0;if(wradd18;/写入高字节xinput(x);x=wrdat1%256;/写入低字节xinput(x);ep_cs=1; wip_poll(); wrdi();/双字节读子程序,本函数返回整形结果unsigne

33、d int word_read(unsigned int rdadd1) unsigned char data x;unsigned int data rddat1;ep_cs=1;ep_cs=0;if(rdadd1256) xinput(0x03);else xinput(0x0b);rddat1=rdadd1%256;xinput(rddat1);x=xout();rddat1=100*x;x=xout();rddat1=rddat1+x;ep_cs=1;return(rddat1);/-/LCD12864程序/sbit cs=P10 ;/对应RSsbit sid=P11 ;/对应R/Ws

34、bit clk=P12;/对应Esbit ret=P13;/对应retunsigned char mo,dd;/定义时间映射全局变量(专用寄存器)void Delay_Xus(unsigned char x)/x取值1255;while(-x); void delayms(unsigned char ms)/ 延时子程序unsigned char i;while(ms-)for(i = 0; i 120; i+);/串口发送一个字节void SendByte(unsigned char Dbyte) unsigned char i ; for(i=0;i8 ;i+) clk = 0 ; Dby

35、te=Dbyte1 ; /左移一位 sid = CY; /移出的位给sid clk = 1; clk = 0; /串口接收一个字节/仅在读取数据的时候用到/而读出的数据是一次只能读出4bit的unsigned char ReceiveByte(void)unsigned char i,temp1,temp2; temp1=temp2=0 ; for(i=0;i8;i+) temp1=temp11; clk = 0 ; clk = 1 ; clk = 0 ; if(sid) temp1+ ; for(i=0;i8;i+) temp2=temp21 ; clk = 0 ; clk = 1 ; cl

36、k = 0 ; if(sid) temp2+ ; return (0xf0&temp1)+(0x0f&temp2) ;void CheckBusy( void ) do SendByte(0xfc) ; /11111,RW(1),RS(0),0 while(0x80&ReceiveByte() ; /BF(.7)=1 Busyvoid WriteCommand( unsigned char Cbyte ) cs = 1; CheckBusy() ; SendByte(0xf8) ; /11111,RW(0),RS(0),0 SendByte(0xf0&Cbyte) ; /高四位 SendByt

37、e(0xf0&Cbyte4) ;/低四位(先执行4) cs = 0 ;void WriteData( unsigned char Dbyte ) cs = 1 ; CheckBusy() ; SendByte(0xfa) ; /11111,RW(0),RS(1),0 SendByte(0xf0&Dbyte) ; /高四位 SendByte(0xf0&Dbyte4) ;/低四位(先执行;) cs = 0 ;unsigned char ReadData()unsigned char tmp; cs = 1 ; CheckBusy() ; /SendByte(0xfe) ; /11111,RW(1)

38、,RS(0),0/return ReceiveByte();do SendByte(0xfe) ; /11111,RW(1),RS(0),0 while(tmp=ReceiveByte()!=0x00) ; return tmp; cs = 0 ;/清除显示/void lcd_cls()WriteCommand(0x01);/地址归位/void address_reset()WriteCommand(0x02);/ 进入点设定 / S I/D description / 0 0 光标左移 / 0 1 光标右移 / 1 0 书面整体向右 / 1 1 书面整体向左 /void enter_mode

39、_set(bit i_d,bit s)unsigned char cmd=0x04;if (i_d) cmd|=0x02;if (s) cmd|=0x01;WriteCommand(cmd);/ 显 示 状 态 开 关 / D=1: 整体显示 ON / C=1: 游标ON / B=1:游标位置反白允许 /void display_state(bit d,bit c,bit b)unsigned char cmd=0x08;if (d) cmd|=0x04;if (c) cmd|=0x02;if (b) cmd|=0x01;WriteCommand(cmd);/ 光标或显示控制 / S/C R/L description / 0 0 光标向左移动 / 0 1 光标向右移动 / 1 0 显示向左移动 / 1 1 显示向右移动 /void cursor_display(bit s_c,bit r_l)unsigned char cmd =0x10;if (s_c) cmd|=0x08;if (r_l) cmd|=0x04;WriteCommand(cmd);/ (扩充)功能设置 / DL=1,为8 BIT MPU控制界面/

展开阅读全文
相关资源
猜你喜欢
相关搜索

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号