单片机课程设计报告ADC转换生成正弦波形.docx

上传人:b****6 文档编号:8219535 上传时间:2023-01-29 格式:DOCX 页数:15 大小:217.65KB
下载 相关 举报
单片机课程设计报告ADC转换生成正弦波形.docx_第1页
第1页 / 共15页
单片机课程设计报告ADC转换生成正弦波形.docx_第2页
第2页 / 共15页
单片机课程设计报告ADC转换生成正弦波形.docx_第3页
第3页 / 共15页
单片机课程设计报告ADC转换生成正弦波形.docx_第4页
第4页 / 共15页
单片机课程设计报告ADC转换生成正弦波形.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告ADC转换生成正弦波形.docx

《单片机课程设计报告ADC转换生成正弦波形.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告ADC转换生成正弦波形.docx(15页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告ADC转换生成正弦波形.docx

单片机课程设计报告ADC转换生成正弦波形

单片机课程设计报告ADC转换生成正弦波形

单片机课程设计报告

题目:

ADC转换生成正弦波形

专业:

测控技术与仪器

班级:

姓名:

学号:

指导教师:

2015年1月14日

第1章系统设计方案第2章系统硬件设计

2.1主控制器电路

2.2模数转换电路

2.3显示电路第3章系统软件设计

3.1系统整体流程

3.2直流电压采集

3.3交流电压采集第4章系统调试

4.1xxx的调试

4.2xxx的调试

第5章结论与总结

5.1结论

5.2总结

第1章系统设计方案

使用STC89c52单片机与ADC0804芯片实现A/D转换直流电压采集,转换之后在LCD1602上显示所采集的直流电压值。

使用STC89c52单片机与ADC0804芯片实现A/D转换交流电压采集,转换之后在KS0108上显示交流电压动态波形。

第2章系统硬件设计

2.1主控制器电路

(1)AT89C52单片机

(2)晶振电路

(3)复位电路

2.2模数转换电路

2.3显示电路

(1)LCD1602显示电路

(2)KS0108显示电路

第3章系统软件设计

3.1系统整体流程图

开始

显示初始化

进行A/D转换数字信号处理转化显示数据

调用显示函数

结束

3.2直流电压采集程序

(1)直流电压采集主程序

#include#include"adc0804.h"#include"lcd1602.h"

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

voiddatds();

voiddisplay();

uchardat=0;

uchara[]="thevalueis";

ucharb[]={0,0};

voidmain()

{

uchari=0;

init();

for(i=0;i<13;i++)

{

comd(0x80+i);

write(a[i]);

}

while

(1)

{

datc();

dat=datw();

datds();

display();

}

}

voiddatds()

{

b[0]=dat*5/255;

b[1]=dat*50/255%10;

}

voiddisplay()

{

comd(0xc4);

write(b[0]+0x30);

comd(0xc5);

write('.');

comd(0xc6);

write(b[1]+0x30);

comd(0xc7);

write('V');

}

(2)头文件lcd1602.h

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

voidwrite(uchardatee);

voidcomd(ucharcom);voidinit();

sbiten=P3^4;

sbitrs=P3^5;

voidinit()

{

en=0;

comd(0x38);

comd(0x0c);

comd(0x06);

comd(0x01);

}

voidcomd(ucharcom){

rs=0;

delay(50);

P0=com;

delay(50);

en=1;

delay(50);

en=0;

delay(50);

}

voidwrite(uchardatee)

{

rs=1;

delay(50);

P0=datee;

delay(50);

en=1;

delay(50);

en=0;

delay(50);

}

(3)头文件adc0804.h#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

chardatw();

voiddatc();

voiddatd();

voiddelay(uintt);

sbitrd=P3^1;sbitwr=P3^2;sbitintr=P3^3;sbitcs=P3^0;

voiddatc()//写命令{

cs=0;

wr=1;

delay(200);

wr=0;

delay(200);

wr=1;

while(intr);

cs=1;

}

chardatw()//读数据{

ucharj=0;

cs=0;

rd=1;

delay(200);

rd=0;

delay(200);

j=P1;

rd=1;

cs=1;

returnj;

}

voiddelay(uintt)

{while(t--);}

3.3交流电压采集程序

(1)交流电压采集主程序

#include

#include"adc0804.h"#include"lcd.h"

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

voiddatedis();

voiddisplay();

voidqing(ucharq2);voidqingp();

sbitcs1=P0^1;

sbitcs2=P0^2;

uchardat=0;

uchari;

ucharj,da;

voidmain()

{

init();

while

(1)

{cs1=0;cs2=1;

qingp();

display();

cs2=0;cs1=1;

qingp();

display();

}

}

voidqing(ucharq2){

ucharq1;

for(q1=0;q1<8;q1++)

{

comd(184+q1);

comd(0x40+q2);

write(0);

}

}

voidqingp(){

ucharq1,q2;

for(q1=0;q1<8;q1++)

{

comd(184+q1);

comd(0x40);

for(q2=0;q2<64;q2++)

write(0);

}

}

voiddisplay()

{

ucharx=0;

for(x=0;x<64;x++)

{

//qing(x);

datc();

dat=datw();

datedis();

comd(i);

comd(64+x);

write(j);

}

}

voiddatedis(){ucharj0=1;

da=dat/4;

i=184+da/8;

j=j0<<(da%8);

}

(2)头文件lcd.h

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

voidwrite(uchardatee);voidcomd(ucharcom);voidinit();

sbiten=P3^6;

sbitrs=P3^7;

voidinit()

{

en=0;

comd(4);

comd(0x3f);

}

voidcomd(ucharcom){

rs=0;

delay(50);

P2=com;

delay(50);

en=1;

delay(50);

en=0;

delay(50);

}

voidwrite(uchardatee){

rs=1;

delay(50);

P2=datee;

delay(50);

en=1;

delay(50);

en=0;

delay(50);

}

(3)头文件ADC0804.h#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

chardatw();

voiddatc();

voiddatd();

voiddelay(uintt);

sbitrd=P3^1;sbitwr=P3^2;sbitintr=P3^3;sbitcs=P3^0;

voiddatc()//写命令{

cs=0;

wr=1;

delay(200);

wr=0;

delay(200);

wr=1;

while(intr);

cs=1;

}

chardatw()//读数据{

ucharj1=0;

cs=0;

rd=1;

delay(200);

rd=0;

delay(200);

j1=P1;

rd=1;

cs=1;

return(j1);

}

voiddelay(uintt){while(t--);}

第4章系统调试4.1直流电压采集的调试

程序调试采用proteus仿真软件调试采集电压

LCD显示结果

4.2交流电压采集的调试

第5章结论与总结

5.1结论

(1)直流电压采集调试中,采集电压为5V的50%(即2.5V),而LCD1602显示值为2.4V,误差很小,说明实验硬件和软件都很成功,可以成功实现直流电压采集并显示电压值的功能。

(2)交流电压采集调试中,采集电压为正弦电压,而LCD显示电压值变化为正弦波形电压,成功实现了交流电压实时采集的功能。

5.2总结

此次单片机课程设计中,我受益良多。

让我对A/D转换有了更加深入的了解,对ADC转换硬件和程序更加熟悉,同时又重温了LCD1602的硬件电路和软件程序。

实验中,对于图形液晶这一陌生的名词,当时的我束手无措。

然而通过各种渠道查询资料之后,从无法显示屏幕,到显示出模糊的波形,再到显示出部分波形,最后显示出完整的波形,我一步步成长进步着。

最后,感谢周伟老师在实验中对我的帮助和解答,感谢研究出这些专业知识的先辈们,让我沉浸在电子微机的海洋。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1