资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
微控制器系统设计与应用,刘燎原,江苏建筑职业技术学院,中断 1.中断初始化 (1)外部中断 IE TCON IP(2)定时溢出中断 TH、TL IE TMOD TCON(TR)2.程序结构 void main()void 名字() interrupt 中断号,秒表 1.利用定时器产生1秒。定时1次50ms,循环20次。 2.利用n变量存放秒个数。一开始,n初值为0每到1秒,n自加1。 3.显示子程序调用disp(要显示的变量名)显示位置不同,位选值不同(FEH,FDH,FBH,F7H,EFH,DFH),void main() EA=1; ET0=1; TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; while(1) disp(n); void lsd() interrupt 1 TH0=0x3c; TL0=0xb0;if(+m19)n+;m=0; ,#include unsigned char code sz1=0x3f,0x06,0x5b,0xb4f,0x66,0x6d,0x7d,0x07,0x7f,0x8f; unsigned char n=0,m=0; sbit seg1=P26; sbit seg2=P27; void disp(unsigned char t) unsigned char i,j;i=t/10; j=t%10;seg1=1;P2=sz1i;seg1=0;seg2=1;P2=0xfe;seg2=0;delay(6); seg1=1;P2=sz1j;seg1=0;seg2=1;P2=0xfd;seg2=0;delay(6); ,数字电压表(2学时),PROTEUS仿真(2学时),学时安排:,项目四 数字电压表-学习A/D转换,知识目标: 1.理解A/D转换 2.掌握ADC0809芯片引脚 3.掌握数字电压表的连接、编程技能目标: 1.掌握DS18B20的编程流程 2.掌握DS18B20的引脚,前言,由于计算机本身只能处理数字量(二进制代码)。而在计算机应用领域中,特别是在实时控制系统中,常需要把外界连续变化的物理量(如温度、压力、流量、速度),变成数字量输入计算机进行加工、处理,这为前向通道(A/D) 。 反之,也需要把计算机计算结果的数字量转换成连续变化的模拟量输出,用以控制,调节些执行机构,实现对被控对象的控制,这为后向通道(D/A) 。 这种把模拟量变成数字量和把数字量转换成模拟量,就称为模/数和数/模转换。实现这类转换的器件,就称为模/数(A/D)和数/模(D/A)转换器。 今天讲 (A/D) 一、概述1.分类 A/D转换器用于实现模拟量到数字量的转换,按转换原理可分为四种:计数式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。 目前最常用的是逐次逼近式A/D转换器和双积分式A/D转换器。,逐次逼近式A/D转换器是一种转换速度较快、精度较高的转换器。其转换时间大约在几微秒到几百微秒之间。 ADC0801ADC0805型8位MOS型A/D转换器,美国国家半导体公司产品。它是目前最流行的中速廉价型产品。片内有三态数据输出锁存器,单通道输入,转换时间约100s左右。 ADC0808/0809型8位MOS型A/D转换器。可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100s左右。 ADC0816/0817。这类产品除输入通道数增加至16个以外,其他性能与ADC0808 /0809型基本相同。 Vref/Vin=2n/D,双积分式A/D转换器的主要优点是转换精度高,抗干扰性能好,价格便宜,但转换速度较慢。因此这种转换器主要用于转换速度要求不高的场合。 常用的这种产品有ICL7106/ICL7107/ICL7126系列、MC1443以及ICL7135等。 Vref/Vin=T2/T1,2.A/D转换器的主要技术指标,(1)分辨率。是指输出数字量变化一个数码所需输入的模拟电压的变化量。常用输出二进制的位数表示分辨率。例如12位ADC的分辨率就是12位;或者说分辨率为满刻度的1/212一个满刻度为5V的ADC,分辨率是12位,那么他能分辨输入电压变化最小值是5*1/212=1.2mv位数越高,分辨率越高,转换精度越高。 (2)量化误差ADC把模拟量转化为数字量,用数字量近似表示模拟量,这个过程成为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的结题转换特性曲线与具有无限分辨率的ADC转换特性曲线之间的最大偏差既是量化误差。 (3)转换速度。每秒转换完成的次数,是完成一次转换所需的时间的倒数。速度比DA慢。转换时间是指由启动转换命令到转换结束信号开始有效的时间间隔。,光敏电阻器(Photovaristor) 又叫光感电阻,是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器; 入射光强,电阻减小,入射光弱,电阻增大。 光敏电阻一般用于光的测量、光的控制和光电转换(将光的变化转化为电的变化),可以用于路灯控制器,3.ADC0809 ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺;片内有8路模拟开关,可对8路模拟电压量实现分时转换。ADC0809的引脚如右图所示,逻辑结构图如下图所示 (1)内部结构,(2)ADC0809其引脚定义如下: IN7-IN0:8条模拟量输入通道。输入电压范围为05V, 2-1MSB-2-8LSB :8位数字量的输出端。其中最高位MSB,最低位LSB。 ADDC、ADDB和ADDA:通道号选择输入端。其中A是LSB位,这三个引脚上所加电平的编码为000111时,分别对应于选通通道IN7IN0。 ALE:通道号锁存控制端。当它为高电平时,将C、B和A三个输入引脚上的通道号选择码锁存,也就是使相应通道的模拟开关处于闭合状态。实际使用时,常把ALE和START连在一起,在START端加上高电平启动信号的同时,将通道号锁存起来。 START:启动转换信号输入端。当给START一个正脉冲时,启动转换。 EOC:转换结束指示端。平时它为高电平,在转换开始后及转换过程中为低电平,转换结束,它又变为高电平。此端可作查询或取反后作中断请求信号 OE:输出使能端。此脚为高电平时,即打开输出缓冲器三态门,可以读出转换后的数字量数据。 CLK:外部时钟输入。输入范围为500kHz1MHz,典型值为640kHz ,转换时间为100s。时钟信号有时可由单片机ALE经分频得到; VREF(+)、VREF(-):两个参考电压输入端。一般情况下VREF(+)与VCC相连接,VREF(-)与GND相连接,转换步骤: 1. A、B、C提供三位地址,ALE有效,实现模拟通道选择 2.有clock时钟信号(典型值500KHZ,周期2us)。Start有效,开始转换Vin 3.转换过程中,EOC=0;当转换结束时,EOC=1.(转换时间大概100us左右) 4.转换结束后,设置ENABLE=1后,才可以读取转换后的数字量,一般我们把ADC0809的ALE信号与START信号连接在一起。这样使得在ALE信号的前沿写入地址信号,紧接着在其后沿就启动转换。,4ADC0809与单片机的接口A/D转换后得到的是数字量的数据,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换完成,因为只有确认数据转换完成后,才能进行传送。为此可采用下述三种接口方式。(什么时候转换结束): a.查询方式(查询EOC什么时候为1,即结束) ADC0809的EOC端就是转换结束状态信号。因此可以用查询方式,软件测试EOC的电平状态,即可确知转换是否完成,然后进行数据传送。 b.中断方式(转换结束,EOC向单片机提出中断,)若转换速度较慢的话,单片机不必一直查询等待,可以把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。什么时候转换结束了,即通过EOC向单片机提出中断,告诉单片机转换结束,让单片机来取转换后的数字量 。 c.等待延时方式(若转换速度较快的话,可以加一段延时等待转换结束)对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如,若ADC0809转换时间为128s,相当于6MHz的MCS-51单片机的64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用这个延时子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。,举例 例1:设计一个简易的数字电压表。(显示数字量) 电路:,转换步骤: 1.有clock时钟信号(典型值500KHZ,周期2us)用定时器0产生周期2us方波信号作为CLOCK 2.Start、ALE有效,开始转换VinStart、ALE需要正脉冲,通过置1或0得到 3.转换过程中,EOC=0;当转换结束时,EOC=1.(转换时间大概100us左右)利用查询等待方式,while(eoc=0); 4.转换结束后,设置OE=1后,才可以读取转换后的数字量OE=1;m=P0;5.数字量送数码管显示,程序: #include #include unsigned char code sz2=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; sbit eoc=P20; sbit start=P21; sbit clock=P22; sbit oe=P23; sbit seg1=P34; sbit seg2=P35; void delay(unsigned int a) unsigned char b;while(-a!= 0) for(b=0;b125;b+); ,void disp0(unsigned char m) unsigned char i,j; i=m,while(1) start=0;delay(1);start=1;delay(1);start=0;delay(1);while(eoc=0);oe=1;m=P0;disp0(m);oe=0; void lsd() interrupt 1 TH0=(65536-1)/256;TL0=(65536-1)%256;clock=clock; ,实验:简易数字电压表,显示电压的十进制数,两位显示,带一位小数点(编程,仿真) (1)如何把数字量转换为对应的电压十进制数从公式出发Vi/5=D/255 Vi=D*5/255 要转化为带小数的,可写为Vi=D*1.0*5/255 假设要保留两位小数,则:Vi= Vi*100=D*1.0*500/255i= Vi/100;j= Vi/10%10;k= Vi%10; (2)如何显示小数点 在显示整数位的时候加上小数点的显示 或者可以增加一个带小数点的数组,注意:1.定义m的类型int2.滑动变阻器选择,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号