99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

TM1638數碼管鍵盤驅動芯片使用求助

MCU用STC404AS,驅動是TM1638,看不懂他的規格書,請教大家幫忙,附上規格書:TM1638_V1.1.pdf 

看那個表格描述是00H單元對應SEG1的是嗎,然后SEG2是對應哪個單元?...明天我把我的原理圖畫出來,用過這類芯片的應該很清楚了幫忙解惑,第一次用這個摸不著頭腦...

全部回復(4)
正序查看
倒序查看
fzhlpp
LV.7
2
2017-10-18 18:48

數碼管顯示是可以了,現在卡在按鍵這塊,附上原理圖:1638 

待會我貼上代碼...

0
回復
fzhlpp
LV.7
3
2017-10-18 22:02
@fzhlpp
數碼管顯示是可以了,現在卡在按鍵這塊,附上原理圖:1638 待會我貼上代碼...

沒人理,繼續代碼:人家的示例代碼,就修改了顯示代碼,然后按鍵測試部分代碼修改了也是沒反應...

#include 				//MCU???
#include 				//??nop?????

#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //???



/********************??????**********************/
sbit DIO=P3^0;						//??DIO
sbit CLK=P3^1;						//??CLK
sbit STB=P3^2;						//??STB


/***********************
????
***********************/
unsigned char Key[5]={0};		   //???????????
const unsigned char BCD_LABLE_ALL[]=
	{0xbb,0x88,0x6b,0xea,0xd8,0xf2,0xf3,0xa8,0xfd,0xea};
	//{0xdd,0x11,0xd6,0x57,0x1b,0x4f,0xaf,0x15,0xdf,0x5f};
//{0xbf,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
	
 unsigned char BCD_LABLE_anode[16] = {0}; //??????????  TM1628????????? ???????

unsigned char cmd_dis_mode = 0x8f;   
/***************????**************/
void delay_nms(unsigned int n)
{
  unsigned int i;
  while(n--) 
    for(i=0;i<550;i++);
}
void delay_nus(unsigned int n)
{
  unsigned int i;
  while(n--) 
    for(i=0;i<50;i++);
}

/***************??8bit??,?????**************/
void send_8bit(unsigned char dat)	
{
  unsigned char i;
  for(i=0;i<8;i++)
  {	 
    CLK=0;
    if(dat&0x01) 
	  DIO=1;
	else 
	  DIO=0;
	 _nop_();
	 _nop_();
	 _nop_();
	
	 CLK=1;
	 dat>>=1;
	 
  }
    CLK=0;
	DIO=0;
}

/******************??????***********************/
void send_command(unsigned char word)
{
 STB=1;
 _nop_();
   
 STB=0;
 send_8bit(word);
 
}

