1、 int i,j; for(i=0;idel;i+) for(j=0;junsigned char code DIG_CODE16=0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71;void Delay10ms(unsigned int c) /误差 0us unsigned char a, b; /-c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了-/ for (;c0;c-) for (b=38;bb-) for (a=130;aa
2、-); char a=0; P0=DIG_CODE0; P2=0x0F; if(0x0F != P2)/读取按键是否按下 Delay10ms(1);/延时10ms进行消抖 if(0x0F != P2)/再次检测键盘是否按下 /测试列 P2=0X0F; switch(P2) case(0X07): a=0; break; case(0X0b): a=4; case(0X0d): a=8; case(0X0e): a=12; /测试行 P2=0XF0; case(0X70): break; case(0Xb0): a=a+1; case(0Xd0): a=a+2; case(0Xe0): a=a+
3、3;break; while(0xf0 != P2) /检测按键松手检测 Delay10ms(1); P0=DIG_CODEa; 写入板子中按下数字键,屏幕显示相应的数字。仿真结果符合情况,说明实验成功。通过本次实验,我发现FPGA板功能非常强大。通过对FPGA的学习,我更加深刻的理解了开发板的使用规则。实验三 中断系统和定时/计数器中断系统和定时/计数器使用定时器中断控制发光二极管每隔一段时间闪烁一次。int num=0; P0=0XFF; TMOD=0X01; TH0=(65536-45872)/256; TL0=(65536-45872)/256; EA=1; ET0=1; TR0=1;
4、 ;void T0_timer() interrupt 1 num+; if(num=20) P0=P0; num=0;加载程序后每一秒灯闪烁一次。程序开始计时,每50毫秒中断一次,20次中断是可以使得灯闪烁一次。通过本次实验,我了解了中断系统的定时与计时功能。学会了利用FPGA设计有关中断系统的实验。实验四 FPGA中串口设计FPGA中串口设计实验要求完成较为复杂的串口通信工作unsigned char buffer; for(i=1; for(j=1;100;j+) ; TMOD=0x20;/设置定时器1为工作方式2 TH1=0xd9; /波特率为2400 TR1=1; /开定时器1 RE
5、N=1; /开启接收 SM0=0; /工作方式1 SM1=1; /CPU中断允许位 ES=1; /串行口中断允许位 while(1) /查询方式 /* if(RI=1) RI=0; LED_1=LED_1; buffer=SBUF; P1=buffer; / SBUF=buffer; while(!TI); TI=0; */void ser() interrupt 4 RI=0; ES=0; /关串口中断 delay(500); P1=buffer-96; SBUF=buffer; /将数据buffer发送出去 TI=0; /开中断程序加载后实现串口通信,输入1,显示为3,输入a,显示为63我们的结果是在输入的16进制的基础上减去96,所以输入a,输出的为1,输入的b,输出2。本次实验因为相对比较复杂,所以在实验过程中表现的很是吃力,最终还是完成了实验。通过本次实验,我更加深刻的理解了串口通信的原理,学会了串口通信的实现机制。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2