单片机课程设计——基于MCS-51单片机的数据采集系统_第1页
单片机课程设计——基于MCS-51单片机的数据采集系统_第2页
单片机课程设计——基于MCS-51单片机的数据采集系统_第3页
单片机课程设计——基于MCS-51单片机的数据采集系统_第4页
单片机课程设计——基于MCS-51单片机的数据采集系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、微型计算机技术专业方向课程设计任务书题目名称:基于MCS-51单片机的数据采集系统课程设计任务书课程名称:微型计算机技术设计题目:基于MCS-51单片机的温度采集系统系统硬件要求:配置单片机的外部程序ROM空间,容量为外扩ROM,RAM各32 KB(其大小由设计者自己设计),系统时钟电路、复位电路等构成的最小系统。配置0809芯片作为数据采集通道(也可以选择其他芯片),对外部1路温度传感器输入信号采集。显示部分为LED动态显示设计和键盘设计。要求每1s采样一次,使用中断完成,其温度测量范围为-20-70度,精度要求1度。5、接口电路的设计:设计者扩展一个并行接口8155或8255,键盘设计由设

2、计者根据需要设计键盘的数量,显示采用LED显示,显示电路也根据显示的内容设计;6、有开机显示状态(如显示88);软件设计: 1)主程序设计(包括初始化芯片,定时器,中断以及SP指针等); 2)各功能子程序设计,温度采集计算子程序、键盘子程序显示子程序设计,定时,中断程序等;)选做要求:2路信号采集。可使用按键选择输入通道。具有自动通道轮换采样功能。其他要求:每位同学独立完成本设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。调试系统硬件电路、功能程序。编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中

3、典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于2000字成绩评语摘要 本文是以MCS-51单片机系统为基础的,通过热电阻PT100的阻值随温度的变化的特性,通过采集得到的模拟信号,并通过A/D转换器ADC0809对模拟信号进行模数转换,把转换得到的数字信号按照顺序分别送入单片机,通过单片机进行均值滤波,并通过查表得到温度值。LED数码管显示。本系统设计简单,性能稳定,能够通过单片机灵活编程进行各种功能的设定和修改。并且为以后温度控制系统的扩展提供了方便,提供了键盘可以进行温度设定和模式选择。并且提供了利用Visual Stdio 2010编写的温度调节

4、上位机进行温度监控和调试。为以后的系统扩展调试提供了方便。关键词:A/D转换器;热电阻;MCS-51,上位机 TOC o 1-3 h z u HYPERLINK l _Toc263671907 第一章 前言 PAGEREF _Toc263671907 h 1第二章 系统总体设计 12.1系统概述 12.2系统工作原理分析1 HYPERLINK l _Toc263671919 第三章 硬件部分2 HYPERLINK l _Toc263671914 3.1单片机最小系统及键盘模块 3 HYPERLINK l _Toc263671914 3.2 数据采集通道模块5 HYPERLINK l _Toc2

5、63671915 3.3串行口模块5 HYPERLINK l _Toc263671916 3.4并行I/O芯片及显示模块 6 HYPERLINK l _Toc263671917 3.5 温度传感器模块 PAGEREF _Toc263671917 h 63.6外部储存器模块 HYPERLINK l _Toc263671918 7 HYPERLINK l _Toc263671927 第四章 软件部分8 HYPERLINK l _Toc292606224 4.1 主程序的设计 PAGEREF _Toc292606224 h 8 HYPERLINK l _Toc292606225 4.2 定时器中断程

6、序的设计9 HYPERLINK l _Toc292606226 4.3 数据采样程序的设计 PAGEREF _Toc292606226 h 9 HYPERLINK l _Toc292606227 4.4 A/D转换程序的设计 PAGEREF _Toc292606227 h 11 HYPERLINK l _Toc292606227 4.5 LED显示程序设计. PAGEREF _Toc292606227 h 12 HYPERLINK l _Toc263671927 第五章 辅助调试工具16 HYPERLINK l _Toc263671931 总结17 HYPERLINK l _Toc263671

