DIY 51单片机 ADC0809 示波器_第1页
DIY 51单片机 ADC0809 示波器_第2页
DIY 51单片机 ADC0809 示波器_第3页
DIY 51单片机 ADC0809 示波器_第4页
DIY 51单片机 ADC0809 示波器_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、通过对两个单片机的控制实现电压信号的采集以及显示波形,可以调整显示频率.主单片机控制12864的显示,从单片机实现对ADC0809的驱动转换.下面是该系统的程序:主单片机:#include<reg51.h>#include<math.h>#define uchar unsigned char #define uint unsigned int#define dataIO P1#define ADdataIO P0unsigned char p=0xf7,0xfb,0xfd,0xfe;int num;static int count=20;sbit RS=P25;sbit

2、 RW=P24;sbit E=P23;sbit PSB=P22;sbit NC=P21;sbit BF=P17;sbit EOC=P34;sbit EN=P35;static unsigned char DATA128=0;void delay(long int x)long int i;for(i=0;i<x;i+);void checkbusy()RS=0;RW=1;E=1;while(BF);E=0;void transfer(uchar word ,bit a ,bit b)      /数据交换, a:1数据, 0指令 

3、;  b:1读,0写。/checkbusy();RS=a;RW=b;E=1;dataIO = word;delay(2);E=0;RS=RS;RW=RW;uchar readRAM(bit a)/a:1.data 2.cmd/uchar x;checkbusy();dataIO=0xff;RS=a;RW=1;E=1;delay(2);x=dataIO;delay(2);E=0;RS=RS;RW=RW;return(x);void clear()transfer(0x01,0,0);delay(10);void LCDstatus(uchar a)checkbusy();transfe

4、r(a,0,0);void clr()unsigned char x,y,i;checkbusy();transfer(0x36,0,0);for(i=0;i<9;i+=8)for(x=0;x<32;x+)for(y=0;y<16;y+)transfer(x+0x80,0,0);transfer(y+0x80+i,0,0);transfer(0x00,1,0);transfer(0x00,1,0);void Point(unsigned char x,unsigned char y) char x_real,y_real,data_H,data_L, Memory_H,Mem

5、ory_L;if(x>=128|y>=64);else   if(y<32)      x_real=x/16+0x80;   y_real=0x80+y;      else      x_real=x/16+0x88;   y_real=0x80+y%32;      if(x%16<8)      data_

6、H=(0x01<<(7-x%16);   data_L=0;      else      data_H=0;   data_L=(0x01<<(15-x%16);   checkbusy();transfer(0x36,0,0);transfer(y_real,0,0);transfer(x_real,0,0);transfer(0x34,0,0);transfer(0x30,0,0);checkbusy();readRAM(1)

7、;Memory_H=readRAM(1);Memory_L=readRAM(1);checkbusy();data_H=data_H|Memory_H;data_L=data_L|Memory_L;checkbusy();transfer(0x36,0,0);transfer(y_real,0,0);transfer(x_real,0,0);transfer(data_H,1,0);transfer(data_L,1,0);void reset()delay(2000);   transfer(0x30,0,0);   delay(50); &

8、#160;           /选择基本指令集   transfer(0x30,0,0);       /选择8bit数据流   delay(20);   transfer(0x0c,0,0);       /开显示(无游标、不反白)   delay(20);   transf

9、er(0x01,0,0);       /清除显示,并且设定地址指针为00H   delay(500);   transfer(0x06,0,0);       /指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位   delay(0);void enterdata(char * word)while(*word!='0')transfer(*word,1,0);word+;delay(10

10、);void line(uchar x0,uchar y0,uchar x1,uchar y1)char temp;char dx,dy;               /定义起点到终点的横、纵坐标增加值char s1,s2,status,i;uchar Dx,Dy;int sub;dx=x1-x0;if(dx>=0)           &#

11、160;     /X的方向是增加的 s1=1;Dx=dx;else                     /X的方向是降低的 s1=-1;     Dx=-dx;dy=y1-y0;            &

12、#160;    /判断Y的方向是增加还是降到的if(dy>=0)s2=1;Dy=dy;elses2=-1;Dy=-dy;/* Dx=fabs(x1-x0);             /计算横、纵标志增加值的绝对值Dy=fabs(y1-y0);*/if(Dy>Dx)              &#

13、160;  /                                    /以45度角为分界线,靠进Y轴是status=1,靠近X轴是status=0 temp=Dx;Dx=Dy;Dy=temp;status=1; elsestatus=

14、0;/*Bresenham算法画任意两点间的直线*/ sub=2*Dy-Dx;                 /第1次判断下个点的位置for(i=0;i<Dx;i+)     Point(x0,y0);           /画点     if(sub>=0)

15、60;                                      if(status=1)            

16、   /在靠近Y轴区,x值加1      x0+=s1;     else                     /在靠近X轴区,y值加1             &#

17、160;       y0+=s2;     sub-=2*Dx;                 /判断下下个点的位置         if(status=1)y0+=s2;     else       &

18、#160;   x0+=s1;     sub+=2*Dy;         main()unsigned char x,x_m,y_m,i;TCON=0x05;IE=0x85;reset();clr();EOC=0;while(1)x_m=0;for(x=0;x<128;)if(EOC=1);EN=1;DATAx+=ADdataIO;EN=0; i=0;while(i<=count)i+;y_m=DATA0/4;for(x=0;x<128;x+)   line(x_m,y_m,x,DATAx/4);   x_m = x;   y_m = DATAx/4;clr();void stop() interrupt 0          /*用两个外部中断实现对频率的控制*/count-;delay(100);void stop1() interrupt 2count+;delay(100);从单片机程序:#include<reg51.h>sbi

温馨提示

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

评论

0/150

提交评论