stc15w404as引脚图_STC15F2K6S2与stc15w404AS的spi通讯
#include/*********************************位定义***********************************/
#define uchar unsigned char
#define lcd1602_db P2
#define SPIF (SPSTAT&0X80)
/*********************************端口定义***********************************/
sbit SPI_SCL=P1^5;
sbit SPI_MISO=P1^4;
sbit SPI_MOSI=P1^3;
sbit SPI_SS=P1^2;
sbit rs=P4^3;
sbit rw=P4^5;
sbit ep=P4^4;
/********************************显示数据表*********************************/
const char j=10;
uchar sendData[15]={"abcdefghijklm"};
uchar recData[]={"abcdefghijklm"};
/*****************************************************************************
函数功能:LCD延时子程序
入口参数:ms
出口参数:
*****************************************************************************/
void delay(unsigned char ms)
{
unsigned int i;
while(ms--)
{
for(i = 0; i< 50; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/*****************************************************************************
函数功能:测试LCD忙碌状态
入口参数:
出口参数:result
*****************************************************************************/
bit lcd_bz()
{
unsigned char i;
bit result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
delay(50);
for(i = 0; i< j; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
result = (bit)(P2 & 0x80);
ep = 0;
return result;
}
/*****************************************************************************
函数功能:写指令数据到LCD子程序
入口参数:cmd
出口参数:
*****************************************************************************/
void lcd_wcmd(unsigned char cmd)
{
unsigned char i;
while(lcd_bz()); //判断LCD是否忙碌
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
lcd1602_db = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
for(i = 0; i< j; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
for(i = 0; i< j; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
ep = 0;
}
/*****************************************************************************
函数功能:设定显示位置子程序
入口参数:pos
出口参数:
*****************************************************************************/
void lcd_pos(unsigned char pos)
{
lcd_wcmd(pos | 0x80);
}
/*****************************************************************************
函数功能:写入显示数据到LCD子程序
入口参数:dat
出口参数:
*****************************************************************************/
void lcd_wdat(unsigned char dat)
{
unsigned char i;
while(lcd_bz());//判断LCD是否忙碌
rs = 1;
rw = 0;
ep = 0;
lcd1602_db = dat;
_nop_();
_nop_();
_nop_();
_nop_();
for(i = 0; i< j; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
for(i = 0; i< j; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
ep = 0;
}
/*****************************************************************************
函数功能:LCD初始化子程序
入口参数:
出口参数:
*****************************************************************************/
void lcd_init()
{
lcd_wcmd(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
delay(1);
lcd_wcmd(0x0c); //显示模式设置
delay(1);
lcd_wcmd(0x06); //显示模式设置:光标右移,字符不移
delay(1);
lcd_wcmd(0x01); //清屏幕指令,将以前的显示内容清除
delay(1);
}
/*****************************************************************************
函数功能:SPI初始化子程序
入口参数:
出口参数:
*****************************************************************************/
void init_spi()
{
SPDAT=0; //清空SPI数据寄存器
SPSTAT=0xc0; //清除SPI状态标志位
SPCTL=0xDd; //CPU_CLK/16,时钟前沿位下降沿,后沿采样,主模式,最低位在前
}
/*****************************************************************************
函数名:send
函数功能:SPI发射接收一体程序
输入参数:SendData,经主机发给从机的数据
返回参数:从机发给主机的数据 recdata
*****************************************************************************/
void send()
{
uchar i;
for(i=0;i<16;i++)
{
SPDAT=sendData[i]; //将数据放入SPI数据寄存器
while(!(SPIF)); //等待发送完成
SPSTAT=0xc0; //清除中断标志位
recData[i]=SPDAT; //从机数据采集
}
}
void main()
{
uchar i;
lcd_init();
init_spi();
while(1)
{
send();
lcd_pos(0x00);
for(i=0;i<16;i++)
{
lcd_wdat(recData[i]);
}
delay(1);
}
}
从机
/*************头文件************************/
#include/*************位定义************************/
#define uchar unsigned char
sbit SPI_SCL=P1^5;
sbit SPI_MISO=P1^4;
sbit SPI_MOSI=P1^3;
sbit SPI_SS=P1^2;
unsigned char SPI_Buffer=0;
#define SPIF (SPSTAT&0X80)
/*---------------------------------------------------------
*函数名:init_spi
*函数功能:SPI初始化
*输入参数: 无
*返回参数: 无
----------------------------------------------------------*/
void init_spi()
{
SPDAT=0; //清空SPI数据寄存器
SPSTAT=0xc0; //清除中断标志位
SPCTL=0xcd; //1100,1101 CPI_CLK/16,时钟前沿下降,后沿采样,从模式,最低位在前
}
/*---------------------------------------------------------
*函数名:main
*函数功能:主函数
*输入参数:
*返回参数:
----------------------------------------------------------*/
void main()
{
init_spi();
SPSTAT=0x34;
while(1)
{
while(!SPIF); //查询传输完成位
SPSTAT=0xc0; //清除中断标志,和写冲突标志,注意是对应位写1才能清零
SPI_Buffer = SPDAT;
SPDAT=0x01; //从机收到SPI数据后,发送固定数据0x33
}
}
stc15w404as引脚图_STC15F2K6S2与stc15w404AS的spi通讯相关推荐
- stc15w404as引脚图_怎么把STC15W404AS的EEPROM读写
/*用3个按键和8个LED演示单字节读写EEPROM*/ #include "STC15F2K60S2.H" //15系列通用头文件 #include ...
- SPI通讯协议详解 基于STM32
SPI 协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在 ADC.L ...
- 15张图详解四线制SPI通讯
关注.星标公众号,直达精彩内容 文章来源:analog-dialogue官网 外设接口(SPI)是微控制器和外围 IC(如传感器.ADC.DAC. 移位寄存器.SRAM等)之间使用最广泛的接口之一. ...
- 15w4k58s4引脚图_《51单片机轻松入门—基于STC15W4K系列》连载
1.1.4本书配套实验板及相关学习工具介绍 本书配套了2个实验板,一个作为主实验板,外形如图1-2所示,可以完成流水灯.定时器/计数器.串口通信.I2C通信.SPI通信.按键.数码管.LCD1602液 ...
- 光耦p621引脚图_开关电源中光耦电路的设计与优点
光耦(opticalcoupler)亦称光电隔离器.光耦合器或光电耦合器.它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内.当输入端加电 ...
- adc0809引脚图及功能_80C51单片机的引脚及其功能介绍
首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍. 单片机的40个引脚大致可分为4类:电源.时钟.控制和I/O引脚. ⒈ 电源: ⑴ VCC - 芯片电源,接+5V: ⑵ VSS - 接 ...
- 7805引脚图及稳压电路图资料
7805是我们最常用到的稳压芯片了,他的使用方便,用很简单的电路即可以输入一个直流稳压电源,他的输出电压恰好为5v,刚好是51系列单片机运行所需的电压,他有很多的系列如ka7805,ads7805,c ...
- lj245a引脚功能图_CA3140中文资料-引脚图及功能
CA3140高输入阻抗运算放大器,是美国无线电公司研制开发的一种BiMOS高电压的运算放大器在一片集成芯片上,该CA3140A和CA3140 BiMOS运算放大器功能保护MOSFET的栅极(PMOS上 ...
- 高速PCB中常见存储器之FLASH引脚图、布局布线设计
转载于: http://www.pcbbar.com/forum.php?mod=viewthread&tid=4181&highlight=flash FLASH(闪速存储器)引脚图 ...
最新文章
- hdu oj 2020 绝对值排序
- 【荐】说说CSS Hack 和向后兼容
- Quartz + spring 定时任务常见错误总结
- python输入一个字母_python – Tkinter输入的第一个字母
- Auto.JS 教程
- 微信小程序tabBar导航栏页和其他页执行onLoad与onShow时机;tabBar页获取不到参数问题;navigateTo跳转无效问题;onShow执行两次问题;
- 写一些脚本的心得总结系列第3篇------同步数据到其他表
- Java判断平台为32位或64位,载入对应DLL
- linux RAC 安装失败完全卸载
- 4月28日上午学习日志
- 网关 配置内网DNS 服务器
- AutoCAD2010安装教程
- Win10以太网属性空白怎么回事
- 效率源linux,FLOOPY效率源硬盘坏道修复工具 修复坏硬盘的时候 为何只能手动修复 而自动修复又说找不到硬盘?...
- 赵鹏计算机专业,赵鹏 - 安徽大学 - 计算机科学与技术学院
- XDOJ32角谷定理
- PPT图片瘦身/图片提取
- itext 7使用笔记
- 计算机本科核心课程教学视频,绝对经典,有空温习温习~
- 小孢子:在?我用本地环境pytest带你玩自定义算子