7、933 参考文献17 HYPERLINK l _Toc263671934 附录1硬件原理图及PCB图17 HYPERLINK l _Toc263671934 附录2分程序代码 HYPERLINK l _Toc263671934 18第一章 前言 温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、烘烤、煅烧、蒸馏、结晶、空气流动以及温度漂移等物理和化学过程。温度控制失误就可能引起生产安全、产品质量、产品产量以及生活安全等一系列问题。因此对温度的检测的意义就越来越大。温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控

8、,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用自动温度控制系统可以对生产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。并且温度控制是一个大惯性控制,控制难度比较大。温度采集任务在温度控制中是比较重要的一个环节,因此本文来研究温度采集系统,意义重大。 第二章 系统总体设计2.1系统概述根据课程设计要求的性能指标,本系统要满足一定精度的温度采集的基本功能,同时系统还具有动态显示当前的测量温度值的功能和键盘操作的功能。 2.2系统原理分析 本文以MCS-51单片机系统为基础,通过温度传感器PT100随温度的变化而得到的模拟信号进行采集,

9、连接ADC0809实现单路路模拟信号的采集,并通过A/D转换器对模拟信号进行数模转换,把转换得到的数字信号送入单片机,通过LED显示。本系统设计简单,性能稳定,能够通过单片机灵活编程进行各种功能的设定和修改。根据本课题的设计目标以及硬件的特点,本系统的总体设计框图如图所示。 图一 系统框图第三章 硬件部分3.1 单片机最小系统及键盘模块 单片机选用AT89C51,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性

10、高且价廉的方案。 本系统包括晶振电路,复位电路,地址锁存器电路,3-8译码器,键盘电路等。图如下,其中译码器输为P2.7,P2.6,P2.5,译码产生8个片选信号,分别来选通8155,外部RAM,ADC0809等芯片工作。保证了地址的扩展和单片机的基本运行。 图二 单片机最小系统原理图3.2数据采集通道模块 ADC0809是八通道的八位逐次逼近式A/D转换器。由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关。由C、B、A的编码来决定所选的模拟通道。转换时间为100us。转换误差为1/2LSB。它的引脚的排列及其功能,其引脚图见下图三 ADC0809的引脚图IN7IN0 :八个通道的模拟

11、输入量。ADDA、ADDB、ADDC:模拟通道地址线。当CBA=000时,IN0输入,当CBA=111时,IN7输入。ALE:地址锁存信号。START:转换启动信号,高电平有效。D7D0:数据输出线。三态输出,D7是最高位,D0是最低位。OE:输出允许信号,高电平有效。CLK:时钟信号,最高频率为 640KHZ。EOC:转换结束状态信号。上升沿后高电平有效。VCC:+5V电源。VREF:参考电压。利用它可直接输入8个单端的模拟信号分时进行A/D转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。本次设计配置0809芯片作为数据采集通道。连接如图图四 数据采集通道原理图3.3串行口的选择该串

12、行口选用了标准RS-232C接口,它是电平与TTL电平转换驱动电路。常用的芯片是MAX232,MAX232的优点是:(1)一片芯片可以完成发送转换和接收转换的双重功能。(2)单一电源+5V供电(3)它的电路设计与连接比较简单而且功能齐全。电路图如下图五 串行口原理图3.4 并行I/O芯片及显示模块8155芯片内包含有256字节RAM,2个8位、1个6位的可编程并行I/O口,和1个14位定时器/计数器。由于8155既具有RAM又具有I/O口,因而是单片机系统中最常用的外围接口芯片之一。LED数码显示管是一种由LED发光二极管组合显示字符的显示器件。它使用了8个LED显示管,其中7个用于显示字符,

13、1个用来显示小数点,故通常称之为八段发光二极管数码显示器。对LED数码显示器的控制可以采用按时间向它提供具有一定驱动能力的位选和段选信号。原理图如下图六 并行I/O芯片及显示模块3.5 温度传感器模块题目要求,采集温度范围为-20-70。经过比较我们选择PT100作为温度传感器,pt100是铂热电阻,它的阻值跟温度的变化成正比,铂电阻的特点是精度高,稳定性好,性能可靠。铂在氧化性气氛中,甚至在高温下的物理、化学性质都非常稳定。因此铂被公认为是目前制造热电阻的最好材料。铂电阻主要作为标准电阻温度计使用,也常被用在工业测量中。PT100的阻值与温度变化关系为:当PT100温度为0时它的阻值为100

