1、1桂 林 电 子 科 技 大 学单片机最小应用系统设计报告指导老师:吴 兆 华学 生:朱 少 华学 号:092011117机电工程学院2010 年 6 月2单片机最小应用系统设计报告一、设计题目1二、设计目的1三、系统硬件图1四、程序流程图4五、系统说明与分析5.1 设计思路55.2 LED 显 示部分55.3 最小系统控制部分65.3.1 单片机的 I/O 接口75.3.2 单片机使用的外围电路85.4 电路板的制作105.5 系统连线说明分析.115.6 系统调试12六、源程序 12七、总结 15八、参考文献 153一、 设计题目数字电压表设计。用 8051 单片机和 ADC0809 组成
2、一个数字电压表。要求能够测量0-5V 的直流电压值,并用四位数码管显示,并要求所用元器件最少。二、 设计目的1.掌握单片机 8051 的性能及使用方法;2.掌握使用单片机编程的方法;3.了解七段数码显示数字的原理;4.掌握多位数字的显示技术;5.掌握 ADC0809 模/数转换的应用;三、 系统硬件图1、数字电压表系统的硬件电路原理图如下:图 1 电路原理图42、数字电压表系统的硬件电路 PCB 图如下:图 2 PCB 图四、 程序流程图数字电压表程序框图如下:开始采集数据A/D 转换结果乘以 0.4是否溢出LED 显示显示 4.98结束5五、 系统说明与分析51 设计思路本题要求输入 099
3、v 的模拟电压,结果用 LED 显示。由于计算机读入的只能是数字量,因此首先要用模/数转换器 ADC0809 将采集到的数据转换成数字量送入 8031 进行处理。再者,用 LED 显示结果时就要考虑 8031 与 LED 的接口问题。在程序中要完成的还有输入量于输出量的对应问题。ADC0809 是八位的模/数转换器,数字范围为0255,而输出要求 0100。因此,模拟量与数字输出的变化比为 100/255。在计算机乘法中不能给一个数直接乘以 0.4,所以在处理输入值时就必须计算输入值*4/10。算得的值不必再进行其他转换便可通过 LED 显示。52 LED 显示部分ACD0809 是典型的 8
4、 位 8 通道逐次逼近式 A/D 转换器,为 28 引脚双列直插式封装。可实现 8 路模拟信号的分时采集,片内有 8 路模拟选通开关,以及相应的通道地址锁存译码电路,其转换时间为 100 微秒左右。A/D 转换用于实现模拟量到数字量的转换。按转换原理可分为四种,即:计数式 A/D 转换器、双积分式 A/D 转换器、逐次逼近式 A/D 转换器和并行式 A/D 转换器。目前使用较多的为后三种。双积分式 A/D 转换器具有高精度、抗干扰性好、价格低廉等特点,但速度较慢,经常应用于对速度要求不高的仪表中;逐次逼近式 A/D 转换器在精度、速度和价格上都适中,是目前最常用的 A/D 转换器;并行式 A/
5、D 转换器是一种用编码技术实现的高速 A/D 转换器其速度最快,价格也最高,使用于要求较高的场合。综上,本设计选用逐次逼近式 8 位 A/D 转换芯片 ADC0809。ADC0809 的主要技术特性和指标:分辨率:8 位。转换时间:取决于芯片时钟频率。单一电源:+5V。模拟输入电压范围:单极性 05V,双极性+5V 或+10V。具有可控三态输出锁存器。启动转换控制脉冲式(正脉冲) ,上升沿使内部所有寄存器清“0” ,下降沿使A/D 转换器开始。LED 显示器通常所说的 LED 显示器有七个发光二极管组成,因此也称之为七段 LED 显示器。此外,显示器中还有一个圆点型发光二极管,用于显示小数点。
6、65.3 最小系统控制部分最小系统的控制器由单片机 AT89S51 实现,它是单片机 MCS-51 高性能 8 位机系列的一种,广泛应用于各种小型控制系统中,其引脚图如图 3 所示。图 3AT89S51 单片机是 AMTEL 公司生产的 MCS-51 系列的兼容产品,与 MCS-51 指令系统兼容,系统结构相同,CMOS 工艺制造并带有非易失性 Flash 程序存储器。全部支持 12 时钟和 6 时钟操作。AT8S51 包含 128 字节 RAM、32 条 I/O 口线、3 个 16 位定时/ 计数器、6 输入 4 优先级嵌套中断结构、1 个串行 I/O 口(可用于多机通信 I/O 扩展或全双
7、工 UART 以及片内振荡器和时钟电路)。功能结构如图 4 所示:图 4 AT89S51 单片机功能结构图75.3.1 单片机的 I/O 接口接口电路是单片机必不可少的组成部分,并行输入输出接口是 CPU 和外部进行信息交换的主要通道。MSC 51 系列单片有 4 个 8 位并行双向 I/O 口 P0P3 ,共 32 根I/O 线。每一根线能独立用作输入或输出。单片机可以外接键盘、显示器等外围设备还可以进行系统扩展,以解决硬件资源不足问题。4 个并行口都是双向口,既可以输入又可以输出。P0 、P2 口经常作外部扩展存储器时的数据、地址线, P3 口除作 I/O口外,每一根都有第二功能。这 4
8、个 I/O 口结构基本相同,但仍存在差别。本次实验所用单片机的输入输出接口有 P0 口和 P2 口。现简要介绍如下:(1) P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当 FIASH进行校验时,P0输出原码,此时 P0外部必须被拉高。(2) P2 口的位结构比 P1 多了一个控制转换部分,结构与 P0 口基本相似,如 5 图所示。P2 口改 P0 推拉式输出驱动电路为上拉电阻式,当控制信号 s 为低电平,作 I/
9、O 口使用时,多路开关 MUX 使锁存器输出端 Q 与输出驱动输入端接通,构成一个准双向口。此外,当外部扩展存储器时,P2 口常做高 8 位地址线使用。图 5 P2 口的位结构8本实验系统应用 P2 口作为输出信号控制口,驱动报警电路,使之按希望的方式工作。5.3.2 单片机使用的外围电路单片机应用系统中,除了基本计算机系统单元电路外还需配备完整的外围电路、以完成复位、掉电保护、提供时钟、节电等功能。(1)时钟电路:单片机内部有一个高增益的反相放大器,通过XTAL1和XTAL2引脚外接石英振于或陶瓷振子、微调电容组成振荡器如图6所示。该振荡器发出的脉冲直接送入内部时钟电路。振荡器若外接的是石英
10、扳子,微调电容通常选择30pF;外接陶瓷娠子时选样47pF 。振荡频率范围选择 1.212M。MCS5-51系列单片机也可以采用外接时钟,这时XTAL 2脚用来输入外部时钟信号(XTAL2脚为内部时钟电路的输入端) ,XTALl脚则接地如图6b所示。对于CHM05工艺制造的80C51单片机,则应从XTALl脚输入外部时钟信号, XTAL 2脚悬空。本单片机最小系统设计时采用的是外接石英晶体震荡电路。采用此电路的优点是不用外接时钟,手动制板比较容易制板,调试方便,不容易出错。(2)复位电路:复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器
11、周期(24个时钟振荡周期)以上的高电平。可使单片机复位。本论文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图7a所示。上电瞬间电容两端的电压不能发生突变,只RST 端为高电平5v,上电后电容通过及RC电路放电RST 端电压逐渐下降,直至低电平0V,如图7c所示。适当选择 R、C的值,使RST端的高I 电平维持2个机器周期以上即可完成复位。单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图7b所示。按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电
12、原理,如图7d所示。让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。9图6(a)外接石英晶体振荡电路 图6(b)外接时钟电路(a) 上电复位 (b) 按键电平复位(c) RC放电过程 (d) 电平复位过程图 7 单片机常用复位电路本实验由于设计的系统简单且对控制系统精度的要求不高而采取了按键电路复位,电路图 7(b)所示。这种时钟电路的优点是手动复位操作可以给调试带来很大的方便,且电气连接简单。根据要求所最小系统所选用的器件有单片机 AT89S51 一个、电容 30pf 的两个、晶振 12M 一个、100pf 电容一个、1K 电阻一个。最小系统
13、原理图如图 8 所示:10图 8 最小系统控制原理图从上图可以看到除了最基本的外围电路,在单片机 PO 接口处还加了一个 1K 上拉电阻 R10,此电阻作为上拉电阻使用。上拉电阻就是把不确定的信号通过一个电阻钳位在高电平,此电阻还起到限流的作用。使用时将比较器 LM324 的输出端与 P0 口及上拉电阻的一端相连,上拉电阻的另一端与电源 VCC 相连。上拉电阻的作用为:1、当 TTL 电路驱动 COMS 电路时,如果 TTL 电路输出的高电平低于 COMS 电路的最低高电平(一般 3.5V) ,这时就需要在 TTL 的输出端接上拉电阻,以提高输出高电平的值。2、OC 门电路必须加上拉电阻,以提
14、高输出的高电平值。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在 COMS 芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。6、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。在最小系统中使用上拉电阻可以有效提高单片机的带负载能力,从而让单片机很容易的接收到比较器输出端发出的中断信号。另外上拉电阻的选型原则包括:1、从节约功耗及芯片的
15、灌电流能力考虑应当足够大;电阻大,电流小。2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。3、对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在 1k 到 10k 之间选取。故本次设计采用 1K 的上拉电阻。5.4 电路板的制作ProtelDXP 功能强大,为我们进行电子电路原理图和印制板图的设计提供了良好的操作环境。用 ProtelDXP 进行电路设计分为两大部分:原理图的设计和电路板的设计。原理图的设计实在 SCH 系统中进行的,电路原理图是印刷板电路设计的基础,只有设计好原理图才有可能进行下一步的电路板设计。用 protelDXP 进行电路板设计的第一步是其原理
16、图的设计。显然,原理图决定整个电路的基本功能,也是接下来生成网表和设计印刷板电路的基础。具体步骤如下:(1)图面设置:ProtelDXP 允许用户根据电路的规模设置图面的大小,按照偏好和习惯设置图面的样式。实际上,设置图面就是设置了一个工作平面,以后的工作就要在这个平面上进行。所以图面应该设置得足够大,为进一步工作提供一个足够大的工作空间。11(2)放置元件:所谓放置元件就是从元件库中选取所需得元件,将其布置到图面上合适的位置,有时还要重定义元件的编号、封装。元件的封装很重要,要根据元件的实际尺寸和实际封装来决定,要是元件没封装好,将会给以后电路板的制作带来很大的麻烦。这些都是下一步工作的基础
17、。ProtelDXP 为用户提供了一个非完备的元件库,并且允许用户对这个元件库进行编辑或者新建自己的元件库。电路板的制作过程(1) 打印:将生成的 PCB 图打印到热转印纸上,需注意线不能太窄,墨要加重,否则制板时容易断线,如果在操作过程中断了线,可用电烙铁将锡带过。(2) 熨烫:将热转印纸覆在铜板上,用电熨斗进行熨烫,关键要注意熨烫的时间,不能太久,也不能时间太短,否则,太久会把铜板烫坏,不够的话墨迹覆不上去。(3) 腐蚀:把铜板放到三氯化铁溶液中腐蚀,需注意溶液浓度要较高,最好用热水配置,这样腐蚀更快,一般 3 分钟即可。如果时间过长,需剩下的铜线也可能被腐蚀。(4) 打孔:打孔时注意钻头
18、尺寸,本次用的钻头大小是 1mm 的,最需注意的地方是集成块的管脚,如果打孔误差大,管座就很难插上。(5) 放置元件:放置前应先打磨一下打孔后留下的毛刺,并均匀地涂上松香水(目的是防止铜线氧化,易于焊锡覆着焊盘,但多涂会导致焊接时焊点变黑,影响美观) 。放置元件时注意集成块的管脚,二极管和电解电容的正负,这些都是平时比较容易出错的地方。(6) 焊接:焊接技术比较难掌握,焊锡、烙铁与焊盘的位置关系,焊锡熔化时间长短,松香水的浓度,烙铁的温度等等,都是影响焊点美观的因素。(7) 检查:检查是否有虚焊,集成块管脚位置是否正确,电源引线位置是否恰当等。检查完毕就能进行调试了。 5.5 系统连线说明分析
19、a) 把“单片机系统”区域中的 P1.0P1.7 与“动态数码显示”区域中的 ABCDEFGH 端口用 8 芯排线连接。b) 把“单片机系统”区域中的 P2.0P2.7 与“动态数码显示”区域中的 S1S2S3S4S5S6S7S8 端口用 8 芯排线连接。12c) 把“单片机系统”区域中的 P3.0 与“模数转换模块”区域中的 ST端子用导线相连接。d) 把“单片机系统”区域中的 P3.1 与“模数转换模块”区域中的 OE端子用导线相连接。e) 把“单片机系统”区域中的 P3.2 与“模数转换模块”区域中的 EOC端子用导线相连接。f) 把“单片机系统”区域中的 P3.3 与“模数转换模块”区
20、域中的 CLK端子用导线相连接。g) 把“模数转换模块”区域中的 A2A1A0 端子用导线连接到“电源模块”区域中的 GND 端子上。h) 把“模数转换模块”区域中的 IN0 端子用导线连接到“三路可调电压模块”区域中的 VR1 端子上。i) 把“单片机系统”区域中的 P0.0P0.7 用 8 芯排线连接到“模数转换模块”区域中的 D0D1D2D3D4D5D6D7 端子上。5.6 系统调试通过单步执行检测程序的运行情况。在调试计算程序的时候,由电位器给输入一个值,通过计算的到它经过 A/D 转换后的数字量。设置 PC,单步执行。每执行一步,在数据监测窗口和程序监测窗口观察它的变化情况,看是否与
21、自己计算出的结果相符。如不同,则思考是哪个地方出现了问题,修改后继续执行,知道输出结果与计算结果相同为止。当程序中有跳转指令时,通过单步执行可以看到条件满足时它跳到哪一步,条件不满足时程序跳到哪一步,从而达到想要的结果。LED 的显示程序在调试中出错是相对较少的。给输出分配好段控口和位控口之后,它基本就能按 8031 的处理结果显示。六、源程序#include unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code dispcode=0x3f,0x06,0x5b,0x4f
22、,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;unsigned char dispbuf8=10,10,10,10,0,0,0,0;unsigned char dispcount;13unsigned char getdata;unsigned int temp;unsigned char i;sbit ST=P30;sbit OE=P31;sbit EOC=P32;sbit CLK=P33;void main(void)ST=0;OE=0;ET0=1;ET1=1;EA=1;TMOD=0x12;TH0=216;TL0=216;TH1=(65536-4000)/256;
23、TL1=(65536-4000)%256;TR1=1;TR0=1;ST=1;ST=0;while(1)if(EOC=1)14OE=1;getdata=P0;OE=0;temp=getdata*235;temp=temp/128;i=5;dispbuf0=10;dispbuf1=10;dispbuf2=10;dispbuf3=10;dispbuf4=10;dispbuf5=0;dispbuf6=0;dispbuf7=0;while(temp/10) dispbufi=temp%10; temp=temp/10; i+; dispbufi=temp; ST=1; ST=0; void t0(voi
24、d) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-4000)/256; TL1=(65536-4000)%256; P1=dispcodedispbufdispcount; P2=dispbitcodedispcount; if(dispcount=7) P1=P1 | 0x80; 15 dispcount+; if(dispcount=8) dispcount=0; 七、总结1、在设计系统过程中,学会用 Protel DXP 画原理图和 PCB 图。2、自己动手制作电路板,了解了电路板的设
25、计及手工制作过程,提高动手能力。3、调试程序过程中,针对遇到的问题,寻找解决方法,掌握了 C 语言编制单片机程序。4、感谢在整个设计单片机最小系统过程中给我很大帮助的导师,师兄和同学。八、参考文献1 孙安青. AT89S51 单片机实验及实践教程M.2 耿长清.俞宁.单片机应用技术M.北京:化学工业出版社,2002.3 李广弟.朱月秀.王秀山.单片机基础M.北京:北京航空航天大学出版社,2003.4 黎文模.Protel DXP 电路设计与实例精解M.北京:人民邮电出版社,2006.5 胡汉才.单片机原理及其接口技术M.北京:清华大学出版社,2004.6 李志杰.刘卓华.一种新型家庭报警系统J.工程技术.2007,10:49-50.