zedboard中OLED源代码

#include <stdio.h>
#include "platform.h"
#include "xil_types.h"
#include "xgpio.h"
#include "xparameters.h"
#include "xgpiops.h"
#include "xil_io.h"
#include "oled.h"
//extern char inbyte(void);//调用inbyte接收一个字节输入函数
extern XGpioPs_Config XGpioPs_ConfigTable[XPAR_XGPIOPS_NUM_INSTANCES];
//int
main()
{
  static XGpioPs psGpioInstancePtr;
  XGpioPs_Config*GpioConfigPtr;
  static XGpio GPIOInstance_Ptr;

  int xStatus,start,end;
  u32 Readstatus1,Readstatus2;
  int iPinNumberld9 = 7;  /*Ld9 is connected to MIO pin 7*/
  int iPinNumberbtn8 = 50;/*Btn8 is connected to MIO pin 50*/
  int iPinNumberbtn9 = 51;/*Btn9 is connected to MIO pin 51*/
  int iPinNumberBTNU = 54;/*BTNU is connected to EMIO pin 54*/
  init_platform();
  print("##### Application Starts #####\n\r");

  print("\r\n");

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-1 :AXI GPIO Initialization

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  #define XPAR_AXI_GPIO_0_DEVICE_ID 0//因为没有报错的错误,自己添加的define
  xStatus = XGpio_Initialize(&GPIOInstance_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID);

  if(XST_SUCCESS != xStatus)

    print("GPIO INIT FAILED\n\r");

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-2 :AXI GPIO Set the Direction

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  XGpio_SetDataDirection(&GPIOInstance_Ptr, 1, 1);//input

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-3 :PS GPIO Intialization

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);

  if(GpioConfigPtr == NULL)

    return XST_FAILURE;

  xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,

      GpioConfigPtr,

      GpioConfigPtr->BaseAddr);

  if(XST_SUCCESS != xStatus)

    print(" PS GPIO INIT FAILED \n\r");

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-4 :PS GPIO pin setting to Output

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberld9,1);

  XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberld9,1);

  XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberbtn8,0);

  XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberbtn8,1);

  XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberbtn9,0);

  XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberbtn9,1);

  XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberBTNU,0);

  XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberBTNU,1);

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-5 :OLED Intialization

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  OLED_Init();

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //Step-6 :press btn8 to start Demo

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  OLED_ShowString(0,0, "BTN8 to start");

  OLED_Refresh_Gram();

  while (1){

start=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn8);

if(start){

XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,1);

print("###################### Demo Starts ########################\r\n");

OLED_ShowString(0,0, "DALE I LOVE U");

OLED_ShowString(0,16, "BTNR to go on");

OLED_Refresh_Gram();

break;

     }

end=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn9);

if(end){

XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,0);

OLED_Clear();

break;

  }

  }

  while(1){

 Readstatus1 = XGpio_DiscreteRead(&GPIOInstance_Ptr, 1) ;//读BTNR

 if(Readstatus1){

 OLED_ShowString(0,0, "DO U LOVE ME ?");

 OLED_ShowString(0,16, "BTNU to go on");

 OLED_Refresh_Gram();

 break;

 }

  }

  while(1){

 Readstatus2 = XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberBTNU) ;//读BTNU

   if(Readstatus2){

   OLED_Clear();

   OLED_ShowString(0,0, "HAHA BYE");

   OLED_ShowString(0,16, "BTN9 to end");

   OLED_Refresh_Gram();

   }

   end=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn9);

   if(end){

   XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,0);

   OLED_Clear();

   break;

      }

  }

  print("\r\n");

  print("***********\r\n");

  print("BYE \r\n");

  print("***********\r\n");

  cleanup_platform();

  return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 21:47:30

zedboard中OLED源代码的相关文章

zedboard中OLED源码

#include <stdio.h> #include "platform.h" #include "xil_types.h" #include "xgpio.h" #include "xparameters.h" #include "xgpiops.h" #include "xil_io.h" #include "oled.h" //extern cha

基于Vivado HLS在zedboard中的Sobel滤波算法实现

 基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard  + Webcam 工具:g++4.6  + VIVADO HLS  + XILINX EDK + XILINX SDK 系统:ubuntu12.04 总体设计思路 sobel 算法理论基础       索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值.在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量. 该

eclipsecpp从可执行程序员中导入源代码并调试

如果寻找跨平台IDE及调试环境,那eclipse是最佳选择了,因为它有一项超强功能:可以从可执行程序员导入源代码并调试程序,这种特性是非常适合自定义MakeFile项目,不需要改变项目现有结果,即可自由开发和调试了.导入源码方式很多,1.project explorer面板,右键菜单选择import菜单项.2.在import对话框里选择c/c++,在展开的子选择项中选择c/c++ executable,然后点击下一步.3.选择包含调试信息的可执行程序,然后下一步,再点击完成,这时会自动弹出调试信

eclipse中导入源代码

我们在使用eclipse开发java项目的时候,有时候需要查看java的源码,但我们需要首先在eclipse中导入源码后才能查看 在没有导入源代码的时候,我们将鼠标放到需要查看java源代码的地方,使用快捷键(ctrl+左键),无法查看源代码. 例如下图,我们想要查看exist()这个方法的源代码的时候,出现图二的界面. (图一) (图二) 接下来是导入源代码的过程 1.点击图二中的 Attach Source  ,出现下方的界面 2.然后添加源码的路径(在jdk的安装目录下的src.zip)

winfrom 从网页中通过源代码截取文章

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;//引用流 using System.Net; using System.Text.RegularE

将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹

如题,IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹.hibernate和spring有时会将配置文件放置在src目录下,编译后要一块打包进classes文件夹,所以存在着需要将xml等资源文件放置在源代码目录下的需求. 解决IDEA的这个问题有两种方式. 第一种是建立src/main/re

MD中bitmap源代码分析--入题概述

在MD模块中,各级raid都使用的一份bitmap的源码,也就是说共用一种bitmap的流程,下面以raid1的使用为例来分析bitmap的工作原理. 在使用raid1磁盘阵列的时候,对于数据的可靠性有很高的要求.在写的过程中,有可能存在不稳定的因素,比如磁盘损坏.掉电/宕机.网络故障.系统故障等,这样导致写入失败,在系统恢复后,raid也需要进行恢复,如果磁盘比较大,那同步恢复的过程会很长.以raid1来说,在发生故障时,可能盘阵的数据很多都是已经一致的了,其实只有少部分不一致,所以就没必要进

Android中如何在Eclipse中关联源代码?(图文)

关联源代码 1.删除工程里面的Android Depandencies,删除后会报错,不要理会.看下面 2.添加libs目录下的Android-support-v4.jar包 选中-->右键-->build path-->add to build path 3.关联源代码 目录:C:\android\adt-bundle-windows-x86_64-20130219\sdk\extras\android\support\v4\src\java 点击ViewPager类,出现图标: 大家

Android实战技巧之三十二:Android Studio中的源代码管理

Android Studio最近经过了两次升级到了Android Studio 1.2.1.1, 用起来是越来越顺手了.AS中加入了主流的源码管理工具,让开发者不用离开AS就可以提交和管理代码. 下面就演示一下在AS中使用git管理代码. 选择要提交的代码 右键->commit 编写commit message 可以选择commit and push一起完成提交的动作 确认后push 查看提交历史和对比文件 总结: 玩git的都知道在命令行下有些版本历史信息的显示是不方便的,我们需要借助gitk