蓝桥杯大赛单片机组学习笔记,基于stc15f2k61s2转接板
2015-04-10 22:52
344 查看
一,DS1302写时间 读出来的时间是十六进制,需转换成十进制
写进去也应该是十六进制
WP写保护位,寄存器写地址0X8E,1为写保护,禁止写。0解除
CH(clock halt) 时钟停止位,寄存器写地址0x80,1为停止,0为正常。
(年寄存器只能是00-99,注意20需自己写)
年月日时分秒写寄存器 都需将十进制转为十六进制。
最好按年月日时分秒顺序操作,最后写秒,同时修改秒寄存器的CH位 开启时钟
重新打开写保护
二,读时间
不需更改读写地址,在操作时序中已更改,只需放入一个地址即可。
与写时间大致相同,不需暂停和写保护, 最后需要十六进制转十进制
二 18B20时序操作问题
(温度显示不正常,一般是时序,延迟,返回值不对)
1.调用官方库,将官方自带延时函数修改为STC延时计算器生成15!微秒代码替换,18b20正常!!!!!!切记 15μs
2.自行编写温度转换流程函数,
(1)初始化init18b20(调用库)
(2)写字节(调用库)write_18b20(0xcc) skip ROM
(3)写字节 write_18b20(0x44) convert T
(4)(可稍作延时)
(5)写字节write_18b20(0xcc) skip ROM
(6)写字节write_18b20(0xbe) 读数据命令
(7)读数据命令之后,马上发回来的第一 第二个字节,分别是低位LSB 高位MSB
Read_DS18B20(调用库)马上读取 转换就OK!
IIC器件通信
AT2401 刚写入不能马上读取,需间隔(100ms)
(编写有子地址器件读取程序)期间地址,存储地址
写入!
1.启动IIC总线
2.写入期间地址,根据不同的A0 A1 A2接法确定 地址。
3.等待器件发来应答、
4.写入存储地址
5.等待器件发来应答
6.可(连续)写入数据到EEPROM中。格式为,写一个数据,等待应答,写下一个数据,等待应答。。。。
7.停止总线
读取!Random Read
1.启动IIC总线
2.写入期间地址,根据不同的A0 A1 A2接法确定 地址。
3.等待器件发来应答、
4.写入存储地址
5.等待器件发来应答 (此处已设置好读取指针)
6.重新启动IIC总线
7.发送器件地址(+1)将写改为读状态。
8.可(连续)读取EEPROM中数据。格式为,读一个数据,发送主动应答位表示要求继续读取数据,读下一个数据,发送主动应答位。。。。
9.读完最后一个数据,发送非应答,告诉器件不需要读取数据了。
10.停止总线
PCF8591
ADC!
1.启动IIC总线
2.写入器件地址。写状态
3.等待器件应答。
4.写入控制字。一定要允许模拟输出,选择通道。0x40|ANx !!!!!!
5.等待器件应答 (此处已配置好ADC)
6.重新启动IIC总线
7.写入器件地址(+1)读状态
8.等待器件应答
9.读取ADC数据,
10.主动发送非应答位,表示不需要在读数据
11.停止IIC总线。
DAC!
1.启动IIC总线
2.写入器件地址,写状态
3.等待器件应答
4.写入控制字,允许模拟输出0x40
5.等待器件应答
6.继续写入数据,表示,将该数据送带DAC中转换。
7.等待应答位。
8.停止总线。
数码管的动态显示!
设置定时器0 TH0=(65536-2000)/256; TL0=(65536-2000)%256; 2ms 刷新一次
display函数中,设置静态变量static i
P0送值消隐 打开段锁存 关闭段锁存 XBYTE[0XE000]=0XFF;
P0送位码[i] 打开位锁存 关闭位锁存 XBYTE[0XC000]=SEG_wei[i];
P0送段码[i] 打开段锁存 关闭段锁存 XBYTE[0XE000]=SEG_duan[i];
i++
i==8清零
矩阵键盘扫描! P44 P42 P35 P34 P33 P32 P31 P30
1.将高四位置高。 oxf0 注意将P44 P42也要同时变化
2、if(P3!=0XF0|P42!=1|P44!=1)检测是否有按键按下。
3。延时消抖 检测 (以上过程证明有按键按下了)
4、开始逐行扫描,oxfe oxfd oxfb,oxf7,分别对四行进行扫描
5.判断该行有按键按下时,获取键值 temp=((((P4<<3))|0X7F)&((P4<<4)|0XBF))&P3
6,等待按键松手,
7.返回键值
SCI串口通信
使用ISP波特率计算器 串口1 计数器1 8位自动重装载 12T速度 生成代码 SFR AUXR=OX8E 波特率发送器完毕
自行编写字节发送,字符串函数,注意软件清零
写进去也应该是十六进制
WP写保护位,寄存器写地址0X8E,1为写保护,禁止写。0解除
CH(clock halt) 时钟停止位,寄存器写地址0x80,1为停止,0为正常。
(年寄存器只能是00-99,注意20需自己写)
年月日时分秒写寄存器 都需将十进制转为十六进制。
最好按年月日时分秒顺序操作,最后写秒,同时修改秒寄存器的CH位 开启时钟
重新打开写保护
二,读时间
不需更改读写地址,在操作时序中已更改,只需放入一个地址即可。
与写时间大致相同,不需暂停和写保护, 最后需要十六进制转十进制
二 18B20时序操作问题
(温度显示不正常,一般是时序,延迟,返回值不对)
1.调用官方库,将官方自带延时函数修改为STC延时计算器生成15!微秒代码替换,18b20正常!!!!!!切记 15μs
2.自行编写温度转换流程函数,
(1)初始化init18b20(调用库)
(2)写字节(调用库)write_18b20(0xcc) skip ROM
(3)写字节 write_18b20(0x44) convert T
(4)(可稍作延时)
(5)写字节write_18b20(0xcc) skip ROM
(6)写字节write_18b20(0xbe) 读数据命令
(7)读数据命令之后,马上发回来的第一 第二个字节,分别是低位LSB 高位MSB
Read_DS18B20(调用库)马上读取 转换就OK!
IIC器件通信
AT2401 刚写入不能马上读取,需间隔(100ms)
(编写有子地址器件读取程序)期间地址,存储地址
写入!
1.启动IIC总线
2.写入期间地址,根据不同的A0 A1 A2接法确定 地址。
3.等待器件发来应答、
4.写入存储地址
5.等待器件发来应答
6.可(连续)写入数据到EEPROM中。格式为,写一个数据,等待应答,写下一个数据,等待应答。。。。
7.停止总线
读取!Random Read
1.启动IIC总线
2.写入期间地址,根据不同的A0 A1 A2接法确定 地址。
3.等待器件发来应答、
4.写入存储地址
5.等待器件发来应答 (此处已设置好读取指针)
6.重新启动IIC总线
7.发送器件地址(+1)将写改为读状态。
8.可(连续)读取EEPROM中数据。格式为,读一个数据,发送主动应答位表示要求继续读取数据,读下一个数据,发送主动应答位。。。。
9.读完最后一个数据,发送非应答,告诉器件不需要读取数据了。
10.停止总线
PCF8591
ADC!
1.启动IIC总线
2.写入器件地址。写状态
3.等待器件应答。
4.写入控制字。一定要允许模拟输出,选择通道。0x40|ANx !!!!!!
5.等待器件应答 (此处已配置好ADC)
6.重新启动IIC总线
7.写入器件地址(+1)读状态
8.等待器件应答
9.读取ADC数据,
10.主动发送非应答位,表示不需要在读数据
11.停止IIC总线。
DAC!
1.启动IIC总线
2.写入器件地址,写状态
3.等待器件应答
4.写入控制字,允许模拟输出0x40
5.等待器件应答
6.继续写入数据,表示,将该数据送带DAC中转换。
7.等待应答位。
8.停止总线。
数码管的动态显示!
设置定时器0 TH0=(65536-2000)/256; TL0=(65536-2000)%256; 2ms 刷新一次
display函数中,设置静态变量static i
P0送值消隐 打开段锁存 关闭段锁存 XBYTE[0XE000]=0XFF;
P0送位码[i] 打开位锁存 关闭位锁存 XBYTE[0XC000]=SEG_wei[i];
P0送段码[i] 打开段锁存 关闭段锁存 XBYTE[0XE000]=SEG_duan[i];
i++
i==8清零
矩阵键盘扫描! P44 P42 P35 P34 P33 P32 P31 P30
1.将高四位置高。 oxf0 注意将P44 P42也要同时变化
2、if(P3!=0XF0|P42!=1|P44!=1)检测是否有按键按下。
3。延时消抖 检测 (以上过程证明有按键按下了)
4、开始逐行扫描,oxfe oxfd oxfb,oxf7,分别对四行进行扫描
5.判断该行有按键按下时,获取键值 temp=((((P4<<3))|0X7F)&((P4<<4)|0XBF))&P3
6,等待按键松手,
7.返回键值
SCI串口通信
使用ISP波特率计算器 串口1 计数器1 8位自动重装载 12T速度 生成代码 SFR AUXR=OX8E 波特率发送器完毕
自行编写字节发送,字符串函数,注意软件清零
相关文章推荐
- 基于网页内容数据采集 PHP开发学习笔记
- OpenCV学习笔记(13)基于OpenCV2.1的MFC双目视觉平台构建
- 自动车牌识别(ANPR)练习项目学习笔记3(基于opencv)
- 嵌入式学习笔记(13)——51单片机之D/A转换器
- Oracle基础学习笔记(一)-基于马士兵Oracle视频
- selenium 基于python学习笔记---【3-2】
- 单片机学习笔记
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
- RedHat 学习笔记 基于ssl的httpd服务配置 (openssl创建CA)
- Android编程学习笔记 之 基于回调的事件传播
- Python学习笔记:Flask-Migrate基于model做upgrade的基本原理
- JavaScript高级程序设计(第2版) 学习笔记:(六)js基于构造函数与原型的继承
- 关于基于复杂网络的数据挖掘的学习笔记
- 蓝桥杯单片机设计与开发笔记(四)
- 【基于C++和Python的Opencv3学习笔记之滑动条的使用】
- 深度学习笔记之基于R-CNN的物体检测
- 单片机学习笔记--51单片机