1、芯片继电器选择通道量程52单片机二极管指示灯LCD1602显示蜂鸣器判断是否超出量程图2-3 设计框图2.2.2 组成部分及其说明第一,控制部分(1)分析:本设计采用AT89C52单片机,利用其具备的中断系统和延时程序来控制换挡,以及LCD1602液晶屏的显示等等功能。(2)原理图图2-4 52单片机最小系统设计第二,测量部分(1)计算分析:利用ADC0832实现转换被测电阻的频率,通过52单片机的I/O接口的自动识别电阻量程,来实现自动测量。(2)仿真图&原理图图2-5(1) ADC转换电路仿真图图2-5(2) ADC转换电路原理图第三,通道选择部分 (1)分析说明:本设计通过单片机控制来控
2、制继电器完成自动选择,继电器是一种电子控制器件,它具有输入回路和输出回路,经常应用于自动控制电路中,原理实际上是用较小的电流去控制较大电流的一种“自动开关”。所以在电路中起着自动调节、安全保护、转换电路等作用。 (2)仿真图图2-6 继电器自动选择电路第四,显示部分(1)分析说明:使用1602液晶显示屏,具有画面效果好,分辨率高,抗干扰能力强等特点,可以显示4行字,符合本次设计任务的要求。图2-7(1) 1602显示仿真图图2-7(2) 1602显示原理图三、设计实现3.1 测量电路设计根据题目要求,采用ADC芯片,将电阻量转换为相应的频率信号值。考虑到单片机对频率的灵敏度,具体的讲就是单片机
3、对10HZ10KHZ的频率计数精度最高。所以要选择合适的电阻大小,同时又要考虑到不能使电阻的功率过大。所以首先要确定对应档位时适合的频率,然后在确定电阻,从而算出3个电阻的值以及对应频率范围。档位电阻R1频率范围1001KR1=20085009500HZ1K10KR2=10K36006600HZ10K10MR3=500K1100016400HZ 表3-1 电路对应量程参数3.2 通道选择电路设计利用继电器类别的转换,继电器型号为943-1C-5DS,5v控制开关关断电路流程图如下:超量程吗?最高量程吗? 继电器图3-3量程自动转换流程图3.3 控制电路设计本设计使用单片机为核心部件,来控制换挡
4、以及显示。以下是单片机管脚说明:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内
5、部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并
6、用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如表1所示:表1 P3特殊功能口P3口引脚第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断1输入)P3.4T0(定时器0外部脉冲输入)P3.5T1(定时器1外部脉冲输入)P3.6WR(外部数据存储器写脉冲输出)P3.7RD(外部数据存储器读脉冲输出)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PRO
7、G:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存
8、储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.4 显示电路系统的显示部分采用LCD1602液晶显示模块。3.5 软件设计 系统通过频率来控制量程自动切换,并根据换算对应的电阻,然后再控制显示模块输出。YesNO 初始化通过采样中断计算
9、频率计算R的值通过R的范围,确定档位1602显示判断是否在规定频率内开始结束一个继电器至高,其它至低 图3-2 程序设计流程图四、测试及结果分析4.1 测试方法及使用的仪器测量方法:采用555多谐振荡电路,将电阻量转换为相应的频率信号值。再利用单片机及有关程序对范围的选择,显示侧量出数值。测试使用的仪器设备:数字万用表、示波器。4.2 指标测试和测试结果表4.1.2 测试结果对照分析表测量值实际值10198.91014998.9-989K五、结论本设计实现了一种利用52单片机实现的简易电阻测试仪,基于单片机和量程自动切换电路的控制系统,能够根据待测电阻的大小实现适当频率的控制,再分别采样频率,
10、通过程序计算待测电阻Rx并在1602液晶上显示。并且测量的数据结果较稳定。设计过程中出现问题有以下:1. 在使用ADC芯片电路中电阻值时,由于单片机对10HZ10KHZ的频率计数精度最高。所以要选用合理的电阻大小。同时又要考虑到不能使电阻的功率过大,这样给我们计算带来了很多的麻烦。2.我们接收到频率较高,所以通过电路很难控制精确度,产生的误差比较大。3继电器在使用时最高位的继电器无法工作导致量程只能在0到1k。 4、在实验过程中时常有捉襟见肘的感觉,一方面是理论不足,很多好的方案,好的思想由于理论的匮乏,无法理解,也不能使用,在以后的学习过程中理论的学习始终是重点;还有就是程序的问题,由于编程
11、水平跟不上,加上思路也不清晰,导致程序的编写存在很大的问题,好的思想,无法在程序中展现出来,这也是以后需要加强的地方。参考文献1. 高吉祥,黄智伟,丁文霞. 数字电子技术M. 北京:电子工业出版社,2003年,第1版2. 邹其洪 黄智伟 高嵩.电工电子实验与计算机仿真M.北京:3. 张友汉.电子线路设计应用手册M.福建:福建科学技术出版社.2000.7第一版.4. 黄智伟.电子电路计算机仿真设计M. 北京:电子工业出版社,2004年第1版附录附录1: 主要元器件清单at89c52单片机112M晶振211.0592M晶振22pf瓷片电容54.7k电阻2.5k电阻200电阻10k电阻500k电阻3
12、.3k电阻AD转换器adc0832mps8098三极管继电器G2RL-1AB-DC5蓝白电位器10k排针8脚排座40脚排座蜂鸣器1n4148二极管2n2222三极管3发光二极管附录2:程序清单#include #include #define uchar unsigned char uchar table= 0x00,0x04,0x0A,0x11,0x11,0x0A,0x1B,0x3B, ; uchar table1=THE RES IS: ; sbit CS=P15; sbit Clk=P16; sbit DI=P17; sbit DO=P17; sbit rs=P20; sbit en=P
13、21; sbit j1=P27; sbit j2=P26; sbit j3=P25; sbit beep=P14; sbit led=P23; void delay(int x) int j; for(;x0;x-) for(j=20;jj-) ; uchar ADC0832(uchar CH) uchar i,dis0,dis1,date; Clk=0; /拉低时钟 DI=1; /初始化 delay(1); CS=0; /芯片选定 Clk=1; /拉高时钟 if(CH=0) /通道选择 /第一次拉低时钟 /通道0的第一位 /第二次拉低时钟,ADC0832 DI接受数据 DI=0; /通道0的
14、第二位 else /通道1的第一位 /通道1的第二位 /第三次拉低时钟,此前DI两次赋值决定通道 /DI开始失效,拉高电平,便于DO数据传输 for(i= 0;i8;i+) /读取前8位的值 dis0 dis1|= 0x80; else dis1|= 0x00; if(dis0=dis1) /两次结束数据比较,若相等 date=dis0; /则赋值给dat CS=1; /释放ADC0832 /拉高输出端,方便下次通道选择DI端有效 return date; long datch(uchar a ,long st ) /计算电阻 long y; double x=1.0*st*(255-a)/a
15、 ; y=x; return y; void writecom(uchar com) rs=0; P3=com; delay(10); en=1; en=0;void writedat(uchar date) rs=1; P3=date;void init ()writecom(0x38);writecom(0x0c); writecom(0x06);writecom(0x01); void display( long x) int j,wei=12; for(j=0;j0) writecom(0xc0+wei-j);writedat(44);wei-; writecom(0xc0+wei-j
16、); writedat(x%10+48); x=x/10 ; long J1(void) j1=1; j2=0; j3=0; delay(40); return datch(ADC0832(0),200); long J2(void) j1=0; j2=1; return datch(ADC0832(0),10000); long J3(void) j3=1; return datch(ADC0832(0),500000);void main()int j;long x,s=1; led=1; beep=0;init(); j1=1; for(x=0;x=1900) s=J2();=100000) s=J3();else if(j2=1) if(s=100000) s=J3(); else if(j3=1) s=J3(); if(s1900) s=J2(); if(s=254) beep=1; else beep=0; if(j=0)|(j=255) led=0; else led=1; if(x!=s) x=s; display(s); 附录3:实物图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1