⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ledmax.c

📁 from wangkj@yahoo.com 电路原理图和详细说明: amd.9966.org或者 arm.9966.org 都是原创,包括boot, loader,u-boot,linu
💻 C
字号:
/*-------------------------------------------------------------------------------------date:20070625author: wkjver 1.0contrl 8*8 led matrix example ,Application direct control HardWareinput:XXXXXXoutput:return 0---------------------------------------------------------------------------------------*/#include <sys/types.h>#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <signal.h>#include <time.h>#include <sys/time.h>#include <sys/ioctl.h>#include <sys/stat.h>#include <sys/file.h>#include "gpio.h"#include "main.h"#include "io.h"#include <stdarg.h>#include <memory.h>#include <errno.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/mman.h>#include <sys/ioctl.h>#include <fcntl.h>#include <signal.h>#include "font5x7.h"#define DEVICE_FILE_NAME "scan_keyb"void    *map_base;      //phy 0xffff f000 virtual address#define DEBUGMSG(x, y, args...) printf(y, ##args)//#define DEBUGMSG(x, y, args...)FILE *f;int n,fd;int main(int argc, char *argv[]){char num,status=0;int i,j,count;int ch;        printf("start\n");if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1){     DEBUGMSG(DEBUG_ERR, "gpio: Error opening /dev/mem\n");     exit(-1);		}        //map 0xffffmap_base      = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, AT91_SYS);//AT91_SYS = 0xffff f000    *((unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_PER )))) = 0xFFFF0000; //PC31:PC16 as gpio*((unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_OER )))) = 0xFFFF0000;*((unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0xFFFF0000; //0  default state/*8*8 LED mattix 1				A2				B3				C4				D5				E6				F7				G8 			        HData(-)			scan line(+)D0-8-PC16		D0-1-PC31D1-7-PC18		D1-6-PC20D2-3-PC24		D2-A-PC30D3-C-PC25		D3-4-PC27D4-2-PC29		D4-H-PC17D5-E-PC23		D5-B-PC28D6-F-PC21		D6-G-PC19D7-5-PC22		D7-D-PC26*/for(;;) //dispaly all character in Fonts lib  { 	*((volatile unsigned int*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0xFFFF0000; //0  default state	usleep(1000000);	for (i=0;i<sizeof(Fonts)/5;i++) 	  {	    printf("%d\n",i);	    usleep(1000);	    for(count=0;count<100000;count++)		      for (j=0;j<5;j++) //LED matrix col 0..7	       {	        *((volatile unsigned int*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR))))			= (0x1<<31)|(0x1<<20)|(0x1<<30)|(0x1<<27)|(0x1<<17)|(0x1<<28)|(0x1<<19)|(0x1<<26); 	        *((volatile unsigned int*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR))))			=(0x1<<16)|(0x1<<18)|(0x1<<24)|(0x1<<25)|(0x1<<29)			|(0x1<<23)|(0x1<<21)|(0x1<<22);//all col light off	        switch (j)	    	{//select which col is on	    	  case 0://D0.PC31=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<31; 	    	  break;	    	  		    	  case 1://D1.PC20=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<20;	    	  break;	    	  case 2://D2.PC30=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<30;	    	  break;	    	  case 3://D3.PC27=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<27;	    	  break;	          case 4://D4.PC17=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<17;	    	  break;	    	  case 5://D5.PC28=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<28;	    	  break;	    	  case 6://D6.PC19=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<19;	    	  break;	    	  case 7://D7.PC26=1	    	  *((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_SODR)))) = 0x1<<26;	        }	      //Put on col line Fonts[i+j]	       if ((Fonts[i][j]&0x01)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<16;			       if ((Fonts[i][j]&0x02)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<18;			       if ((Fonts[i][j]&0x04)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<24;			       if ((Fonts[i][j]&0x08)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<25;			       if ((Fonts[i][j]&0x10)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<29;			       if ((Fonts[i][j]&0x20)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<23;			       if ((Fonts[i][j]&0x40)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<21;			       if ((Fonts[i][j]&0x80)!=0) 	       		*((volatile unsigned long*)(map_base + ((PIOC_OFFSET + AT91_PIO_CODR)))) = 0x1<<22;			       //usleep(1000);	       }	  }  }close(fd);return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -