DIY 51单片机 + ADC0809 示波器

上传人:桔**** 文档编号:551760811 上传时间:2023-11-04 格式:DOCX 页数:7 大小:13.78KB
返回 下载 相关 举报
DIY 51单片机 + ADC0809 示波器_第1页
第1页 / 共7页
DIY 51单片机 + ADC0809 示波器_第2页
第2页 / 共7页
DIY 51单片机 + ADC0809 示波器_第3页
第3页 / 共7页
DIY 51单片机 + ADC0809 示波器_第4页
第4页 / 共7页
DIY 51单片机 + ADC0809 示波器_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《DIY 51单片机 + ADC0809 示波器》由会员分享,可在线阅读,更多相关《DIY 51单片机 + ADC0809 示波器(7页珍藏版)》请在金锄头文库上搜索。

1、通过对两个单片机的控制实现电压信号的采集以及显示波形,可以调整显示频率 主单片机控制12864的显示,从单片机实现对ADC0809的驱动转换 下面是该系统的程序:主单片机:#in cludevreg51.h#in cludevmath.h#defi ne uchar un sig ned char#defi ne uint un sig ned int#defi ne datalO P1#defi ne ADdataIO P0unsigned char p=0xf7,0xfb,0xfd,0xfe;int num;static int coun t=20;sbit RS=P2A5;sbit RW

2、=P2A4;sbit E=P2A3;sbit PSB=P2A2;sbit NC=P2A1;sbit BF=P1A7;sbit EOC=P3A4;sbit EN=P3A5;static unsigned char DATA128=0;void delay(l ong int x)long int i;for(i=0;ivx;i+); void checkbusy() RS=0;RW=1;E=1;while(BF);E=0;void transfer(uchar word ,bit a ,bit b)数据交换,a:1 数据,0 指令 b:1 读,0 写。/checkbusy();RS=a;RW=b

3、;E=1;dataIO = word;delay(2);E=0;RS=RS;RW=RW;uchar readRAM(bit a)/a:1.data 2.cmd/uchar x;checkbusy();datalO=0xff;RS=a;RW=1;E=1;delay(2);x=dataIO;delay(2);E=0;RS=RS;RW=RW;retur n(x);void clear()tra nsfer(0x01,0,0);delay(10);void LCDstatus(uchar a)checkbusy();tra nsfer(a,0,0); void clr() un sig ned cha

4、r x,y,i; checkbusy();tra nsfer(0x36,0,0);for(i=0;iv9;i+=8)for(x=0;xv32;x+)for(y=0;yv16;y+)tra nsfer(x+0x80,0,0);tran sfer(y+0x80+i,0,0);tra nsfer(0x00,1,0);tra nsfer(0x00,1,0);void Point(un sig ned char x,un sig ned char y)char x_real,y_real,data_H,data_L, Memory_H,Memory_L; if(x=128|y=64);elseif(y3

5、2)x_real=x/16+0x80;y_real=0x80+y;elsex_real=x/16+0x88;y_real=0x80+y%32;if(x%16=0)/X的方向是增加的 s1=1;Dx=dx;else/X的方向是降低的 s1=-1;Dx=-dx; dy=y1-y0; if(dy=0)判断Y的方向是增加还是降到的s2=1; Dy=dy; else s2=-1;Dy=-dy;/*Dx=fabs(x1-x0);Dy=fabs(y1-y0);计算横、纵标志增加值的绝对值*/if(DyDx)/以45度角为分界线,靠进Y轴是status=1,靠近X轴是status=0temp=Dx;Dx=Dy

6、;Dy=temp;status=1;elsestatus=0;/*Brese nham算法画任意两点间的直线*/sub=2*Dy-Dx; for(i=0;ivDx;i+) 第1次判断下个点的位置Poi nt(x0,y0); if(sub=0) if(status=1) x0+=s1;画点在靠近Y轴区,x值加1else在靠近X轴区,y值加1yO+=s2;sub-=2*Dx;判断下下个点的位置if(status=1)y0+=s2;elsex0+=s1;sub+=2*Dy; mai n()un sig ned char x,x_m,y_m,i;TCON=0x05;IE=0x85; reset();

7、clr();EOC=0;while(1)x_m=0; for(x=0;xv128;) if(EOC=1);EN=1;DATAx+=ADdatalO;EN=0;i=0;while(iv=co un t)i+; y_m=DATA0/4;for(x=0;xv128;x+)lin e(x_m,y_m,x,DATAx/4);x_m = x;y_m = DATAx/4;clr();void stop() in terrupt 0/*用两个外部中断实现对频率的控制*/coun t-;delay(IOO);void stop1() in terrupt 2coun t+;delay(IOO);从单片机程序:#

8、in cludevreg51.hsbit datalO=P1;sbit ADD_A =P2A1;sbit ADD_B =卩2人2;sbit ADD_C =P2A3;sbit ALE =P2A4;sbit START =卩2人5;sbit EOC =P2A6;sbit EN =P2A7;void delay()un sig ned char i,j;for(i=0;iv34;i+)for(j=O;j1;j+);mai n()un sig ned char DATA;START=0;ALE=0;ALE=1;ADD_A = 0;ADD_B = 1;ADD_C = 1;ALE=0;while(1)START=1; START=O; 严

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号