05数码管

 矩形按键

	P3=0xfe;//fd//db//f7
	temp=P3;
	temp=temp&0xf0;
	if(temp != 0xf0)
	{
		Delay(10);
		temp=P3;
		temp=temp & 0xf0;
		if(temp != 0xf0)
		{
			temp=P3;
			switch(temp)
			{
				case 0xee:	key=0;break;//第一个字母都一样,第二个edb7
				case 0xde:	key=1;break;
				case 0xbe:	key=2;break;
				case 0x7e:	key=3;break;
			}
			while(temp!=0xf0)//等待按键释放
			{
				temp=P3;
				temp=temp&0xf0;
			}
			display(key);//显示
		}
	}

 十进制,十六进制

0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

 数码管显示数字

显示数字“0”,abcdef亮,状态值00111111——>0x3f
显示数字“1”,bc亮,状态值00000110——>0x06
显示数字“2”,abdeg亮,状态值01011011——>0x5b
显示数字“3”,abcdg亮,状态值01001111——>0x4f
显示数字“4”,bcfg亮,状态值01100110——>0x66
显示数字“5”,acdfg亮,状态值01101101——>0x6d
显示数字“6”,acdefg亮,状态值01111101——>0x7d
显示数字“7”,abc亮,状态值00000111——>0x07
显示数字“8”,abcdefg亮,状态值01111111——>0x7f
显示数字“9”,abcdfg亮,状态值01101111——>0x6f
显示字母“A”,abcefg亮,状态值01110111——>0x77
显示字母“B”,cdefg亮,状态值01111100——>0x7c
显示字母“C”,adef亮,状态值00111001——>0x39
显示字母“D”,bcdeg亮,状态值01011110——>0x5e
显示字母“E”,adefg亮,状态值01111001——>0x79
显示字母“F”,aefg亮,状态值01110001——>0x71

 选择数码管

1----fe
2----fd
3----fb
4----f7
5----ef
6----df

 模板头

#include <regx52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar num;
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;//定义蜂鸣器端
void delay_ms(uint ms)
{
	uint i,j;
	for(i=ms;i>0;i--)
	for(j=110;j>0;j--);
}
void main()
{
    
}

 定时器

TR0=~TR0;//让计时器0   暂停or继续
void T0_time() interrupt 1
{
	TH0=(65536-45872)/256;
	TL0=(65536-45872)%256;
//代码
}
void T0_time(){
    TMOD=0x11;
	TH0=(65536-45872)/256;
	TL0=(65536-45872)%256;
    EA=1;	
	ET0=1;	
	TR0=1;
}
//第二个
void T1_time() interrupt 3
{
	TH1=(65536-45872)/256;
	TL1=(65536-45872)%256;
}
void T1_time(){
    TMOD=0x11;
	TH1=(65536-45872)/256;
	TL1=(65536-45872)%256;
    EA=1;	
	ET1=1;	
	TR1=1;
}

 串口传电脑(数字or字符串)

//串口初始化
void Uart_Init(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//??????
	SCON = 0x50;		//8???,?????
	TMOD &= 0x0F;		//???????
	TMOD |= 0x20;		//???????
	TL1 = 0xFD;			//???????
	TH1 = 0xFD;			//???????
	ET1 = 0;			//???????
	TR1 = 1;			//???1????
}
//传递数字
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);
	
		TI=0;
	
}
//传递字符串
void UART_SendString(const char *str)  // ?????????
{
    while (*str != '\0') {
        SBUF = *str;  
        while (TI == 0);    
        TI = 0;             
        str++;                  
    }
}
//传递字符数组
void fafafa(unsigned char *Array, unsigned int Length)
{
    for (i = 0; i < Length; i++)
    {
        UART_SendByte(Array[i]);
    }
}
//调用
void main()
{
    Uart_Init();
    while(1)
    {
    UART_SendString("hello");
    }
}

 串口传板子(数字)

void Uart_Init(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//??????
	SCON = 0x50;		//8???,?????
	TMOD &= 0x0F;		//???????
	TMOD |= 0x20;		//???????
	TL1 = 0xFD;			//???????
	TH1 = 0xFD;			//???????
	ET1 = 0;			//???????
	TR1 = 1;			//???1????
	EA=1;
	ES=1;
}
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);
	
		TI=0;
	
}
void UART_Routine() interrupt 4
{
	if(RI==1)
	{
//输入即SBUF
		//代码
		RI=0;
	}
	
}
void main()
{
	Uart_Init();
	
	while(1)
	{
		//nothing
	}
}

按键延时

if(P3_4==0)
		{
			delay_ms(20);
			while(P3_4==0);
			delay_ms(20);
			
			P1_0=~P1_0;
		}

亮一个table

uchar code table[]={
	0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};

数码管显示(动态and静态)

	//静态先wela 0x wela 再dula table dula
    wela=1;
	P0=0xfd;
	wela=0;
	P0=0xff;
	dula=1;
	P0=table[ge];
	dula=0;
	delay_ms(1);
    //动态先dula table dula 再wela 0x wela
    dula=1;
	P0=table[ge];
	dula=0;
	P0=0xff;
	wela=1;
	P0=0xfd;
	wela=0;
	delay_ms(1);

1602头

#include<regx52.h>
#define uchar unsigned char
#define uint unsigned int	
uchar code table[]="Hello everyone!0";//?????
uchar code table1[]="Welcome to here!";//?????
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;//定义蜂鸣器端
uchar num;
void delay_ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms--){
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}
void write_com(uchar com)
{
	lcdrs=0;
	P0=com;
	delay_ms(5);
	lcden=1;
	delay_ms(5);
	lcden=0;
}

void write_data(uchar date)
{
	lcdrs=1;
	P0=date;
    delay_ms(5);
	lcden=1;
	delay_ms(5);
	lcden=0;
}

void init()
{
	dula=0;
	wela=0;
	lcden=0;
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
}

void main()
{
	init();
    write_com(0x80);//左开始
	write_com(0x80+0x10);//右开始
	for(num=0;num<sizeof(table)-1;num++)
	{
		write_data(table[num]);
		delay_ms(1);
	}
		for(num=0;num<16;num++)
	{
		write_com(0x18);
		delay_ms(200);
	}
    write_com(0x80+0x40);//左开始
	write_com(0x80+0x50);//右开始
	for(num=0;num<sizeof(table1)-1;num++)
	{
		write_data(table1[num]);
		delay_ms(1);
	}
///如果又开始需要
	for(num=0;num<16;num++)
	{
		write_com(0x18);
		delay_ms(200);
	}
///
	while(1);
}

时钟

void write_sfm(uchar add,uchar date)//写时分秒函数
{
	uchar shi,ge;
	shi=date/10;
	ge=date%10;
	write_com(0x80+0x40+add);//设置显示位置
	write_data(0x30+shi);//送液晶显示十位
	write_data(0x30+ge);//送液晶显示个位
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值