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

📄 series to p.c

📁 THE USE OF74LS164 74LS16474LS16474LS16474LS164
💻 C
字号:
/*本设计主要在按键设计的基础构思而来的,实验74LS164来实现简单的并串转换
大大节省了单片机的IO口线
char bdata  tmp1;
bit tmp2;
...
tmp2=tmp1^7;这样是取不出tmp1的第七位的
*/
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define _Nop_() _nop_()
uchar code ncode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ncode_2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//取位时候用的,分别取到第零位到最高位
sbit P32=P3^2;
sbit P20=P2^0;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;

void delay(uint t)
{
	while(t>1){t--;}
}

unsigned char scan_key()//最通用的4*4键盘扫描程序
{
   uchar key_1;
   uchar key_2;
   
   P1=0x0f;
   key_2=P1;
   key_2&=0x0f;
   P1=0xf0;
   key_1=P1;
   key_1&=0xf0;
   key_1|=key_2;
   return(key_1);
}


void deal_2(uchar i)
{
	uchar counter=0;
	uchar a=0x3f;
	
	while(counter<8)
	{		
			P20=(bit)(ncode[i]&ncode_2[counter]);//这是该设计的核心部分,在此用了强制类型转换,等效为if(ncode[i]&ncode_2[counter]!=0)P22=1;else P22=0;
			P22=1;//在此要强调一点,先送数据,然后再把CLK拉高
			_Nop_();//不管在高电平还是低电平都需要保持一定时间,时间长度根据不同的器件而定
			_Nop_();
			_Nop_();
			_Nop_();
			_Nop_();
			
			P22=0;
			_Nop_();
			_Nop_();
			_Nop_();
			_Nop_();
			_Nop_();
			counter++;
			 
			 delay(20000);
			 delay(20000);
	 }
	 P20=0;
	 P24=1;
	 _Nop_();
	 _Nop_();
	 _Nop_();
	 _Nop_();
	 _Nop_();
	 P24=0;
}


void deal(uchar code_)
{
    
	switch(code_)
	{
	    case 0xe7:deal_2(0);break;
		case 0xeb:deal_2(1);break;
		case 0xed:deal_2(2);break;
		case 0xee:deal_2(3);break;
		case 0xd7:deal_2(4);break;
		case 0xdb:deal_2(5);break;
		case 0xdd:deal_2(6);break;
		case 0xde:deal_2(7);break;
		case 0xb7:deal_2(8);break;
		case 0xbb:deal_2(9);break;
	 }
	 
}

void in_i(void) interrupt 0 using 0
{
    uchar t;
	EA=0;
	t=200;
	while(t--);
	if(P32){EA=1;return;}
	deal((scan_key()));
	P1=0xf0;
	EA=1;
	return ;
}

void main()
{
    P1=0xf0;
	P20=0;
	P22=0;
	P23=0;
	P24=0;
	_Nop_();
	_Nop_(); 
	_Nop_();
	_Nop_();
	_Nop_();
	_Nop_();
	P23=1;
	EX0=1;
	IT0=1;
	EA=1;
	while(1);
}







































		

⌨️ 快捷键说明

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