试设计智能仪表智能仪课程设计论文.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 智能仪表 智能 课程设计 论文
- 资源描述:
-
太原理工大学现代科技学院 智能仪器设计 课程设计 专业班级 自动化11-2 学 号 姓 名 题 目 号 14 题 目 14 试设计智能仪表 实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配铁铜镍热电阻,测温范围为0℃~200℃。采用比例控制、并用晶闸管脉宽调制驱动1000W电加热器(电源电压为AC220V)。 摘 要 智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。它的出现,极大地扩充了传统仪器的应用范围。智能仪器凭借其体积小,功能强,功耗低等优势,迅速的在家用电器,研单位和工业企业中得到了广泛的应用。 传感器取被测参量的信息并转换成电信号,经滤波去除干扰后送入多路模拟开关;由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大器,放大后的信号经A/D转换器转换成相应的脉冲信号后送入单片机中;单片机根据仪器所设定的初值进行相应的数据运算和处理(如非线性校正等);运算的结果被转换为相应的数据进行显示和打印;同时单片机把运算结果与存储于片内FlashROM(闪速存储器)或EPROM(电可擦除存贮器)内的设定参数进行运算比较后,根据运算结果和控制要求,输出相应的控制信号(如报警装置触发、继电器触点等)。本次设计使用铁-铜镍热电阻。传感器取被测参量的信息并转换成电信号,经滤波去除干扰后送入多路模拟开关;由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大器,放大后的信号经A/D转换器转换成相应的脉冲信号后送入单片机中;单片机根据仪器所设定的初值进行相应的数据运算和处理(如非线性校正等);运算的结果被转换为相应的数据进行显示和打印;同时单片机把运算结果与存储于片内FlashROM(闪速存储器)或EPROM(电可擦除存贮器)内的设定参数进行运算比较后,根据运算结果和控制要求,输出相应的控制信号(如报警装置触发、继电器触点等)。此外,智能仪器还可以与PC机组成分布式测控系统,由单片机作为下位机采集各种测量信号与数据,通过串行通信将信息传输给上位机——PC机,由PC机进行全局管理。 本次课程设计采用keil编译软件编写C语言源代码。经调试好后,装载入单片机进行仿真,完成智能仪器的核心设计。 关键字:STC89C51单片机,A/D转换器,铁-铜镍电阻,EPROM,智能仪器,数字测温温度计 目 录 摘 要 2 一 设计目的及原理 4 1.1设计题目和目的 4 1.1.1设计题目 4 1.2设计基本要求 4 1.3设计原理 5 二.硬件设计 5 1.1系统原理框图 5 1.1.1 STC89C51简介 6 1.2基本模块简介 9 1.2.1 铁-铜镍温度测量接口技术 9 1.2.2铁-铜镍热电阻信号调理电路设计 9 1.2.3功率输出电路 10 1.2.4 4-20mA电流输出电路 10 1.2.5数码管显示及指示电路 10 1.2.6按键电路 12 1.2.7报警电路 12 1.2.8下载电路 13 1.2.9 通信电路 13 1.2.10输出驱动电路 14 1.2.11电源电路 14 1.2.12比例控制算法 14 1.1.13热非线性校正算法 15 1.3.1基于STC89C51单片机实现智能测温仪表软件设计 16 1.3.2基于STC89C51单片机的智能测温仪表程序框架 17 三. 系统流程图 19 四、 总原理图 20 4.2 PCB版图 22 五、电路仿真的设计与分析 23 5.1 Proteus仿真软件介绍: 23 5.2 仿真分析: 23 六、体会心得 25 附录1 C语言程序: 27 附录2 参考文献: 35 一 设计目的及原理 1.1设计题目和目的 1.1.1设计题目 实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配铁-铜镍热电阻,测温范围为0℃~200℃。采用比例控制、并用晶闸管脉宽调制驱动1000W电加热器(电源电压为AC220V)。 1.1.2设计目的 涉及智能仪表硬件与软件设计。智能仪器课程设计是智能仪器课程教学的重要环节,根据设计智能仪表产品的课程改革目的,特选择一些小型智能仪表产品作为课设题目,满足教学需求。单片机综合练习是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力。 1.2设计基本要求 (1)正确理解设计题目,经过查阅资料,给出正确设计方案,画出详细仪表原理框图(各个功能部分用方框表示,各块之间用实际信号线连接)。 在互连网上收集题目中所用到的器件资料,例如传感器(热偶分度表等)、信号调理电路、AD转换器、单片机、继电器、电源、显示器件等。 在互连网上收集相关单片机的显示、AD转换、显示、控制算法等程序。 在充分研究这些资料基础之上,给出设计方案(选择信号调理电路、单片机、显示、按键输入、继电器驱动、电源等,简要说明选择的理由) (2)用Protel99SE软件设计仪表详细原理图。 要求正确标记元件序号、元件数值、封装名。 (3)设计PCB图 在画PCB前应该购买元件,因为有了元件才知道封装尺寸,但也可以不购买元件,只到元件商店测量实际元件尺寸后,画封装图。 (4)熟悉单片机内部资源,学会ADC、SPI接口、定时器、中断、串口、I/O引脚等模块的编程。 (5)采用C语言开发所设计仪表的程序。 按照题目要求,确定仪表需要完成的任务(功能),然后分别编制各任务的程序。程序应该有说明,并有详细注释。 1.3设计原理 由热电阻传感器送来的电信号在测量桥路进行冷端自动补偿后,送入放大器,一面把信号进行放大,同时把非线性信号校正为线性信号,经线性放大信号一路A/D转换电路把模拟量转换成数字信号进行数字显示,另一路传输到调节网络,进行规定的比较运算,同时输出一个需要的控制信号和进行工作状态指示。 二.硬件设计 1.1系统原理框图 Atmega16l单片机 按 键 报 警 指示和显示 热电阻输入 下 载 通 信 本设计智能温度数显表由温度监测、信号处理、输出控制三部分组成。其系统框图如图1所示,它通过Pt100热电阻传感器获取绕组温度值,经信号调理电路处理后直接送入控制器的A/D转换输入端。微控制器根据信号数据及设定的各种控制参数,按照嵌入的软件控制规律执行计算与处理,自动显示智能仪表数显表可测的温度范围、并根据当前状态输出正常、设定上下线报警等。 1.1.1 STC89C51简介 图2 STC89C51单片机引脚 STC89C52系列单片机是从引脚到内核都完全兼容标准8051的单片机,有PDIP-40、PLCC-44、PQFP-44三种封装形式。 Intel公司MCS-51单片机的基本结构如图1-4所示。该单片机具有如下资源: (1)一个8位算术逻辑单元(CPU)。 (2)4组,共32个I/O口,每口8个引脚,可单独寻址,其中P0、P2口具有地址/数据总线功能。 (3)两个16位定时/计数器(简称为定时器)。 (4)全双工串行通信口。 (5)5个中断源,具有两个中断优先级。 (6)128B内置RAM。 (7)具有64KB可寻址数据和代码区。 (8)各个模块采用三总线(地址、数据和控制)连接。 (9)开放总线接口,P0口分时作为8位数据总线与8位地址总线,P2口作为地址总线高8位。 每个MCS-51单片机处理周期包括12个时钟周期(又称为一个机器周期),每12个时钟(一个机器)周期用来完成一个操作,例如取指令等,指令执行时间为时钟频率除以12后取倒数,如果系统时钟是12MHz,则相当于执行每条指令所需要的时间1μs。 1.I/O端口 I/O端口0、1、2、3驱动器与锁存器。 2.存储器部分 RAM:51单片机具有128字节的片内RAM, FLASH:片内ROM,用于保存代码等,片内ROM采用FLASH结构的存储器构成,具有ISP功能,容量随型号不同而不同,对于AT89S51单片机,FLASH容量为4KB。 SP:栈指针 3.算术与逻辑运算部分 寄存器B:用于乘除等操作的寄存器,常保存运算的第2操作数。 ACC:累加器, TMP1、TMP2:暂存器,用于暂时保存数据。 ALU:8位算术逻辑单元ALU, PSW:程序状态字, 4.指令处理部分 程序地址寄存器:用于保存程序地址。 缓冲器:缓冲总线数据。 PC+1:程序计数器加1处理模块。 PC:保存下一条指令地址的16位地址寄存器,可寻址范围为64K。 DPTR:双数据指针,DPTR为两个8位缓存器(DPH和DPL)组成的16位缓存器,。 5.时序控制与指令寄存部分 定时与控制单元: 指令寄存器:保存指令并指令译码后,在定时与控制单元的配合下,使CPU执行各种操作。 WDT:看门狗。用于程序不运行时,自动复位单片机。 OSC:时钟振荡器,与外接石英晶体一起组成时钟振荡器。 6.ISP部分 ISP端口:通过该端口与PC通信,实现在系统编程(ISP)。 编程逻辑:控制ISP操作。 7.外围模块部分 该单片机的外围模块包括两个定时器,串行接口、4个I/O口与外中断模块。 1.2基本模块简介 1.2.1 铁-铜镍温度测量接口技术 (1)铁-铜镍金属热电阻简介 铁-铜镍热电偶测温线(J型热电偶)又称铁-康铜热电偶,也是一种价格低廉的廉金属的热电偶。它的正极(JP)的名义化学成分为纯铁,负极(JN)为铜镍合金,常被含糊地称之为康铜,其名义化学成分为:55%的铜和45%的镍以及少量却十分重要的锰,钴,铁等元素,尽管它叫康铜,但不同于镍铬-康铜和铜-康铜的康铜,故不能用EN和TN来替换。铁-康铜热电偶的覆盖测量温区为-200~1200℃,但通常使用的温度范围为0~750℃ J型热电偶具有线性度好,热电动势较大,灵敏度较高,稳定性和均匀性较好,价格便宜等优点,广为用户所采用。 J型热电偶测温线可用于真空,氧化,还原和惰性气氛中,但正极铁在高温下氧化较快,故使用温度受到限制,也不能直接无保护地在高温下用于硫化气氛中。 1.2.2铁-铜镍热电阻信号调理电路设计 基于铁-铜镍传感器测温的智能测温仪表 试采用STC89C51单片机实现智能测温仪表。要求8位数码管显示(上排4位显示测量值,下排4位显示设定值),4输入按钮(功能选择、数码管选择、数值增加、数值减少),可设定上下限报警(蜂鸣器报警)值。传感器为铁铜镍热电阻,测温范围为0℃~200℃。采用比例 控制、并用晶闸管过零驱动1000W电加热器(电源电压为220VAC)。还可以输出与温度成正比的4-20mA电流远传到其他仪表。 由题目可知,该测温仪表需要如下电路模块: (1)单片机电路(包括单片机最小系统、ADC、数码显示、按键、LED灯、电源等)。 (2)铁铜镍热电阻信号调理电路 (3)4~20mA输出电路与加热功率驱动电路。 1.2.3功率输出电路 晶闸管过零驱动电路 1.2.4 4-20mA电流输出电路 1.2.5数码管显示及指示电路 A:显示电路 SM1显示的是热电阻测的电加热器的实际温度值,SM2显示的是人工设计的电加热器的期望温度值。数码管是有HC595芯片来驱动的,HC595接在SPI通信的3个接口上。 B:指示电路 指示电路是指示按键的输入状态的。D1、D2、D3、D4与S1、S2、S3、S4一一对应,当某个按键按下时,单片机相应的引脚将置低电平,使该按键相对应的二极管发光。 1.2.6按键电路 4个按键与单片机的接线图及个按键的作用如上图所示;当单片机的引脚输入为低电平时,表示该引脚所对应的按键按下,单片机实现相应的功能。 1.2.7报警电路 当温度超过报警限时,单片机相应管脚输出一定频率的电平。蜂鸣器发出响声。 1.2.8下载电路 下载程序代码用的是SPI接口,用ISP电缆对单片机进行编程。 1.2.9 通信电路 该模块用到跳线,不通信时D0、D1口作为常规I/O口使用;通信时其作为通信口使用,实现单片机与单片机或是其它上位机的通信。 1.2.10输出驱动电路 采用光控过零驱动晶闸管,进而控制电加热器的通断电。 1.2.11电源电路 1.2.12比例控制算法 比例控制(P)是一种控制算法,其输出量out与温度偏差e=SV-PV成比例关系,写成数学公式是: out= kp * e+out0 式中,e是测量温度值PV与设定温度值SV之间的偏差,Kp是比例系数。out是输出量。out0是对应e=0时的控制量,可由人工确定,通常取输出控制量 不同比例系数Kp下对象温度变化示意图 若是假设比例带为pb,控制量为out,设最大偏差值就是温度设置值。则有如下的伪代码如下: e=PV-SV; kp=1/pb; out=kp*e+out0; if(out>outm) out=outm; if(out<0) out=0; 1.1.13热非线性校正算法 温度范围0~200℃的铁铜镍热电阻的表格如下: unsigned char code R_TABLE[21]={100, 119.40, 138.51, 157.33, 175.86,194.10,212.05}; 若是对于热电阻,有如下方法计算测得量RX。 假设Ri代表对应温度Ti的热电阻,测量得到的热电阻值为Rx,查表可知它位于(Ri,Ti)和[R(i+1),T(i+1)]两个标定点之间,则热电阻Rx所对应的温度值Tx可由下式求得,其算法示意如图10-2所示。 两相邻电阻之间差50℃,则(Ri+1-Ri)/50为直线斜率。 可以得到Ri到RX的温度差为: T(Rx-Ri)=(50/(Ri+1-Ri))*(Rx-Ri) 线性标度变换的前提条件是传感器的输出信号与被测参数之间呈线性关系 Ax 实际测量值(工程量) A0 一次测量仪表的下限(测量范围最小值)。 Am 一次测量仪表的上限(测量范围最大值)。 N0 仪表下限所对应的数字量。 Nm仪表上限所对应的数字量。 Nx 实际测量值所对应的数字量。 1.3.1基于STC89C51单片机实现智能测温仪表软件设计 (1)初始化任务 I/O引脚初始化(按钮、LED灯、ADC、DAC、E2PROM和SPI用引脚初始化)。 定时器0初始化。 中断初始化。 (2)按钮任务:检测按钮并执行按钮动作,需要软件消除抖动。 功能选择按钮:循环选择功能,例如,正常运行、设置报警上限值、设置报警下限值、设置温度给定值、设置比例控制回差值等功能。在数值设置状态,每按一次按钮,上排4位数码管显示功能码,下排显示设置值;在正常运行状态,上排显示测量值,下排显示设定温度值。 数码管选择按钮:选择需要设置数值的数码管。 数值增加按钮:用于设置数值的增加,每按下一次,数值加1。 数值减少按钮:用于设置数值的减少,每按下一次,数值减1。 按钮设置值应该随时保存到24C02中。 (3)扫描显示任务:数码管位选择与段码输出,就是将显示缓冲区的内容发送到数码管显示,将要显示的数据,组合成数组,再转换成十进制数字,发送到74HC595。不需要每个主程序循环都发送显示任务,因此可在定时器0中断中设置显示任务执行标记,当标记为1时,执行显示任务。由于显示内容随按钮选择的功能不同而不同,因此功能选择按钮任务中应该给出显示控制标记,控制显示内容。 (4)TLC1549数据获取任务,需要将读TLC1549的程序写成函数。在定时器0中设置ADC任务执行标记,当该标记为1时,执行ADC数据获取任务。要求连续读取8个数据,然后取平均值。并将完成滤波后的数据存入显示数组。 (5)24C02读写任务,需要编制读写24C02的函数。单片机用软件控制引脚实现I2C接口,在上电时,应该读出所有保存在24C02中的数据到数组中;在设置各种数据时,应该随时将设置的数据字节写入24C02。 (6)TLC5615任务,该任务是把温度转换成的代表电流的数字写入TLC5615,实现电流输出。该任务在定时器0给出的标记控制下执行。 (7)定时器0中断任务,该任务是产生间隔的定时信号,ADC转换、扫描显示、DAC输出以及采样周期、数据计算等都需要定时器0给出标记,在标记为1时,才能执行任务。 (8)数据处理任务 ①将TLC1549输出的数字通过标度变换转成温度值。因为PT100的电阻值与温度之间呈非线性,因此需要查表法矫正。 ②具有回差比例控制算法实现。根据温度值控制晶闸管使接触器得电或失电,使加热器加热或是不加热。所谓回差比例控制就是当温度达到并超过设定值时,停止加热;当温度低于设定值时,开始加热。而有回差比例控制就是有两个设定值,当所测温度高于上设定值时停止加热;当低于下设定值时,开始加热,上下设定值之间的温度差称为回差。回差比例控制可以防止接触器频繁动作。 ③实现报警算法。上限报警与下限报警分别给出不同的报警声。 ④计算TLC5615需要的数字,就是将温度值转换成电流值。 1.3.2基于STC89C51单片机的智能测温仪表程序框架 基于STC89C51单片机的智能测温仪表程序框架如下。 #include <AT89X51.H> //51单片机头文件 定义数码管译码数组; 定义数码管位选数组; 定义保存在24C02中数据的数组; 定义时间标记变量; //display_time,sample_time,control_time,DAC_time等 定义其他全局数组与变量; 声明函数原型;(TLC1549,TLC5615、24C02等函数) void main(void) { 定时器初始化; 引脚初始化; //按钮、LED灯、ADC、DAC、E2PROM和软件SPI用引脚初始化 其他初始化语句; 从24C02读数组语句;//将保存的数据读到数组,每次单片机上电后,就使用该数组中的数据 while(1) { 按键处理语句; { 功能选择,控制周期、设定值、回差值、报警值等输入; 将数组写入24C02语句; //将按键输入的数据保存到数组 } //数码管显示语句: if(display_time= =1) //如果显示标记display_time=1,则执行显示任务,完成一位数码管显示 { 数码管扫描显示语句;//采用两片74HC595扫描数码管 display_time= =0; } //ADC转换与数字滤波语句: if(sample_time= =1) //如果数据采样标记sample_time=1,执行ADC转换任务 { TLC1549转换、数字滤波与非线性校正程序; sample_time= =0; } //ADC输出数值判断、报警、比例算法运算与控制量输出: if (control_time= =1) //如果控制周期标记control_time=1,则实现控制算法 { 温度值判断与报警语句; 比例算法运算语句; 控制量输出语句;(引脚赋值语句) control_time=0; } //DAC转换语句: if (DAC_time= =1) //如果DAC转换标记DAC_time=1,将数据写入DAC { TLC5615数据输出语句; DAC_time=0; } } //定时器0中断服务程序,用于产生显示、ADC转换与控制周期标记 void Timer0() interrupt 1 { static unsigned char n,m,k,h; n++; m++,k++;h++; if(n= = display_time0) //display_time0为显示周期 {n=0; display_time=1; } if(m= = sample_time0) //sample_time0为ADC转换周期 {m=0; sample_time=1; } if(k= = control_time0) //control_time0为控制周期 {k=0; control_time=1; } if(h= = DAC_time0) //DAC_time0为DAC转换周期 {h=0; DAC_time=1; } } 三. 系统流程图 开始 系统初始化 DS1302时钟信号采集 PT100温度数据采集 处理读到的数据 结束 开始 初始化函数 A/D转换器进行A/D转换 将转换后的电压转换为温度 返回 开始 初始化函数 A/D转换器进行A/D转换 将转换后的电压转换为温度 返回 开始 系统初始化 调用时间、温度子程序 调用显示子程序 调用扫描按键程序 图43 A/D转换器流程图 图45 显示流程图 四、 总原理图 4.1 PROTEL99SE电气原理图: 4.2 PCB版图 电源连接口,连接时注意极性,接错将损坏单片机 作为电源开关的跳线 短路7805的跳线DX2 10k电位器 模拟电源输出JMN1 LED灯与模拟输入的跳线DA1、DA2 电源指示灯 按钮 共阳数码管 外晶体跳线、DS1302 外参考电压跳线 外接晶体 编程接口 STC89C51单片机 五、电路仿真的设计与分析 5.1 Proteus仿真软件介绍: Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:6800系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 5.2 仿真分析: Proteus软件的仿真是依靠单片机程序来实现的,因此先将程序通过第三方Keil C51软件编译,连接,执行后产生一个HEX文件,再与Proteus仿真软件进行关联就可以实现仿真。本仿真电路的前置电路的两级放大电路中,通过调节一级放大器和二级放大电路的偏置电路中滑动变阻器范围来调节测温范围,使输入到A/D转换器的模拟电压在0-5V范围内,这样才能进行A/D转换。 在仿真过程中由于软硬件影响,还有人为计算误差因素,使得测量温度结果与理想测量结果存在一定的误差,因此可以通过改变硬件参数和软件程序设计来减少误差。另外,在仿真过程中,按键会可能产生抖动现象,可以通过硬件来消除抖动。 启动Proteus软件,按本次设计的原理图画出电路仿真图,根据元件属性设置相应元件参数。由于PT100温度传感器在仿真过程中波动较大,使得显示的温度跳跃变化,不易于温度显示与测量。因此在本次仿真中用一个电阻来代替PT100热电阻,通过改变电阻阻值来反映PT100温度测量。另外,由于在Proteus软件中不能仿真LM336恒压源,所以在本次仿真过程中采用软件自带的-2.5V的恒压原代替。对于数码管显示电路,在仿真过程中没有用三级管来驱动是为了画图的方便,这对仿真结果没多大影响,但在实际电路连接中必须在数码管加上三极管驱动。 系统电路仿真图如图49所示。(仅设计了信号采集与调理,外加显示电路) 六、体会心得 通过这次对数字温度计的设计与制作,让我了解了设计单片机电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。本设计实现了温度的测量,在达到设计要求的同时也具备一定的扩展性,通过简单的软件修改,即可实现温度上下限控制和越限报警功能。本次设计使我更加深刻的认知到智能仪表控制的在现代仪表控制中的实用性,重要性。在以后的学习中我将加大智能仪表设计的学习。在课设中认知到了整个系统结构紧凑、简单可靠、操作灵活、功能强、性能价格比高,较好地满足现代生产和科研的需要。 附录1 C语言程序: #include <AT89X51.h> //STC89C51单片机头文件 #include <macros.h> Flash unsigned char disp[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92 0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//定义数码管译码数组 Flash unsigned char weizhi[]={0xfe,0xfd,0xfd,0xfd,0xef,0xdf,0xbf,0x7f};//定义数码管位选数组; #define OFF 0 #define ON 1 DOUT=P2_5;//引脚定义 CLK=P2_7; LATCH=P2_6; Unsigned char xs[8]; Void LED(unsigned char X) { unsigned char i; for(i=8;i>=1;i--) {if(x&0x80)P2_5=1; else P2_5=0; P2_7=0; P2_7=1; }} SPI初始化; Void SPI_MasterInit(void) {DDRB|=(1〈〈5)|(1〈〈7); SPCR=(1〈〈6)|(1〈〈4) |(1〈〈5)|(1〈〈1)| (1〈〈0); } Void SPI_595_Out(unsigned char i) {SPDR=i; While(!SPDR&(1<<7))){;} } Void main(void) {unsigned char saomiao=0; Unsigned char w[10]; DDRA=0x00; PORTA=0X00; DDRB=0XB0; PORTB=0Xff; DDRC=0XFC; PORTC=0XFF; PORTD=0X00; DDRD=0XFF; SPI_Masterlnit(); While(1) {{data[0]=1234;data[1]=5678; W[0]=data[0]%50; W[1]=data[0]/50%50; W[2]=data[0]/100%50; W[3]=data[0]/1000%50; W[4]=data[0]%50; W[5]=data[0]/50%50; W[6]=data[0]/100%50; W[7]=data[0]/1000%50; } void write_byte(uchar dat) //1302写入一字节 { uchar a; ACC=dat; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; //delayus(10); SCLK=1; ACC=ACC>>1; } } uchar read_byte() //向1302读出一字节 { uchar a; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return(ACC); } void write_1302(uchar add,uchar dat) //向1302写入数据 { RST=0; SCLK=0; //delayus(5); RST=1; write_byte(add); write_byte(dat); //delayus(5); SCLK=1; RST=0; } uchar read_1302(uchar add) //向1302读出数据 { uchar temp; RST=0; SCLK=0; //delayus(5); RST=1; write_byte(add); temp=read_byte(); //delayus(5); SCLK=1; RST=0; return (temp); } uchar BCD_Decimal(uchar bcd) { uchar Decimal; Decimal=bcd>>4; return(Decimal=Decimal*10+(bcd&=0x0F)); } PORTB&=~(1<<4); SPI_595_Out(weizhi[saomiao]); SPI_595_Out(disp[w[saomiao]]; PORTB=|(1<<4); saomiao++; if(saomiao>=8 saomiao=0; while(1) {uchar j=0; uint i; DDAR=0xFF; DDRB=0XFF; PORTD=0XFF; DDRD=0X00; While(1) {if((PIND|0XEE)==0XEF) For(i=0;i<1000;i++); If((PIND|0XEF)==0XEF) {j++; If(j>99)j=0; } While(PIND|0XEF)==0XEF); PORTB=SHUMA[j/50]; PORTC=SHUMA[j%50]; PORTA=~j; }} {while(1) PORTC=SHUMA[counter]; } //数码管与LED灯显示语句: if(display_time= =1) //如果显示标记display_time=1,则执行显示任务,完成一位数码管显示 { Xs[0]=1; Xs[1]=2; Xs[2]=3; Xs[3]=4; Xs[4]=5; Xs[5]=6; Xs[6]=7; Xs[7]=8; LED(weizhi[i]); LED(disp[Xs[i]]); P2_6=0; P2_6=1; i++;if(i==8)i=0; for(k=10;k>0;k--) for(j=0;j<10;j++); }//采用两片74HC595扫描数码管 display_time= =0; } //ADC转换与数字滤波语句: if(sample_time= =1) {sbit AD_CS=P2_4; sbit AD_CLK=P2_5; sbit AD_DAT=P2_6; unsigned int readadc(void) {unsigned char i; Unsigned int AD_Te,AD2,AD8; AD8=0; AD2=0; AD_CS=1; AD_CLK=0; AD_DAT=1; AD_CS=0; for(i=0;i<2;i++) {AD_CLK=0; _nop_(); AD2 =AD2<<1; if(AD_DAT) {AD+=0x01; } AD_CLK=1; _nop_(); }} for(i=0;i<8;i++) {AD_CLK=0; _nop_(); AD8=AD<<8; if(AD_DAT) {AD8+=0x01; } AD_CLK=1; _nop_(); } AD_CLK=0; AD_CS=1; return(AD_Te); } char lp() //滤波函数 {int sum = 0; char count; for (count=0;count<12; count++) {sum+=get_ad(); //获取ADC转换结果,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




试设计智能仪表智能仪课程设计论文.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2178836.html