亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shiftled.c

?? ARM7 LED shift register (ST2221) in C programming
?? C
字號:
/*

*/

#include <LPC2103.H> 	                                	// LPC2103 MPU Register
#include "shiftled.h" 
//#include <intrins.h>

// GPIO0.04	  -> SERIAL DATA OUT,FOR ST2221 DRV
// GPIO0.05   -> CLK for ST2221
// GPIO0.06   -> ENABLE for ST2221
// GPIO0.07   -> LATCH for ST2221

// Define ST2221 PinIO Mask 
#define  ST2221_DAT    0x00000010   						
// P0.04(0000 0000 0000 0x00 0000 0000 0001 0000)
#define  ST2221_CLK    0x00000020   						
// P0.05(0000 0000 0000 x000 0000 0000 0020 0000)
#define  ST2221_EN     0x00000040   						
// P0.06(0000 0000 0000 00x0 0000 0000 0400 0000)
#define  ST2221_LTH    0x0000080   						
// P0.07(0000 0000 000x 0000 0000 0000 8000 0000)

#define  EN_set() IOSET = ST2221_EN	 				
// EN = 1 (Select Instruction)
#define  EN_clr() IOCLR = ST2221_EN					
// EN = 0 (Select Data)
#define  DAT_set() IOSET = ST2221_DAT				
// DAT = 1 (Read)
#define  DAT_clr() IOCLR = ST2221_DAT					
// DAT = 0 (Write)
#define  CLK_set() IOSET = ST2221_CLK					
// CLK = 1 (Enable)
#define  CLK_clr() IOCLR = ST2221_CLK					
// CLK = 0 (Disable)
#define  LTH_set() IOSET = ST2221_LTH					
// CLK = 1 (Enable)
#define  LTH_clr() IOCLR = ST2221_LTH					
// CLK = 0 (Disable)
extern void delay(unsigned long int count1);
extern struct Setting_Buf Set_Buf;

unsigned char uBuffer[4];
unsigned char Comm_buffer[4];
unsigned char Refreshbit;
unsigned char Global_V1;

struct DisplayBuf{
	unsigned char TAR[4];	//MSB..LSB (TAR[3] TAR[2] TAR[1] TAR[0])
	unsigned char OUT[4];	//MSB..LSB (OUT[3] OUT[2] OUT[1] OUT[0])
	unsigned char DIF[5];	//SIGN MSB..LSB (DIF[4] DIF[2] DIF[1] DIF[0])
};

struct DisplayBuf Dis_Buf;
//			  a
//			----			0 -- 00111111, 0x3f
//		  f|	|b		    1 -- 00000110
//		   |  g	|
//		   ------
//		  e|    |c
//		   |    |
//		   ------ o  dp
//			  d
//
const char SEGMENT[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x76,0x77,0x38,0x78,0x40}; 
/*        code char SEGMENT[]={0xFA,0x60,0xDC,0xF4,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x00}; */
//code char SEGMENT[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x00, 0x6e, 0xde, 0x1c,0x1e, 0x02};
/* 0, 1,2,3,4,5,6,7,8,9, off, H,A,L,T,- */
//t,A,r,o,u,d,I,F,C,n,O,h,S,P,E,1,2,3
//0x78,0x77,0x50,0x5c,0x1c,0x5e,0x30,0x71,0x39,0x54,0x3f,0x74,0x6d,0x73,0x79
/*const char tAr[]="tAr ";
const char Out[]="Out ";
const char dIF[]="dIF ";
const char InCt[]="InCt";
const char InCo[]="InCo";
const char Sht[]="Sht ";
const char PrS[]="PrS ";
const char bS[]=" S";
const char bo[]=" o";
const char PE[]="PE";
*/
//***********************************seven segment display control & display*****************************
void Display_Function_Name(unsigned char *name)
{
	signed char a;
	clear_Display();
	for (a=4; a>0;a--)
	{
		
		Search_FontMap(name[4-a]);
		Dis_Buf.TAR[a-1]=Global_V1;
	}	
	Display_buffer();
}