14、欧姆,在100时它的阻值约为138.5欧姆。它的工业原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。 图七 PT100桥式电路图根据电桥的运算关系得出桥式电路输出压差为 查PT100分度表得出,-20-70对应的电阻为92.16-127.08,为了提高采集的精度,我们把-20-70对应的电压变化利用惠斯通电桥和运放,变换到MCS-51可以最大程度识别和测量的范围,所以当-20的时候,对应输出电压为0V。因此,,把R3=510,R1=200,RPT=92.16,带入上式得出R9=1106.8;所以应该调节滑动变阻器R9=1106.8接入电路。当测量温

15、度为70时,对应的RPT=127.08,R3=510,R1=200,R9=1106.8,带入式得到U=0.366V。为了输入单片机MCS-51的电压为0-5V,应该设计运算放大器的放大倍数为,为了留有一定的余量和现有电阻大小,选择运算放大器的倍数为12倍。采集电压范围为0V-4.392V。最终我们,我们为了防止AD输入阻抗不够大,而对采集电路的电压造成影响,从而对电压采集造成误差。所以采用两级运放。第一级为查分比例运算电路,放大倍数为4被。后面一级为比例运算放大电路,放大倍数为3倍。最终放大倍数为12倍。运算放大电路的电路电阻匹配为我们取,R4=R5=20K,R6=R7=80K;我们取,R8=

16、12K,R11=24K;且为匹配电阻,R12=8K;原理图如下图八 主电路原理图3.6 外部储存器模块 本系统扩展32K ROM, RAM,分别用了四片2764和6264,其P2.7,P2.6,P2.5通过3-8译码器,编译成Y0-Y7,作为片选信号。其余地址线作为连接8K的13根地址线。 Eg. U8:0 x0000-0 x1fff U9:0 x2000-0 x3fff U10:0 x4000-0 x5fff U11:0 x6000-0 x7fff原理图如下 图九 外部储存器的连接原理图 HYPERLINK l _Toc263671927 第四章 软件部分 HYPERLINK l _Toc2

17、92606224 4.1主程序的设计设计思路: 主程序主要执行LCD显示和键盘的扫描,AD的采集在外部中断中执行,采样数据处理以及LCD显示数据的更新均在定时器中断中完成。主程序开始时首先定义相关的指针,并对定时器T0,外部中断INT0,ADC0809进行初始化设置。ADC0809转换完成时,单片机将收到低电平,所以将INT0设为下降沿触发。题目要求每隔1s更新一次显示温度,这里选用定时方式1,方式1的最大定时时间为:=1us=65.536ms这里每次溢出时设为50ms,每溢出20次进行一次数据更新。重装值的计算公式为:TC=-50ms/1us=15536=3CB0H51单片机的中断优先级默认

18、为,INT0高于T0,当在定时器中断执行数据处理程序时应避免外部中断的打断,因此设为TO中断为高优先级。 循环,等待中断。流程图: 图十 主程序流程图 HYPERLINK l _Toc292606225 4.2 定时器中断程序的设计设计思路: 定时中断函数主要进行采样数据的处理以及温度的转换。为了减小误差,取最近十次的采样值相加求取平均值,然后转换为相应的温度。求平均值时,16位的除法操作比较困难,对于高八位可以看做是n个255,用高八位乘以25.5,即除以10之后的值,在与低八位除以10之后的数据相加,就是最后的平均值。对于ADC0809来说,它的采集电压范围为0-5V,电路设计时留有余量,

19、参考值为4.09V,因此采集的最大值为208。进行温度转换时,-20对应0,70对应208,按照对应关系可以用查表进行。查出相应温度后转为十位、个位BCD码,为后面的LCD显示做准备。 图十一 定时器流程图求平均值时的代码: DATA_Explose: PUSH ACC PUSH DPL PUSH DPH /*把寄存器切换到1区*/ CLR RS1 SETB RS0 CLR A MOV R4,#00H MOV R5,#00H MOV R3,#10 CLR C MOV R1,#32H LOOP_ADD: ADDC A,R1 JC ADD_High_8 SJMP ADD_Continue ADD_

