上师大单片机综合实训报告_第1页
上师大单片机综合实训报告_第2页
上师大单片机综合实训报告_第3页
上师大单片机综合实训报告_第4页
上师大单片机综合实训报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机系统应用综合设计报告专业: 班级: 姓名: 学号: 指导教师: 成绩: 完成日期: 2014 年 12 月 18 日一、基于ADC0809芯片的简单采集系统设计1.方案论证11 系统的设计任务1用单片机、ADC0809芯片、数码管等组成温度数据采集显示系统。温度范围为0255,数码管显示被测温度;当温度低于下限70时,实现低温报警,当温度高于上限150时,实现高温报警。2.原理图设计 根据所确定的设计电路,利用Proteus软件绘制电路原理图。3.软件设计 根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。利用Proteus与Keil Vision4联调,直到实验现象正确为止。

2、4.设计报告按规定的规范和要求书写并打印。12 设计方案根据系统的设计要求,当温度传感器把所测得的温度通过驱动电路转换成电压信号,89C51通过控制ADC0809对AD值进行采集并进行处理,把温度在数码管上显示。利用89C51芯片控制温度传感器进行实时温度检测并显示能够实现快速测量环境温度。模拟电压信号采集温度信号ADC080采集数字电压信号89C51温度显示实际温度图1:采集系统程序框图1.3软、硬件开发环境利用Proteus软件绘制电路原理图、利用Proteus与Keil Vision4联调。2.系统硬件设计2.1单片机主电路设计单片机选用AT89C51·内含4KB的FLASH存

3、储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; 1.复位电路:5l 系列单片机的复位引脚RST(第9管脚)出现大于10ms的高电平时单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。复位操作通常有两种基本形式:上电自动复位和开

4、关复位。本实验所用的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图2:复位电路图2.晶振电路:XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡

5、器,或者是器件直接由外部时钟驱动。本实验中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的12M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。图3:晶振电路图3.软件设计3.1主程序设计主函数程序设计:主函数里面对定时器以及ADC0809进行初始化,然后通过P3口采集ADC0809电压值,并将其进行处理,转化为实际温度,最后将其

6、显示到数码管上。中断服务程序设计:定时器/计数器0服务程序主要完成的是CLK引脚也就是P1.3引脚的取反,从而生成驱动ADC0809所需要的始终信号。数码管显示程序设计:本实验用的是四个共阴极的数码管,公共端位阴极,程序执行时,单片机首先选中其中一位,并关闭另外三位,将第一位要显示的数据通过P0口写到数码管中,关掉第一位和第三位、第四位数码管,并打开第二位,然后将第二位要显示的数据写到数码管中,然后依次类推,从而将四个数码管的数据显示完整。 图4主函数程序设计图 图5:中断程序流程图 4.系统调试与分析4.1调试内容及实验现象图6:现象一:当温度低于下限70时,实现低温报警图7:现象二:当温度

7、高于上限150时,实现高温报6二、100000s以内的计时程序1.方案论证11 系统的设计任务1程序启动后即开始计时,时间显示在数码管上, 在6只数码管上完成099 999.9s计时.2.原理图设计 根据所确定的设计电路,利用Proteus软件绘制电路原理图。3.软件设计 根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。利用Proteus与Keil Vision4联调,直到实验现象正确为止。4.设计报告按规定的规范和要求书写并打印。1.2设计方案:使用STC89C51单片机作为核心控制部件,采用12M晶体振荡器及30PF微小电容构成振荡电路;用1个四位一体共阴极数码显示管作为显示部

8、分,构成数字式秒表的主体结构,配合独立式键盘和复位电路完成此秒表的计时、清零、停止、增减初始时间等各项功能。4位数码管显示模块STC89C52单片机最小系统模块独立摁键控制模块 图8:计数器框图1.3软、硬件开发环境利用Proteus软件绘制电路原理图、利用Proteus与Keil Vision4联调。2.系统硬件设计2.1单片机主电路设计 单片机选用AT89C51图9:单片机最小系统1. 时钟电路 在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。在本设计中采用的12M 的石英晶振。和晶振并联的两个电