void Write_String(unsigned char *p,unsigned char cnt) //cnt??14byte
{ 
 unsigned char i; 
 
 for(i=0;i0)
	{
	   if(cnt>8)
	   {
	   	  //myflag |= 0x01;
			   cnt = cnt -9;
				 for(i=1;i<16;i=i+2)
				{
					
					if(ydata&0x01 == 0x01)
					{
						BCD_LABLE_anode[i] |=  (0x01<>1);
				}  
			   
	   }
	   else
	   {
	   	 cnt = cnt -1;
		 	for(i=0;i<16;i=i+2)
			{
			
				if((ydata&0x01) == 0x01)
				{
					BCD_LABLE_anode[i] |=  (0x01<>1);
			 }  
	   }	
	}	


	
}

/************************************************************************************
??SEG1-SEG8 ????1-8????,????????:
cnt1 :???cnt1????;
number: ????????,?number=1 ????1;
display(0,1): ????1???????0.
BCD_LABLE_ALL[0]:??0x3f, ??????0,??????????????????????
************************************************************************************/
void display(unsigned char number,unsigned char cnt1)
{
   		 
		 NE_C(BCD_LABLE_ALL[number],cnt1);   				//????
		 send_command(0x40);												//??????:?????????1,??????
		 send_command(0xc0);												//????????:?00H??
		 Write_String(BCD_LABLE_anode,16);					//???? 16??? ??1629?????16???  
		 STB=1;
 		 send_command(cmd_dis_mode);
}	

									 
void display_fixedadd(unsigned char number,unsigned char cnt1)
{
   		 
		 NE_C(BCD_LABLE_ALL[number],cnt1);
		 send_command(0x44);	//??????:???????????,??????
 		 send_command(0xc2);
		 send_8bit(0x00);//?02???00
		 STB=0;
		 send_command(cmd_dis_mode);
		 STB=0;

}										 


/****************????????*******************/
void read_key()
{
	unsigned char i,j;
	send_command(0x42);
	DIO=1;					//??DIO
	for(j=0;j<4;j++)
	{
		for(i=0;i<8;i++)
		{
			CLK=0;
			Key[j]=Key[j]>>1;
			CLK=1;
			if(DIO)
				Key[j]=Key[j]|0x80;//1000 0000
				nop;
		}
		nop;
		nop;
	}
	CLK=0;
	DIO=0;

	STB=1;
}

void key_process()		
{  
   /*
   if(Key[0]!=0x00)
   { 
    if((Key[0]==0x08)){display(1,1);} //K0?SEG1????,???????1
    if((Key[0]==0x04)){display(2,1);} //K1?SEG1????,???????2
   }
    if(Key[1]!=0x00)
   { 
    if((Key[1]==0x08)){display(3,1);} //K0?SEG3????,???????3
    if((Key[1]==0x04)){display(4,1);} //K1?SEG3????,???????4
   } 
   */
   if(Key[1]!=0x00)
   {
   if(Key[1]==0x01)display(0,1);
   if(Key[1]==0x02)display(0,2);
   if(Key[1]==0x03)display(0,3);
   }
    if(Key[2]!=0x00)
   {
   if(Key[2]==0x04)display(1,1);
   if(Key[2]==0x05)display(1,2);
   if(Key[2]==0x06)display(1,3);
   }
    if(Key[1]!=0x00)
   {
   if(Key[3]==0x07)display(2,1);
   if(Key[3]==0x08)display(2,2);
   if(Key[3]==0x09)display(2,3);
   }
    if(Key[4]!=0x10)
   {
   if(Key[4]==0x20)display(3,1);
   if(Key[4]==0x30)display(3,2);
   if(Key[4]==0x40)display(3,3);
   }
    if(Key[5]!=0x00)
   {
   if(Key[5]==0x60)display(4,1);
   if(Key[5]==0x70)display(4,2);
   if(Key[5]==0x80)display(4,3);
   }
    if(Key[6]!=0x00)
   {
   if(Key[6]==0x90)display(5,1);
   if(Key[6]==0xa0)display(5,2);
   if(Key[6]==0xb0)display(5,3);
   }
    if(Key[7]!=0x00)
   {
   if(Key[7]==0xc0)display(6,1);
   if(Key[7]==0xd0)display(6,2);
   if(Key[7]==0xe0)display(6,3);
   }
    if(Key[8]!=0x00)
   {
   if(Key[8]==0x0a)display(7,1);
   if(Key[8]==0x0b)display(7,2);
   if(Key[8]==0x0c)display(7,3);
   }
   //if(Key[1]!=0x00){if((Key[1]==0x08)){display(2,1);}}
   //if(Key[2]!=0x00){if((Key[2]==0x08)){display(3,1);}}
   //if(Key[3]!=0x00){if((Key[3]==0x08)){display(4,2);}}
  // if(Key[4]!=0x00){if((Key[4]==0x08)){display(5,3);}}
}



void main()
{
	char i;

//	//????????????? ?? 1 2 3 4 5 6 7 8  
	for(i=1;i<=3;i++){display(i%10,i);}delay_nms(5); 
	//display(5,1);
//	display(6,2);
//	display(7,3);	
		
	 	
	//???
	while(1)
	{		
			read_key();
			key_process();
			delay_nms(5);
	
	}
}


0
回復
2017-10-19 10:36
@fzhlpp
沒人理,繼續代碼:人家的示例代碼,就修改了顯示代碼,然后按鍵測試部分代碼修改了也是沒反應...#include//MCU???#include//??nop?????#definenop_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//???/********************??????**********************/sbitDIO=P3^0;//??DIOsbitCLK=P3^1;//??CLKsbitSTB=P3^2;//??STB/***********************????***********************/unsignedcharKey[5]={0};//???????????constunsignedcharBCD_LABLE_ALL[]={0xbb,0x88,0x6b,0xea,0xd8,0xf2,0xf3,0xa8,0xfd,0xea};//{0xdd,0x11,0xd6,0x57,0x1b,0x4f,0xaf,0x15,0xdf,0x5f};//{0xbf,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};unsignedcharBCD_LABLE_anode[16]={0};//??????????TM1628????????????????unsignedcharcmd_dis_mode=0x8f;/***************????**************/voiddelay_nms(unsignedintn){unsignedinti;while(n--)for(i=0;i8){//myflag|=0x01;cnt=cnt-9;for(i=1;i
幫你頂
0
回復
fzhlpp
LV.7
5
2017-10-19 22:43
@電源網-fqd
幫你頂

謝謝,按鍵也已經搞定,原來是我的3根控制線沒接上拉,都接個上拉10K電阻后就正常了。

0
回復
主站蜘蛛池模板: 无码成人精品区在线观看 | 国产啪视频| zzji亚洲日本少妇jizjⅰz | 男人和女人做爽爽视频免费 | 激情在线视频网站 | 久久精品亚洲男人的天堂 | 免费观看作爱视频网站 | 东京复仇者第三季天竺篇在线观看 | 日本少妇高潮正在线播放 | 7777精品伊人久久久大香线蕉 | 国产精品高潮呻吟av久久4虎 | 精品一区二区三区日本视频 | 8x8ⅹ永久免费视频 精品无人码麻豆乱码1区2区 | 99精品在这里| 牛鞭擦进少妇的下身 | 欧美综合一区 | 精品一区二区三区日本 | 色av综合在线 | 无码aⅴ免费中文字幕久久 国产精品1234 | 国产免费午夜福利片在线 | 黑人巨大精品欧美一区二区一 | 免费xxxxx大片在线观看网站 | 男同男性xx视频在线观看免费 | 激情久久久久久久 | 亚洲精品乱码久久久久 | 国产一区二区三区国产精品 | 日韩经典在线观看 | 99精品久久久久中文字幕 | 欧美一区欧美二区 | 香港三级日本三级韩国三级 | 国产精品第一页在线观看 | 青青草免费在线播放 | 亚洲成人中文在线 | 欧美成人精品a片免费区网站 | 少妇粉嫩小泬喷水视频WWW | 黄色视频a级毛片 | 国产女同2互磨高潮在线观看 | 国产成人网 | 丰满五十六十老熟女hd | 亚洲有吗在线观看 | 中国国语毛片免费观看视频 |