void Display_Func(unsigned char *Buf, short Buf_Value, unsigned char change_tag)
{
	signed char i;
	signed short x,temp, temp1;
//************************************************clear buffer with option	
	if(change_tag==1)
	{
		for (i=0;i<4;i++)
    	{
        	Dis_Buf.TAR[i]=SEGMENT[10];
    	}
	}
    for (i=0;i<4;i++)
    {
        Dis_Buf.OUT[i]=SEGMENT[10];
    }

    for (i=0;i<5;i++)
    {
        Dis_Buf.DIF[i]=SEGMENT[10];
    }
//    Display_buffer();
//****************************************************

	if(change_tag==1)
	{
		for (i=4; i>0;i--)
		{
			Search_FontMap(Buf[4-i]);
			Dis_Buf.TAR[i-1]=Global_V1;
		}
	}			
		x=Buf_Value;
        temp1=x%1000;
        temp= x/1000;
		Dis_Buf.OUT[3]=SEGMENT[temp];

        temp=temp1/100;
        temp1=temp1 % 100;
		temp = temp & 0x0f;
		Dis_Buf.OUT[2]=SEGMENT[temp];

        temp=temp1/10;
        temp1=temp1 % 10;
 		Dis_Buf.OUT[1]=SEGMENT[temp];
		Dis_Buf.OUT[0]=SEGMENT[temp1];		
		Display_buffer();
}

void Search_FontMap(unsigned char F)
{
	switch (F)
	{
		case 't':
			Global_V1= 0xF8;
			break;
		case 'A':
			Global_V1= 0xF7;
			break;
		case 'r':
			Global_V1= 0xD0;
			break;
		case 'o':
			Global_V1= 0xDc;
			break;
		case 'u':
			Global_V1= 0x9c;
			break;
		case 'd':
			Global_V1= 0xDe;
			break;
//t,A,r,o,u,d,I,F,C,n,O,h,S,P,E
//0x78,0x77,0x50,0x5c,0x1c,0x5e,0x30,0x71,0x39,0x54,0x3f,0x74,0x6d,0x73,0x79
		case 'I':
			Global_V1= 0xB0;
			break;
		case 'F':
			Global_V1= 0xF1;
			break;
		case 'C':
			Global_V1= 0xB9;
			break;
		case 'n':
			Global_V1= 0xD4;
			break;
		case 'O':
			Global_V1= 0xBf;
			break;
		case 'h':
			Global_V1= 0xF4;
			break;
		case 'S':
			Global_V1= 0xEd;
			break;
		case 'P':
			Global_V1= 0xF3;
			break;
		case 'E':
			Global_V1= 0xF9;
			break;
		case '1':
			Global_V1= 0x06;
			break;
		case '2':
			Global_V1= 0x5b;
			break;
		case '3':
			Global_V1= 0x4f;
			break;
		case '4':
			Global_V1= 0x66;
			break;
		case '5':
			Global_V1= 0x6d;
			break;
		case '6':
			Global_V1= 0x7d;
			break;
		case '7':
			Global_V1= 0x07;
		case '8':
			Global_V1= 0x7f;
			break;
		case '9':
			Global_V1= 0x6f;
			break;
		case '-':
			Global_V1=0x40;
			break;	
		case 'y':
			Global_V1=0xee;
			break;
		case 'H':
			Global_V1=0xf6;
			break;
		case 'N':
			Global_V1=0xb7;
			break;
			
		default:
			Global_V1= 0x00;
			break;
	}
}

