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

📄 chuankou.h

📁 在示模拟波器上显示汉字程序 51单片机 DAC0832 PS2键盘输入 汉字移动
💻 H
字号:
/*=========================================================================

		串口通信驱动
==========================================================================*/
//#include <reg52.h>
#include <string.h>
#include <stdio.h>

#define uint  unsigned int 
#define uchar unsigned char

//--------------------------------------------------
//串口初始化
//--------------------------------------------------
void uart_rest()
{												    
	//TMOD &= 0x0f;
	//TMOD |= 0X20;			//定时器T1x使用工作方式2
	TMOD=0x20;
	//TH1 = 250;			//波特率4800
	//TL1 = 250;
	TH1=0xF3;				//波特率9600
	TL1=0xF3;
	TR1 = 1;				//开始计时	 定时器1运行控制位
	PCON = 0x80;			//SMOD = 1  波特率加倍至9600
	SCON = 0X50;			//工作方式1,8位 可变,允许接收	SM0 SM1 SM2 REN TB8 RB8 TI RI 
	EA = 0;					//关闭全部中断
}
//--------------------------------------------------
//发送数据,参数dat为发送的数据
//--------------------------------------------------
void put_date(unsigned dat)
{	
	SBUF = dat;		    //把数据放入缓冲区 
	while(!TI);			//等待数据发送完成	完成后TI置1 
	TI = 0;				//清发送标志位	
}
//---------------------------------------------------
//发送字符串,参数str为待发送字符串
//---------------------------------------------------
void put_string(uchar *str)	
{
	while(*str != '\0')		//发送到字符串尾结束
	{
		put_date(*str);
		str++;				//发送下一数据
	}
}
//--------------------------------------------------
//发送四位数字,参数dat为发送的四位数字
//--------------------------------------------------
void put_number(uint dat)
{
	
	uchar k[4];

	k[0] = dat / 1000;  dat = dat % 1000;
	k[1] = dat / 100;  dat = dat % 100;
	k[2] = dat / 10;  dat = dat % 10;
	k[3] = dat / 1;  
	
	put_date (k[0]+48);
	put_date (k[1]+48);
	put_date (k[2]+48);
	put_date (k[3]+48);
	put_date (32);
}
//----------------------------------------------------
//接收数据,返回值dat是接收到的数据
//----------------------------------------------------
uint get_date()
{
	uint dat;
	while(!RI);			//等待数据接收
	dat = SBUF;			//保存接收到的数据
	RI = 0;				//清接收标志位
	return dat;		

}
/*****************************************************
* 接收字符串,参数str指向保存接收字符串的缓冲区
*
* 注意:在本函数中,用串口发送字符串时,在发送结束时
* 		应该加上一个结束字符,在本函数中用!做为结束符
*		而在调用函数时则不需要加上!
*****************************************************/
void get_string(uchar *str)
{
	uint count = 0;
	do
	{
		*str = 0;				//清缓冲区
		*str = get_date();		//保存接收到的数据
		str++;					//准备接收下一数据

		count++;
		if(count >8)			//如果超出了范围(count)为0
		{
			*(str-1) = 0;
			break;
		}

	}while(*(str-1) != '!');	//接收到数据尾以!则停止
	*(str-1) = 0;
	
}

⌨️ 快捷键说明

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