20、High_8: INC R4 CLR C ADD_Continue: INC R1 DJNZ R3,LOOP_ADD MOV R5,A AD_AVE: MOV A,R4 MOV B,#25 MUL AB MOV R2,A MOV A,R4 MOV B,#2 DIV AB ADD A,R2 MOV R4,A MOV A,R5 MOV B,#10 DIV AB ADD A,R4 MOV 2AH,A/把最终的数据送入2AH中温度转换代码: AD_DATA_USing: MOV DPTR,#TEM_DATAB; /温度转换表格地址 MOVC A,A+DPTR; /查表得相应温度 MOV B,#0AH;

21、 /被除数10给B DIV AB MOV 2FH,B MOV 30H,A CJNE A,#57,TREAT1; /将采样数值与57比较,若不相等则TREAT1 MOV 31H,#0AH; /若相等,幅值FUHAOWEI,57,即正数 LJMP DOWN_ADTREAT1: JC TREAT2; /若Cy=1,则TREAT2 MOV 31H,#0AH; LJMP DOWN_AD TREAT2: MOV 31H,#0BH; /因Cy为0,为负温度 LJMP DOWN_AD DOWN_AD: POP DPH POP DPL POP ACC RET HYPERLINK l _Toc292606226

22、4.3 A/D转换和数据采样程序的设计设计思路:本设计程序中,由ADC0809转换完成信号触发外部中断进行数据的采集,并预留十个地址暂存采样数据,末位地址存入数据之后重新从首地址开始存入,进行数据处理时便可以取最近十次的值进行计算,提高精度。流程图:图十二 A/D转换和数据采样程序相关代码:ADC_Finish: PUSH DPH PUSH DPL PUSH ACC CJNE R7,#00H,DUAL_MODE LJMP CH1_1DUAL_MODE: SETB RS1 CLR RS0 CJNE R6,#00H,CH1 MOV R6,#01H MOV DPTR,#ADR_ADC0809_CH0

23、_MIN CH1: MOV R6,00H LJMP CHANLE_1_CONVENTCH1_1: MOV DPTR,#ADR_ADC0809_CH1_MINSING_CONVENT: /MOV DPTR,#ADR_ADC0809_CH0_MIN MOVX A,DPTR; /取值 MOV R0,A ; /将采样值送到存储地址 MOVX DPTR,A; /重新启动ADC0809 INC R0; /存储地址加一 DJNZ R1,INTLOOP; /判断是否存满十个数据,否,返回主函数 MOV R0,#32H /填满十个采样值后,更新采样首地址 MOV R1,#10 LJMP INTLOOPCHANL

24、E_1_CONVENT: /MOV DPTR,#ADR_ADC0809_CH0_MIN MOVX A,DPTR; /取值 MOV R0,A ; /将采样值送到存储地址 MOVX DPTR,A; /重新启动ADC0809 INC R0; /存储地址加一 DJNZ R1,INTLOOP; /判断是否存满十个数据,否,返回主函数 MOV R0,#42H /填满十个采样值后,更新采样首地址 MOV R2,#10 LJMP INTLOOPINTLOOP: POP ACC POP DPL POP DPH RETI HYPERLINK l _Toc292606227 4.4键盘扫描程序的设计设计思路:本次课

25、设中用到的键盘为单排八个按键,程序设计比较简单,只要给一个高电平,再检测相应按键接口即可,在此无需赘述。 HYPERLINK l _Toc292606227 4.5 LED显示程序设计实际思路:本次课设采用三个数码管,共阴极设计,控制信号分为位选信号和段选信号。先由8155的C口输出片选信号选通将要显示的数码管,然后由A口输出段选信号,使数码管显示相应数字。流程图: 图十三 显示程序流程图/*LED数码管显示子程序*/ LED_DIP: PUSH ACCMOV R3,#10HCJNE R7,#0,NEXT1_ModeLJMP DDOOPNEXT1_Mode: CJNE R7,#1,NEXT2_