/********************************************************************************/
/* Convert buffer to display buffer for display code conversion                 */
/********************************************************************************/
void convert_display(void)
{
        char Zerobit;
		short x,temp, temp1;
		char * PtBuf;
		
		Zerobit=0;
		PtBuf=&Set_Buf.Target_Cnt;
		x= *PtBuf;
		PtBuf++;
		x= x | (*PtBuf <<8);
        Zerobit=0;
        temp1=x%1000;
        temp= x/1000;

		if (temp == 0) 
		{
			Dis_Buf.TAR[3]=SEGMENT[10];  // off display
			Zerobit=1;
		}
		else
		{
			Dis_Buf.TAR[3]=SEGMENT[temp];
		}

        temp=temp1/100;
        temp1=temp1 % 100;
		temp = temp & 0x0f;
		if ((temp==0x00) && (Zerobit==1)) Dis_Buf.TAR[2]=SEGMENT[10]; // off 2 segments
		else
		{
			Zerobit=0;
			Dis_Buf.TAR[2]=SEGMENT[temp];
		}

        temp=temp1/10;
        temp1=temp1 % 10;
		if ((temp==0x00) && (Zerobit==1))
		{ 
			Dis_Buf.TAR[1]=SEGMENT[10]; // off 3 segments
		}
		else Dis_Buf.TAR[1]=SEGMENT[temp];
		Dis_Buf.TAR[0]=SEGMENT[temp1];
///OUTPUT
		x=Set_Buf.Output_Cnt;
        Zerobit=0;
        temp1=x%1000;
        temp= x/1000;

		if (temp == 0) 
		{
			Dis_Buf.OUT[3]=SEGMENT[10];  // off display
			Zerobit=1;
		}
		else
		{
			Dis_Buf.OUT[3]=SEGMENT[temp];
		}

        temp=temp1/100;
        temp1=temp1 % 100;
		temp = temp & 0x0f;
		if ((temp==0x00) && (Zerobit==1)) Dis_Buf.OUT[2]=SEGMENT[10]; // off 2 segments
		else
		{
			Zerobit=0;
			Dis_Buf.OUT[2]=SEGMENT[temp];
		}

        temp=temp1/10;
        temp1=temp1 % 10;
		if ((temp==0x00) && (Zerobit==1))
		{ 
			Dis_Buf.OUT[1]=SEGMENT[10]; // off 3 segments
		}
		else Dis_Buf.OUT[1]=SEGMENT[temp];
		Dis_Buf.OUT[0]=SEGMENT[temp1];

// DIFFERENT
		x=Set_Buf.Target_Cnt - Set_Buf.Output_Cnt;
		if (x<0) 
		{
			Dis_Buf.DIF[4]=SEGMENT[15]; //"-" sign
			x = ~x+1;	//1's complement
			IOSET = 0x00040000;	//"-" signed ON
		}
		else 
		{
			Dis_Buf.DIF[4]=SEGMENT[10]; //" " sign
			IOCLR = 0x00040000;
		}
        Zerobit=0;
        temp1=x%1000;
        temp= x/1000;

		if (temp == 0) 
		{
			Dis_Buf.DIF[3]=SEGMENT[10];  // off display
			Zerobit=1;
		}
		else
		{
			Dis_Buf.DIF[3]=SEGMENT[temp];
		}

        temp=temp1/100;
        temp1=temp1 % 100;
		temp = temp & 0x0f;
		if ((temp==0x00) && (Zerobit==1)) Dis_Buf.DIF[2]=SEGMENT[10]; // off 2 segments
		else
		{
			Zerobit=0;
			Dis_Buf.DIF[2]=SEGMENT[temp];
		}

        temp=temp1/10;
        temp1=temp1 % 10;
		if ((temp==0x00) && (Zerobit==1))
		{ 
			Dis_Buf.DIF[1]=SEGMENT[10]; // off 3 segments
		}
		else Dis_Buf.DIF[1]=SEGMENT[temp];
		Dis_Buf.DIF[0]=SEGMENT[temp1];


}

void clear_Display(void)
{
	char i;

    for (i=0;i<4;i++)
    {
        Dis_Buf.TAR[i]=SEGMENT[10];
    }

    for (i=0;i<4;i++)
    {
        Dis_Buf.OUT[i]=SEGMENT[10];
    }

    for (i=0;i<4;i++)
    {
        Dis_Buf.DIF[i]=SEGMENT[10];
    }
    Display_buffer();
}


