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

📄 usart_1.c

📁 用PROTEUS做的USART仿真
💻 C
字号:
/**********************************
!!!!!!注意在发送的字符串后边需加'/'!!!!!!!!!
可以用‘*’进行清屏
**********************************/
#include <pic.h>

#define uint unsigned int
#define uchar unsigned char
//**********函数声明*************
void  Init_LCD(void);
void LCD_Clear(void);
void delay_nms(unsigned int); 
 void LCD_DisplayString (char, char ,unsigned char*);
void LCD_DisplayCharacter(char);
void LCD_WriteControl(uchar);

//void get_usart_result(void);
void get_usart_string(void);   //receive the string from the USART
void send_usart_date(uchar);

uchar string_usart[]=0;
//*************************************
void usartint()
{TRISC6=0;  //TX引脚输出
 TRISC7=1;  //RX引脚输入
 SPBRG=0X67;  //波特率设为,0x67-2400,0x33-4800,0x19-9600
 TXSTA=0X24;  //设为高速波特率,发送8位数据
 RCSTA=0X90;  //串行端口使能
 GIE=0; 
 TRISD=0x00;  
 PORTD=0x00;
 //TXREG=0x88; 
}
//接收USART数据
void get_usart_string()
{
 uint count=0;
 do{
    do{;}while(RCIF==0);
    RCIF=0;
    string_usart[count]=RCREG;
    count++;
    if('*'==RCREG)
    {
     LCD_Clear();   //If send '*',clear the LCD
     break;   // tip the cycle!
    }
    }while(RCREG!='/');    //!!!!!!注意在发送的字符串后边需加'/'!!!!!!!!!
    string_usart[count-1]='\0'; //加停止符
 }

//通过USART发送数据
void send_usart_date(uchar send_temp)
{
 TXREG=send_temp;
 do{;}while(0==TXIF);
 TXIF=0;
 }
//*********display***********
void display()
{
 get_usart_string();
 LCD_DisplayString (1,1 ,string_usart);
}

void main()
{
usartint();
Init_LCD();
LCD_WriteControl(0x80); //显示起始地址
while(1)
{

 display();
 }
}

⌨️ 快捷键说明

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