9、容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20  40pF 之间选择。 2. 复位电路 复位操作通常有两种基本形式:上电自动复位和开关复位。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上, RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效

10、果。3. EA/VPP(31 脚) 的功能和接法 51 单片机的EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚。当EA 保持高电平时,单片机访问内部程序存储器; 对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。 2.2显示电路设计74LS245芯片介绍:74LS245常用来驱动led或者其他的设备,用法很简单如上图,这里简单的给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。 74L

11、S245还具有双向三态功能,既可以输出,也可以输入数据。 当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。 当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)*DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。图10:74LS245显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的共阴极增加位选通控制电路,位选通由各自独立

12、的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的位选通端,就使各个数码管轮流受控显示,这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上,显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快,人的眼睛反应不过来,因此看到的是连续显示的现象。为防止闪烁延时的时间在1ms左右,不能太长,也不能太短。图11:LED数码管3.软件设计初始化3.1主程序设计调

13、用数码管的显示程序否K2是否按下?是 执行按键操作函数K1是否按下?否 计数器清零 图12:主程序流程图4.系统调试与分析4.1调试内容及实验现象图13:秒表计时三、8x8点阵LED电路设计1.方案论证11 系统的设计任务1. 应用MCS-51单片机设计8X8点阵LED电路。选用两片8X8点阵LED显示器,一个发光二极管控制点阵中的一个点,用三个按键实现文字的左、右移动和暂停功能。2.原理图设计 根据所确定的设计电路,利用Proteus软件绘制电路原理图。3.软件设计 根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。利用Proteus与Keil Vision4联调,直到实验现象正确

14、为止。4.设计报告按规定的规范和要求书写并打印。12 设计方案利用单片机对整个系统进行总体控制,进行显示所要显示的字符。显示方式分为三种:逐字显示、上滚显示、左滚显示。 其中显示字模数据由单片机输入显存,点阵的点亮过程有程序控制,由驱动电路完成,点阵采用单色显示,该显示器电路的特点是:点阵的动态显示过程占用时间比较短,亮度比较高,而且亮度可以改变电阻进行调节。8*8LED点阵显示屏AT89C51单片机74HC595复位晶振电路列图14:8*8点阵电路程序框图1.3软、硬件开发环境利用Proteus软件绘制电路原理图、利用Proteus与Keil Vision4联调。2.系统硬件设计2.1单片机

15、主电路设计由单片机进行处理,并将行列信号分别通过显示驱动输入点阵屏,控制点阵的显示。(1)单片机:采用AT89c51单片机芯片作为主控,控制LED点阵显示。(2)显示:采用8x8 LED点阵屏显示字母。(3)显示驱动:考虑到驱动LED所需电流采用74HC573芯片8位锁存器作行驱动芯片,AT89S52的I/O口作为列驱动。按下UPStart文字上移图15:主程序流程图按下STOP文字下移文字停止移动在初始处按下DOWNEnd22 测量、转换电路设计原理分析:锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不

16、影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器并行输出,总线驱动; 串行输出;标准中等规模集成电路74HC595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。符号引脚描述:Q0Q7 8位并行数据输出,其中Q0为第15脚GND 第8脚 地Q7 第9脚 串行数据输出MR 第10脚

17、 主复位(低电平)SHCP 第11脚 移位寄存器时钟输入STCP 第12脚 存储寄存器时钟输入OE 第13脚 输出有效(低电平) DS 第14脚 串行数据输入VCC 第16脚 电源应用设计;电路图图16:测量、转换电路图23 按键电路设计P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。图17:按键电路图24 显示电路设计LED点阵显示屏采用1个8*8共64个象素的点阵,通过LED点阵资料

18、判断出该点阵的引脚分布, 8*8的LED点阵为单色共阳模块,单点的工作电压为正向(Vf)=1.8v,正向电流(if)=8-10MA。静态点亮器件时(64点全亮)总电流为640mA总电压为1.8v,总功率为1.15w.动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160mA。从Proteus元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,

