IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 实现两个单片机系统串行通信的功能,一端的功能为发送数据,一端的功能为接收并显示数据;(提交电路图、程序文档、视频) -> 正文阅读

[嵌入式]实现两个单片机系统串行通信的功能,一端的功能为发送数据,一端的功能为接收并显示数据;(提交电路图、程序文档、视频)

用proteus模拟,单片机型号:ATMega16

电路图:

?U1(接收端)代码:

//共阳极数码管,接收端代码,ATMega16
#include<iom16v.h>
const unsigned char num[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
unsigned int led[3];
unsigned char x = 0;
//io初始化
void io_init(void)
{
	DDRC = 0XFF;
	PORTC = 0X00;
	DDRD = 0XF0;
	PORTD = 0XF0;
}

//时钟初始化 T/C0
void t_init(void)
{
	TCCR0 = 0B00001100;//ctc,256分频
	OCR0 = 50;
}

//USART初始化
void usart_init(unsigned int baud)
{
 	UBRRH = (unsigned char)(baud>>8);
	UBRRL = (unsigned char)baud;
	UCSRB = 1<<RXEN;
	UCSRC = (1<<URSEL)|(3<<UCSZ0);
}

//数据接收函数
unsigned int usart_receive(void)
{
 	unsigned char dl,dh;
	unsigned int d;
	while(!(UCSRA & (1<<RXC))) ;
	dl = UDR;
	while(!(UCSRA & (1<<RXC))) ;
	dh = UDR;
	d = (unsigned int)dl + ((unsigned int)dh<<8);
	return d;
}

//中断刷新
#pragma interrupt_handler _led:20
void _led(void)
{
 	PORTD |= 0xF0;
 	x =(++x)%4;
	PORTC = num[led[x]];
	switch(x)
	{
		case 0: PORTD &= ~(1<<4); break;//个位
	 	case 1: PORTD &= ~(1<<5); break;//十位
		case 2: PORTD &= ~(1<<6); break;//百位
		case 3: PORTD &= ~(1<<7); break;//千位
		default: ; break; 
	}
}

//译码函数
void ledbuf(unsigned int input)
{

 	unsigned char i;
	for(i = 0; i <= 3; i++)
	{
 	 	led[i] = input % 10;
		input = input /10;
	}
}

void main(void)
{
 	io_init();
	t_init();
 	usart_init(103);
	TIMSK = 1<<1;
	SREG = 1<<7;    // T0比较匹配
 	while(1)
	{	
		ledbuf(usart_receive());
	}
}

U2(发送端代码):

//发送数据代码
#include<iom16v.h>
#define DATA 9531
//传输数据DATA

//usart初始化
void usart_init(unsigned int baud)
{
	UBRRH = (unsigned char)(baud>>8);
	UBRRL = (unsigned char)baud;// 设置波特率
	UCSRB = 1<<TXEN;//发送器使能 
	UCSRC = (1<<URSEL)|(3<<UCSZ0);// 帧格式:8个数据位,1个停止位 
}

//数据发送函数
void usart_transmit(unsigned int data)
{
	while(!(UCSRA & (1<<UDRE))) ;
	UDR = (unsigned char)data;
	while(!(UCSRA & (1<<UDRE))) ;
	UDR = (unsigned char)( data>>8);
}

void main(void)
{
 	usart_init(103);
 	while(1)
	{
	 	usart_transmit(DATA);		
	}
}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:45:24  更:2021-08-15 15:46:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 22:47:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码