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

📄 usart.c

📁 atmega128单片机的串口通讯程序
💻 C
字号:
#include "usart.h"

//这些数据若在myusart.h里面定义则会出错,原因是main.c包含了头文件myusart.h,头文件
//被包含,然后myusart.c则无法包含这些数据了

unsigned char data_00[]={"北京东控开发板\n\r"};
unsigned char data_01[]={"ATmega128主芯片:128K Flash 4K SRAM 4KByte EEPROM\n\r"};
unsigned char data_02[]={"I2C总线器件24C04,EEPROM数据存储器,4kBit  EEPROM\n\r"};
unsigned char data_03[]={"SPI总线器件,DAC7512 高速12bit D/A转换器\n\r"};
unsigned char data_04[]={"RS232接口Max232A,主从接口(可与计算机或其他开发板通信)\n\r"};
unsigned char data_05[]={"8个输入按键、1个复位按键\n\r"};
unsigned char data_06[]={"2位动态扫描LED数码管、8位LED发光二极管\n\r"};
unsigned char data_07[]={"1个有源蜂鸣器\n\r"};
unsigned char data_08[]={"2路A/D输入可调电位器\n\r"};
unsigned char data_09[]={"LCD1602和LCD12864液晶接口\n\r"};
unsigned char data_10[]={"JTAG仿真接口\n\r"};
unsigned char data_11[]={"AVR ISP下载接口\n\r"};
unsigned char data_12[]={"I2C,SPI接口单独引出,方便扩展\n\r"};
unsigned char data_13[]={"所有IO口全部引出,方便扩展实验及测试\n\r"};

void usart_transmit(unsigned char data)
{
   while(!(UCSR1A & (1<<UDRE1)));
   UDR1 = data;
}

unsigned char usart_receive(void)
{
   while(!(UCSR1A & (1<<RXC1)));
   return UDR1;
}

void data_write(unsigned char *data,unsigned char data_len)
{
   unsigned char i;
   for(i=0;i<data_len;i++)
   {
      usart_transmit(data[i]);
	  //_delay_ms(5);此处若延时则会使中文显示为乱码;
   }
   
}

void info_display(void)
{
	data_write(data_00,16);	_delay_ms(256);
	data_write(data_01,51);	_delay_ms(256);
	data_write(data_02,51);	_delay_ms(256);
	data_write(data_03,42);	_delay_ms(256);
	data_write(data_04,62);	_delay_ms(256);
	data_write(data_05,26);	_delay_ms(256);
	data_write(data_06,40);	_delay_ms(256);
	data_write(data_07,15);	_delay_ms(256);
	data_write(data_08,23);	_delay_ms(256);
	data_write(data_09,27);	_delay_ms(256);
	data_write(data_10,14);	_delay_ms(256);
	data_write(data_11,17);	_delay_ms(256);
	data_write(data_12,32);	_delay_ms(256);
	data_write(data_13,38);	_delay_ms(256);

}

void menu_test(void)
{
    unsigned char data = 0;
	unsigned char adapt[]  = {"\n\r"};
	unsigned char welcome[]={"     欢迎进入菜单操作!\n\r\n\r"};
	unsigned char menu_00[]={"     (1)请选择\n\r1.进入下一层菜单\n\r2.退出\n\r你的选择是: "};
	unsigned char menu_01[]={"     (2)请选择\n\r1.返回上一层菜单\n\r2.退出\n\r你的选择是: "};
    unsigned char goodbye[]={"     谢谢你的体验,再见! \n\r\n\r"};
    
	data_write(welcome,26);
	_delay_ms(256);	_delay_ms(256);	_delay_ms(256);	_delay_ms(256);

  tag: data_write(menu_00,54);
 	data = usart_receive();
	usart_transmit(data);
	data_write(adapt,2);
    data_write(adapt,2);

	if(data == 49)
	data_write(menu_01,54);
	else if(data == 50)	goto over;
	else goto over;


	data = usart_receive();
	usart_transmit(data);
    data_write(adapt,2);
	data_write(adapt,2);

	if(data == 49)  goto tag;
	else if(data == 50)  goto over;
	else goto over;

  over: data_write(goodbye,28);
}


void usart_example(void)
{   
    info_display();
	menu_test();
}

⌨️ 快捷键说明

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