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

  • 格式:doc
  • 大小:238.00 KB
  • 文档页数:20

单片机课程设计报告题目:ADC转换生成正弦波形专业:测控技术与仪器班级:姓名:学号:指导教师:2015年1 月14 日目录第1章系统设计方案第2章系统硬件设计2.1 主控制器电路2.2 模数转换电路2.3 显示电路第3章系统软件设计3.1 系统整体流程3.2 直流电压采集3.3 交流电压采集第4章系统调试4.1 xxx的调试4.2 xxx的调试。

第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系统整体流程图3.2直流电压采集程序(1)直流电压采集主程序#include<reg52.h>#include"adc0804.h"#include"lcd1602.h"#define uchar unsigned char #define uint unsigned int #define ulong unsigned longvoid datds();void display();uchar dat=0;uchar a[]="the value is "; uchar b[]={0,0};void main(){uchar i=0;init();for(i=0;i<13;i++){comd(0x80+i);write(a[i]);}while(1){datc();dat=datw();datds();display();}}void datds(){b[0]=dat*5/255;b[1]=dat*50/255%10;}void display(){comd(0xc4);write(b[0]+0x30);comd(0xc5);write('.');comd(0xc6);write(b[1]+0x30);comd(0xc7);write('V');}(2)头文件lcd1602.h#include<reg52.h>#define uchar unsigned char #define uint unsigned int #define ulong unsigned longvoid write(uchar datee); void comd(uchar com);void init();sbit en=P3^4;sbit rs=P3^5;void init(){en=0;comd(0x38);comd(0x0c);comd(0x06);comd(0x01);}void comd(uchar com){rs=0;delay(50);P0=com;delay(50);en=1;delay(50);en=0;delay(50);}void write(uchar datee){rs=1;delay(50);P0=datee;delay(50);en=1;delay(50);en=0;delay(50);}(3)头文件adc0804.h#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longchar datw();void datc();void datd();void delay(uint t);sbit rd=P3^1;sbit wr=P3^2;sbit intr=P3^3;sbit cs=P3^0;void datc() //写命令{cs=0;wr=1;delay(200);wr=0;delay(200);wr=1;while(intr);cs=1;}char datw() //读数据{uchar j=0;cs=0;rd=1;delay(200);rd=0;delay(200);j=P1;rd=1;cs=1;return j;}void delay(uint t){while(t--);}3.3交流电压采集程序(1)交流电压采集主程序#include<reg52.h>#include"adc0804.h"#include"lcd.h"#define uchar unsigned char #define uint unsigned int #define ulong unsigned longvoid datedis();void display();void qing(uchar q2);void qingp();sbit cs1=P0^1;sbit cs2=P0^2;uchar dat=0;uchar i;uchar j,da;void main(){init();while(1){ cs1=0;cs2=1;qingp();display();cs2=0;cs1=1;qingp();display();}}void qing(uchar q2){uchar q1;for(q1=0;q1<8;q1++){comd(184+q1);comd(0x40+q2);write(0);}}void qingp(){uchar q1,q2;for(q1=0;q1<8;q1++){comd(184+q1);comd(0x40);for(q2=0;q2<64;q2++)write(0);}}void display(){uchar x=0;for(x=0;x<64;x++){//qing(x);datc();dat=datw();datedis();comd(i);comd(64+x);write(j);}}void datedis(){ uchar j0=1;da=dat/4;i=184+da/8;j=j0<<(da%8);}(2)头文件lcd.h#include<reg52.h>#define uchar unsigned char #define uint unsigned int #define ulong unsigned longvoid write(uchar datee); void comd(uchar com);void init();sbit en=P3^6;sbit rs=P3^7;void init(){en=0;comd(4);comd(0x3f);}void comd(uchar com){rs=0;delay(50);P2=com;delay(50);en=1;delay(50);en=0;delay(50);}void write(uchar datee) {rs=1;delay(50);P2=datee;delay(50);en=1;delay(50);delay(50);}(3)头文件ADC0804.h#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longchar datw();void datc();void datd();void delay(uint t);sbit rd=P3^1;sbit wr=P3^2;sbit intr=P3^3;sbit cs=P3^0;void datc() //写命令{cs=0;wr=1;delay(200);wr=0;delay(200);wr=1;while(intr);cs=1;}char datw() //读数据{uchar j1=0;cs=0;rd=1;delay(200);rd=0;delay(200);j1=P1;cs=1;return (j1);}void delay(uint t) {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的硬件电路和软件程序。

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

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

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