26、ModeLJMP DDOOP1NEXT2_Mode: SETB RS1CLR RS0MOV A,R5CJNE A,#00H,DD1MOV R5,#00HCLR RS0CLR RS1 LJMP DDOOPDD1: MOV R5,#01HCLR RS0CLR RS1LJMP DDOOP1DDOOP:MOV DPTR,#ADR_PC_MIN;/指向C口 MOV A,#11111110BMOVX DPTR,A; /选中个位数码管MOV DPTR,#DTATAB; /数据表格起始地址送DPTRMOV A,02FH; MOVC A,A+DPTR;/查得个位数码管输出信号MOV DPTR,#ADR_PA_M

27、IN;/指向A口MOVX DPTR,A;/数码管输出个位数ACALL DELAY;/延时5msMOV DPTR,#ADR_PC_MINMOV A,#11111101BMOVX DPTR,A /选中十位数码管MOV DPTR,#DTATAB; /数据表格起始地址送DPTRMOV A,30HMOVC A,A+DPTR; /查得十位数码管输出信号MOV DPTR,#ADR_PA_MIN;/指向A口MOVX DPTR,A; /数码管输出十位数ACALL DELAY;/延时5msMOV DPTR,#ADR_PC_MINMOV A,#11111011BMOVX DPTR,A; /选中符号位数码管 MOV

28、DPTR,#DTATAB; /数据表格起始地址送DPTRMOV A,31HMOVC A,A+DPTR;/查得符号位数码管输出信号MOV DPTR,#ADR_PA_MIN; /指向A口MOVX DPTR,A;/数码管输出符号位ACALL DELAY; /延时5ms DJNZ R3,DDOOP; /循环显示十次RET DDOOP1: MOV DPTR,#ADR_PC_MIN; /指向C口 MOV A,#11111110B MOVX DPTR,A; /选中个位数码管 MOV DPTR,#DTATAB; /数据表格起始地址送DPTR MOV A,032H; MOVC A,A+DPTR;/查得个位数码管

29、输出信号 MOV DPTR,#ADR_PA_MIN;/指向A口 MOVX DPTR,A;/数码管输出个位数 ACALL DELAY;/延时5ms MOV DPTR,#ADR_PC_MIN MOV A,#11111101B MOVX DPTR,A /选中十位数码管 MOV DPTR,#DTATAB; /数据表格起始地址送DPTR MOV A,33H MOVC A,A+DPTR;/查得十位数码管输出信号 MOV DPTR,#ADR_PA_MIN;/指向A口 MOVX DPTR,A;/数码管输出十位数 ACALL DELAY; /延时5ms MOV DPTR,#ADR_PC_MIN MOV A,#1

30、1111011B MOVX DPTR,A; /选中符号位数码管 MOV DPTR,#DTATAB; /数据表格起始地址送DPTR MOV A,34H MOVC A,A+DPTR; /查得符号位数码管输出信号 MOV DPTR,#ADR_PA_MIN; /指向A口 MOVX DPTR,A;/数码管输出符号位 ACALL DELAY;/延时5ms DJNZ R3,DDOOP; /循环显示十次 POP ACC RETDTATAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH DB 07H, 7FH, 6FH, 00H, 40H HYPERLINK l _Toc26367

31、1927 第五章 辅助调试工具使用Visual Stdio 2010编写的温度调节上位机进行温度监控和调试系统,利用串口实现PC机和单片机的通讯,该调试系统具有温度设定,PID参数调整,温度保存文件,温度变化曲线显示等功能,为以后系统的扩展提供了方便。系统效果图如下: 图十四 温度调节工具效果图 总结:通过本次课程设计使我们学到了怎样去查找翻阅有关理论资料和技术手册,把书本上知识总结起来去应用于实践,初步学到了研究、开发,设计单片微型计算机对工业过程控制的一套完整的方法,受益很大。作为自动化111班1组课程设计的组长,我平时定期给组员开会,督促组员设计进度,在整个设计过程中我不断鼓励队员,让他

32、们在整个设计过程中真正的学到东西,首先冲整体上把握本次设计的目的,从而达到巩固课本知识的目的。然后再根据每个人的特点合理分配每个人的任务,最终每个人都很好的完成了分配的任务。达到了很好的合作效果。我在本次设计过程中,主要负责的任务如下:一,作为组长,掌握课程设计的总进度。二、督促队员,给他们设计的积极性和战斗力。三、完成了系统的硬件设计并给队员们真正的讲明白。四、进行软件的最终汇总和加入了附加部分的功能,思考设计出,解决16为数据求平均值的算法。五、使用C#语言编写了上位机系统,为以后扩展提供方便。六、制作PPT,为最终答辩提供方便。在这个过程中我不仅仅学到了课本中的知识,把课本知识掌握的更加

