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

📄 dianyuan.c

📁 利用单片机按键输入0-5V可以实现0-5V电源输出
💻 C
字号:
#include<reg51.h>
#include<intrins.h>

typedef unsigned int uint;
typedef unsigned char uchar;

uchar code table[]={
0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};

uchar code select[]={
/*0x7f,0xbf,0xdf,0xef,*/
0xf7,0xfb,0xfd,0xfe};

uchar code tablecom[]={0x00,0x10,0x20,0x30,0x40};

sbit SCK=P1^0;
sbit CS=P1^1;
sbit SDI=P1^2;
sbit p1_5=P1^5;
sbit p1_6=P1^6;
sbit p1_7=P1^7;

#define S1 0x38
#define S2 0x34
#define S3 0x2c
#define S4 0x1c

uchar v=5,mv=0;
uint b,ss;

void delay(uint z)//延时
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=124;y>0;y--);	
}

void sysinit(void)//系统初始化
{
	TMOD=0x11;
	TH0=0xf8;
	TL0=0x30;
	TH1=0x4c;
	TL0=0x00;
	EA=1;
	ET0=1;
	ET1=1;
	TR0=1;
	TR1=1;
}

void senddat(unsigned long senddat)//发送数据函数
{
	uchar i;
	for(i=0;i<24;i++)
	{
		if((senddat&0x800000)==0)
		SDI=0;
		else		
		SDI=1;
		_nop_();
		SCK=1;
		_nop_();
		SCK=0;
		senddat<<=1;
	}	
}	

uchar keyscan(void)
{
	uchar keyvalue;
	P3=0xff;
	keyvalue=P3;
	keyvalue=P3&0x3c;
	if(keyvalue==0x3c)
		return(0xff);
	delay(6);
	P3=0xff;
	keyvalue=P3;
	keyvalue=P3&0x3c;
	if(keyvalue==0x3c)
		return(0xff);
	while((P3&0x3c)!=0x3c);
	return(keyvalue);
}

void keyset(uchar s)
{ 
	switch(s)
	{
		case S1:
			v++;b+=500;
			break;
		case S2:
			v--;b-=500;
			break;
		case S3:
			mv++;b+=100;
			break;
		case S4:
			mv--;b-=100;
			break;
	}	
}

main(void)//主函数
{
	uchar i=0;
	sysinit();
	while(1)
	{		
		CS=1;
		_nop_();
		_nop_();
		CS=0;
		_nop_();
		senddat(0x210000+b);			
	}
}

void timer0 (void) interrupt 1 //定时器中断函数
{
	static uchar num=0;
	TH0=0xf8;
	TL0=0x30;
	P2=0xff;
	switch(num)
	{
		case 0:
			P0=table[v/10];
			break;
		case 1:
			P0=table[v%10]&0x7f;
			break;
		case 2:
			P0=table[mv/10];
			break;
		case 3:
			P0=table[mv%10];
	}
	P2=select[num];
	num++;	
	num%=4;	
}

void timer1 (void) interrupt 3
{
	TH1=0x4c;
	TL0=0x00;	
	keyset(keyscan());
}


⌨️ 快捷键说明

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