89c51单片机的简单运用3--串口、液晶显示屏

一、串口

串口是连接pc机与单片机的主要工具,利用串口可以用电脑对用单片机来实现工作的设备进行远程控制,为工作提供方便,学习串口过程中,遇到的最大问题是当同时需要用到串口和定时器时,对于TMOD的设置存在矛盾,利用串口需要设置TMOD=0x20,定时器则需要设置为0x10或0x01,目前还不知道如何解决

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar t0,flag;
uint a;
void init();
void delay(uint z);
void main()
{
	init();
    while(1)
	{
		if(a==1)
	//	while(1)
		{
					P3=0x7f;
					delay(400);
					P3=0xff; 
					delay(400);
		}
		if(a==0x02)
		//while(1)
		{
					P3=0x7f;
					delay(200);
					P3=0xff; 
					delay(200);
		}
		if(a==0x03)
	//	while(1)
		{
					P3=0x7f;
					delay(100);
					P3=0xff; 
					delay(100);
		}
		if(a==0x04)
	//	while(1)
		{
					P3=0xff;


		}
	}
}
void init()
{
	TMOD=0x20;
	TH1=0xfd;
	TL1=0xfd;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	TR0=1;
	TR1=1;
	REN=1;
	SM0=0;
	SM1=1;
	EA=1;
	ES=1;
	flag=0;
	P3=0xff;	
}
 	  
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void ser() interrupt 4
{
	RI=0;
	a=SBUF;

}

二、液晶显示

学习液晶个人觉得只需记得看操作时序图就可以很好编出所要实现功能的程序

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar aa,bb,num;
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;


void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void write_com(aa)
{
	lcdrs=0;
   	P0=aa;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}
void write_data(bb)
{
	lcdrs=1;
	P0=bb;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}  
void init()			  
{
	P2=0xff;
	lcden=0;
	lcdrw=0;
	write_com(0x38);
	write_com(0x0f);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);
}
void main ()
{
	init();
	write_data('1');
	delay(5);
	write_data('2');
	delay(5);
	while(1) ;

}


 


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值