简易数字存储示波器设计(51单片机,TFT液晶显示,AD9280 采样模块),提供AD原理图,51单片机C语言程序,KEIL4软件调试通过。
51单片机采用STC12C5A60S2,显示部分采用
2.8寸TFT
彩色触摸液晶屏,数据采样部分使用AD9280高速AD转换模块。
输入部分采用4*4矩阵键盘,键盘功能如下:
1、S1,S2: 横向、纵向光标显示、选择;
2、S3:光标左移或上移;
3、S4:光标右移或下移;
4、S9:波形左移;
5、S10:波形右移;
6、S11:波形上移;
7、S12:波形下移;
8、S13:减少水平扫描速率;
9、S14:增加水平扫描速率;
10、S15:垂直显示,减小伏/格值;
11、S16:垂直显示,增加伏/格值。
AD9280电路原理图如下:
制作出来的实物图如下:
单片机源程序如下:
- /*===================================================================================================
- 工程名称: Ex1
- 功能描述: 控制TFT实现示波器显示功能。
- 硬件连接: 查看和修改接口定义在NBCTFT.H中,请仔细检查接口连线。
- ====================================================================================================*/
- //******************包含头文件***************************
- #include <STC12C5A60S2.h> //包含单片机头文件
- #include"NBCTFT.h" //包含TFT驱动头文件
- #include "OSC.h"
- #include "timer2.h"
- #include "keyScan.h"
- //******************全局变量***************************
- unsigned char dah,dal,dam;
- unsigned char f1,f2;
- //**************声明外部函数和变量********************
- //================================================================================================
- // 函数名称: 主函数
- // 实现功能: 控制TFT实现汉字,字符显示.
- // 参数: 无
- // 返回值: 无
- //================================================================================================
- void main()
- {
- unsigned int i;
-
-
- for(i=0;i<500;i=i+1)
- {
- ad_buffer[i]=i*5;
- //ad_buffer[i]=ad_buffer[i];
- }
- pointxA=35;
- pointxB=85;//X轴间距标尺
- pointyA=55;
- pointyB=180;//Y轴间距标尺
-
- TFT_Initial(); //初始化LCD
- delayms(100);
- init_panel();
- timer0_init();
-
- while(1) //循环
- {
-
- key_scanSCOPE();//按键扫描
-
- if(da_finish) { //当采集完成,或者 停止运行下可以执行。
- //delayms(100);
- dah=0;dal=255;
- for(i=0;i<150;i++) {//DATA_SIZE=255
- if(ad_buffer[i] > dah) dah = ad_buffer[i]; //找出最大值
- if(ad_buffer[i] < dal) dal = ad_buffer[i]; //找出最小值
- }
- dam=(dah-dal)/2+dal; //计算出中间值,为了显示同步准备
-
- i=0;
- while(ad_buffer[i] >= dam) if(++i >150) break;
- while(ad_buffer[i] < dam) if(++i >150) break;f1=i;
- while(ad_buffer[i] >= dam) if(++i >150) break;
- while(ad_buffer[i] < dam) if(++i >150) break;f2=i; //显示同步处理
-
- DISP_WAVE(i,dam); //画波形
-
- da_finish=0;
- EA=1;
-
- DISP_scale() ;
- DISP_freq_am() ;
- refresh_screen(); /*** 刷新屏幕 ****/
- }
-
- }
-
- }
复制代码
所有资料51hei提供下载:
简易数字存储示波器设计.rar
(7.26 MB, 下载次数: 474)
|