33、熟练,并且将之用于实际,并在此过程中体会到了团队合作的重要性,每个人身上都有优点。作为组长,我应该学会善于发现别人的长处,并给队员合理安排合适的任务。这样会达到极佳的效果。最后感谢老师给我们这次锻炼的机会。这种课设的模式真的不多,不仅让学生参与的积极性有很大提高,能够保质保量完成任务,并且还可以提高同学们的团队合作能力。在此,感谢老师对我的经心指导和队友们的大力支持。参考文献:单片机原理及其接口技术(第三版) 胡汉才 主编 数字电子技术基础(第五版) 清华大学电子学教研室组 编 阎石 主编模拟电子技术基础(第四版) 清华大学电子学教研室组 编 华成英 童诗白主编 自动检测技术及仪表控制系统(第

34、三版) 张毅 张宝芬 曹丽 彭黎辉 编附录:附录一 原理图及PCB图 图十五 总原理图图十六 PCB效果图附录二 部分程序代码/*/ /*单片机课程设计*/ /*自动化111班一组全体成员*/ /*2013.12.20*/ /*Description*/ /*Mecro define*/ /*ROM*/ ADR_ROM1_MIN DATA 0000H ADR_ROM1_MAX DATA 1FFFH ADR_ROM2_MIN DATA 2000H ADR_ROM2_MAX DATA 3FFFH ADR_ROM3_MIN DATA 4000H ADR_ROM3_MAX DATA 5FFFH ADR

35、_ROM4_MIN DATA 6000H ADR_ROM4_MAX DATA 7FFFH /*RAM*/ ADR_RAM1_MIN DATA 0000H ADR_RAM1_MAX DATA 1FFFH ADR_RAM2_MIN DATA 2000H ADR_RAM2_MAX DATA 3FFFH ADR_RAM3_MIN DATA 4000H ADR_RAM3_MAX DATA 5FFFH ADR_RAM4_MIN DATA 6000H ADR_RAM4_MAX DATA 7FFFH /*ADC0809*/ ADR_ADC0809_CH0_MIN DATA 0a000H ADR_ADC0809

36、_CH0_MAX DATA 0bff8H ADR_ADC0809_CH1_MIN DATA 0a001H ADR_ADC0809_CH1_MAX DATA 0bff9H /*8155*/ ADR_CONTROL_MIN DATA 8000H ADR_CONTROL_MAX DATA 9FF8H ADR_PA_MIN DATA 8001H ADR_PA_MAX DATA 9FF9H ADR_PB_MIN DATA 8002H ADR_PB_MAX DATA 9FFAH ADR_PC_MIN DATA 8003H ADR_PC_MAX DATA 9FFBH GEWEI DATA 2FH;/个位BC

37、D数据存放位置 SHIWEI DATA 30H;/十位BCD位数据存放位置 FUAHOWEI DATA 31H; /符号位 /*The mecro end*/ /*MAIN Structer start */ ORG 0000H SJMP MAIN ORG 0003H SJMP ADC_Finish ORG 000BH SJMP TIM0_IRQ ORG 0023H LJMP USART_Send MAIN: MOV SP,#60H CLR A ; /请累加器A SETB EA; /开CPU中断 SETB ET0; /开定时器T0中断 MOV TMOD,#21H; /选用TO的计时方式1 MO

38、V TH0,#3CH /定时器重装值 MOV TL0,#82H /*串口初始化*/ MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#80H SETB TR1 MOV SCON,#40H SETB ES SETB EX0; /开INT0外部中断 SETB IT0; /下降沿触发 SETB PT0; /定时中断优先级高 MOV R1,#10; /循环采样计数值 MOV R4,#20; /采样间隔为1s,定时中断为50ms,需要进 SETB TR0; /启动TO MOV DPTR,#ADR_ADC0809_CH0_MIN; /ADC0809地址给DPTR MOVX DPT

