51单片机数模转换实验报告
- 格式:docx
- 大小:291.15 KB
- 文档页数:4
实验名称:数模转换器DAC0832设计实验学生姓名:xx 学号:xx 班级:测控xx班时间:课程名称:微机机原理及应用教师:成绩:一、实验目的1)了解DAC0832芯片引脚、内部结构及工作原理;2)掌握应用单片机I/O端口控制DAC0832实现数模转换的方法;二、实验内容1. 通过单片机I/O端口控制DAC0832实现数模转换,控制方式采用单缓冲方式,通过按键TRI/SIN选择输出,分别产生锯齿波、方波、正弦波。
1)绘制DAC0832与单片机接口电路原理图;2)参考PPT课件内容,设计程序,实现信号选择输出功能;2. 扩展功能:增加按键,通过按键控制调节输出信号的频率变化。
接口电路图设计参考下图所示:三、设计参考:正弦信号数据表:uchar code sine_tab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6 f,0x72,0x76,0x79,0x7c,0x80};四.实验报告①实现调频功能的中断程序:void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++; //外部中断0触发一次,延时程序调用次数加1}②延时程序:void delay(){int i;for(i=0;i<10;i++){}} //延时子程序③锯齿波程序:#include<reg51.h>sbit MR=P2^7;void main (void){int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=num;for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:④正弦波程序#include<reg51.h>sbit MR=P2^7;void main (void){unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=sine_tab[num];for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:⑤方波程序:#include<reg51.h>sbit MR=P2^7;void main (void){ int num;int j;MR=0;while(1){int b;for(num=0;num<=255;b++){if(num<128){ P1=0x00;for(j=0;j<counter;j++)//当counter小于128时,P1输出0x00对应低电平delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应高电平for(j=0;j<counter;j++)delay();}}}调频前:调频后:主程序#include<reg51.h>sbit MR=P2^7;sbit P2_0=P2^0;sbit P2_1=P2^1;int counter=0;//设置延时程序次数变量counter,调节频率unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0 x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x5 1,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29, 0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x 0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x 1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43 ,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0 x72,0x76,0x79,0x7c,0x80}; //正弦转换字符void delay(){int i;for(i=0;i<10;i++){}}//延时子程序void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++;//外部中断0触发一次,延时程序调用次数加1}void main(){int num;int j;EA=1;//中断总允许使能EX0=1;//外部中断0使能IT0=1;//外部中断0下降沿触发MR=0;//P2^7输出低电平,芯片正常工作while(1){if(P2_0==0&&P2_1==1) //P2_1为高电平,P2_0为低电平输出锯齿波{for(num=0;num<256;num++){P1=num; //P1直接输出numfor(j=0;j<counter;j++)delay(); //调用延时子程序}}if(P2_0==1&&P2_1==0)//P2_1为低电平,P2_0为高电平输出正弦波{P1=sine_tab[num];//P1端口输出正弦波字符数组for(j=0;j<counter;j++)delay(); //调用延时子程序}}if((P2_0==0&&P2_1==0)||(P2_0==1&&P2_1==1))//P2_1为低电平P2_0为低电平以及P2_1为高电平P2_0为高电平时输出矩形波for(num=0;num<256;num++){if(num<128)//当num小于128时,P1输出0x00对应低电平{P1=0x00;for(j=0;j<counter;j++)delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应低电平for(j=0;j<counter;j++)delay();}}}}五.总结在该实验的设计过程中,首先单独写出锯齿波、正弦波以及方波的程序,并写出延时程序以及外部中断0程序。
51单片机片内dac数模转换器的锯齿波信号的应用编程
51单片机片内DAC数模转换器可以将数字信号转换为模拟信号,其中锯齿波信号是常见的一种模拟信号类型。
在应用编程中,我们可以通过编写相应的代码实现锯齿波信号的产生和控制。
具体来说,首先需要初始化DAC数模转换器,设置相应的配置参数,包括数据格式、转换速率、输出电压等。
然后编写产生锯齿波信号的函数,通过一定的算法生成对应的数字信号,并将其转换为模拟信号输出。
在控制锯齿波信号的过程中,我们可以通过改变数字信号的参数,如频率、振幅等,来调整模拟信号的形态和特性。
除了产生单一的锯齿波信号外,我们还可以通过组合多个锯齿波信号,实现更加复杂的模拟信号。
比如,可以将多个锯齿波信号叠加在一起,形成正弦波信号或者其他波形信号。
在实际应用中,这种方法常用于音频信号的处理和合成。
总的来说,51单片机片内DAC数模转换器的锯齿波信号应用编程是一项重要的技术,在电子音乐、信号处理等领域具有广泛的应用前景。
- 1 -。
综合课程设计题目基于51单片机实现ADC0808数模转换与显示毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
单片机控制ADC0809的模数转换与显示一、实验内容和要求本题目对单片机控制ADC0809(Proteus的元件库中没有ADC0809,用ADC0808来代替)的通道3的电压模拟量进行模数转换,转换为数字量后,显示在3位数码管上。
调节图中的电位器,可观察到数码管显示的电压值在变化。
二、实验主要仪器设备和材料计算机一台三、实验方法、步骤及结果测试所有操作都在ISIS中进行,步骤如下。
(一)、Proteus电路设计1.从Proteus库中选取元器件(1)AT89C51:单片机;(2)RES:电阻;(3)7SEG-MAPX4-CC-BLUE(4)CAP、CAP-ELEC:电容、电解电容(5)CRYSTAL:晶振;(6)BUTTON:开关(7)BUTTON(8)ADC0808(9)POT-HG(10)LED-YELLOW(11)MAX7219(12)RESONATOR2.放置元器件、放置电源和地、连线、元器件属性设置、电气检测所有操作都在ISIS中进行完成的电路图设计如图(二)、源程序设计1、流程图2、通过Keil u Vision4建立工程,再建立源程序文件源程序如下主机程序:LED_0 EQU 30HLED_1 EQU 31HLED_2 EQU 32HADC EQU 35HCLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7ORG 00HSJMP STARTORG 0BHLJMP INT_T0START:MOV LED_0, #00HMOV P2,#0FFHMOV LED_1,#00HMOV LED_2,#00HMOV DPTR,#TABLEMOV TMOD,#02H ;设置定时器工作方式2 MOV TH0,#245MOV TL0,#00HMOV IE,#82H ;开总中断和定时器0中断SETB TR0 ;启动定时器0WAIT:CLR STSETB STCLR STJNB EOC,$ ;判断A/D转换结束否SETB OE ;允许数据量输出MOV ADC,P3CLR OEMOV A,ADCMOV B,#51DIV ABMOV LED_2, AMOV A,BMOV B,#5DIV ABMOV LED_1, AMOV LED_0, BLCALL DISP ;跳至显示子程序SJMP WAITINT_T0: ;定时器T0中断子程序CPL CLOCKRETIDISP: ;显示子程序MOV A, LED_0MOVC A,@A+DPTRCLR P2.3 ;显示数码管右边第一位数字MOV P0,ALCALL DELAYSETB P2.3MOV A, LED_1MOVC A,@A+DPTRCLR P2.2 ;显示数码管右边第二位数字MOV P0,ALCALL DELAYSETB P2.2MOV A,LED_2MOVC A,@A+DPTRCLR P2.1 ;显示数码管右边第三位数字ORL A,#80H ;显示小数点MOV P0,ALCALL DELAYSETB P2.1RETDELAY: ;延时子程序MOV R6, #10D1:MOV R7,#250DJNZ R7,$DJNZ R6, D1RETTABLE:DB 3FH, 06H, 5BH, 4FH, 66HDB 6DH, 7DH, 07H, 7FH, 6FHEND通过按钮“Build target”编译源程序,生成目标代码文件*.hex文件。
51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。
实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。
循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。
接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。
实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会看电路原理图;(3)制作51单片机学习板;(4)学会使用Keil C软件下载调试程序;用调试程序将51单片机学习板调试成功。
二、总原理图及元器件清单1.总原理图2.元件清单三、模块电路分析1. 最小系统:单片机最小系统电路分为振荡电路和复位电路,振荡电路选用12MHz 高精度晶振, 振荡电容选用22p和30p 独石电容;图 1 图 2复位电路使用RC 电路,使用普通的电解电容与金属膜电阻即可;图 3当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。
正常工作为低电平,高电平复位。
2. 显示模块:分析发光二极管显示电路:图 4发光二极管显示电路分析:它是半导体二极管的一种,可以把电能转化成光能,常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,产生自发辐射的荧光。
图中一共有五个发光二极管其中一个为电源指示灯,当学习板通电时会发光以指示状态。
其余四个为功能状态指示灯,实际作用与学习板有关分析数码管显示电路图 5数码管显示电路分析:数码管按段数分为七段数码管和八段数码管,图中所用为八段数码管(比七段管多了一个小数点显示位),按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管.共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
数码管主要用来显示经电路板处理后的程序的运行结果。
图中使用了八个八段数码管,可以显示八个0-15的数字。
使用数码管可以直观的得到程序运行所显示的结果.也可以显示预置在学习板上的程序,主要通过16个开关来控制。
综合课程设计题目基于51单片机实现ADC0808数模转换与显示毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
51单片机实验报告
实验目的:
本实验旨在让学生熟悉并掌握51单片机的基本知识和编程能力,进一步了解单片机的原理和应用。
实验内容:
本次实验主要包括以下几个内容:
1.熟悉51单片机的基本原理和结构;
2.学习51单片机的汇编语言编程;
3.使用51单片机进行简单的I/O控制;
4.学习串口通信的原理和编码。
实验步骤:
1. 配置开发环境:安装Keil C编译器和Proteus电路仿真软件;
2.学习汇编语言编程基础知识,包括寄存器的使用、指令的执行等;
3.编写第一个程序:实现将一个数字显示在数码管上;
4.学习I/O控制:通过按键来控制LED灯的亮灭;
5.学习串口通信:通过串口与计算机进行通信,实现数据的发送与接收。
实验结果:
在实验过程中,我成功编写了几个基本的程序,并在Proteus中进行
了仿真。
通过按键来控制LED灯的亮灭,也成功地使用串口进行了数据的
发送和接收。
通过实验,我更深入地理解了51单片机的工作原理和编程
方法。
实验总结:
通过本次实验,我对51单片机有了更深的理解,并掌握了一些基本
的编程技巧。
通过实际操作,我培养了自己的动手能力和问题解决能力。
作为一门基础课程,51单片机为我今后的学习打下了坚实的基础。
我相信,在今后的学习和实践中,我能够更加熟练地运用51单片机进行各种
应用和项目的设计。
该报告共计1200字。
参考资料:
[1]《单片机技术与应用》.吕春阳、吕立民、钱锋.电子工业出版社,2024年。
实验五、模数转换一、实验目的1、掌握A/D转换与单片机的接口方法;2、掌握A/D芯片TLC549的编程方法;3、掌握数据采集程序的设计方法;二、实验内容利用实验开发装置上的TLC549做A/D转换器,对电位器提供的模拟电压信号进行定时中断采样,结果在LED上进行显示。
A/D转换芯片 TLC549CLK P1.5 时钟位DAT P1.6 数据位CS P1.7 选片位VREF 接 +5V三、实验线路将TLC549的CLK接P1.5、DAT接P1.6、CS接P1.7,将模拟电压输入端连到电位器的电压输出端,并接万用表进行输入电压测量。
四、实验步骤在PC机输入源程序并汇编,然后下载到单片机上,进行调试。
调节电位器,电压从0V到5V变化,记录数码管的显示数值。
记录到表中。
五、实验报告(1) 整理好实验程序和实验记录,进行数据处理分析并做图。
(2) 数据采集中,如何实现精确的定时数据采集?(3) 数码管动态扫描显示程序设计中,显示刷新的时间如何确定?;++++++++++++++++++++++++++++++++++++++++++++++++++++++++CS BIT P3.0DAT BIT P3.1CLK BIT P3.2ADC DATA 30HORG 0000HMAIN: MOV SP,#60HWAIT: ACALL TLC549LCALL DELAYACALL TLC549 ;读取上次ADC值,并再次启动AD转换MOV A,ADCCPL AMOV P1,ASJMP WAITTLC549: CLR CLKCLR CS ;选中TLC549MOV R6,#8TLCAD: SETB CLKMOV C,DATRLC ACLR CLK ;DAT=0,为读出下一位数据作准备DJNZ R6,TLCADSETB CS ;禁能TLC549,再次启动AD转换SETB CLKMOV ADC,ARETDELAY: MOV R7,#250DJNZ R7,$RETEND实验六、模数转换一、实验目的1、掌握模数转换芯片TLC5620的接口技术。
51单片机综合学习系统——AD模数转换实验篇
庄建清;徐玮
【期刊名称】《电子制作》
【年(卷),期】2008(000)008
【摘要】大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了使用SPI总线的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习AD模数转换的基本原理与应用实例。
【总页数】4页(P21-24)
【作者】庄建清;徐玮
【作者单位】无
【正文语种】中文
【中图分类】TP273.22
【相关文献】
1.51单片机综合学习系统—1602字符型液晶显示篇 [J], 徐玮
2.51单片机综合学习系统——12864点阵型液晶显示篇 [J], 孙鹏
3.51单片机综合学习系统——红外线遥控篇 [J], 徐玮
4.51单片机综合学习系统——DS18B20温度实验篇 [J], 徐玮
5.8051单片机与AD7706型A/D组成的模数转换系统 [J], 李明贵
因版权原因,仅展示原文概要,查看原文内容请购买。
51单片机ADC0804模数转换学习数模转换器ADC0804 与单片机连接的原理图:这TX-1C 实验板上的ADC0804 和单片机连接的电路原理图。
左边的是ADC0804,右边的是74HC573 锁存器,锁存器同时又连接了单片机没画出。
ADC0804 的引脚CSAD 是片选引脚,因为是低电平有效所以当送0 时,我们就可以选中它工作了。
RD 也是低电平有效,是读信号的,WR也是低电平有效,当送0 时就可以启动A/D 开始转换了。
INTR 是转换结束引脚,同样也是低电平有效,当INTR 为0 时,表示转换结束了。
DB0-DB7 是转换后的数字信号输出端口。
AGND 和DGND 是接地的。
CLK R 和CLK IN(即19 和4 引脚)是用来给ADC0804 产生内部时钟脉冲的(接了一个RC 震荡电路)6 和7 端口是模拟信号的输入端,比如我们滑动电位器就能使模拟信号发生改变,这样经过A/D 转换后,输出的数字信号也就改变了。
20 引脚是接参考电平的。
下面这个程序是用单片机控制ADC0804 进行模数转换,当拧动实验板上的电位器(也就是一个滑动变阻器)时,数码管的前三位以十进制方式动态显示A/D 转换后的数字量。
代码如下:#include reg52.h //52 系列单片机头文件#include intrins.h //因为下面的程序用到了_nop_()函数,因此包含这个头文件#define uchar unsigned char#define uint unsigned int sbit dula=P2;//申明U1 锁存器的锁存端sbit wela=P2;//申明U2 锁存器的锁存端sbit adwr=P3;//定义AD 的WR(写信号)端口sbit adrd=P3;//定义AD 的RD(读信号)端口uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,。
51单片机AD转换代码及仿真1. 任务概述本文主要探讨51单片机模拟信号的AD(模数转换)过程以及相关代码的编写和仿真。
通过本文,读者将了解到51单片机的AD转换原理、AD转换的流程、具体代码实现方法以及如何使用仿真软件进行验证和调试。
2. 51单片机的AD转换原理[为了实现模拟信号到数字信号的转换,51单片机内置了一部分模拟数字转换器(ADC)。
ADC是一种电子元器件,它可以将模拟信号转换成数字信号。
模拟信号是连续的,而数字信号是离散的。
模拟信号转换成数字信号的过程叫做AD(模数转换),其原理可以简单描述如下:]1.首先,模拟信号通过模拟输入引脚进入51单片机中的ADC模块。
2.ADC模块将模拟信号进行采样,即对信号进行离散化处理,将离散化后的采样值存储在一个寄存器中。
3.采样值随后会经过数字化处理,变成具有一定精度的数字量。
4.数字量经过处理后,嵌入系统可以根据其数值进行分析、判断和控制。
3. 51单片机的AD转换流程[51单片机的AD转换流程可以分为以下几个步骤:]3.1 设置ADC模块在使用51单片机进行AD转换之前,需要先设置ADC模块的相关参数,如引脚选择、参考电压选择、时钟频率等。
这些设置可通过写入ADC相关的寄存器来完成。
3.2 启动转换设置完成后,可以通过设置一个特定的位来启动AD转换。
一旦AD转换开始,51单片机将根据设置的参数自动进行转换操作。
3.3 等待转换完成在启动AD转换后,需要等待转换完成。
此时,可以通过查询ADC模块的状态位来判断转换是否完成。
3.4 读取转换结果转换完成后,可以通过读取ADC寄存器的值来获取AD转换结果。
这个值将会代表输入模拟信号的数字化数值。
4. 51单片机AD转换的代码实现[以下给出一个简单的51单片机AD转换的代码示例。
本示例假设选用了P1口作为ADC的输入引脚,使用AVCC作为参考电压,时钟频率为12MHz。
]#include <reg52.h>// 引入51单片机的头文件sbit ADC_IN = P1^0; // 定义P1.0为ADC输入引脚void ADC_Init() {// 设置ADC参考电压为AVCCADMUX = (1<<REFS0);// 设置ADC输入通道为ADC0(P1.0)ADMUX |= (1<<MUX0);// 启用ADC模块,设置ADC时钟频率为F_CPU/8ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);}unsigned int ADC_Read() {unsigned int adc_value = 0;// 设置ADC转换开始位ADCSRA |= (1<<ADSC);// 等待转换完成while (ADCSRA & (1<<ADSC));// 读取ADC寄存器的值adc_value = ADCL;adc_value |= (ADCH<<8);return adc_value;}void main() {unsigned int adc_result = 0;ADC_Init(); // 初始化ADC模块while (1) {adc_result = ADC_Read(); // 读取ADC转换结果// 在此处对结果进行处理或输出}}在以上示例代码中,首先通过ADC_Init()函数对ADC进行初始化设置。
51单片机实验报告总结51单片机实验是必修课程之一,目的是让学生了解和掌握嵌入式系统开发的基本原理和方法。
本次实验涵盖了单片机的基本操作、输入输出控制、时序控制、通信技术、中断处理、PWM技术等内容,让我们一步步进入嵌入式系统的世界。
通过这些实验,我们深刻体会到嵌入式系统开发的艰辛和复杂程度。
在每个实验中,我们需要认真思考实验目的,设计符合要求的电路,编写精确并且有效的程序。
我们还要学会阅读芯片数据手册,并对不同的芯片进行适配,合理利用芯片的资源。
这些实战经验对我们今后从事嵌入式系统开发会有很大帮助。
在这些实验中,我们学会了使用单片机进行输入输出控制。
通过外部电路(比如数码管、LED灯、按键等),让单片机可以感知外界的状态变化,并根据程序控制输出对应的信号。
我们实现了按键控制LED灯亮灭、数码管显示数字和摆动等功能。
在实验中我们还学习了流水灯和矩阵键盘控制的实现方法,这给我们后续实验和项目提供了很好的思路和解决方案。
在时序控制实验中,我们掌握了计时器和定时器的基本原理和使用方法。
它们可以精确地生成特定频率和宽度的高低电平,也能间歇性地输出脉冲信号,这为摆线电机的控制和PWM驱动电机等实际应用打下了基础。
通过这些实验,我们更加深入地了解到计时器、定时器和中断的运作原理和使用方法。
在串口通信和I2C通信实验中,我们还学习了如何使用串口和I2C通信实现数据传输,可以将单片机与其他设备进行沟通和交流。
在日常工程开发中,这样的应用场景非常广泛,例如单片机与PC的数据传输、I2C总线上多个设备之间的通信等。
在PWM技术实验中,我们学习了如何使用定时器和PWM输出控制电机转速,这些技术可以实现高精度的电机控制和驱动,这是在机器人控制、智能家居等应用中必不可少的技术。
在这些实验中,我们不仅学会了单片机的基本原理和使用方法,而且也经历了从理论到实践的探索和体验。
这些实验的收获在于训练我们的动手实践能力,增强我们的团队合作精神,提高我们的问题解决能力,也让我们更加深入地了解嵌入式系统的精髓。
电子科技大学UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 综合课程设计题目基于51单片机实现ADC0808数模转换与显示学生某某学号专业学院行政班号2014年6月15日摘要本课程设计以AT89C51单片机为核心,实现ADC0808的数模转换与显示,然后把转换后的结果显示在数码管上。
关键字:数据采集,A/D转化器,ADC0808,逐次逼近式,单片机目录一、设计目的1二、设计要求和设计指标1三、设计内容13.1 芯片简介 (1)A/D转换模块133.2电路设计 (7)3.3程序设计 (8)四、本设计改良建议10五、总结11六、主要参考文献12附录12一、设计目的本课程设计的目的就是要锻炼学生的实际动手能力。
在理论学习的根底上,通过完成一个具有综合功能的小系统,使学生将课堂上学到的理论知识与实际应用结合起来,对电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立设计单片机应用系统的开发设计工作打下一定的根底。
二、设计要求和设计指标以AT89C51单片机为核心,实现ADC0808的数模转换与显示。
转换后的结果显示在数码管上。
三、设计内容3.1 芯片简介A/D转换模块ADC0808是带有8位A/D转换器、8路多路开关以与微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
[1]〔1〕ADC0808的内部逻辑结构由如下图3-1-1可知,ADC0808由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端高电平时,才可从三态输出锁存器取走转换完的数据。
图3-1-1 ADC0808的内部逻辑结构〔2〕. ADC0808引脚结构ADC0808各脚功能如下:D7-D0:8位数字量输出引脚。
单片机AD模数转换实验报告实验目的:通过单片机完成模数转换实验,了解AD模数转换的原理,掌握AD转换器的使用方法。
实验设备:1.STC89C52RC单片机开发板2.电位器3.电阻4.电容5.连接线实验原理:AD模数转换是将连续的模拟信号转换为离散的数字信号的过程。
在单片机中,通过ADC模块将模拟电压转换为数字量。
STC89C52RC单片机具有内置的10位ADC模块,可以将模拟电压转换为0-1023之间的数字量。
实验步骤:1.连接电位器、电阻和电容的引脚到单片机上。
2.在单片机的引脚配置中,将ADC0的引脚配置为模拟输入。
3.在主函数中初始化ADC模块。
4.使用AD转换函数来获取模拟电压的数字量。
5.将数字量通过串口输出。
实验结果:经过以上步骤,我们成功地将连续的模拟信号转换为了数字信号,并通过串口输出。
通过电位器、电阻和电容的调整,我们可以观察到不同的输入信号对应的数字量。
实验总结:通过本次实验,我们深入了解了AD模数转换的原理,并学会了使用单片机的ADC模块来完成模数转换。
在实验过程中,我们还发现了一些问题和注意事项。
首先,在连接电路时,需要将模拟输入连接到ADC0引脚,并在引脚配置中正确设置。
其次,在初始化ADC模块时,需要根据实际情况设置参考电压和转换速率等参数。
最后,在使用AD转换函数时,需要根据需要进行适当的调整和计算,以获取正确的数字量。
总体来说,本次实验帮助我们更好地理解了AD模数转换的原理和单片机的ADC模块的使用方法。
通过实际操作,我们掌握了实验步骤和注意事项,提高了实际操作的能力和理论知识的运用。
这对我们的电子技术学习和应用都起到了积极的促进作用。
51单片机应用设计与仿真---------------基于Keil C 与Proteus目录第一章51单片机结构和原理…………………………………21.151单片机的结构…………………………………2第二章相关编程软件与仿真软件的介绍………………………32.1 从标准C转向Keil C …………………………………32.2 Keil C上机的基本方法…………………………………32.3 Proteus简介……………………………………………4第三章基于单片机的PID温度控制系统………………………53.1 PID温控器简介……………………………………………53.2 8051存储系统扩展和PID温控器的存储系统设计………………53.2.1 PID温控器存储系统设计 (5)3.3 人机接口和PID温控器的输入/输出设计及仿真…………………63.3.1 八段LED显示器 (6)3.3.2 LED显示器的显示方式 (8)3.3.3 PID温控器LED显示及仿真 (9)3.3.4键盘监测基本原理 (12)3.3.5 PID温控器的键盘设计及其Proteus仿真 (13)3.3.6 PID温控器的炉温采样接口及仿真 (16)第四章总结与展望 (22)参考文献 (22)第一章51单片机结构和原理单片微型计算机简称单片机,也称为微控制器(Micro Controller Unit),英文缩写为MCU.单片机的结构及功能均是按照工业控制要求而设计的,它把微型计算机的宫格功能部件(中央处理器CPU、随机存取存储器RAM、只读存储器ROM、输入输出I/O接口、定时器/计数器以及串行通信接口等)集成在一块芯片上,构成一个完整的微型计算机,故又称为单片微型计算机。
除工业领域外,单片机还广泛应用于各种民用电子、电器之中。
MCS-51是由美国INTEL公司20世纪80年代生产的一系列8位单片机的总称,此系列单片机包括很多型号,如:8031、8051、8751、8032、8052等,其中8051是最早最典型的产品。
51单片机数模转换三角波实验报告
一、实验目的
1.熟悉DAC0832的结构和用法
2.掌握DAC0832与80C51连接方法并输出锯齿波
二、实验器材
安装有驱动程序的电脑、51单片机开发板、烧录器
三、实验原理
内部结构图如下:
有三种工作方式,这里只用直通方式,所谓直通方式就是使DAC8032内部
的两个寄存器(输入寄存器和DAC寄存器)处于不锁存状态,数据一旦到
达输入端di7—di0,就直接送入D/A转换器,被转换成模拟量。输入数据变
化,D/A转换器的输出模拟量跟着变化。为实现直通方式,必须使ILE为高
电平,
CS、12WRWRXFER、和
端都须数字接地,这时锁存信号LE1、LE2均为高电
平,输入寄存器和DAC寄存器便均处于不锁存状态。
程序流程图:
开始
设置D/A地址
将00h初值赋值
给A
将A的值赋值到
外部端口
修改A的值
返回循环
根据流程图编程:
MOV DPTR,#7FFFH
MOV A,#00H
LOOP:MOVX @DPTR,A
DEC A
AJMP LOOP
END
使用Proteus对电路进行绘制如下图所示:
四、实验结果及总结
总结:通过本次试验我完全掌握了DAC0832的基本结构,并能熟练地
使用它做出基本的模拟信号,对我以后的工作有很大的帮助。在实验的过程
中程序很好编写也很好理解,但是在连接线路时老出错,尽管把程序写进去
了但是出不来结果很郁闷,最后经过不断检查,查找资料才找到少连了一根
从VREF到电源的线路,通过本次试验我再次注意到简单的问题,出现错误
的时候不好找到问题所在,所以以后实验再不能粗心大意了,不能看轻每个
实验。