/*******************************************************************/
/* Display Display_bufferX to seven segment                        */
/*******************************************************************/
void Display_buffer(void)                                           
{
	signed char i; 
    for (i=4; i>0; i--) shift_byte(Dis_Buf.DIF[i-1]);
    for (i=4; i>0; i--) shift_byte(Dis_Buf.OUT[i-1]);
    for (i=4; i>0; i--) shift_byte(Dis_Buf.TAR[i-1]);
    E_Display();
    Refreshbit=0;     
}

// ROUTINE TO DISPLAY THE DATA TO ST2221
// SHIFT BYTE TO ST2221
void shift_byte(unsigned char x)
{
	unsigned char i,temp;

    LTH_clr();
    CLK_clr();
    for (i=0; i<8; i++)
    {
   	 	temp=x;
		if ((temp & 0x80) == 0x80) DAT_set();
		else DAT_clr();
		x= x << 1;
        shift_bus();
    }
}

/****************************************************************/
/*Shift display data bus                                        */
/****************************************************************/
void shift_bus (void)
{
     delay(10000);
     LTH_clr();
     CLK_set();
     delay(10000);
     CLK_clr();
     delay(10000);
}

/****************************************************************/
/*Enable Display strobe                                         */
/****************************************************************/
void E_Display (void)
{
     LTH_set();
     delay(100000);
     LTH_clr();
     EN_clr();
     DAT_clr();
}

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看日韩av| zzijzzij亚洲日本少妇熟睡| 国产黄色精品视频| 欧美精品 日韩| 亚洲欧美日韩系列| 国产91精品一区二区麻豆网站| 欧洲一区在线电影| 综合欧美亚洲日本| 国产精品夜夜嗨| 日韩三级视频中文字幕| 亚洲一区二区三区国产| www.成人在线| 国产精品欧美一级免费| 精品午夜一区二区三区在线观看| 91成人免费网站| 国产精品国产馆在线真实露脸| 久久99精品久久久久久久久久久久| 欧美日韩国产在线播放网站| 亚洲精品成a人| 94-欧美-setu| 亚洲美女视频在线观看| 成人综合婷婷国产精品久久| 久久免费偷拍视频| 国产精品自在在线| 久久精品亚洲精品国产欧美kt∨ | 成人免费毛片高清视频| 欧美电视剧在线观看完整版| 视频一区视频二区在线观看| 欧美无砖砖区免费| 午夜精品福利久久久| 欧美三级韩国三级日本一级| 午夜电影网一区| 4hu四虎永久在线影院成人| 亚洲图片自拍偷拍| 欧美日韩精品一区视频| 日韩精品一二三区| 欧美成人一区二区三区在线观看| 麻豆91在线播放| 久久香蕉国产线看观看99| 国产精品自拍av| 中文字幕日本乱码精品影院| 色嗨嗨av一区二区三区| 亚洲v中文字幕| 日韩一卡二卡三卡四卡| 国产精一区二区三区| 中文字幕欧美三区| 91九色02白丝porn| 日韩高清不卡一区| 国产日韩视频一区二区三区| 97久久精品人人做人人爽50路| 天天色天天操综合| 国产成人免费视频一区| 中文字幕一区二区三区在线不卡 | www.久久久久久久久| 国产精品久久毛片av大全日韩| 欧美成人r级一区二区三区| 91精品国产91久久久久久最新毛片 | 精品粉嫩aⅴ一区二区三区四区| 777久久久精品| 欧美韩日一区二区三区| 日本vs亚洲vs韩国一区三区 | 91免费小视频| 亚洲国产欧美在线| 91精品午夜视频| 久久精品一区八戒影视| 国产精品一区二区在线看| 亚洲综合久久av| 精品国产乱码久久久久久牛牛| 91同城在线观看| 高清不卡一二三区| 精品国产乱码久久久久久夜甘婷婷| 久久疯狂做爰流白浆xx| 国产精品久久久久久福利一牛影视| 欧美日韩国产美| 国产成人免费av在线| 国产精品女主播av| 国产成人精品aa毛片| 国产精品丝袜91| 日本高清成人免费播放| 青草av.久久免费一区| 久久九九全国免费| 欧美精品自拍偷拍| voyeur盗摄精品| 中文字幕一区av| 国产精品66部| 9191国产精品| 91久久一区二区| 国产精品夫妻自拍| 欧美日韩在线不卡| 日日骚欧美日韩| 国产精品嫩草99a| 欧美老女人在线| 91美女片黄在线| 国产乱人伦精品一区二区在线观看| 亚洲一区二区三区不卡国产欧美| 亚洲国产精品二十页| 亚洲精品一线二线三线| 欧美一二三四在线| 欧美天堂一区二区三区| 色婷婷综合激情| www.视频一区| av电影天堂一区二区在线观看| 国产激情一区二区三区| 国产精品一区二区你懂的| 日日夜夜精品免费视频| 亚洲v中文字幕| 午夜电影一区二区三区| 午夜视频在线观看一区| 亚洲一区二区三区免费视频| 亚洲综合丝袜美腿| 一区二区三区在线观看视频| 亚洲精品国久久99热| 亚洲欧美日韩中文字幕一区二区三区 | 日韩一区二区三区av| 制服丝袜亚洲网站| 6080亚洲精品一区二区| 欧美日韩不卡一区二区| 717成人午夜免费福利电影| 欧美日韩第一区日日骚| 制服丝袜一区二区三区| 日韩精品一区二区三区视频在线观看 | 欧美精品成人一区二区三区四区| 欧美性大战久久久| 欧美日韩中文精品| 91精品国产综合久久精品| 欧美精品一二三| 日韩欧美亚洲一区二区| 久久这里都是精品| 国产精品久久久久久妇女6080| 亚洲蜜臀av乱码久久精品| 亚洲一区二区欧美日韩| 日韩精品一级中文字幕精品视频免费观看 | 久久亚洲一级片| 国产精品网站在线| 亚洲乱码国产乱码精品精小说 | 一区二区三区在线视频播放| 亚洲大型综合色站| 久久精品国产久精国产爱| 国产中文一区二区三区| 成人av在线看| 欧美图区在线视频| 亚洲精品一区二区精华| 国产精品初高中害羞小美女文| 一区二区三区精品| 日本欧美一区二区在线观看| 国产精品一二三区| 欧洲精品一区二区| 精品日韩av一区二区| **网站欧美大片在线观看| 香蕉成人伊视频在线观看| 国产乱国产乱300精品| 91麻豆成人久久精品二区三区| 在线不卡a资源高清| 欧美激情一区二区三区不卡 | 成人精品鲁一区一区二区| 欧美日韩在线一区二区| 欧美国产激情一区二区三区蜜月 | 在线播放视频一区| 国产性做久久久久久| 亚洲h动漫在线| 成人国产精品免费观看动漫 | 日本精品视频一区二区三区| 日韩一级免费一区| 亚洲欧美偷拍三级| 国产自产2019最新不卡| 欧美日韩高清影院| 中文一区在线播放 | 日韩精品中文字幕一区二区三区| 日韩一区欧美小说| 国产美女精品人人做人人爽| 欧美午夜寂寞影院| 亚洲色图20p| 成人综合婷婷国产精品久久蜜臀 | 欧美一卡2卡三卡4卡5免费| 日韩理论片网站| 国产精品一二三区| 日韩欧美久久久| 青青草97国产精品免费观看| 欧美伊人精品成人久久综合97| 国产精品女主播在线观看| 精品一区二区三区香蕉蜜桃| 在线看不卡av| 亚洲品质自拍视频网站| 国产精品一区二区久激情瑜伽| 56国语精品自产拍在线观看| 亚洲国产欧美在线| 91国偷自产一区二区开放时间| 国产精品久久久一区麻豆最新章节| 蜜桃精品在线观看| 欧美成人伊人久久综合网| 日韩av电影一区| 欧美一区二区在线播放| 偷拍日韩校园综合在线| 欧美亚洲国产一区二区三区va| 亚洲精品国产无套在线观| 色综合色综合色综合色综合色综合 | 在线成人高清不卡| 日韩精品欧美精品| 欧美亚洲综合网| 亚洲一区二区精品久久av|