VGA显示的多通道数字示波器课设 - 图文

2026/4/23 21:48:59

// 返回值 : void //

///////////////////////////////////////////////////////////////////////

static void delayus(Xuint16 delay) {

volatile Xuint16 i, j; for (i = 0; i < delay; i++) for (j = 0; j < 10; j++) ; }

static void delayms(Xuint16 delay) {

volatile Xuint16 i,j; for(i=0;i

/************************************************* Function: key_scan()

3、scription: 扫描键盘并返回键值 Calls: nono Called By: main Table Accessed: Table Updated: / Input: /。

Output:

Return: 按键值 Others:

*************************************************/

Xuint8 key_scan() {

Xuint8 value;

Xuint8 temp,sccode,recode;

pio_SetDataDirection(&key,1,0x00);//设置为输出 //P1=0xf0;

XGpio_DiscreteWrite(&key,1,0xf0);//输出0xf0

17

delayus(1);

XGpio_SetDataDirection(&key,1,0xf0);//设置为输入

if((XGpio_DiscreteRead(&key,1)&0xf0)!=0xf0) //若读回值不是0xf0 {

delayms(5);

if((XGpio_DiscreteRead(&key,1)&0xf0)!=0xf0) {

//P1=0xf0; XGpio_SetDataDirection(&key,1,0x00);//设置为输出 XGpio_DiscreteWrite(&key,1,0xf0);//输出0xf0 //temp=P1;

XGpio_SetDataDirection(&key,1,0xf0);//设置为输入 temp=XGpio_DiscreteRead(&key,1); //读回值 sccode=temp&0xf0;//取高四位 //P1=0x0f;

XGpio_SetDataDirection(&key,1,0x00);//设置为输出

XGpio_DiscreteWrite(&key,1,0x0f);//输出0x0f //temp=P1; XGpio_SetDataDirection(&key,1,0x0f);//设置为输入 temp=XGpio_DiscreteRead(&key,1); //读回值 recode=temp&0x0f;//取低四位 temp=sccode|recode; //xil_printf(\ switch(temp) {

case 0xEE:value=0;break; case 0xDE:value=1;break; case 0xBE:value=2;break; case 0x7E:value=3;break; case 0xED:value=4;break; case 0xDD:value=5;break; case 0xBD:value=6;break; case 0x7D:value=7;break; case 0xEB:value=8;break; case 0xDB:value=9;break; case 0xBB:value=10;break; case 0x7B:value=11;break; case 0xE7:value=12;break; case 0xD7:value=13;break; case 0xB7:value=14;break; case 0x77:value=15;break; default: value=16;break;

18

}

}else value=16; }

else value=16; return (value); }

int main (void) {

u16 result;

XGpio_Initialize(&key,XPAR_KEYBOARD_DEVICE_ID); //初始化键盘接口

XGpio_Initialize(&output,XPAR_OUTPUT_DEVICE_ID);//初始化输出接口/*

XGpio_SetDataDirection(&output,1,0x0);

while(1) {

if((result=key_scan())!=16) {

xil_printf(\ switch(result)

{ case 0:// VGA显示的开关 if(vga_on_off)

vga_on_off=0; else vga_on_off=1;

out_put=out_put&ox3bfff(vga_on_off<<14); while(key_scan()==result);

break; case 1://调节水平显示的时间单位 ++h_scale; if(h_scale==3) h_scale=0; out_put=out_put&0x3cfff|(h_scale<<12); while(key_scan()==result); xil_printf(\

19

break; case 2://调节垂直显示幅度单位 ++v_scale; if(v_scale==3) v_scale=0; out_put=out_put&0x3f3ff|(v_scale<<10); xil_printf(\ while(key_scan()==result); break; case 3: //增加数字信号的频率 ++freq; if(freq==11) freq=0; out_put=out_put &0x3fc3f|(freq<<6);s xil_printf(\ while(key_scan()==result); break; case 4: //减小数字信号的频率 if(freq==0) freq=11; --freq; out_put=out_put &0x3fc3f|(freq<<6); xil_printf(\ while(key_scan()==result); break; case 5: //存储波形 trig=1; out_put=out_put&0x3ffdf|(trig<<5); xil_printf(\ while(key_scan()==result); break;

case 6: //回放波形 disp=1; out_put=out_put&0x3ffef|(disp<<4); xil_printf(\ while(key_scan()==result); break; case 7: //通道选择 ++channel;

20


VGA显示的多通道数字示波器课设 - 图文.doc 将本文的Word文档下载到电脑
搜索更多关于: VGA显示的多通道数字示波器课设 - 图文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219