您好,欢迎访问三七文档
单片机课程设计报告实验五A/D转换实验报告系别物理与电子工程学院年级专业班级学号学生姓名指导教师设计时间常熟理工学院课程设计报告1目录1.题目...................................22.实验要求...............................22.1实验目的............................22.2实验内容............................23.总体设计..............................23.1硬件设计...........................23.2软件设计...........................44.运行结果.............................75.总结与体会............................76.参考文献..............................8常熟理工学院课程设计报告21.题目A/D转换实验2.实验要求2.1:实验目的1.了解典型AD芯片结构与功能;2.掌握ADC0809与8051接口电路设计;3.掌握查询和中断方式的AD编程。2.2:实验内容1、编写编制程序实现锯齿波、三角波、正弦波输出函数;voidwave_rect(void){}voidwave_stair(void){}voidwave_sin(void){}其中wave_sin()可采用查表法(根据提供的mysin.h)2、设计三个独立按键,通过按键实现各波形的输出。3.总体设计3.1硬件设计1.AD转换器概述随着数字技术,特别是计算机技术的飞速发展,在现代控制、通信及检测领域中,为提高系统性能指标,对信号的处理无不广泛地采用了数字计算机技术。由于系统的实际对象往往都是一些模拟量(如:温度、速度、压力、电压、电流、图像等),要使计算机或数字仪表能识别、处理这些信号,必须首先将这些模拟信号转换成数字信号;而经计算机分析、处理后输出的数字量往往需要将其转换为相应的模拟信号才能为执行机构所接收。这样就需要一种能在模拟信号与数字信号之间起桥梁作用的电路-模/数转换器(A/D:AnalogtoDigitalConverter)和数/模转换器(D/A:DigitaltoAnalogConverter)。也就出现了单片机的模/数转换(A/D)和数/模转换(D/A)的接口问题。2.A/D转换器分类按转换原理可分为:计数式、双积分式、逐次逼近式、并行式。3.ADC0809与典型电路常熟理工学院课程设计报告34.外部RAM读写操作(1)外部RAM寻址1_变量绝对寻址type[memory_space]variable_name_at_constant;structlink{structlinkidata*next;charcode*test;};structlinklistidata_at_0x40;/*listatidata0x40*/charxdatatext[256]_at_0xE000;/*arrayatxdata0xE000*/unsignedcharxdataPA8255_at_0x8000;/*intatxdata0x8000*/a=PA8255;//PA输入PA8255=b;//PA输出(2)外部RAM寻址2_宏定义ABSACC.H提供了下列方便的宏(Macro)定义//ABSACC.H#defineCBYTE((unsignedcharvolatilecode*)0)#defineDBYTE((unsignedcharvolatiledata*)0)#definePBYTE((unsignedcharvolatilepdata*)0)#defineXBYTE((unsignedcharvolatilexdata*)0)#defineCWORD((unsignedintvolatilecode*)0)#defineDWORD((unsignedintvolatiledata*)0)#definePWORD((unsignedintvolatilepdata*)0)#defineXWORD((unsignedintvolatilexdata*)0)#include<absacc.h>#definePA8255XBYTE[0x7FFF]常熟理工学院课程设计报告43.2软件设计源程序:#includereg51.h#includeabsacc.h#defineCOUNT5000#defineAIN0XBYTE[0x0000]sbitEOC=P3^3;unsignedcharLED_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//unsignedcharYLED_seg[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0xf7,0xff,0xef};unsignedcharLED_bit[4]={0x01,0x02,0x04,0x08};unsignedcharLED_buf[3]={0};unsignedcharLED_S;unsignedcharLED_B;//fosc=11.0592MHz,9600bps//串口初始化函数9600bpsvoidSbuf_Init(void){SCON=0x50;//10位方式//波特率设置PCON=0x00;//波特率不倍增TMOD=(TMOD&0x0f)|0x20;//T1方式2TH1=0xfd;//T1计数初值TL1=0xfd;//ES=1;EA=1;//串口中断使能TR1=1;//启动定时器}voidT0_ISR(void)interrupt1常熟理工学院课程设计报告5{staticunsignedchari=0;TH0=(65536-COUNT)/256;TL0=(65536-COUNT)%256;if(i==2){P2=~LED_bit[i];//先送位码P1=LED_seg[LED_buf[i]]|0x80;//再送段码}else{P2=~LED_bit[i];//先送位码P1=LED_seg[LED_buf[i]];//再送段码}i++;if(i==3)i=0;}voidTimer0_Init(void){TMOD=(TMOD&0xf0)|0x01;TH0=(65536-COUNT)/256;TL0=(65536-COUNT)%256;ET0=1;EA=1;常熟理工学院课程设计报告6TR0=1;}voiddelay(unsignedintn){unsignedinti;for(i=0;in;i++);}voidmain(void){unsignedinti=0,ad,pre_ad=0;Sbuf_Init();Timer0_Init();while(1){AIN0=0;//启动转换i=i;i=i;delay(20);while(EOC==0);//等待AD转换结束ad=AIN0;//读AD转换结果if(ad!=pre_ad){//ad=ad/51;LED_buf[2]=(ad*100/51)/100;LED_buf[1]=(ad*100/51)/10%10;LED_buf[0]=(ad*100/51)%10;常熟理工学院课程设计报告7}pre_ad=ad;}}4.运行结果5.总结与体会通过本次实验,我们了解了典型AD芯片结构与功能;掌握了ADC0809与8051接口电路设计的方法以及查询和中断方式的AD编程,顺利地完成了教学目标。在实验过程中,遇到了一些困难,比如输出的模拟量有误差,我们排查了很久,发现计算的语句并没有错误,而是由于计算的数值远远超出常熟理工学院课程设计报告8了定义类型的范围,所以我们把字符型换成整型,实验结果就正确了。虽然这只是一个很小的错误,发现错误和改正错误的过程却让我们学到了很多,我们没有依赖别人,而是自己一点一点地排查,这样增强了我们的自信心,并且改掉了心理上事事依赖别人的坏习惯。6.参考文献单片机的C语言应用程序设计主编孙娟马忠梅北京航空航天大学出版社新概念51单片机C语言教程主编郭天祥电子工业出版社社
本文标题:单片机实验报告
链接地址:https://www.777doc.com/doc-4848632 .html