39、R,A; /启动ADC0809 /* 8155IO口工作模式设定 */ MOV DPTR,#ADR_CONTROL_MIN; /DPTR指向状态口 MOV A,#80H MOVX DPTR,A; /令A,B,C口为输出 Loop: LCALL LED_DIP;/调用显示子程序 LCALL SCAN; /调用扫描子程序 LJMP Loop /*串口发送接受中断程序*/ /*若使用上位机,发送数据前先发送0 x23*/USART_Send: PUSH PSW PUSH ACC SETB RS0 SETB RS1 MOV C,TI JC SEND SJMP ACCEPTSEND:CLR TI MOV

40、 A,R7MOV SBUF,ASJMP USART_DOWNACCEPT:CLR RIMOV A,SBUFMOV R6,AUSART_DOWN:POP ACCPOP PSWCLR RS0CLR RS1RETI /*TIM0中断进行平均求值,进行数码管显示*/ ADC_Finish: PUSH DPH PUSH DPL PUSH ACC CJNE R7,#00H,DUAL_MODE LJMP CH1_1DUAL_MODE: SETB RS1 CLR RS0 CJNE R6,#00H,CH1 MOV R6,#01H MOV DPTR,#ADR_ADC0809_CH0_MIN CH1: MOV R6

41、,00H LJMP CHANLE_1_CONVENTCH1_1: MOV DPTR,#ADR_ADC0809_CH1_MINSING_CONVENT: /MOV DPTR,#ADR_ADC0809_CH0_MIN MOVX A,DPTR; /取值 MOV R0,A ; /将采样值送到存储地址 MOVX DPTR,A; /重新启动ADC0809 INC R0; /存储地址加一 DJNZ R1,INTLOOP; /判断是否存满十个数据,否,返回主函数 MOV R0,#32H /填满十个采样值后,更新采样首地址 MOV R1,#10 LJMP INTLOOPCHANLE_1_CONVENT: MOV

42、X A,DPTR; /取值 MOV R0,A ; /将采样值送到存储地址 MOVX DPTR,A; /重新启动ADC0809 INC R0; /存储地址加一 DJNZ R1,INTLOOP; /判断是否存满十个数据,否,返回主函数 MOV R0,#42H /填满十个采样值后,更新采样首地址 MOV R2,#10 LJMP INTLOOPINTLOOP: POP ACC POP DPL POP DPH RETI /*INT0外部中断,ADC0809转换完毕,进行ADC0通道读取,并开始重新一次转化*/ TIM0_IRQ: PUSH DPH PUSH DPL PUSH ACC MOV TH0,#3

43、CH; /定时中断服务函数 MOV TL0,#82H DJNZ R4,DONE; /若没到20次,直接返回主函数 MOV R4,#20 ACALLDATA_Explose; /求采样平均值子函数DONE: POP ACC POP DPL POP DPH RETI RETI C/*键盘扫描程序*/SCAN: PUSH ACC PUSH DPL PUSH DPH MOV P1,#0FFH MOV A,P1 CJNE A,#0FFH,KEY_ON LJMP DOWN_KEY KEY_ON: LCALL DELAY /10ms延时消抖 LCALL DELAY MOV P1,#0FFH MOV A,P1

44、 CJNE A,#0FFH,KEY_ON_Really LJMP DOWN_KEY KEY_ON_Really: SETB RS0 CLR RS1 /使用1区寄存器 CJNE A,#0FEH,NEXT1 MOV R7,#0 NEXT1: CJNE A,#0FDH,NEXT2 MOV R7,#1 NEXT2: CJNE A,#0FBH,NEXT3 MOV R7,#2 NEXT3: MOV R7,#0 DOWN_KEY: CLR RS0 CLR RS1 POP DPH POP DPL POP ACC RET DATA_Explose: PUSH ACC PUSH DPL PUSH DPH /*把寄存器切换到1区*/ CLR RS1 SETB RS0 CLR A MOV R4,#00H MOV R5,#00H MOV R3,#10 CLR C MOV R1,#32H LOOP_ADD: ADDC A,R1 JC ADD_High_8 SJMP ADD_Continue ADD_High_8: INC R4 CLR C ADD_Continue: INC R1 DJNZ R3,LOOP_ADD

温馨提示

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

评论

0/150

提交评论