📄 usart.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 + -