第一范文网 - 专业文章范例文档资料分享平台

ATMEGA16 - 串口接收程序

来源:用户分享 时间:2025/5/24 4:18:21 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

2012年8月8日

/************************************************* 2012年5月1日

功能:实现两单片机之间通讯,并且在LCD12864显示 开发环境:ICCAVR 液晶显示成功

**************************************************/ #include #include

#include\#define uint unsigned int #define uchar unsigned char

#pragma interrupt_handler USART_RXC_vect:12

// 中断函数声明 #define fosc 8000000 #define baud 9600

/************************************************* 端口初始化

***************************************************/ void port_init(void) {

PORTA=0XFF; DDRA=0XFF;

PORTC=0XFF; //液晶显示 DDRC=0XFF; PORTD=0X00;

DDRD|=(1<

/******************************************************** 串口初始化函数

******************************************************/ void uart0_init(void) {

UCSRB=0X00;//控制与状态寄存器B UCSRA=0X00;//控制与状态寄存器A

UCSRC|=(1<

// UMSEL=0 USBS=0 UPM1=0 UPM0=0 UCPOL=0 异步清零

//分别是选择UCSRC 寄存器 字符长度8位 异步模式 奇偶模式禁止 使用异步时清零

UBRRL=(fosc/16/(baud+1)%6); UBRRH=(fosc/16/(baud+1)/256); //设置波特率寄存器的初值

UCSRB|=(1<

/**************************************************** 发送数据函数

****************************************************/ void uart0_send(uchar i) {

while(!(UCSRA&(1<

//从串口中接收的数据进行存储

//因为初始化时UCSRA=0,当检测到UDRE=1,进行&运算

//特别注意此处的UCSRA是初始化的那个值,后面的UDRE是检测到的值 }

/************************************************* 接收中断函数

********************************************/ void USART_RXC_vect(void) {

uchar Rev;

//Rev=UDR; //USRAT I/O 数据寄存器UDR 读取数据 //uart0_send(Rev); //接收到的数据发送 //不用变量能把数据传送到位 PORTA=UDR; LocateXY(1,1); write_data(UDR);

//从串口中接收的数据放在变量中,再发送到PC }

/*************************************************** 发送字符串函数 发送字符串的函数模式

******************************************************/ void Usart_Putstring(uchar *s) {

while(*s) {

uart0_send(*s++);//字符 }

uart0_send(0x0D);

uart0_send(0x0A);//结尾发送回车换行 }

void main(void)// {

port_init(); LCD_init(); uart0_init(); while(1); }

头文件:

LCD_12864_chuankou.c

/**************************************

头文件LCD12864 2012.5.19调试成功 串口数据传输

*****************************************/

#include #include

#define uchar unsigned char #define uint unsigned int

#define CS_0 PORTC&=~(1<

#define SID_0 PORTC&=~(1<

#define SCLK_0 PORTC&=~(1<

#define PSB_0 PORTC&=~(1<

#define RST_0 PORTC&=~(1<

//#define Dataport PORTA //数据端口为A口

void delay(uint ms) //系统延时函数 {

uint i,j;

for(i=0;i

for(j=0;j<1140;j++); } }

void delay_us(uint n)// 最小延时 {

if(n==0) return;

while(--n); }

/******************************************* 发送字节函数 写入一个字节

*******************************************/ void sendbyte(uchar byte) {

uchar i; //

for(i=0;i<8;i++) //少写的数据 {

if(byte&0x80) //判断应写入1或者0 {SID_1;} else {SID_0;} SCLK_1; SCLK_0;

byte<<=1; //左移 } }

/**************************************** 写指令函数规定写指令操作

*****************************************/

void write_com(uchar com) //command {

uchar start_data,Hdata,Ldata;

start_data=0xf8; //写命令

Hdata=com&0xf0; //取高四位 Ldata=(com<<4)&0xf0; //取低四位 sendbyte(start_data);// 发送起始信号 delay_us(1);

sendbyte(Hdata);//发送高四位 delay_us(1);

sendbyte(Ldata);//发送低四位

搜索更多关于: ATMEGA16 - 串口接收程序 的文档
ATMEGA16 - 串口接收程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8y8im97mlp99g5n14bz6_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top