19、则右边8个引脚是行线)。然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。连接好的16×16点阵如下图所示:图18:16*16点阵连接成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如下图所示:图19:16*16点阵效果图可以看到,原来杂乱的连线现在已经几

20、乎全部隐藏了,一块16×16的LED点阵做成了。需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。然后,我们将其保存,以便以后使用。图20:16×16的LED点阵4.系统调试与分析4.1调试内容及实验现象图21:滚动显示效果心得体会本次课程设计完成了一个基于51单片机的几个程序,在这次难得的课程设计过程中,锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有

21、了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。参考文献1 单片机原理、应用与PROTEUS仿真,张靖武、周灵彬,电子工业出版社,2008.8 2 KEIL Cx51 V7.0单片机高级语言编程与Uvision2应用实践,徐爱钧、彭秀华,电子工业出版社,2008.5 3基于Proteus的电路与PCB设计,周灵彬、任开杰,电子工业出版社,2010.8 4单片机原理及应用,张毅刚、彭喜元、彭宇,高等教育出版社,2010.5 5AT89系列单片机原理及接口技术,王幸之,北京航空航天大学出版社,2004.9 6 基于

22、Proteus的单片机可视化软硬件仿真,林志琦,北京航空航天大学出版社,2006.9.附录1:实验一硬件原理图附录2:实验一程序清单20#include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code Duan_Code= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar code Wei_Code= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;sbit CLK=P27; /时钟信号s

23、bit ST=P26; sbit K1=P10;sbit EOC=P25; sbit OE=P24; sbit ALE=P26;sbit RED=P16; sbit YELLOW=P15; sbit BEEP=P17; uchar Data_Buffer=0,0,0,0; void Data_Process(uchar); void delay_nms(uint nms);void SEG7_Static_Display(uchar,uchar); void SEG7_1Static_Display(uchar,uchar); void SEG7_1Dynamic_Display(uchar

24、n);void SEG7_Dynamic_Display(void); void delay_500us(void); void Beep(void); void main() BEEP=1; RED=1; YELLOW=1; TMOD &=0xf0; TMOD |=0x02; TH0=0x14; TL0=0x14; EA=1; ET0=1; TR0=1; while(1) if(K1=0) ST=0;ST=1;ST=0; while(EOC=0); OE=1; Data_Process(P3);OE=0; SEG7_Dynamic_Display();if(K1=1) SEG7_1D

25、ynamic_Display(4); void Data_Process(uchar d) uint Result; d=175.0;Result=(int)d;Data_Buffer0=(50000/500*Result/100*10)/1000; Data_Buffer1=(50000/500*Result/100*10)%1000/100; Data_Buffer2=(50000/500*Result/100*10)%1000%100/10;Data_Buffer3=(50000/500*Result/100*10)%1000%100%10;if(Result>150) SEG7_

26、Dynamic_Display(); RED=RED; Beep(); if(Result>=70&&Result<=150) RED=1; YELLOW=1; SEG7_Dynamic_Display(); if(Result<70) SEG7_Dynamic_Display(); Beep(); YELLOW=YELLOW; void SEG7_Static_Display(uchar Num,uchar Position) P2=0xff; P0=Duan_CodeNum; P2=Wei_CodePosition; void SEG7_1Static_D

27、isplay(uchar Num,uchar Position) P2=0xff; P0=Duan_CodeNum|0x80;/小数点P2=Wei_CodePosition; void SEG7_Dynamic_Display(void) uint i;SEG7_Static_Display(Data_Buffer0,0);delay_nms(2);SEG7_Static_Display(Data_Buffer1,1);delay_nms(2);SEG7_1Static_Display(Data_Buffer2,2);delay_nms(2);SEG7_Static_Display(Data_

28、Buffer3,3);delay_nms(2); void SEG7_1Dynamic_Display(uchar n) uchar i;for(i=0;i<n;i+) SEG7_Static_Display(0,i); delay_nms(2); void Timer0_INT() interrupt 1 CLK=CLK; void Beep(void) uchar i;for(i=0;i<100;i+) delay_500us(); BEEP=BEEP; BEEP=1; void delay_500us(void) uchar t; for(t=0;t<60;t+) ;

