当前位置: 首页 > news >正文

AVR128单片机 USART通信控制发光二极管显示

一、系统方案
在这里插入图片描述
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述
三、单片机软件设计
1、首先是系统初始化
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x00;//输入
PORTB = 0xFF;//低电平
DDRB = 0x00;//输入
PORTC = 0xFF;//低电平
DDRC = 0xFF;//输出
PORTE = 0xFF;
DDRE = 0xfE;//输出
PORTD = 0xff;
DDRD = 0xFB;//输出
PORTD = 0xff;
PORTF = 0xFF;
DDRF = 0xFF;//输出
PORTG = 0xFF;
DDRG = 0xFF;//输出
}

2、数码显示程序
unsigned char rev_buf[10]={0x00,0x00,0x00};
unsigned char display_flag=0;
unsigned char led_mode=0;
void display(void)
{
PORTF =table[led_mode];

}
3、按键程序
if((PINA&0x01)==0x00)//按键
{
delay_ms(200);
while((PINA&0x01)==0x00);
Uart0_Transmit(0x00); /发送数据/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
else if((PINA&0x02)==0x00)//按键
{
delay_ms(200);
while((PINA&0x08)==0x00);
Uart0_Transmit(0x01); /发送数据/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
else if((PINA&0x04)==0x00)
{
delay_ms(200);
while((PINA&0x01)==0x00);
Uart0_Transmit(0x02); /发送数据/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
4、核心算法程序
#pragma interrupt_handler uart1_rx_isr:iv_USART1_RXC
void uart1_rx_isr(void)
{
static unsigned char len=0;
rev_buf[len++]=UDR1;
//Uart_Transmit(rev_buf[len-1]);
if((rev_buf[len-1]==0x0d)&&(rev_buf[len-2]==0x0a))
{
len=0;
display_flag=1;
}
}

#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
static unsigned char len=0;
rev_buf[len++]=UDR0;
//Uart_Transmit(rev_buf[len-1]);
if((rev_buf[len-2]==0x0d)&&(rev_buf[len-1]==0x0a))
{
len=0;
led_mode=rev_buf[0];
display_flag=1;
}
}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

http://www.lryc.cn/news/158108.html

相关文章:

  • 为什么5G 要分离 CU 和DU?(4G分离RRU 和BBU)
  • Python中的数据输入
  • cms系统稳定性压力测试出现TPS抖动和毛刺的性能bug【杭州多测师_王sir】
  • 【UE】材质描边、外发光、轮廓线
  • 百模大战,打响AI应用生态的新赛点
  • 【C++二叉树】进阶OJ题
  • C++——vector:resize与reserve的区别,验证写入4GB大数据时相比原生操作的效率提升
  • 基础配置xml
  • win环境安装SuperMap iserver和配置许可
  • 【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER(一)
  • pytest parametrize多参数接口请求及展示中文响应数据
  • 电视连续剧 ffmpeg 批量去掉片头片尾
  • 二进制搭建kubernetes
  • TDengine函数大全-系统函数
  • 北京互联网营销服务商浩希数字科技申请1350万美元纳斯达克IPO上市
  • ElementUI浅尝辄止22:Alert 警告
  • HCIP的mgre实验
  • redis cluster集群搭建
  • 小红书笔记爬虫
  • 国密GmSSL v2版本命令行方式生成国密sm2私钥、公钥、签名和验证签名
  • 2023年9月惠州/深圳CPDA数据分析师认证找弘博创新
  • it运维监控管理平台,统一运维监控管理平台
  • TDengine 官网换了新“皮肤”,来看看这个风格是不是你的菜
  • MFC:自绘CListBox,GetText返回一个乱码
  • shell 脚本发布前后端代码
  • 我的私人笔记(Linux中安装mysql)
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven目录结构和idea的整合
  • Android Automotive概述
  • iOS 16.4更新指南:问题解答与新功能一览
  • Vue + Element UI 前端篇(八):管理应用状态