29、void delay_nms(uint nms) uchar t; while(nms-) for(t=0;t<120;t+); 附录3:实验二硬件原理图附录4:实验二程序清单#include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar code Duan_Code = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;uchar code Wei_Code = 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xb

30、f,0x7f;sbit k1=P10;sbit k2=P13;uchar i,key_flag_index;long int second_counts;bit key_state;/定义按键状态void delay_500us(void);void delay_nms(uint nms);void dynamic_display(uchar ,uchar );void SEG7_dynamic_display(uchar,uchar);void display(void);void key_event_handle(void);void timer1_initial(void);int ma

31、in(void) i=0;k2=1; second_counts=0;key_flag_index=0;key_state=1;timer1_initial();while(1)display();if(key_state!=k2)delay_nms(20);if(key_state!=k2) key_state=k2;key_event_handle();if(k1=0)delay_nms(20);if(k1=0) second_counts=0;void delay_500us(void)uchar t;for(t=0;t<60;t+);void delay_nms(uint nms

32、)uchar t;while(nms-)for(t = 0;t < 120;t+);void SEG7_dynamic_display(uchar num,uchar pos)P3=0xff;P0=Duan_Codenum;P3=Wei_Codepos;if(pos=6)P0|=0X80;void display(void) uchar i; uchar a6a0=second_counts%10;a1=(second_counts%100)/10;a2=second_counts%1000/100;a3=second_counts%10000/1000;a4=second_counts

33、%100000/10000;a5=second_counts/100000; for(i=0;i<6;i+) SEG7_dynamic_display(ai,7-i);delay_nms(1); void key_event_handle(void)if(key_state=0)key_flag_index+;if(key_flag_index=3)key_flag_index=1;switch(key_flag_index) case 1:EA=1;ET1=1;TR1=1;break;case 2:EA=0;ET1=0;TR1=0;break;void timer1_initial(v

34、oid) TMOD&=0x0f;TMOD|=0x10;TH1=(65536-20*11059200/12/1000)/256;TL1=(65536-20*11059200/12/1000)%256;void timer1_int(void) interrupt 3TH1=(65536-20*11059200/12/1000)/256;TL1=(65536-20*11059200/12/1000)%256;if(+i=5) i=0;second_counts+;if(second_counts=100000)second_counts=0;附录5:实验三硬件原理图附录6:实验三程序清单#

35、include <reg51.h>#define uchar unsigned char#define uint unsigned int sbit si=P30; sbit sck=P31; sbit rck=P32;sbit L=P10;sbit STOP=P11;sbit R=P12;sbit fmq=P36;void delay1ms(uint);uchar i,j,k,zb;uchar xsz32,xsz132 ; uchar code smsg8 =0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;uchar code wz32=0xFF,

36、0xF7,0xFF,0xE0,0x03,0xFF,0x7F,0xFF,0xBF,0xFF,0x01,0xC0,0xDF,0xFD,0xEF,0xFB,0xF3,0xE7,0xEC,0x9B,0xEF,0xFB,0xEF,0xFB,0xEF,0xFB,0xF7,0xFB,0xF7,0xFB,0xFB,0xFB,/*"乔",0*/0xFF,0xFF,0x03,0xE0,0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0xFB,0xEF,0x7F,0xFF,0xEF,0xEE,0xED,0xDE,0xED,0xB7,0xED,0xB7,0x1E,0xF0,0xFF,0xFF,/*"思",1*/0xF7,0xFB,0xF7,0xFB,0xF7,0xFD,0xE7,0xFD,0xD5,0xEE,0x75,0xDF,0x35,0x80,0xF6,0xBF,0xF7,0xFF,0x77,0xC0,0x77,0xDF,0x77,0xDF,0x77,0xDF,0x77,0xDF,0x77,0xC0,0x77,0xDF,/*"怡",2*/;void fs(uchar a)/移动

温馨提示

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

评论

0/150

提交评论