73x_i2c.h
三星刷机教程
正常刷机的时候不建议大家刷BOOT 以及PIT文件一.ROM包里只有单一PDA.tar文件刷机方法:Re-Partition前不打勾不选PIT1)运行Odin3_v1.85.exe刷机平台2)点击PDA选择PDA_I9220XXXXX.tar文件3) 除默认的Auto Reboot F.Reset Time前打勾外其它地方均不打勾4)手机关机按音量下+HOME+POWER ON 出现第一界面后再按下音量上进入刷机模式# o* R5 C) X4 z5)通过数据线连接电脑确认刷机平台认出COM口(COM口处会变为黄色)6)按下“Start”开始刷机刷机过程中平台上方会有进度条! h, J% X" U6 z& V7)刷机平台出现绿色“PASS”后刷机完成手机会自动重启" k: x! x0 j" v' m二:官方发布的ROM 里面包含:PIT PDA PHONE CSC APBOOT 文件1)运行Odin3_v1.85.exe刷机平台2)点击PIT选择u1_02_20110310_emmc_EXT4.pit+ E V+ d! u' c7 ~5 h) L4 g3)点击BOOTLOADER选择APBOOT_I9220xxxxx.tar2 `: @0 a5 d) i4)点击PDA选择CODE_I9220xxxxx.tar5)点击PHONE选择MODEM_I9220xxxxx.tar6)点击csc选择GT-I9220-CSC-xxxxx.tar7)手机关机按音量下+HOME+POWER ON 出现第一界面后再按下音量上进入刷机模式8)通过数据线连接电脑确认刷机平台认出COM口(COM口处会变为黄色)" F; e1 p# y+ O9)按下“Start”开始刷机刷机过程中平台上方会有进度条9 g0 }& T; i3 q/ w10)刷机平台出现绿色“PASS”后刷机完成手机会自动重启/ R$ m! m4 b ^- J5 c0 Y三:内核刷入方法(一般文件名里都带有KERNEL字样)6 w$ o: G% `% y' k5 a1)运行Odin3_v1.85.exe刷机平台2 F" ^8 q* @; S0 G* f9 Q7 ~2)点击PDA选择KERNEL_I9220xxxxx.tar3)手机关机按音量下+HOME+POWER ON 出现第一界面后再按下音量上进入刷机模式4)通过数据线连接电脑确认刷机平台认出COM口(COM口处会变为黄色)5)按下“Start”开始刷机刷机过程中平台上方会有进度条6)刷机平台出现绿色“PASS”后刷机完成手机会自动重启( c$ ]* `9 \& P5 J$ o- S: K三星指令全集部分指令请慎用:获取/更改设备信息# h: i9 A" J# I& c& h*#06#(显示IMEI 号码)*#1234#(显示当前固件): D, `' O* P: G- e* 2767 * 4387264636#(要显示产品代码)7 G" @, A* |7 [* IMEI号*#272#*(显示/更改地区代码)或*#272#* * HHMM*#12580 * 369#(软件&硬件信息)# y" V$ Y( D1 Q7 A*#44336#(软件版本信息)复位8 h# }: j/ L- B2 g; E" B0 V*#*#7780#*#*或*#7780#(厂软复位)* 2767 * 3855#(工厂硬复位的ROM 固件默认设置)固件工具. s" H$ d8 w, l*#2663#(重起固件更新)*#34971539#(相机固件更新)*#7412365#(相机固件菜单)或*#*#34971539#*#*5 [5 _+ M; o* N1 F; P' Y8 q *#03#(NAND 快闪记忆体的S / N)的! X+ C9 k/ D' Y/ f [ y4 V通用测试/调试*#0 *#(综合测试模式)3 r: p* q; G; i2 n/ r" e*#*#4636#*#*(诊断和模式一般设置)! u/ K- `* n4 a+ [( f$ ~*#*#197328640#*#*(服务模式下的主菜单)" ~+ e4 P9 B! c; `*#7353#(快速测试菜单)无线, h5 J9 q; u0 `6 c1 E*#232337#(蓝牙地址)) C0 r& Z- I4 L1 [: H# q*#232331#(蓝牙测试模式)) U9 I- D1 W R, N1 J+ D. O: `1 |*#232338#(无线局域网MAC 地址)*#232339#(WLAN 测试模式)*#526#(无线局域网工程模式)7 H' c) n$ f! I; Q/ ?*#528#(无线局域网工程模式)- a. B2 f+ \; ]& R" R全球定位系统3 ~1 g% y. O( S5 u*#1575#(G P S 控制菜单)4 [5 F5 B4 ~: O5 W*#*#1472365 *#*#(GPS 测试设置)/ h6 v- I7 \- T0 {) T5 l" T; A z8 B# g- f传感器*#0588#(接近传感器测试模式)*#0589#(光感应器测试模式)音频; k: z1 o; A% r6 X2 ?*#0673#(音频测试模式). Q1 T6 T, M0 O& g5 C0 x*#0283#(音频回传控制)$ n: l+ g( b) c U8 L*#0289#(旋律测试模式)按钮! x9 O# W+ Q( Z9 R+ z0 P*#7594#(重映射关机以结束通话邓肇坚)电池# X$ T; ]' [3 H2 t*#0228#(电池状态:容量,电压,温度)7 u: V; m2 i( [% u: y+ y其他测试/调试*#32489#(通话加密信息)/ H8 R( }/ s6 {+ f" L*#0842#(抑振电机测试模式)2 L- Q; m( x' A7 |+ L- n: G# u' g*#0782#(实时时钟测试)*#2263#(射频波段选择)- F8 ]6 D0 J8 T! }: O1 W*#9090#(诊断配置)C, N: q+ T/ s7 M+ c4 P*#7284#(I2C 模式的USB 控制)*#872564#(记录的USB 控制)& v6 d/ m8 u6 z# I6 R8 Y*#4238378#(GCF 的配置)$ u4 t5 g' r# N% `% r9 {*#3214789650#(磅测试模式)' E; [ {; k& o" ]; X" G) w2 @*#745#(RIL的转储菜单)1 d0 y2 \- L2 m4 x' [*#746#(调试转储菜单)*#9900#(系统转储模式)% r% E6 M2 ^1 x*#273283 * 255 * 3282 *#(数据创建菜单)*#273283 * 255 * 663282 *#(数据创建SD 卡)*#3282 * 727336 *#(资料使用情况)*#80#(未知)# Z- |) g; ?& y- T! P" e, o" j* \*#07#(测试历史)6 N3 h% d2 d2 |*#3214789#(GCF 的模式状态)*#272886#(自动应答选择)*#8736364#(OTA 更新菜单)*#301279#(HSDPA / HSUPA 的控制菜单)7 h" f. P2 U6 v+ }, @2 |: N* 2767 * 4387264636#(出卖短信/ PCODE 观点)* }' L$ O. L& _) I( R) m*#7465625#(查看手机锁定状态)* 7465625 * 638 *#(配置网络锁定的MCC /跨国公司)#7465625 * 638 *#(插入网络锁密码)5 w3 W) W6 l; F2 T+ S) X( W- B* 7465625 * 782 *#(配置网络锁定新型干法)" r( L2 ^# a$ t/ x" Y: _1 J3 ]#7465625 * 782 *#(插入Partitial 网络锁定密码)0 W. i3 S2 M! U7 [$ G2 u: a* 7465625 * 77 *#(插入网络锁定密钥号码S P 法)) H. t7 v3 j+ Z; L) ^#7465625 * 77 *#(插入操作锁密码)* 7465625 * 27 *#(插入网络锁定密钥号码新型干法/处长): ` }$ k0 {; {0 J#7465625 * 27 *#(插入内容提供商密码)三星常见问题解答:我如何知道我手机的ROM版本是多少" ~0 V" b2 U, I7 k I6 r f; p* U+ O% {答:手机拨号输入:*#1234# 即可显示你手机的ROM版本PDA PHONE CSC 0 |( r6 Z4 P; { 如何自定义来电铃声、短信铃声、闹钟铃声?2 ]6 h( Q7 b3 m5 O& y$ o0 p7 @2 e% W3 S# T答:在sd卡上新建3个文件夹:alarms,闹铃;ringtones,来电铃声;notifications,短信铃声。
存储器与总线架构_2
AHB/APB桥(APB):两个AHB/APB 桥在AHB和2个APB总 线间提供同步连接。APB1操作速度限于36MHz,APB2 工作在全速状态(最高72MHz)。
第五页,共三十七页,2022年,8月28日
二、存储器组织
1、存储器的组织方法
程序存储器、数据存储器、寄存器和输入输出端口被组织
· 系统文件名和源/头文件名以“stm32f10x_”的形式表示
,例如stm32f10x_conf.h。 · 在单一文件中使用的常量在该文件中定义,在多个文件 中使用的常量定义在头文件中,所有的常量以大写字母表 示。 · 寄存器当作常量看待。同样以大写字母表示。
第二十页,共三十七页,2022年,8月28日
PPP_ClearITPendingBit
第二十三页,共三十七页,2022年,8月28日
(2)代码标准
· 变量
定义了18个变量类型,在头文件stm32f10x_type.h中
Typedef signed long s32;
Typedef signed short s16; Typedef signed char s8;
结尾。
第二十二页,共三十七页,2022年,8月28日
· 用来检测指定PPP的标志是否被置位或清0的函数,命名 为PPP_GetFlagStatus。
· 用来清除某个PPP的标志的函数,命名为 PPP_ClearFlag · 用来检验指定PPP的中断是否发生的函数,命名为
PPP_GetITPendingBit · 用来清除某个PPP中断挂起位的函数,命名为
第二十一页,共三十七页,2022年,8月28日
· 用来使能或禁止指定的PPP外围模块的函数,命名为
PPP_Cmd
彩电常用微处理器的主要功能引脚
彩电常用微处理器的主要功能引脚在彩色电视机的维修中,微处理器控制系统的故障占整个维修数量的比例逐渐增长。
当发生不能开机、开机不能操作等死机故障时,一般主要检测微处理器的工作条件和总线接口;发生搜索不存台、无字符显示时,主要检测识别和行、场同步信号输入电路。
为了便于维修时快速对微处理器的上述主要引脚进行检测,本篇将常见的微处理器主要功能引脚汇集成篇,见表1,表1中引脚功能说明如下,供维修时参考。
(1)时钟线。
英文符号“SCL或CLOCK”,I2C总线中的时钟信号输出引脚,部分微处理器有两个以上时钟线。
其正常电压为高电平,稍低于微处理器的电源供电,当总线系统传输信号时,微微抖动;也有个别微处理器的时钟线为低电平0V的。
(2)数据线。
英文符号“SDA或DATA”,I2C总线中的数据输入/输出引脚,部分微处理器有两个以上数据线。
其正常电压为高电平,稍低于微处理器的电源供电,当总线系统传输信号时,微微抖动;也有个别微处理器的数据线电压为低电平0V的。
(3)电源供电。
英文符号“VCC或VDD”,微处理器的供电电源,有的微处理器有两组以上供电引脚,有的分为数字电路电源和模拟电路电源,数字电源英文符号为“S VCC或S VDD”,模拟电路电源英文符号为“A VCC或A VDD”。
多数微处理器的电源电压为+5V,近期少数微处理器的电源电压为+3.3V左右。
(4)待机。
英文符号“ST-BY或POWER”,遥控电源开关机控制端,多为直流关机后待机,少数为交流关机。
其正常电压为高/低电平变化,有的微处理器开机状态为高电平,接近电源供给电压,待机时变为低电平;有的开机状态为低电平,接近0V,待机状态变为高电平。
5)识别。
英文符号“SD-IN或H-SYNC”,电台识别信号输入端,蓝屏幕、静音、无信号关机的依据。
多为行同步信号或全电视信号输入,处理器采用高/低单片变化信号。
作为搜索存台和近几年的新型微(6)遥入。
英文符号“RMOT-IN或FMOT-IN”,遥控信号输入端。
I2C_周立功标准驱动程序_c代码
I2C_周立功标准驱动程序_c代码1. /****************************************Copyright(c)**************************************************2. ** 广州周立功单片机发展有限公司3. ** 研究所4. ** 产品一部5. **6. **7. **8. **--------------文件信息--------------------------------------------------------------------------------9. **文件名: I2c.c10. **创建人: 陈明计11. **最后修改日期: 2003年7月21日12. **描述: μCOS-II下LPC210x的I2c主模式底层驱动 13. **14. **--------------历史版本信息----------------------------------------------------------------------------15. ** 创建人: 陈明计16. ** 版本: v1.017. ** 日期: 2003年7月8日18. ** 描述: 原始版本19. **20. **------------------------------------------------------------------------------------------------------21. ** 修改人: 陈明计22. ** 版本: v1.123. ** 日期: 2003年7月21日24. ** 描述: 根据正式文档更改寄存器名25. **26. **--------------当前版本修订------------------------------------------------------------------------------27. ** 修改人:28. ** 日期:29. ** 描述:30. **31. **------------------------------------------------------------------------------------------------------32.************************************************************************ ********************************/33.34. #define IN_I2C35. #include "config.h"36. static uint8 *I2cBuf;37. static OS_EVENT *I2cSem;38. static OS_EVENT *I2cMbox;39. static int16 I2cNbyte;40. static uint8 I2cAddr;41.42. #define I2C_WRITE_END 1 /* 写完成 */ 43. #define I2C_READ_END 2 /* 读完成 */ 44. #define I2C_NOT_GET_BUS 4 /* 丢失仲裁 */ 45. #define I2C_ACK_ERR 8 /* 接收ACK错误 */46.47.48./*********************************************************************** **********************************49. ** 函数名称: I2cInit50. ** 功能描述: 初始化I2c(主模式)51. ** 输入: FI2c:I2c总线频率52. **53. ** 输出:TRUE :成功54. ** FALSE:失败55. ** 全局变量: I2cSem,I2cMbox56. ** 调用模块: OSSemCreate57. **58. ** 作者: 陈明计59. ** 日期: 2003年7月8日60. **-------------------------------------------------------------------------------------------------------61. ** 修改人: 陈明计62. ** 日期: 2003年7月10日63. **-------------------------------------------------------------------------------------------------------64. ** 修改人: 陈明计65. ** 日期: 2003年7月21日66. **------------------------------------------------------------------------------------------------------67.************************************************************************ ********************************/68. uint8 I2cInit(uint32 FI2c)69. {70. VICIntEnClr = 1 << 9; /* 禁止能I2c中断 */ 71. if (FI2c <= 400000)72. {73. PINSEL0 = (PINSEL0 & 0xffffff0f) | 0x50; /* 选择管脚为I2c */ 74. I2CONCLR = 0x6C; /* 清除控制寄存器 */ 75. I2SCLH = (Fpclk / FI2c + 1) / 2; /* 设置高电平时间 */ 76. I2SCLL = (Fpclk / FI2c) / 2; /* 设置低电平时间 */ 77. I2cSem = OSSemCreate(1); /* 信号量用于互斥操作总线 */ 78.I2cMbox = OSMboxCreate(NULL); /* 消息邮箱用于中断向任务传递操作结果 */79. if (I2cMbox == NULL)80. {81. return FALSE;82. }83. if (I2cSem != NULL)84. {85. return TRUE;86. }87. }88. return FALSE;89. }90.91./*********************************************************************** **********************************92. ** 函数名称: __I2cWrite93. ** 功能描述: 读I2C,但不发送STOP信号94. ** 输入: Addr:从机地址95. ** Data:将要写的数据96. ** 写的数据数目97. ** 输出:发送的数据字节数98. **99. ** 全局变量: I2cAddr,I2cNbyte,I2cBuf100. ** 调用模块: OSMboxPend101. **102. ** 作者: 陈明计103. ** 日期: 2003年7月8日104. **-------------------------------------------------------------------------------------------------------105. ** 修改人: 陈明计106. ** 日期: 2003年7月21日107. **------------------------------------------------------------------------------------------------------108.************************************************************************ ********************************/109. uint8 __I2cWrite(uint8 Addr, uint8 *Data, int16 NByte) 110. { 111. uint8 err;112. unsigned int Rt;113.114. I2cAddr = Addr & 0xfe; /* 存储发送地址 */ 115. I2cNbyte = NByte; /* 存储写字节数 */ 116. I2cBuf = Data; /* 存储写的数据的指针 */ 117.I2CONSET = 0x24; /* 设置为主机,并启动总线 */ 118.119. Rt = (unsigned int) OSMboxPend(I2cMbox, 0, &err); /* 等待操作结束 */ 120. return Rt;121. }122.123.124./*********************************************************************** **********************************125. ** 函数名称: I2cWrite126. ** 功能描述: 向I2C从器件写数据127. ** 输入: Addr:从机地址128. ** Data:指向将要写的数据的指针129. ** NByte:写的数据数目130. ** 输出:发送的数据字节数131. **132. ** 全局变量: I2cSem,I2cNbyte133. ** 调用模块: OSSemPend,__I2cWrite,OSSemPost134. **135. ** 作者: 陈明计136. ** 日期: 2003年7月8日137. **-------------------------------------------------------------------------------------------------------138. ** 修改人: 陈明计139. ** 日期: 2003年7月10日140. **-------------------------------------------------------------------------------------------------------141. ** 修改人: 陈明计142. ** 日期: 2003年7月21日143. **------------------------------------------------------------------------------------------------------144.************************************************************************ ********************************/145. uint16 I2cWrite(uint8 Addr, uint8 *Data, int16 NByte) 146. {147. uint8 err;148.149. OSSemPend(I2cSem, 0, &err);150.151. I2CONCLR = 0x6C;152. I2CONSET = 0x40; /* 使能I2c */ 153. VICIntEnable = 1 << 9; /* 使能I2c中断 */ 154.155. if (__I2cWrite(Addr, Data, NByte) == I2C_WRITE_END) 156. { 157. I2CONSET = 1 << 4; /* 发送停止信号 */ 158. I2CONCLR = 0x28; /* 清除标志 */ 159. }160.161. VICIntEnClr = 1 << 9; /* 禁止能I2c中断 */ 162.163. OSSemPost(I2cSem);164. return (NByte - I2cNbyte);165. }166.167./*********************************************************************** **********************************168. ** 函数名称: I2cRead169. ** 功能描述: 从I2c从器件读数据170. ** 输入: Addr:从机地址171. ** Ret:指向返回数据存储位置的指针172. ** Eaddr:扩展地址存储位置173. ** EaddrNByte:扩展地址字节数,0为无174. ** ReadNbyte:将要读取的字节数目175. ** 输出:已读取的字节数176. **177. ** 全局变量: I2cSem,I2cAddr,I2cNbyte,I2cBuf178. ** 调用模块: OSSemPend,__I2cWrite,OSMboxPend,OSSemPost 179. ** 180. ** 作者: 陈明计181. ** 日期: 2003年7月8日182. **-------------------------------------------------------------------------------------------------------183. ** 修改人: 陈明计184. ** 日期: 2003年7月21日185. **------------------------------------------------------------------------------------------------------186.************************************************************************ ********************************/187. int16 I2cRead(uint8 Addr, uint8 *Ret, uint8 *Eaddr, int16 EaddrNByte, int16 ReadNbyte)188. {189. uint8 err;190.191. OSSemPend(I2cSem, 0, &err);192.193. I2CONCLR = 0x6C;194. I2CONSET = 0x40; /* 使能I2c */ 195. VICIntEnable = 1 << 9; /* 使能I2c中断 */ 196.197. if (EaddrNByte > 0)198. {199. if (__I2cWrite(Addr, Eaddr, EaddrNByte) != I2C_WRITE_END) 200. {201. return -1;202. }203. }204.205. I2cAddr = Addr | 0x01; /* 存储发送地址 */ 206. I2cNbyte = ReadNbyte; /* 存储读字节数 */ 207. I2cBuf = Ret; /* 存储读到的数据 */ 208. I2CONCLR = 0x28;209. I2CONSET = 0x24; /* 设置为主机,并启动总线 */ 210. VICIntEnable = 1 << 9; /* 使能I2c中断 */ 211.212. OSMboxPend(I2cMbox, 0, &err); /* 等待操作结束 */ 213.214. VICIntEnClr = 1 << 9; /* 禁止能I2c中断 */ 215.OSSemPost(I2cSem);216. return (ReadNbyte - I2cNbyte);217. }218.219.220./*********************************************************************** **********************************221. ** 函数名称: I2c_Exception222. ** 功能描述: I2c中断服务程序223. ** 输入: 无224. **225. ** 输出: 无226. **227. ** 全局变量: I2cAddr,I2cBuf,I2cNbyte,I2cMbox228. ** 调用模块: OSMboxPost229. **230. ** 作者: 陈明计231. ** 日期: 2003年7月8日232. **-------------------------------------------------------------------------------------------------------233. ** 修改人: 陈明计234. ** 日期: 2003年7月21日235. **------------------------------------------------------------------------------------------------------236.************************************************************************ ********************************/237. void I2c_Exception(void)238. {239. OS_ENTER_CRITICAL();240. switch(I2STAT & 0xf8)241. {242. case 0x08: /* 已发送起始条件,与0x18相同处理 */ 243. // break;244. case 0x10: /* 已发送重复起始条件 */ 245. I2DAT = I2cAddr; /* 发送地址 */ 246. I2CONCLR = 0x28; /* 清除标志 */ 247. break;248. case 0x18: /* 已发送SLA+W,并已接收应答 */ 249. I2DAT =*I2cBuf++;250. I2cNbyte--;251. I2CONCLR = 0x28; /* 清除标志 */ 252. break;253. case 0x28: /* 已发送I2C数据,并接收到应答 */ 254. if (I2cNbyte > 0)255. {256. I2DAT = *I2cBuf++;257. I2cNbyte--;258. I2CONCLR = 0x28; /* 清除标志 */ 259. }260. else261. {262. OSMboxPost(I2cMbox, (void *)I2C_WRITE_END); 263. VICIntEnClr =1 << 9; /* 禁止能I2c中断 */ 264. }265. break;266. case 0x20: /* 已发送SLA+W;已接收非ACK, 与0x48处理相同 */ 267. // break;268. case 0x30: /* 已发送I2DAT中的数据字节;已接收非ACK, 与0x48处理相同 */269. // break;270. case 0x48: /* 已发送SLA+R;已接收非ACK */271. I2CONSET = 1 << 4; /* 发送停止信号 */ 272. OSMboxPost(I2cMbox, (void *)I2C_ACK_ERR); 273. I2CONCLR = 0x28; /* 清除标志 */ 274. break;275. case 0x38: /* 在SLA+R/W或数据字节中丢失仲裁 */ 276. OSMboxPost(I2cMbox, (void *)I2C_NOT_GET_BUS); 277. I2CONCLR = 0x28; /* 清除标志 */ 278. break;279. case 0x40: /* 已发送SLA+R;已接收ACK */ 280. if (I2cNbyte <= 1) 281. {282. I2CONCLR = 1 << 2; /* 下次发送非应答信号 */ 283. }284. else285. {286. I2CONSET= 1 << 2; /* 下次发送应答信号 */ 287. }288. I2CONCLR = 0x28; /* 清除标志 */ 289. break;290. case 0x50: /* 已接收数据字节;已发送ACK */ 291. *I2cBuf++ =I2DAT; /* 接收数据 */ 292. I2cNbyte--;293. if (I2cNbyte <= 1)294. {295. I2CONCLR = 1 << 2; /* 下次发送非应答信号 */ 296. }297. I2CONCLR = 0x28; /* 清除标志 */ 298. break;299. case 0x58: /* 已接收数据字节;已返发送ACK */ 300. *I2cBuf =I2DAT; /* 接收数据 */ 301. I2cNbyte--;302. I2CONSET= 1 << 4; /* 结束总线 */ 303. OSMboxPost(I2cMbox, (void *)I2C_READ_END); 304. I2CONCLR = 0x28; /* 清除标志 */ 305. break;306. default:307. I2CONCLR = 0x28; /* 清除标志 */ 308. break;309. }310.311. VICVectAddr = 0; /* 通知中断控制器中断结束 */ 312.OS_EXIT_CRITICAL();313. }314./*********************************************************************** **********************************315. ** End Of File316.************************************************************************ ********************************/。
IST8310 datasheet
IST83103D Magnetometer DatasheetTable of Contents1 GENERAL DESCRIPTION (4)2 BLOCK DIAGRAM, PACKAGE DIMENSION AND APPLICATION CIRCUIT (5)2.1 Block diagram (5)2.2 Package Dimensions and Pin Description (5)2.3 Application Circuit (7)3 OPERATIONAL MODES AND FUNCTIONAL DESCRIPTIONS (8)3.1 Operation modes (8)3.1.1 Stand-By Mode (8)3.1.2 Single Measurement Mode (8)3.1.3 Self-Test Mode (8)3.2 Interrupt Function (9)3.3 DRDY Function (9)3.4 IST8310 Read Process (9)4 ELECTRICAL SPECIFICATIONS (10)4.1 Extreme Rating (10)4.2 Recommended Operating Conditions (10)4.3 Electrical Specifications (10)4.4 Magnetic Sensor Specifications (11)4.5 Power On Reset (POR) Specifications (12)5 TECHNOLOGY OVERVIEW (13)5.1 AMR Technology (13)5.2 High Reliability Planarized Design (13)5.3 Ultra-low Hysteresis Design (13)5.4 Magnetic Setting Mechanism (13)6 DIGITAL INTERFACE AND REGISTERS (14)6.1 I2C Interface (14)6.2 I2C Read Operation (14)6.3 I2C Write Operation (15)6.4 Registers (15)7 ORDERING INFORMATION (21)1 General DescriptioniSentek IST8310 is a 3-axis digital magnetometer with 3.0x3.0x1.0mm3, 16-pin LGA package. It is an integrated chip with 3-axis magnetic sensors, digital control logic, built-in temperature compensation circuit and self-test function. IST8310 provides an I2C digital output with fast mode up to 400kHz. The high output data rate, ultra-low hysteresis, excellent temperature drift and low noise performance feathers make it a perfect candidate for high accuracy applications.Features●Single chip 3-axis magnetic sensor● 3.0x3.0x1.0mm3, 16-pin LGA package●I2C slave, Fast Mode up to 400kHz●14 bits data output●Wide dynamic range of ±1600uT (x, y-axis) and ±2500uT (z-axis)●High output data rate of maximum 200Hz●Ultra-low hysteresis (<0.1%FS)●Ultra-low sensitivity temperature drift (±0.016 %/ o K)●Ultra-low offset temperature drift (0.024uT/ o K)●Wide operating temperature range●High precision temperature compensation●Built-in self-test function●Software and algorithm support available (For tilt compensation, cross-axis compensation andnoise suppression)ApplicationsQuadcopter/Drone ApplicationsAugmented Reality ApplicationsVirtual Reality ApplicationsLocation Based ServicesNavigation ApplicationsIndustrial ApplicationsMagnetometryIOT devicesHeadingGaming2 Block Diagram, Package Dimension and Application Circuit2.1 Block diagramFigure 1. Block Diagram2.2 Package Dimensions and Pin DescriptionUnit: mmTolerance: ±0.1mmSDADRDY SCLAVDDVSSRSTNC1VPPCAD0CAD1DVDDIST8310 LGA Top View (Looking Through)Unit: mmTolerance: ±0.1mm*please refer to Figure 2.IST8310 LGA Side ViewIST8310 3D Top View2.3 Application CircuitFigure 2. Application Circuit4.7uFRSTNDRDY3 Operational Modes and Functional Descriptions3.1 Operation modesIST8310 has following operation modes:(1) Stand-By Mode(2) Single Measurement Mode(3) Self-Test Mode3.1.1 Stand-By ModeThe initial mode (after power on) of IST8310 is Stand-By Mode. In Stand-By Mode, all internal circuits are off (except oscillator and regulator). All registers can be accessed in Stand-By Mode. Data stored in Read/Write registers remains as last state. Registers can be reset by soft reset or hard reset (through RSTN pin).As initial setting, please set Pulse Duration Control Register, PDCTNL(0x42) = 11000000b (C0H) for performance optimization. For low noise performance, please set Average Control Register, AVGCNTL(0x41) = 00100100b (24H) for more internal average times. The minimum waiting time between two measurements under low noise performance setup is 6ms (166Hz).3.1.2 Single Measurement ModeIn Single Measurement Mode, the measured data is stored in data registers then IST8310 transits to Stand-By Mode automatically. On transition to Stand-By Mode, Control register 1(CNTL1[3:0]) turns to “0000”. At the same time, DRDY bit in STA T1 register turns to “1”. This is called “data ready”. When any of the measurement data registers or STA T2 register is read, DRDY bit turns to “0”. For the next measurement, user needs to set Control register 1(CNTL1[3:0]) to “0001” again. The minimum waiting time between two measurements in default setup is 5ms (200Hz).Please noted in IST8310, ultra-low noise performance is obtained through soft-averaging in driver. Please contact iSentek for technical details.3.1.3 Self-Test ModeSelf-Test mode is used to check if the 3-axis outputs read in Single Measurement Mode are correct. It is activated by setting Self-Test Register (0x0C) to 40h; then all 3-axis outputs will change their polarity. User can check the 3-axis output values before and after activating Self-Test Mode; if the absolute values are the same, then the IC is working correctly. It can be turned off by setting Self-Test Register (0x0C) to 00h.3.2 Interrupt FunctionInterrupt function is used when there is a huge external magnetic field in the surrounding. When the absolute sum of measured 3-axis output value exceeds 1600 uT, the INT flag is activated. The INT flag can be found in STA T2 register.3.3 DRDY FunctionDRDY function is used when the output data is updated. The DRDY pin is used to monitor the data ready output. DRDY is changed to low after reading data from the output register.3.4 IST8310 Read Process(1) Read STAT1 register:‐Polling STAT1 register bit 0‐DRDY: shows if the data is ready or not0: no data ready1: data ready‐DOR: shows if any data has been skipped before the current data0: no skipped data1: data skipped.(2) Read Measurement Data:Read Register 0x03h~0x08h for X, Y and Z axis data. When data reading starts, DRDY bit and DOR bit turn t o “0”.4 Electrical Specifications4.1 Absolute Maximum Ratings2. Machine Model (MM)4.2 Recommended Operating Conditions4.3 Electrical Specifications(Operating conditions: TA=+25℃; A VDD=2.8V; DVDD=1.8V; 0.1µF ceramic capacitors tied closely to AVDD/DVDD and GND respectively.)4.4 Magnetic Sensor Specifications(Operating conditions: Ta=+25℃; A VDD=2.8V; DVDD=1.8V; 4.7µF ceramic capacitors tied closely to C1 and GND respectively. )4.5 Power On Reset (POR) SpecificationsWhen POR circuit detects the rise of A VDD voltage, it resets all internal circuits and initializes all registers. After reset, IST8310 transits to Stand-By mode.PSTO: Power Supply Turn Off voltage PSOI: Power Supply Turn Off Interval POR: Power On ResetPORPSTO: max=0.1volt PSOI: min=10ms POR: max:50ms5 Technology Overview5.1 AMR TechnologyIST8310, an iSentek patented magnetometer is designed based on Anisotropy Magneto-Resistance (AMR) technology. The output is generated from the resistance change of the AMR resistors while external magnetic field changes. The sensitivity is about 50 to 200 times larger than traditional Hall element. The high sensitivity allows higher output data rate (ODR), lower noise and lower power consumption.5.2 High Reliability Planarized Structure DesignIST8310 consists of three full Whetstone Bridge of AMR resistors. The three bridges detecting magnetic component in three directions orthogonal to each other are located on one chip, wire-bonded to a control ASIC. This planarized structure design enables outstanding stability to thermal shock, making our device highly reliable, immune from thermal reflow-induced failure. While other known AMR magnetometers placing z-axis sensor vertical to the substrate using 90-degree flip-chip packaging suffers from reliability issues5.3 Ultra-low Hysteresis DesigniSentek has developed a specialized high permeability (μ) material for magnetic field detection. This high-μ material has ultra-low residual magnetization below 0.1 %FS in the field range as large as +/- 500 G. The ultra-low hysteresis design prevents the magnetometer from dynamic offset after encountering a strong external magnetic field impact; that is, the angular accuracy restores automatically without calibration after the removal of interference field. This feature fulfills the requirements for applications when real time calibration is not available. No calibration is required in general conditions.5.4 Magnetic Setting MechanismAMR sensing resistors consist of Permalloy thin film and metallization. Permalloy is soft magnetic, irreversible magnetic rotation may occur after the strength of external magnetic field exceeds half of the anisotropy field of the sensing resistor, resulting in angular error induced by offset. To solve this issue, a magnetic setting mechanism is introduced in IST8310. A magnetic field is generated within IST8310 to align the magnetization of AMR sensing resistors before every measurement. This auto-zeroing mechanism ensures the stability of angular accuracy of IST8310 during whole operation.6 Digital Interface and Registers6.1 I 2C InterfaceThe interface of IST8310 follows the standard I 2C definition guidelines with some additional protocol definitions. IST8310 supports standard speed (100kHz) and fast speed (400kHz). Pull-up resistors of 4.7kohm for both SDA and SCL lines should be used.Figure 3. I 2C Operation6.1.1 Slave AddressMSB LSB(CAD1), the corresponding 7-bit and 8-bit defined I 2C slave addresses are listed below:6.2 I2C Read OperationFigure 4. I C Single Byte Read OperationACK: Acknowledge, NA: Not Acknowledge, SA: START Condition, SP: Repeat Start Condition, ST: STOP Condition ■: Slave to MasterFigure 5. I C Multiple Byte Read OperationACK: Acknowledge, NA: Not Acknowledge, SA: START Condition, SP: Repeat Start Condition, ST: STOP Condition ■: Slave to Master6.3 I 2C Write OperationFigure 6. I C Single Byte Write OperationACK: Acknowledge, NA: Not Acknowledge, SA: START Condition, SP: Repeat Start Condition, ST: STOP Condition ■: Slave to MasterFigure 7. I C Multiple Byte Write OperationACK: Acknowledge, NA: Not Acknowledge, SA: START Condition, SP: Repeat Start Condition, ST: STOP Condition ■: Slave to Master6.4 Registers6.4.1 Customer Defined Registers6.4.2 Who Am I RegisterThis Register provides device ID information6.4.3 Status Register 1This Register provides status information of IST83106.4.4 Output Data RegistersThe Output Registers (from 0x03h~0x08h) contain X, Y and Z axis measurement data. Measurement data are stored in 2’s complement format.6.4.5 Status Register 2In this register, there is an INT flag for customer use.6.4.6 Control Setting Register 1This Register controls and adjusts the main parameters.6.4.7 Control Setting Register 2This Register controls and adjusts the main parameters.6.4.8 Self-Test Register6.4.9 Temperature Sensor Output RegistersThe Output Data Registers use 2’s complement format.6.4.10 Average Control RegisterThis register controls the times of average done in the circuit to lower the noise. Higher average times leads to lower noise.6.4.11 Pulse Duration Control RegisterThis register controls the pulse duration for set/reset function of AMR sensors.IST8310IST8310 Datasheet, Version 1.2217 Ordering InformationFor more information on iSentek’s Magnetic Sensors, please contact us by phone at +86-132-6706-8686 (China), +86-755-3337-0168 (China) or +886-2-2698-3306 ext:110 (Taiwan); via e-mail: sales@ or visit us online at .The application circuits herein constitute typical usage and interface of iSentek’s product. iSentek does not warranty or assume liability of customer-designed circuits derived from this description or depiction.iSentek reserves the right to make changes to improve reliability, function or design. iSentek does not assume any liability arising out of the application or use of any product or circuit described herein; neither does it convey any license under its patent rights nor the rights of others.US Patent 9,297,863, Taiwanese Patents I437249, I420128 and I463160 apply to our magnetic sensor technology described.。
深圳国芯人工智能有限公司 STC8H 系列单片机技术参考手册说明书
深圳国芯人工智能有限公司STC8H 系列单片机技术参考手册技术支持网站:官方技术论坛:资料更新日期:2023/9/12 (本文档可直接添加备注和标记)目录1单片机基础概述 (1)1.1 数制与编码 (1)1.1.1 数制转换 (1)1.1.2 原码、反码及补码 (4)1.1.3 常用编码 (5)1.2 几种常用的逻辑运算及其图形符号 (5)1.3 STC8H单片机性能概述 (9)1.4 STC8H单片机产品线 (10)2特性、价格及管脚 (11)2.1 STC8H1K08-36I-TSSOP20/QFN20,SOP20/16系列 (11)2.1.1 特性及价格 (11)2.1.2 管脚图,最小系统 (14)2.1.3 管脚说明 (17)2.2 STC8H1K28-36I-LQFP/QFN32,TSSOP/SOP28,TSSOP20系列 (20)2.2.1 特性及价格 (20)2.2.2 管脚图,最小系统 (23)2.2.3 管脚说明 (26)2.3 STC8H3K64S2-40I-LQFP48/32,QFN48/32,TSSOP20系列 (30)2.3.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (30)2.3.2 管脚图,最小系统 (33)2.3.3 管脚说明 (37)2.4 STC8H3K64S4-40I-LQFP48/32,QFN48/32,TSSOP20系列 (43)2.4.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (43)2.4.2 管脚图,最小系统 (46)2.4.3 管脚说明 (49)2.5 STC8H8K64U-LQFP/QFN-64/48/32,TSSOP20,SKDIP28,PDIP40 (55)2.5.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (55)2.5.2 STC8H8K64U系列内部结构图 (58)2.5.3 管脚图,最小系统 (59)2.5.4 管脚说明 (73)2.6 STC8H4K64TL-40I-LQFP48/32、QFN48、TSSOP20 (79)2.6.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (79)2.6.2 管脚图,最小系统 (82)2.6.3 RTC实战线路图 (85)2.6.4 管脚说明 (86)2.7 STC8H4K64TLCD-40I-LQFP64/48、QFN64/48 (93)2.7.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (93)2.7.2 管脚图,最小系统 (96)2.7.3 RTC实战线路图 (98)2.7.4 管脚说明 (99)2.8 STC8H1K08T-33I-TSSOP20/QFN20/SOP16 (108)2.8.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (108)2.8.2 管脚图,最小系统 (111)2.8.3 管脚说明 (114)2.9 STC8H2K08U-TSSOP20,QFN20,SOP16(提前预告) (118)2.9.1 特性及价格(有16位硬件乘除法器MDU16,准16位单片机) (118)2.9.2 管脚图,最小系统 (121)2.9.3 管脚说明 (127)2.10 STC8051H-42I-LQFP48/44、PDIP40 (131)2.10.1 特性及价格 (131)2.10.2 管脚图,最小系统 (134)3功能脚切换 (137)3.1 功能脚切换相关寄存器 (137)3.1.1 外设端口切换控制寄存器1(P_SW1),串口1、SPI切换 (137)3.1.2 外设端口切换控制寄存器2(P_SW2),串口2/3/4、I2C、比较器输出切换 (138)3.1.3 时钟选择寄存器(MCLKOCR) (138)3.1.4 T3/T4选择寄存器(T3T4PIN) (138)3.1.5 高级PWM选择寄存器(PWMx_PS) (140)3.1.6 高级PWM功能脚选择寄存器(PWMx_ETRPS) (142)3.2 范例程序 (143)3.2.1 串口1切换 (143)3.2.2 串口2切换 (144)3.2.3 串口3切换 (145)3.2.4 串口4切换 (147)3.2.5 SPI切换 (148)3.2.6 I2C切换 (150)3.2.7 比较器输出切换 (151)3.2.8 主时钟输出切换 (152)4封装尺寸图 (155)4.1 SOP8封装尺寸图 (155)4.2 DFN8封装尺寸图(3mm*3mm) (156)4.3 SOP16封装尺寸图 (157)4.4 SOP20封装尺寸图 (158)4.5 TSSOP20封装尺寸图 (159)4.6 QFN20封装尺寸图(3mm*3mm) (160)4.7 SOP28封装尺寸图 (161)4.8 TSSOP28封装尺寸图 (162)4.9 LQFP32封装尺寸图(9mm*9mm) (163)4.10 QFN32封装尺寸图(4mm*4mm) (164)4.11 LQFP48封装尺寸图(9mm*9mm) (165)4.12 QFN48封装尺寸图(6mm*6mm) (166)4.13 LQFP64封装尺寸图(12mm*12mm) (167)4.14 QFN64封装尺寸图(8mm*8mm) (168)4.15 STC8H系列单片机命名规则 (169)5ISP下载流程及典型应用线路图 (170)5.1.1 ISP下载流程图(串口下载模式) (170)5.1.2 ISP下载流程图(硬件/软件模拟USB+串口模式) (171)5.2 STC8H系列ISP下载应用线路图 (172)5.2.1 使用STC-USB Link1D工具下载,支持在线和脱机下载 (172)5.2.2 硬件USB直接ISP下载(5V系统) (174)5.2.3 硬件USB直接ISP下载(3.3V系统) (176)5.2.4 软件模拟硬件USB直接ISP下载,建议尝试,不支持仿真(5V系统) (177)5.2.5 软件模拟硬件USB直接ISP下载,建议尝试,不支持仿真(3.3V系统) (179)5.2.6 使用一箭双雕之USB转串口工具下载 (181)5.2.7 使用USB转双串口/TTL下载(有外部晶振) (183)5.2.8 使用USB转双串口/TTL下载(无外部晶振) (184)5.2.9 使用USB转双串口/TTL下载(自动停电/上电) (186)5.2.10 使用USB转双串口/RS485下载(5.0V) (187)5.2.11 使用USB转双串口/RS485下载(3.3V) (187)5.2.12 使用USB转双串口/RS232下载(5.0V) (189)5.2.13 使用USB转双串口/RS232下载(3.3V) (189)5.2.14 使用U8-Mini工具下载,支持ISP在线和脱机下载,也可支持仿真 (190)5.2.15 使用U8W工具下载,支持ISP在线和脱机下载,也可支持仿真 (192)5.2.16 使用RS-232转换器下载,也可支持仿真 (194)5.2.17 使用PL2303-GL下载,也可支持仿真 (195)5.2.18 单片机电源控制参考电路 (197)5.3 用STC一箭双雕之USB转双串口仿真STC8系列MCU (198)5.4 STC-ISP下载软件高级应用 (207)5.4.1 发布项目程序 (207)5.4.2 程序加密后传输(防烧录时串口分析出程序) (213)5.4.3 发布项目程序+程序加密后传输结合使用 (218)5.4.4 用户自定义下载(实现不停电下载) (220)5.4.5 如何简单的控制下载次数,通过ID号来限制实际可以下载的MCU数量 (224)6时钟、复位、看门狗与电源管理 (228)6.1 系统时钟控制 (228)6.1.1 系统时钟选择寄存器(CLKSEL) (230)6.1.2 时钟分频寄存器(CLKDIV) (230)6.1.3 内部高速高精度IRC控制寄存器(HIRCCR) (231)6.1.4 外部振荡器控制寄存器(XOSCCR) (231)6.1.5 外部32K振荡器控制寄存器(X32KCR) (232)6.1.6 内部低速IRC控制寄存器(IRC32KCR) (233)6.1.7 主时钟输出控制寄存器(MCLKOCR) (234)6.1.8 高速振荡器稳定时间控制寄存器(IRCDB) (234)6.1.9 USB时钟控制寄存器(USBCLK) (234)6.1.10 PLL时钟控制寄存器(PLLCR) (235)6.2 STC8H系列内部IRC频率调整 (236)6.2.1 IRC频段选择寄存器(IRCBAND) (237)6.2.2 内部IRC频率调整寄存器(IRTRIM) (237)6.2.3 内部IRC频率微调寄存器(LIRTRIM) (239)6.2.4 时钟分频寄存器(CLKDIV) (239)6.2.5 分频出3MHz用户工作频率,并用户动态改变频率追频示例 (240)6.3 系统复位 (243)6.3.1 看门狗复位(WDT_CONTR) (244)6.3.2 软件复位(IAP_CONTR) (246)6.3.3 低压复位(RSTCFG) (247)6.3.4 复位标志寄存器(RSTFLAG) (247)6.3.5 低电平上电复位参考电路(一般不需要) (249)6.3.6 低电平按键复位参考电路 (249)6.3.7 传统8051高电平上电复位参考电路 (250)6.4 外部晶振及外部时钟电路 (251)6.4.1 外部晶振输入电路 (251)6.4.2 外部时钟输入电路(P1.6为高阻输入模式,可当输入口使用) (251)6.5 时钟停振/省电模式与系统电源管理 (252)6.5.1 电源控制寄存器(PCON) (252)6.6 掉电唤醒定时器 (253)6.6.1 掉电唤醒定时器计数寄存器(WKTCL,WKTCH) (253)6.7 范例程序 (254)6.7.1 选择系统时钟源 (254)6.7.2 主时钟分频输出 (256)6.7.3 看门狗定时器应用 (257)6.7.4 软复位实现自定义下载 (259)6.7.5 低压检测 (261)6.7.6 省电模式 (262)6.7.7 使用INT0/INT1/INT2/INT3/INT4管脚中断唤醒省电模式 (264)6.7.8 使用T0/T1/T2/T3/T4管脚中断唤醒省电模式 (267)6.7.9 使用RxD/RxD2/RxD3/RxD4管脚中断唤醒省电模式 (271)6.7.10 使用I2C的SDA脚唤醒MCU省电模式 (274)6.7.11 使用掉电唤醒定时器唤醒省电模式 (276)6.7.12 LVD中断唤醒省电模式,建议配合使用掉电唤醒定时器 (278)6.7.13 比较器中断唤醒省电模式,建议配合使用掉电唤醒定时器 (281)6.7.14 使用LVD功能检测工作电压(电池电压) (283)7自动频率校准,自动追频(CRE) (288)7.1 相关寄存器 (288)7.1.1 CRE控制寄存器(CRECR) (288)7.1.2 CRE校准计数值寄存器(CRECNT) (289)7.1.3 CRE校准误差值寄存器(CRERES) (289)7.2 范例程序 (290)7.2.1 自动校准内部高速IRC(HIRC) (290)8存储器 (292)8.1 程序存储器 (292)8.2 数据存储器 (293)8.2.1 内部RAM (293)8.2.3 内部扩展RAM,XRAM,XDATA (295)8.2.4 辅助寄存器(AUXR) (295)8.2.5 外部扩展RAM,XRAM,XDATA (296)8.2.6 总线速度控制寄存器(BUS_SPEED) (296)8.2.7 8051中可位寻址的数据存储器 (297)8.2.8 扩展SFR使能寄存器EAXFR的使用说明 (299)8.3 存储器中的特殊参数,在ISP下载时可烧录进程序FLASH (300)8.4 只读特殊功能寄存器中存储的唯一ID号和重要参数(CHIPID) (305)8.4.1 CHIP之全球唯一ID号解读 (307)8.4.2 CHIP之内部参考信号源解读 (307)8.4.3 CHIP之内部32K的IRC振荡频率解读 (308)8.4.4 CHIP之高精度IRC参数解读 (309)8.4.5 CHIP之测试时间参数解读 (310)8.4.6 CHIP之芯片封装形式编号解读 (310)8.5 范例程序 (311)8.5.1 ) (311)8.5.2 ROM)中读取) (314)8.5.38.5.48.5.5 ) (322)8.5.68.5.78.5.8 ROM)中读取) (331)8.5.98.5.108.5.11 ROM)中读取) (344)8.5.12 ROM)中读取) (349)8.5.13 用户自定义内部IRC频率(从RAM中读取)9特殊功能寄存器 (358)9.1 STC8H1K08系列 (358)9.2 STC8H1K28系列 (360)9.3 STC8H3K64S4系列 (361)9.4 STC8H3K64S2系列 (363)9.5 STC8H8K64U-64Pin/48Pin USB系列 (365)9.6 STC8H4K64TL系列 (367)9.7 STC8H4K64TLCD系列 (369)9.8 STC8H1K08T系列 (371)9.9 STC8H2K08U系列 (373)9.10 特殊功能寄存器列表 (375)10I/O口 (389)10.1 I/O口相关寄存器 (389)10.1.1 端口数据寄存器(Px) (392)10.1.2 端口模式配置寄存器(PxM0,PxM1) (392)10.1.4 端口施密特触发控制寄存器(PxNCS) (393)10.1.5 端口电平转换速度控制寄存器(PxSR) (394)10.1.6 端口驱动电流控制寄存器(PxDR) (394)10.1.7 端口数字信号输入使能控制寄存器(PxIE) (394)10.2 配置I/O口 (396)10.3 I/O的结构图 (397)10.3.1 准双向口(弱上拉) (397)10.3.2 推挽输出 (397)10.3.3 高阻输入 (398)10.3.4 开漏输出 (398)10.3.5 新增4.1K上拉电阻 (399)10.3.6 如何设置I/O口对外输出速度 (399)10.3.7 如何设置I/O口电流驱动能力 (400)10.3.8 如何降低I/O口对外辐射 (400)10.4 STC-ISP | I/O口配置工具 (401)10.4.1 普通配置模式 (401)10.4.2 高级配置模式 (402)10.5 范例程序 (403)10.5.1 端口模式设置 (403)10.5.2 双向口读写操作 (404)10.6 一种典型三极管控制电路 (407)10.7 典型发光二极管控制电路 (408)10.8 混合电压供电系统3V/5V器件I/O口互连 (408)10.9 如何让I/O口上电复位时为低电平 (409)10.10 利用74HC595驱动8个数码管(串行扩展,3根线)的线路图 (410)10.11 I/O口直接驱动LED数码管应用线路图 (411)10.12 用STC系列MCU的I/O口直接驱动段码LCD (412)10.13 使用I/O和R-2R电阻分压实现DAC的经典线路图 (431)11指令系统 (432)11.1 寻址方式 (432)11.1.1 立即寻址 (432)11.1.2 直接寻址 (432)11.1.3 间接寻址 (432)11.1.4 寄存器寻址 (432)11.1.5 相对寻址 (432)11.1.6 变址寻址 (433)11.1.7 位寻址 (433)11.2 指令表 (433)11.3 指令详解(中文) (436)11.4 指令详解(英文) (469)11.5 多级流水线内核的中断响应 (504)12中断系统 (506)12.1 STC8H系列中断源 (506)12.3 STC8H系列中断列表 (510)12.4 中断相关寄存器 (513)12.4.1 中断使能寄存器(中断允许位) (515)12.4.2 中断请求寄存器(中断标志位) (520)12.4.3 中断优先级寄存器 (524)12.5 范例程序 (531)12.5.1 INT0中断(上升沿和下降沿),可同时支持上升沿和下降沿 (531)12.5.2 INT0中断(下降沿) (532)12.5.3 INT1中断(上升沿和下降沿),可同时支持上升沿和下降沿 (534)12.5.4 INT1中断(下降沿) (536)12.5.5 INT2中断(下降沿),只支持下降沿中断 (537)12.5.6 INT3中断(下降沿),只支持下降沿中断 (539)12.5.7 INT4中断(下降沿),只支持下降沿中断 (541)12.5.8 定时器0中断 (542)12.5.9 定时器1中断 (544)12.5.10 定时器2中断 (546)12.5.11 定时器3中断 (548)12.5.12 定时器4中断 (549)12.5.13 UART1中断 (551)12.5.14 UART2中断 (553)12.5.15 UART3中断 (556)12.5.16 UART4中断 (558)12.5.17 ADC中断 (560)12.5.18 LVD中断 (562)12.5.19 比较器中断 (564)12.5.20 SPI中断 (566)12.5.21 I2C中断 (567)13所有的I/O口均可中断(4种模式),不是传统外部中断 (570)13.1 I/O口中断相关寄存器 (570)13.1.1 端口中断使能寄存器(PxINTE) (571)13.1.2 端口中断标志寄存器(PxINTF) (572)13.1.3 端口中断模式配置寄存器(PxIM0,PxIM1) (572)13.1.4 端口中断优先级控制寄存器(PINIPL,PINIPH) (573)13.1.5 端口中断掉电唤醒使能寄存器(PxWKUE) (573)13.2 范例程序 (575)13.2.1 P0口下降沿中断 (575)13.2.2 P1口上升沿中断 (578)13.2.3 P2口低电平中断 (581)13.2.4 P3口高电平中断 (585)13.2.5 使用拓展Keil中断号方案的I/O口中断范例 (588)14定时器/计数器 (591)14.1 定时器3/4功能脚切换 (591)14.2 定时器的相关寄存器 (592)14.3.1 定时器0/1控制寄存器(TCON) (593)14.3.2 定时器0/1模式寄存器(TMOD) (593)14.3.3 定时器0模式0(16位自动重装载模式) (594)14.3.4 定时器0模式1(16位不可重装载模式) (595)14.3.5 定时器0模式2(8位自动重装载模式) (596)14.3.6 定时器0模式3(不可屏蔽中断16位自动重装载,实时操作系统节拍器) (596)14.3.7 定时器1模式0(16位自动重装载模式) (597)14.3.8 定时器1模式1(16位不可重装载模式) (598)14.3.9 定时器1模式2(8位自动重装载模式) (599)14.3.10 定时器0计数寄存器(TL0,TH0) (599)14.3.11 定时器1计数寄存器(TL1,TH1) (599)14.3.12 辅助寄存器1(AUXR) (599)14.3.13 中断与时钟输出控制寄存器(INTCLKO) (600)14.3.14 定时器0计算公式 (600)14.3.15 定时器1计算公式 (601)14.4 定时器2(24位定时器,8位预分频+16位定时) (602)14.4.1 辅助寄存器1(AUXR) (602)14.4.2 中断与时钟输出控制寄存器(INTCLKO) (602)14.4.3 定时器2计数寄存器(T2L,T2H) (602)14.4.4 定时器2的8位预分频寄存器(TM2PS) (602)14.4.5 定时器2工作模式 (603)14.4.6 定时器2计算公式 (603)14.5 定时器3/4(24位定时器,8位预分频+16位定时) (604)14.5.1 定时器4/3控制寄存器(T4T3M) (604)14.5.2 定时器3计数寄存器(T3L,T3H) (604)14.5.3 定时器4计数寄存器(T4L,T4H) (604)14.5.4 定时器3的8位预分频寄存器(TM3PS) (605)14.5.5 定时器4的8位预分频寄存器(TM4PS) (605)14.5.6 定时器3工作模式 (605)14.5.7 定时器4工作模式 (607)14.5.8 定时器3计算公式 (607)14.5.9 定时器4计算公式 (608)14.6 定时器T11(24位定时器,8位预分频+16位定时) (609)14.6.1 定时器T11控制寄存器(T11CR) (609)14.6.2 定时器T11的8位预分频寄存器(T11PS) (609)14.6.3 定时器T11计数寄存器(T11L,T11H) (609)14.6.4 定时器T11工作模式 (610)14.6.5 定时器T11计算公式 (611)14.7 STC-ISP | 定时器计算器工具 (612)14.8 范例程序 (613)14.8.1 定时器0(模式0-16位自动重载),用作定时 (613)14.8.2 定时器0(模式1-16位不自动重载),用作定时 (614)14.8.3 定时器0(模式2-8位自动重载),用作定时 (616)14.8.4 定时器0(模式3-16位自动重载不可屏蔽中断),用作定时 (618)14.8.5 定时器0(外部计数-扩展T0为外部下降沿中断) (620)14.8.6 定时器0(测量脉宽-INT0高电平宽度) (621)14.8.7 定时器0(模式0),时钟分频输出 (623)14.8.8 定时器1(模式0-16位自动重载),用作定时 (625)14.8.9 定时器1(模式1-16位不自动重载),用作定时 (626)14.8.10 定时器1(模式2-8位自动重载),用作定时 (628)14.8.11 定时器1(外部计数-扩展T1为外部下降沿中断) (630)14.8.12 定时器1(测量脉宽-INT1高电平宽度) (632)14.8.13 定时器1(模式0),时钟分频输出 (634)14.8.14 定时器1(模式0)做串口1波特率发生器 (635)14.8.15 定时器1(模式2)做串口1波特率发生器 (639)14.8.16 定时器2(16位自动重载),用作定时 (643)14.8.17 定时器2(外部计数-扩展T2为外部下降沿中断) (644)14.8.18 定时器2,时钟分频输出 (646)14.8.19 定时器2做串口1波特率发生器 (648)14.8.20 定时器2做串口2波特率发生器 (651)14.8.21 定时器2做串口3波特率发生器 (655)14.8.22 定时器2做串口4波特率发生器 (659)14.8.23 定时器3(16位自动重载),用作定时 (663)14.8.24 定时器3(外部计数-扩展T3为外部下降沿中断) (665)14.8.25 定时器3,时钟分频输出 (667)14.8.26 定时器3做串口3波特率发生器 (668)14.8.27 定时器4(16位自动重载),用作定时 (672)14.8.28 定时器4(外部计数-扩展T4为外部下降沿中断) (674)14.8.29 定时器4,时钟分频输出 (676)14.8.30 定时器4做串口4波特率发生器 (678)15超级简单的STC USB-CDC虚拟串口应用 (682)15.1 USB-CDC虚拟串口概述 (682)15.2 新建Keil项目并加入CDC模块 (683)15.3 USB-CDC虚拟串口与电脑进行数据传输 (690)15.4 STC USB-CDC虚拟串口实现不停电自动ISP下载 (691)16串口通信 (692)16.1 串口功能脚切换 (692)16.2 串口相关寄存器 (693)16.3 串口1 (694)16.3.1 串口1控制寄存器(SCON) (694)16.3.2 串口1数据寄存器(SBUF) (694)16.3.3 电源管理寄存器(PCON) (695)16.3.4 辅助寄存器1(AUXR) (695)16.3.5 串口1模式0,模式0波特率计算公式 (695)16.3.6 串口1模式1,模式1波特率计算公式 (696)16.3.7 串口1模式2,模式2波特率计算公式 (699)16.3.8 串口1模式3,模式3波特率计算公式 (699)16.3.9 自动地址识别 (700)16.3.10 串口1从机地址控制寄存器(SADDR,SADEN) (700)16.4 串口2 (702)16.4.1 串口2控制寄存器(S2CON) (702)16.4.2 串口2数据寄存器(S2BUF) (702)16.4.3 串口2模式0,模式0波特率计算公式 (702)16.4.4 串口2模式1,模式1波特率计算公式 (703)16.5 串口3 (705)16.5.1 串口3控制寄存器(S3CON) (705)16.5.2 串口3数据寄存器(S3BUF) (705)16.5.3 串口3模式0,模式0波特率计算公式 (705)16.5.4 串口3模式1,模式1波特率计算公式 (706)16.6 串口4 (708)16.6.1 串口4控制寄存器(S4CON) (708)16.6.2 串口4数据寄存器(S4BUF) (708)16.6.3 串口4模式0,模式0波特率计算公式 (708)16.6.4 串口4模式1,模式1波特率计算公式 (709)16.7 串口注意事项 (711)16.8 STC-ISP | 串口波特率计算器工具 (712)16.9 STC-ISP | 串口助手/USB-CDC (713)16.10 范例程序 (717)16.10.1 串口1使用定时器2做波特率发生器 (717)16.10.2 串口1使用定时器1(模式0)做波特率发生器 (720)16.10.3 串口1使用定时器1(模式2)做波特率发生器 (724)16.10.4 串口2使用定时器2做波特率发生器 (728)16.10.5 串口3使用定时器2做波特率发生器 (732)16.10.6 串口3使用定时器3做波特率发生器 (735)16.10.7 串口4使用定时器2做波特率发生器 (739)16.10.8 串口4使用定时器4做波特率发生器 (743)16.10.9 串口多机通讯 (748)16.10.10 串口中断收发-MODBUS协议 (749)16.10.11 串口转LIN总线 (760)17比较器,掉电检测,内部1.19V参考信号源(BGV) (768)17.1 比较器内部结构图 (769)17.2 比较器输出功能脚切换 (769)17.3 比较器相关的寄存器 (770)17.3.1 比较器控制寄存器1(CMPCR1) (770)17.3.2 比较器控制寄存器2(CMPCR2) (771)17.3.3 比较器扩展配置寄存器(CMPEXCFG) (771)17.4 范例程序 (773)17.4.1 旧版比较器的使用(中断方式) (773)17.4.2 旧版比较器的使用(查询方式) (775)17.4.3 新版比较器的使用(中断方式) (777)17.4.4 新版比较器的使用(查询方式) (780)17.4.5 旧版比较器的多路复用应用(比较器+ADC输入通道) (783)17.4.6 新版比较器的多路复用应用(比较器+ADC输入通道) (784)17.4.7 比较器作外部掉电检测(掉电过程中应及时保存用户数据到EEPROM中) (787)17.4.8 比较器检测工作电压(电池电压) (788)18IAP/EEPROM/DATA-FLASH (792)18.1 EEPROM操作时间 (792)18.2 EEPROM相关的寄存器 (792)18.2.1 EEPROM数据寄存器(IAP_DATA) (792)18.2.2 EEPROM地址寄存器(IAP_ADDR) (793)18.2.3 EEPROM命令寄存器(IAP_CMD) (793)18.2.4 EEPROM触发寄存器(IAP_TRIG) (793)18.2.5 EEPROM控制寄存器(IAP_CONTR) (793)18.2.6 EEPROM等待时间控制寄存器(IAP_TPS) (794)18.3 EEPROM大小及地址 (795)18.4 范例程序 (798)18.4.1 EEPROM基本操作 (798)18.4.2 使用MOVC读取EEPROM (801)18.4.3 使用串口送出EEPROM数据 (804)18.4.4 串口1读写EEPROM-带MOVC读 (808)18.4.5 口令擦除写入-多扇区备份-串口1操作 (815)19ADC模数转换,内部1.19V参考信号源(BGV) (825)19.1 ADC相关的寄存器 (825)19.1.1 ADC控制寄存器(ADC_CONTR),PWM触发ADC控制 (826)19.1.2 ADC配置寄存器(ADCCFG) (828)19.1.3 ADC转换结果寄存器(ADC_RES,ADC_RESL) (829)19.1.4 ADC时序控制寄存器(ADCTIM) (830)19.1.5 ADC扩展配置寄存器(ADCEXCFG) (831)19.2 ADC相关计算公式 (832)19.2.1 ADC速度计算公式 (832)19.2.2 ADC转换结果计算公式 (832)19.2.3 反推ADC输入电压计算公式 (832)19.2.4 反推工作电压计算公式 (834)19.3 10位ADC静态特性 (834)19.4 12位ADC静态特性 (834)19.5 ADC应用参考线路图 (835)19.5.1 一般精度ADC参考线路图 (835)19.5.2 高精度ADC参考线路图 (836)19.5.3 高精度ADC参考线路图(有独立A Vcc和AGnd) (837)19.6 STC-ISP | ADC转换速度计算器工具 (838)19.7 范例程序 (839)19.7.1 ADC基本操作(查询方式) (839)19.7.2 ADC基本操作(中断方式) (841)19.7.3 格式化ADC转换结果 (843)19.7.4 利用ADC第15通道测量外部电压或电池电压 (845)19.7.5 ADC作按键扫描应用线路图 (848)19.7.6 检测负电压参考线路图 (849)19.7.7 常用加法电路在ADC中的应用 (850)20同步串行外设接口SPI (851)20.1 SPI功能脚切换 (851)20.2 SPI相关的寄存器 (851)20.2.1 SPI状态寄存器(SPSTAT) (851)20.2.2 SPI控制寄存器(SPCTL),SPI速度控制 (852)20.2.3 SPI数据寄存器(SPDAT) (853)20.3 SPI通信方式 (854)20.3.1 单主单从 (854)20.3.2 互为主从 (854)20.3.3 单主多从 (855)20.4 配置SPI (856)20.5 数据模式 (858)20.6 范例程序 (859)20.6.1 SPI单主单从系统主机程序(中断方式) (859)20.6.2 SPI单主单从系统从机程序(中断方式) (861)20.6.3 SPI单主单从系统主机程序(查询方式) (863)20.6.4 SPI单主单从系统从机程序(查询方式) (865)20.6.5 SPI互为主从系统程序(中断方式) (867)20.6.6 SPI互为主从系统程序(查询方式) (869)21I2C总线 (873)21.1 I2C功能脚切换 (873)21.2 I2C相关的寄存器 (873)21.3 I2C主机模式 (875)21.3.1 I2C配置寄存器(I2CCFG),总线速度控制 (875)21.3.2 I2C主机控制寄存器(I2CMSCR) (876)21.3.3 I2C主机辅助控制寄存器(I2CMSAUX) (877)21.3.4 I2C主机状态寄存器(I2CMSST) (877)21.4 I2C从机模式 (879)21.4.1 I2C从机控制寄存器(I2CSLCR) (879)21.4.2 I2C从机状态寄存器(I2CSLST) (879)21.4.3 I2C从机地址寄存器(I2CSLADR) (881)21.4.4 I2C数据寄存器(I2CTXD,I2CRXD) (882)21.5 范例程序 (883)21.5.1 I2C主机模式访问AT24C256(中断方式) (883)21.5.2 I2C主机模式访问AT24C256(查询方式) (888)21.5.3 I2C主机模式访问PCF8563 (894)21.5.4 I2C从机模式(中断方式) (899)21.5.5 I2C从机模式(查询方式) (903)21.5.6 测试I2C从机模式代码的主机代码 (907)2216位高级PWM定时器,支持正交编码器 (913)22.1 简介 (916)22.2 主要特性 (916)22.3 时基单元 (919)22.3.1 读写16位计数器 (919)22.3.2 16位PWMA_ARR寄存器的写操作 (920)22.3.3 预分频器 (920)22.3.4 向上计数模式 (920)22.3.5 向下计数模式 (921)22.3.6 中间对齐模式(向上/向下计数) (923)22.3.7 重复计数器 (924)22.4 时钟/触发控制器 (925)22.4.1 预分频时钟(CK_PSC) (925)22.4.2 内部时钟源(f MASTER) (925)22.4.3 外部时钟源模式1 (926)22.4.4 外部时钟源模式2 (926)22.4.5 触发同步 (927)22.4.6 与PWMB同步 (929)22.5 捕获/比较通道 (932)22.5.1 16位PWMA_CCRi寄存器的写流程 (933)22.5.2 输入模块 (933)22.5.3 输入捕获模式 (934)22.5.4 输出模块 (935)22.5.5 强制输出模式 (936)22.5.6 输出比较模式 (936)22.5.7 PWM模式 (937)22.5.8 使用刹车功能(PWMFLT) (942)22.5.9 在外部事件发生时清除OCiREF信号 (943)22.5.10 编码器接口模式 (944)22.6 中断 (945)22.7 PWMA/PWMB寄存器描述 (947)22.7.1 高级PWM功能脚切换 (947)22.7.2 输出使能寄存器(PWMx_ENO) (948)22.7.3 输出附加使能寄存器(PWMx_IOAUX) (949)22.7.4 控制寄存器1(PWMx_CR1) (950)22.7.5 控制寄存器2(PWMx_CR2),及实时触发ADC (951)22.7.6 从模式控制寄存器(PWMx_SMCR) (953)22.7.7 外部触发寄存器(PWMx_ETR) (955)22.7.8 中断使能寄存器(PWMx_IER) (955)22.7.9 状态寄存器1(PWMx_SR1) (956)22.7.10 状态寄存器2(PWMx_SR2) (957)22.7.11 事件产生寄存器(PWMx_EGR) (957)22.7.12 捕获/比较模式寄存器1(PWMx_CCMR1) (958)22.7.13 捕获/比较模式寄存器2(PWMx_CCMR2) (961)22.7.14 捕获/比较模式寄存器3(PWMx_CCMR3) (962)22.7.15 捕获/比较模式寄存器4(PWMx_CCMR4) (963)22.7.16 捕获/比较使能寄存器1(PWMx_CCER1) (964)22.7.17 捕获/比较使能寄存器2(PWMx_CCER2) (966)22.7.18 计数器高8位(PWMx_CNTRH) (966)22.7.19 计数器低8位(PWMx_CNTRL) (967)22.7.20 预分频器高8位(PWMx_PSCRH),输出频率计算公式 (967)22.7.21 预分频器低8位(PWMx_PSCRL) (967)22.7.22 自动重装载寄存器高8位(PWMx_ARRH) (967)22.7.23 自动重装载寄存器低8位(PWMx_ARRL) (968)22.7.24 重复计数器寄存器(PWMx_RCR) (968)22.7.25 捕获/比较寄存器1/5高8位(PWMx_CCR1H) (968)22.7.26 捕获/比较寄存器1/5低8位(PWMx_CCR1L) (968)22.7.27 捕获/比较寄存器2/6高8位(PWMx_CCR2H) (969)22.7.28 捕获/比较寄存器2/6低8位(PWMx_CCR2L) (969)22.7.29 捕获/比较寄存器3/7高8位(PWMx_CCR3H) (969)22.7.30 捕获/比较寄存器3/7低8位(PWMx_CCR3L) (969)22.7.31 捕获/比较寄存器4/8高8位(PWMx_CCR4H) (969)22.7.32 捕获/比较寄存器4/8低8位(PWMx_CCR4L) (969)22.7.33 刹车寄存器(PWMx_BKR) (969)22.7.34 死区寄存器(PWMx_DTR) (970)22.7.35 输出空闲状态寄存器(PWMx_OISR) (971)22.8 范例程序 (972)22.8.1 BLDC无刷直流电机驱动(带HALL) (972)22.8.2 BLDC无刷直流电机驱动(无HALL),一个比较器当3个比较器分时复用 (981)22.8.3 使用高级PWM实现编码器 (988)22.8.4 正交编码器模式 (991)22.8.5 单脉冲模式(触发控制脉冲输出) (992)22.8.6 门控模式(输入电平使能计数器) (993)22.8.7 外部时钟模式 (995)22.8.8 输入捕获模式测量脉冲周期(捕获上升沿到上升沿或者下降沿到下降沿) (997)22.8.9 输入捕获模式测量脉冲高电平宽度(捕获上升沿到下降沿) (999)22.8.10 输入捕获模式测量脉冲低电平宽度(捕获下降沿到上升沿) (1001)22.8.11 输入捕获模式同时测量脉冲周期和高电平宽度(占空比) (1003)22.8.12 同时捕获4路输入信号的周期和高电平宽度(占空比) (1005)22.8.13 输出占空比为100%和0%的PWM波形的方法(以PWM1P为例) (1011)22.8.14 带死区控制的PWM互补输出 (1012)22.8.15 PWM端口做外部中断(下降沿中断或者上升沿中断) (1013)22.8.16 输出任意周期和任意占空比的波形 (1014)22.8.17 使用PWM的CEN启动PWMA定时器,实时触发ADC (1014)22.8.18 PWM周期重复触发ADC (1015)22.8.19 利用PWM实现16位DAC的参考线路图 (1016)22.8.20 利用PWM实现互补SPWM (1016)22.8.21 高级PWM输出-频率可调-脉冲计数(软件方式) (1020)22.8.22 高级PWM输出-频率可调-脉冲计数(硬件方式) (1023)22.8.23 产生3路相位差120度的互补PWM波形(网友提供) (1027)22.8.24 高级PWM时钟输出应用(系统时钟2分频输出) (1028)22.8.25 输出两路有相位差的PWM(PWMA) (1029)22.8.26 输出两路有相位差的PWM(PWMB) (1031)22.8.27 PWMA+PWMB实现8组定时器 (1034)23高级PWM(新增硬件移相功能) (1038)23.1 相关寄存器 (1038)24高速高级PWM(HSPWM) (1039)24.1 相关寄存器 (1039)24.1.1 HSPWM配置寄存器(HSPWMn_CFG) (1039)24.1.2 HSPWM地址寄存器(HSPWMn_ADR) (1040)24.1.3 HSPWM数据寄存器(HSPWMn_DAT) (1040)24.2 范例程序 (1042)24.2.1 使能高级PWM的高速模式(异步模式) (1042)25USB通用串行总线 (1045)25.1 USB相关的寄存器 (1045)25.1.1 USB控制寄存器(USBCON) (1046)25.1.2 USB时钟控制寄存器(USBCLK) (1046)25.1.3 USB间址地址寄存器(USBADR) (1047)25.1.4 USB间址数据寄存器(USBDAT) (1047)25.2 USB控制器寄存器(SIE) (1048)25.2.1 USB功能地址寄存器(FADDR) (1049)25.2.2 USB电源控制寄存器(POWER) (1049)25.2.3 USB端点IN中断标志位(INTRIN1) (1049)25.2.4 USB端点OUT中断标志位(INTROUT1) (1050)25.2.5 USB电源中断标志(INTRUSB) (1050)25.2.6 USB端点IN中断允许寄存器(INTRIN1E) (1051)25.2.7 USB端点OUT中断允许寄存器(INTROUT1E) (1051)25.2.8 USB电源中断允许寄存器(INTRUSBE) (1051)25.2.9 USB数据帧号寄存器(FRAMEn)) (1052)25.2.10 USB端点索引寄存器(INDEX) (1052)25.2.11 IN端点的最大数据包大小(INMAXP) (1052)25.2.12 USB端点0控制状态寄存器(CSR0) (1052)25.2.13 IN端点控制状态寄存器1(INCSR1) (1053)25.2.14 IN端点控制状态寄存器2(INCSR2) (1054)25.2.15 OUT端点的最大数据包大小(OUTMAXP) (1054)25.2.16 OUT端点控制状态寄存器1(OUTCSR1) (1054)25.2.17 OUT端点控制状态寄存器2(OUTCSR2) (1055)25.2.18 USB端点0的OUT长度(COUNT0) (1056)25.2.19 USB端点的OUT长度(OUTCOUNTn)) (1056)25.2.20 USB端点的FIFO数据访问寄存器(FIFOn) (1056)25.3 USB产品开发注意事项 (1056)25.4 范例程序 (1057)25.4.1 HID人机接口设备范例 (1057)25.4.2 HID(Human Interface Device)协议范例 (1068)25.4.3 CDC(Communication Device Class)协议范例 (1068)25.4.4 基于HID协议的USB键盘范例 (1068)25.4.5 基于HID协议的USB鼠标范例 (1068)25.4.6 基于HID协议的USB鼠标+键盘二合一范例 (1068)25.4.7 基于WINUSB协议的范例 (1068)25.4.8 MSC(Mass Storage Class)协议范例 (1069)26触摸按键控制器 (1070)26.1 触摸按键控制器内部框架图 (1072)26.2 低功耗触摸唤醒 (1072)26.3 仅做触摸按键功能时的操作步骤 (1072)26.4 低功耗触摸按键唤醒功能的操作步骤 (1073)26.5 触摸按键相关的寄存器 (1073)26.5.1 触摸按键使能寄存器(TSCHENn)) (1074)26.5.2 触摸按键配置寄存器(TSCFGn) (1075)26.5.3 触摸按键低电模式唤醒时间控制寄存器(TSWUTC) (1075)26.5.4 触摸按键控制寄存器(TSCTRL) (1076)26.5.5 触摸按键状态寄存器1(TSSTA1) (1077)26.5.6 触摸按键状态寄存器2(TSSTA2) (1077)26.5.7 触摸按键时间控制寄存器(TSRT) (1078)26.5.8 触摸按键数据寄存器(TSDAT) (1079)26.5.9 触摸按键门槛值寄存器(TSTH) (1079)26.6 基本参考电路图以及注意事项 (1080)26.7 范例程序 (1081)26.7.1 触摸按键配置软件介绍 (1081)26.7.2 触摸按键范例程序 (1083)27LED驱动器 (1084)27.1 LED驱动器内部框架图 (1085)27.2 LED驱动相关的寄存器 (1085)27.2.1 COM使能寄存器(COMEN) (1086)27.2.2 SEG使能寄存器(SEGEN) (1086)27.2.3 LED控制寄存器(LEDCTRL) (1086)27.2.4 LED时钟分频寄存器(LEDCKS) (1087)27.2.5 LED共阳模式数据寄存器(COMn_DA) (1088)27.2.6 LED共阴模式数据寄存器(COMn_DC) (1088)27.3 LED共阴模式(LEDMODE = 00) (1089)27.4 LED共阳模式(LEDMODE = 01) (1090)27.5 LED共阴/共阳模式(LEDMODE = 10) (1091)27.6 触摸按键与LED分时复用I/O (1092)27.7 共阴模式参考电路图 (1094)27.8 共阳模式参考电路图 (1094)27.9 共阴/共阳模式参考电路图1 (1095)27.10 共阴/共阳模式参考电路图2 (1096)27.11 范例程序 (1097)27.11.1 共阴/共阳模式驱动16个7段数码管 (1097)28RTC实时时钟 (1099)28.1 RTC相关的寄存器 (1099)28.1.1 RTC控制寄存器(RTCCR) (1101)28.1.2 RTC配置寄存器(RTCCFG) (1101)28.1.3 RTC中断使能寄存器(RTCIEN) (1101)28.1.4 RTC中断请求寄存器(RTCIF) (1102)28.1.5 RTC闹钟设置寄存器 (1102)28.1.6 RTC实时时钟初始值设置寄存器 (1102)28.1.7 RTC实时时钟计数寄存器 (1103)28.2 RTC实战线路图 (1104)28.3 范例程序 (1105)28.3.1 串口打印RTC时钟范例 (1105)28.3.2 利用ISP软件的用户接口实现不停电下载保持RTC参数 (1108)28.3.3 内部RTC时钟低功耗休眠唤醒-比较器检测电压程序 (1114)29LCD液晶驱动,即传统的段式/笔画式屏驱动 (1119)29.1 LCD功能脚切换 (1119)29.2 LCD相关的寄存器 (1120)29.2.1 LCD配置寄存器(LCDCFG) (1122)29.2.2 LCD配置寄存器2(LCDCFG2) (1122)29.2.3 死区时间长度配置寄存器(DBLEN) (1123)29.2.4 COM时间长度配置寄存器(COMLENx) (1123)29.2.5 闪烁率配置寄存器(BLANKRATE) (1123)29.2.6 LCD控制寄存器(LCDCR) (1123)29.2.7 COM线使能寄存器(COMON) (1123)29.2.8 SEG线使能寄存器(SEGONx) (1124)29.2.9 LCD数据寄存器(CxSEGVx) (1124)29.3 LCD显示相关配置 (1124)29.3.1 配置LCD刷新率(帧速率) (1124)29.3.2 配置LCD闪烁率 (1125)29.4 范例程序 (1126)29.4.1 LCD显示RTC时钟范例 (1126)30LCM接口(8/16位彩屏模块I8080/M6800接口) (1127)30.1 LCM接口功能脚切换 (1128)30.2 LCM相关的寄存器 (1128)30.2.1 LCM接口配置寄存器(LCMIFCFG) (1128)30.2.2 LCM接口配置寄存器2(LCMIFCFG2) (1129)30.2.3 LCM接口控制寄存器(LCMIFCR) (1129)30.2.4 LCM接口状态寄存器(LCMIFSTA) (1130)30.2.5 LCM接口数据寄存器(LCMIFDATL,LCMIFDATH) (1130)30.3 I8080/M6800模式LCM接口时序图 (1131)30.3.1 I8080模式 (1131)30.3.2 M6800模式 (1132)31DMA(批量数据传输) (1133)31.1 DMA相关的寄存器 (1134)31.2 存储器与存储器之间的数据读写(M2M_DMA) (1136)31.2.1 M2M_DMA配置寄存器(DMA_M2M_CFG) (1136)31.2.2 M2M_DMA控制寄存器(DMA_M2M_CR) (1137)31.2.3 M2M_DMA状态寄存器(DMA_M2M_STA) (1137)31.2.4 M2M_DMA传输总字节寄存器(DMA_M2M_AMT) (1137)31.2.5 M2M_DMA传输完成字节寄存器(DMA_M2M_DONE) (1137)31.2.6 M2M_DMA发送地址寄存器(DMA_M2M_TXAx) (1137)31.2.7 M2M_DMA接收地址寄存器(DMA_M2M_RXAx) (1137)31.3 ADC数据自动存储(ADC_DMA) (1139)31.3.1 ADC_DMA配置寄存器(DMA_ADC_CFG) (1139)31.3.2 ADC_DMA控制寄存器(DMA_ADC_CR) (1139)31.3.3 ADC_DMA状态寄存器(DMA_ADC_STA) (1139)31.3.4 ADC_DMA接收地址寄存器(DMA_ADC_RXAx) (1139)31.3.5 ADC_DMA配置寄存器2(DMA_ADC_CFG2) (1140)31.3.6 ADC_DMA通道使能寄存器(DMA_ADC_CHSWx) (1140)31.3.7 ADC_DMA的数据存储格式 (1141)31.4 SPI与存储器之间的数据交换(SPI_DMA) (1143)31.4.1 SPI_DMA配置寄存器(DMA_SPI_CFG) (1143)31.4.2 SPI_DMA控制寄存器(DMA_SPI_CR) (1143)31.4.3 SPI_DMA状态寄存器(DMA_SPI_STA) (1144)31.4.4 SPI_DMA传输总字节寄存器(DMA_SPI_AMT) (1144)31.4.5 SPI_DMA传输完成字节寄存器(DMA_SPI_DONE) (1144)31.4.6 SPI_DMA发送地址寄存器(DMA_SPI_TXAx) (1144)31.4.7 SPI_DMA接收地址寄存器(DMA_SPI_RXAx) (1144)31.4.8 SPI_DMA配置寄存2器(DMA_SPI_CFG2) (1145)31.5 串口1与存储器之间的数据交换(UR1T_DMA,UR1R_DMA) (1146)31.5.1 UR1T_DMA配置寄存器(DMA_UR1T_CFG) (1146)31.5.2 UR1T_DMA控制寄存器(DMA_UR1T_CR) (1146)31.5.3 UR1T_DMA状态寄存器(DMA_UR1T_STA) (1146)31.5.4 UR1T_DMA传输总字节寄存器(DMA_UR1T_AMT) (1147)31.5.5 UR1T_DMA传输完成字节寄存器(DMA_UR1T_DONE) (1147)31.5.6 UR1T_DMA发送地址寄存器(DMA_UR1T_TXAx) (1147)31.5.7 UR1R_DMA配置寄存器(DMA_UR1R_CFG) (1147)31.5.8 UR1R_DMA控制寄存器(DMA_UR1R_CR) (1147)31.5.9 UR1R_DMA状态寄存器(DMA_UR1R_STA) (1148)31.5.10 UR1R_DMA传输总字节寄存器(DMA_UR1R_AMT) (1148)31.5.11 UR1R_DMA传输完成字节寄存器(DMA_UR1R_DONE) (1148)31.5.12 UR1R_DMA接收地址寄存器(DMA_UR1R_RXAx) (1148)31.6 串口2与存储器之间的数据交换(UR2T_DMA,UR2R_DMA) (1149)31.6.1 UR2T_DMA配置寄存器(DMA_UR2T_CFG) (1149)31.6.2 UR2T_DMA控制寄存器(DMA_UR2T_CR) (1149)31.6.3 UR2T_DMA状态寄存器(DMA_UR2T_STA) (1149)31.6.4 UR2T_DMA传输总字节寄存器(DMA_UR2T_AMT) (1150)31.6.5 UR2T_DMA传输完成字节寄存器(DMA_UR2T_DONE) (1150)31.6.6 UR2T_DMA发送地址寄存器(DMA_UR2T_TXAx) (1150)31.6.7 UR2R_DMA配置寄存器(DMA_UR2R_CFG) (1150)31.6.8 UR2R_DMA控制寄存器(DMA_UR2R_CR) (1150)31.6.9 UR2R_DMA状态寄存器(DMA_UR2R_STA) (1151)31.6.10 UR2R_DMA传输总字节寄存器(DMA_UR2R_AMT) (1151)31.6.11 UR2R_DMA传输完成字节寄存器(DMA_UR2R_DONE) (1151)31.6.12 UR2R_DMA接收地址寄存器(DMA_UR2R_RXAx) (1151)31.7 串口3与存储器之间的数据交换(UR3T_DMA,UR3R_DMA) (1152)31.7.1 UR3T_DMA配置寄存器(DMA_UR3T_CFG) (1152)31.7.2 UR3T_DMA控制寄存器(DMA_UR3T_CR) (1152)31.7.3 UR3T_DMA状态寄存器(DMA_UR3T_STA) (1152)31.7.4 UR3T_DMA传输总字节寄存器(DMA_UR3T_AMT) (1153)31.7.5 UR3T_DMA传输完成字节寄存器(DMA_UR3T_DONE) (1153)31.7.6 UR3T_DMA发送地址寄存器(DMA_UR3T_TXAx) (1153)31.7.7 UR3R_DMA配置寄存器(DMA_UR3R_CFG) (1153)31.7.8 UR3R_DMA控制寄存器(DMA_UR3R_CR) (1153)31.7.9 UR3R_DMA状态寄存器(DMA_UR3R_STA) (1154)31.7.10 UR3R_DMA传输总字节寄存器(DMA_UR3R_AMT) (1154)31.7.11 UR3R_DMA传输完成字节寄存器(DMA_UR3R_DONE) (1154)31.7.12 UR3R_DMA接收地址寄存器(DMA_UR3R_RXAx) (1154)31.8 串口4与存储器之间的数据交换(UR4T_DMA,UR4R_DMA) (1155)31.8.1 UR4T_DMA配置寄存器(DMA_UR4T_CFG) (1155)31.8.2 UR4T_DMA控制寄存器(DMA_UR4T_CR) (1155)31.8.3 UR4T_DMA状态寄存器(DMA_UR4T_STA) (1155)31.8.4 UR4T_DMA传输总字节寄存器(DMA_UR4T_AMT) (1156)31.8.5 UR4T_DMA传输完成字节寄存器(DMA_UR4T_DONE) (1156)31.8.6 UR4T_DMA发送地址寄存器(DMA_UR4T_TXAx) (1156)31.8.7 UR4R_DMA配置寄存器(DMA_UR4R_CFG) (1156)31.8.8 UR4R_DMA控制寄存器(DMA_UR4R_CR) (1156)31.8.9 UR4R_DMA状态寄存器(DMA_UR4R_STA) (1157)31.8.10 UR4R_DMA传输总字节寄存器(DMA_UR4R_AMT) (1157)31.8.11 UR4R_DMA传输完成字节寄存器(DMA_UR4R_DONE) (1157)31.8.12 UR4R_DMA接收地址寄存器(DMA_UR4R_RXAx) (1157)31.9 LCM与存储器之间的数据读写(LCM_DMA) (1158)31.9.1 LCM_DMA配置寄存器(DMA_LCM_CFG) (1158)31.9.2 LCM_DMA控制寄存器(DMA_LCM_CR) (1158)31.9.3 LCM_DMA状态寄存器(DMA_LCM_STA) (1158)31.9.4 LCM_DMA传输总字节寄存器(DMA_LCM_AMT) (1159)31.9.5 LCM_DMA传输完成字节寄存器(DMA_LCM_DONE) (1159)31.9.6 LCM_DMA发送地址寄存器(DMA_LCM_TXAx) (1159)31.9.7 LCM_DMA接收地址寄存器(DMA_LCM_RXAx) (1159)31.10 范例程序 (1160)31.10.1 串口1中断模式与电脑收发测试- DMA接收超时中断 (1160)31.10.2 串口1中断模式与电脑收发测试- DMA数据校验 (1165)。
GB-T2423.2-2001
$u43%fi% ,B%%(S)?EEE%3%!J&&-+BBBP,B%#I%Sak%?Jl,&HBE&%!JksBE%
Ts
~ % E E & & @ + & ~ + B %PAB@#I+ ' ~,B~%DEj%$$?3?29@.1.1. ~ d ) - ~ ) % j T i & & ~ R#i3%3?&HHRRW3D o 3%B Kl%$%@HRWF3O 29.1.2.2 S+i3%#&&B%$i3+%jTB%H$HS%%i+
%&%%$G(S) +R%+%%#E%~TBBH$,F!Z~&&%%#~#iE1&k~f7S~EE?JlB,
BI~H&B%#E2/U?aEB!XJffiZT$EA5 CF ~ % E ~ E E % % % B E ~5I%' ,~U~A%~ %~ ?Z@@ I (RP* 2 1 0
& 1 %z2-~*H~#4?B*2%i3%#aaaE~%fi~H%%3&&T%%%(s)+9#mX%%(s)%%f
BB ,%Z8#BER+49%-S:f%BX%B&BE@+%3Uo
a%B :~iRjlR%3&fistrMX
%-K!i (1954)
-&a Bb,*F?EB%5@M%3&0
%El#i(1974)
4.3英寸多色图形LCD显示器用户手册说明书
4.3inch Capacitive Touch LCDUser ManualOVERVIEWThis is a multicolor graphic LCD display, 4.3inch diagonal, 800x480 pixels.It is able to display 16,777,216 colors via the 24-bit RGB interface, supports up to 5-points capacitive touch control via I2C interface.Overview (1)Specificiations (3)Interface (3)Demo codes (4)Download Demo codes. (4)STM32F7 examples (4)Hardware connection (4)Expected result (6)STM32F4 examples (6)Hardware connection (6)Expected result (8)FAQ (9)Working voltage: 3.3V/5VLCD Interface:24-bit RGBLogic Level: 3.3VLCD Type:TFTDisplay Colors:16,777,216Resolution :800(H)RGB x 480(V) Display Size:95.04 (H) x 53.856 (V)mm Dot Pitch:0.1188(H) x 0.1122(V) mm Touch controller:GT911Touch Interface:I2CDimension:106 x 68(mm)DOWNLOAD DEMO CODES.Download demo codes from Waveshare wiki.https:///wiki/4.3inch_Capacitive_Touch_LCD#IntroductionUnzip it:STM32F429: Examples based on Open429I-C, whose chip is STM32F429IGT6. The project uses HAL librariesSTM32F746:Examples based on Open746I-C, whose chip is STM32746IGT6. The project uses HAL libraries. With Open746I-C, both RGB Header interface and RGB Cable interface are compatible, so we provide two examples for both interfaces.Clean.bat: Batch files sued to clean redundant files generated when compiling.STM32F7 EXAMPLESDevelopment board used is Waveshare Open746I-C, chip is STM32F746IGT6. The project uses HAL libraries.HARDWARE CONNECTIONFor this board, we provide two examples, with same functions. The only difference of them is that the touch interfaceRGB Header interface (Interface 1)RGB Cable interface (Interface 2), the only difference between Interface 1 is touch pins.EXPECTED RESULT1.Display a picture2.Display English and Chinese characters3.Draw point, line, rectangle and circle.4.Display the points where finger touch, supports up to 5-points touchSTM32F4 EXAMPLESDevelopment board used is Waveshare Open429I-C, chip is STM32F429IGT6. The project uses HAL libraries.HARDWARE CONNECTIONThe RGB Cable interface (Interface 2) is used for resistive touch screen, isn’t compatible with capacitive screen, therefore, we only provide RGB Header example (Interface 1) for this board. RGB Header Interface (interface 1)EXPECTED RESULT1.DISPLAY a picture2.Display English and Chinese characters3.Draw points, line, rectangle and circle4.Display points touched by fingers, supports up to 5-points touch1.Why the codes used RGB565 instead of RGB888 for color displaying?- The data of RGB888 are too much, required much more RAM. SDRAM is 16-bit input/output. If we use RGB888, we should save RGB data by writing several times, and cost much more times and CPU. In fact, even we use RGB565 to transmit data, LCD controller will convert it to RGB888 format and needn’t cost external CPU。
钢号对照表
结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢 结构钢
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477
35CrMn 35Mn2CrTiB 35Mn2TiB 15CrNi2 16CrMnS 16CrMn 16CrNi3Mo 17Cr2Ni2Mo 20CrMo 18Cr2Ni2 18CrNiMo 18CrNiMo 19CrMnNi 19CrNi 35MnB 20 40Mn 20CrMn 20CrMnS 20MnCrH 20CrMo 21CrMo2 20Cr2Mo1V 25Cr2Ni2Mo 24CrMoV 25CrMo 25CrMnS 27CrMnMoSN 28CrMnS 30CrMn 31Cr3MoV 30Mn2V 35Mn2V
钢
号
对
照
注:本表列出了各钢类的中外钢号对照,需要查询时点击“编辑”栏,在下拉菜单中点击“查找”,输入需查询钢号,点击“查找下一个”即可。如 果表中查询不到所需钢号,可与技术质量部综合管理室联系,联系人:冯书亭、刘莹莹,联系电话:3065 序号 钢的牌号 与国内相对应的牌号 钢类 序号 钢的牌号 与国内相对应的牌号 钢类 1 1.2714 55CrNiMoV 结构钢 418 1.2083 4Cr13 Cr 不锈 2 648 80CrMn 结构钢 419 1.2316 4Cr17Mo Cr 不锈 3 695 70CrMn 结构钢 420 1.4104 Y1Cr17Mo Cr 不锈 4 840 09MnCrNiMo 结构钢 421 205 2Cr17Mn15Ni2N Cr 不锈 5 925 16CrNi3Mo 结构钢 422 409 0Cr12Nb Cr 不锈 6 980 10CrNi5MoV 结构钢 423 420 2Cr13 Cr 不锈 7 1018 20 结构钢 424 422 2Cr12NiMo1W1V Cr 不锈 8 1020 20 结构钢 425 430 1Cr17 Cr 不锈 9 1022 20Mn 结构钢 426 431 1Cr17Ni2 Cr 不锈 10 1030 30 结构钢 427 434 0Cr17Mo Cr 不锈 11 1045 45 结构钢 428 4017 0Cr17Ni Cr 不锈 12 1214 Y12 结构钢 429 15X16Ⅱ2AM-Ⅲ 2Cr16Ni2MoN Cr 不锈 13 1522 20Mn 结构钢 430 200Cu 0Cr13Ni2Mn12Cu2 Cr 不锈 14 4037 35MnMo 结构钢 431 204Cu 0Cr16Ni2Mn8Cu3 Cr 不锈 15 4340 40CrMiMo 结构钢 432 409Cb 00Cr12Nb Cr 不锈 16 5150 50Cr 结构钢 433 409L 00Cr12Nb Cr 不锈 17 8630 30CrNiMo 结构钢 434 409M 0Cr12Nb Cr 不锈 18 8740 40MnCrNiMo 结构钢 435 410、T410 1Cr13 Cr 不锈 19 070M20 20Mn 结构钢 436 410S 0Cr13 Cr 不锈 20 070M20 18MnS 结构钢 437 410HMo 1Cr13Mo Cr 不锈 21 070M55 50Mn 结构钢 438 410LSi 00Cr14Si Cr 不锈 22 070M55 52MnS 结构钢 439 410LSiMo 0Cr14SiMo Cr 不锈 23 24 25 26 27 080M40 080M40 09MnNiD 1.592 0 14NiCr14 40Mn 42MnS 10MnNi 20Cr2Ni2 14CrNi4 结构钢 结构钢 结构钢 结构钢 结构钢 440 441 442 443 444 416、T416、T416MS 420C 420F 420J2 430F 1Cr13S 3Cr13Mo Y3Cr13 3Cr13 00Cr17 Cr 不锈 Cr 不锈 Cr 不锈 Cr 不锈 Cr 不锈
开发板电路原理图
8 VCC 7 6 5
C1 00 + 1 0U
WW 1 0K
5
液晶显示器接口电路
VCC A3 A4 A5 P37 P36 A9 P13
J P5 HEADER 8 X2
1
2
3
4
5
6
7
8
9
10
11 12
13 14
15 16
LIGHT LC D_A0 LC D_A1 LC D_A2 LC D_R D LCD_W R C S _LC D RST_ LCD
LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED LED
DG5
VCC
DG6
DG7
1
J P1
D0
A
D1
1
2
B
D2
3
4
C
D3
5
6
D
D4
7
8
E
D5
9
10
F
D6
11 12
G
D7
13 14
DP
15 16
HEADER 8 X2
2
3
4
9
8
7
6
5
LC M_D0 7 LC M_D1 8 LC M_D2 9 LC M_D3 10 LC M_D4 11 LC M_D5 12 LC M_D6 13 LC M_D7 14
J 10 0 LCD16 0 2
VCC Vad j GND
LIGHT+ LIGHT-
R /W DATA CLK
D0 D1 D2 D3 D4 D5 D6 D7
51单片机C语言编程100例
单片机开发基础(试卷编号1161)
单片机开发基础(试卷编号1161)1.[单选题]下列流程控制字中哪一个能够实现循环结构()A)ifB)switchC)elseD)for答案:D解析:1.02.[单选题]假定有两个开关K1和K2,开关闭合时连接的I/O引脚为低电平,否则为高电平,请问判断K1和K2同时闭合的表达式应该怎么写?A)K1==0K2==1B)K1==0||K2==1C)K1==0K2==0D)K1==0||K2==0答案:C解析:3.[单选题]下列4个特殊功能寄存器中,可以位寻址的是( )。
A)SCONB)TMODC)TL0D)TH0答案:A解析:4.[单选题]以下选项中,正确的C语言整型常量是( )。
A)32LB)510000C)-1.00D)567答案:D解析:5.[单选题]十进制数126其对应的十六进制可表示为( )。
A)8FHB)8EHC)FEH6.[单选题]对于一位八段共阳LED数码管,其中a段为字形码最低位,若要显示“7”字形,则应送入的字形码为( )。
A)F8HB)78HC)07HD)82H答案:A解析:7.[单选题]MOV R1 ,#30H; MOV A,#64H; ADD A,#47H; DA A; MOV @R1,A;后(A)=A)10HB)11HC)12HD)13H答案:B解析:8.[单选题]指令“CPL 00H”的含义是()A)地址00H单元每位取反B)20H.0位状态为0C)20H.0位置1D)20H.0位状态取反答案:D解析:9.[单选题]51 单片机的 VCC(40)引脚是( )引脚。
A)主电源+5VB)接地C)备用电源D)访问片外存贮器答案:A解析:10.[单选题]当设置串行口工作为方式2时,采用( )语句。
A)SCON=0x80B)PCON=0x80C)SCON=0x10D)PCON=0x1011.[单选题]在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是( )A)PCB)ACCC)PSWD)SP答案:C解析:12.[单选题]串行通信速率的指标是波特率,而波特率的量纲是( )。
rtc芯片PCF8563驱动移植完整版
71 };
72
73 #define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
74 #define LEAP_YEAR(year) ((!(year % 4) && (year % 100)) || !(year % 400))
75 /*
76 * The number of days in the month.
139
if (ret >= 0)
140
{
141
ret_data = buf[0];
142
}
143
return ret_data;
144 }
145 #else
146 unsigned char gpio_i2c_read(unsigned char chip_addr, unsigned char reg_addr)
168
169
ret = i2c_transfer(client->adapter, msg, 2);
170
if (ret != 2) {
171
printk("[%s %d] ot_i2c_transfer error, ret=%d.\n", __FUNCTION__, __LINE
__, ret);
0x0E /* timer control */
48 #define PCF8563_REG_TMR
0x0F /* timer */
49
50 #define PCF8563_SC_LV
0x80 /* low voltage */
51 #define PCF8563_MO_C
I2C存储器读写(计数器,并能断电存储)
任务二:I2C存储器读写(计数器,并能断电存储)之阿布丰王创作实验原理1)I2C总线概述I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线判决和高低速器件同步功能的高性能串行总线.2)I2C信号线I2C总线只有两根双向信号线.一根是数据线SDA,另一根是时钟线SCL.I2C总线通过上拉电阻接正电源.当总线空闲时,两根线均为高电平.连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系.图 1 I2C总线框图3)I2C总线的数据传送a)数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必需坚持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变动.图 2 SDA与SCL的工作时序图b) 起始和终止信号SCL线为高电平期间,SDA线由高电平向低电平的变动暗示起始信号SCL线为高电平期间,SDA线由低电平向高电平的变动暗示终止信号.起始和终止信号都是由主机发出的,在起始信号发生后,总线就处于被占用的状态;在终止信号发生后,总线就处于空闲状态.c) I2C总线的数据传送速率I2C总线的通信速率受主机控制,能快能慢,最高速率限制为100Kb/sd) I2C总线的数据传送格式主机向从机发送数据从机向主机发送数据图 3 I2C总线的数据传送格式S:起始位 SA: 从机地址,7位W/:写标识表记标帜位,1位 R:读标识表记标帜位,1位A:应答位,1位 A/:非应答位,1位D:数据,8位 P:停止位阴影:主机发生的信号无阴影:从机发生的信号4)总线的寻址I2C总线协议有明确的规定:采纳7位的寻址字节(寻址字节是起始信号后的第一个字节).寻址字节的位界说D7~D1位组成从机的地址.D0位是数据传送方向位,为“0”时暗示主机向从机写数据,为“1”时暗示主机由从机读数据.主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比力,如果相同,则认为自己正被主机寻址,根据R/位将自己确定为发送器或接收器.从机的地址由固定部份和可编程部份组成.在一个系统中可能希望接入多个相同的从机,从机地址中可编程部份决定了可接入总线该类器件的最年夜数目.如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中.任务三:要求:设计一个简单系统,每10S进行温度收集(结合电路与法式,分析指标),在液晶屏上显示以后温度和前一状态的温度,并将结果存入存储器,具备可将温度的存储结果与PC机通讯和数据发送功能,可以使用键盘设定温度高低限制值,到达限制值时报警.一、实验设计思路二、实验内容1、蜂鸣器工作原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈发生磁场来驱动振动膜发声的,因此需要一定的电流才华驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放年夜的电路.原理图见图:如图所示,蜂鸣器的负极经电阻R3接地,蜂鸣器的正极接到三极管的集电极C,三极管的基级B经过限流电阻R2后由单片机的P1.3引脚控制,当P1.3输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当P1.3输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发作声音.因此,我们可以通过法式控制P1.3脚的电平来使蜂鸣器发作声音和关闭.法式中改变单片机P1.3引脚输出波形的频率,就可以调整控制蜂鸣器音调,发生各种分歧音色、音调的声音.另外,改变P1.3输出电平的高低电平占空比,则可以控制蜂鸣器的声音年夜小.2、SP2键盘控制数据格式数据发送时序一个键盘发送值的例子:通码和断码是以什么样的序列发送到你的计算机从而使得字符G 呈现在你的字处置软件里的呢?因为这是一个年夜写字母,需要发生这样的事件次第:按下Shift 键-按下G键-释放G 键-释放Shift 键.与这些时间相关的扫描码如下:Shift 键的通码12h,G 键的通码34h ,G 键的断码F0h 34h ,Shift 键的断码F0h 12h .因此发送到你的计算机的数据应该是:12h 34h F0h 34h F0h 12h3、DS18B20温度传感器DS18B20工作原理及应用:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强.其一个工作周期可分为两个部份,即温度检测和数据处置.在讲解其工作流程之前我们有需要了解18B20的内部存储器资源.18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于寄存DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验).数据在生产时设置不由用户更改.DS18B20共64位ROM.RAM 数据暂存器,用于内部计算和数据存取,数据在失落电后丧失,DS18B20共9个字节RAM,每个字节为8位.第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(经常使用于温度报警值贮存)的镜像.在上电复位时其值将被刷新.第5个字节则是用户第3个EEPROM的镜像.第6、7、8个字节为计数寄存器,是为了让用户获得更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单位.第9个字节为前8个字节的CRC 码.EEPROM 非易失性记忆体,用于寄存长期需要保管的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户把持.4、LCD1602液晶显示读写把持时序如图所示图三:读把持时序图四:写把持时序附录一:(任务二法式)#include <p18f452.h>#include <i2c.h>#define uint unsigned int#define uchar unsigned char#define e PORTBbits.RB3//液晶屏e端接RB3#define rw PORTBbits.RB4//液晶屏rw端接RB4#define rs PORTBbits.RB5//液晶屏rs端接RB5void disp(uchar num1,uchar num2,uchar num3);void delay(uint z);void disp_init(void); //液晶屏初始化void write_com(uchar com);//对液晶屏写指令void write_data(uchar dat);//写数据void main(void){unsigned int lednum=0,x,tt=0; //lednum 显示的数据,x 24c02读到的数据,tt时间累加unsigned int a1=0,a2=0,a3=0; //显示位数个十百 disp_init();//1602的初始化OpenI2C(MASTER, SLEW_ON);//I2C 的初始化SSPADD = 9; //频率为400KHZT0CONbits.TMR0ON=0;//关闭TIMER0 T0CONbits.T08BIT=0;//配置为16位计数模式T0CONbits.T0CS=0;//选择内部时钟源即按时模式TMR0H=(65536-10000)/256;//按时5us TMR0L=(65536-10000)%256;INTCONbits.TMR0IF=0;//清TIMER0溢出中断标识表记标帜位T0CONbits.TMR0ON=1;//使能TIMER0 while(1){x = EERandomRead(0xA0,0x03);//读数据,0XA0为器件地址 0X03为存储地址 if(INTCONbits.TMR0IF==1)//TIMER0溢出中断标识表记标帜位为1 {INTCONbits.TMR0IF=0;//清TIMER0溢出中断标识表记标帜位TMR0H=(65536-10000)/256;//5us*10000=50msTMR0L=(65536-10000)%256;tt++;if(tt==20)//1s{tt=0;x++;if(x==256){x=0;}EEByteWrite(0xA0, 0x03,x); //写数据EEAckPolling(0xA0);//应答}}lednum = EERandomRead(0xA0,0x03);//防止断电遗失a1=lednum/100;//百位上的数字a2=lednum%100/10;//十位上的数字a3=lednum%10;//个位上的数字disp(a1,a2,a3);//显示}}void write_com(uchar com)//LED1602控制字输入{TRISB=0b000000000;//TRISB=0b00010000;TRISD=0;e=0;rw=0;rs=0; //写指令:RS=L,RW=L,D0~D7=指令码,E=高脉冲PORTD=com; //写指令到液晶delay(5);e=1;delay(5);e=0;}void write_data(uchar dat)//LCD1602数据输入{ TRISD=0;e=0;rw=0;rs=1;//写数据:RS=H,RW=L,D0~D7=指令码,E=高脉冲PORTD=dat;//写数据到液晶delay(5);e=1;delay(5);e=0;}void disp_init(){TRISD=0;//选择D端口为液晶屏数据的输入口write_com(0x38);//液晶开显示write_com(0x0c);//显示光标,光标闪烁write_com(0x06);//读或写一个字符后地址指针加一,光标加一write_com(0x01);//显示清屏:1、数据指针清零;2、所有显示清零write_com(0x80);//第一行首位}void disp(uchar num1,uchar num2,uchar num3){write_com(0x80+0x40);write_data(num1+0x30);//液晶第二行第一位数delay(1);write_com(0x80+0x41);write_data(num2+0x30);//液晶第二行第二位数delay(1);write_com(0x80+0x42);write_data(num3+0x30);//液晶第二行第三位数delay(1);}void delay(uint z)//z毫秒延时子法式{uint x,y;for(x=110;x>0;x--)for(y=z;y>0;y--);}附录二(任务三法式)#include <pic18.h> //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H__CONFIG(1,XT) ; //晶振为外部4M__CONFIG(2,WDTDIS) ; //看门狗关闭__CONFIG(4,LVPDIS) ; //禁止低电压编程#define RSPIN RB5 //Data or Instrument Select LCD1602#define RWPIN RB4 //Write or Read#define EPIN RB3 //6800 mode Enable singleunsigned char temp1=0,temp1_1=0; //收集到的温度高8位上一次的unsigned char temp2=0,temp2_2=0; //收集到的温度低8位unsigned int a,b,c=0;#define beep RC2 //界说蜂鸣器接口/****************************************/#define sda RC4 //AT24C02#define scl RC3bit eepromdi;bit eepromdo;unsigned char addressbuf;unsigned char buf_24C02;/****************************************/bit clrbit; //USARTunsigned char recebuf;/****************************************///转换后的温度值小数点部份查表const unsigned char tablexiao[16]={0,0,1,2,2,3,4,4,5,6,6,7,8,8,9,9};/***************************************************************************** ***********/#define Key_Data RB1#define Key_CLK RB0unsigned char IntNum; //中断次数计数unsigned char KeyV; //键值unsigned char Key_UP=0, Shift = 0;//Key_UP是键松开标识,Shift是Shift键按下标识unsigned char keybuf;unsigned char disbuf;//84unsigned char shu1=0,shu2=0,tem1=0,tem2=0,tem3=0; //温度上限bit bf; //标识是否有字符被收到bit disbit;//0x66为backspace键//0x5a为Enter键const unsigned char UnShifted[59][2] = {0x1C, 'a',0x32, 'b',0x21, 'c',0x23, 'd',0x24, 'e',0x2B, 'f',0x34, 'g',0x33, 'h',0x43, 'i',0x3B, 'j',0x42, 'k',0x4B, 'l',0x3A, 'm',0x31, 'n',0x44, 'o',0x4D, 'p',0x15, 'q',0x2D, 'r',0x1B, 's',0x2C, 't',0x3C, 'u',0x2A, 'v',0x1D, 'w',0x22, 'x',0x35, 'y',0x1A, 'z',0x45, '0',0x16, '1',0x1E, '2',0x26, '3',0x25, '4',0x2E, '5',0x36, '6',0x3D, '7',0x3E, '8',0x46, '9',0x0E, '`',0x4E, '-',0x55, '=',0x5D, '\\',0x29, ' ',0x54, '[',0x5B, ']',0x4C, ';',0x52, '\'',0x41, ',',0x49, '.',0x4A, '/',0x71, '.',0x70, '0',0x69, '1',0x72, '2',0x7A, '3',0x6B, '4',0x73, '5',0x74, '6',0x6C, '7',0x75, '8',0x7D, '9',};const unsigned char Shifted[59][2] = { 0x1C, 'A',0x32, 'B',0x21, 'C',0x23, 'D',0x24, 'E',0x2B, 'F',0x34, 'G',0x33, 'H',0x43, 'I',0x3B, 'J',0x42, 'K',0x4B, 'L',0x3A, 'M',0x31, 'N',0x44, 'O',0x4D, 'P',0x15, 'Q',0x2D, 'R',0x1B, 'S',0x2C, 'T',0x3C, 'U',0x2A, 'V',0x1D, 'W',0x22, 'X',0x35, 'Y',0x1A, 'Z',0x45, '0',0x16, '1',0x1E, '2',0x26, '3',0x25, '4',0x2E, '5',0x36, '6',0x3D, '7',0x3E, '8',0x46, '9',0x0E, '~',0x4E, '_',0x55, '+',0x5D, '|',0x29, ' ',0x54, '{',0x5B, '}',0x4C, ':',0x52, '"',0x41, '<',0x49, '>',0x4A, '?',0x71, '.',0x70, '0',0x69, '1',0x72, '2',0x7A, '3',0x6B, '4',0x73, '5',0x74, '6',0x6C, '7',0x75, '8',0x7D, '9',};//******************************************************************/ //6x8.h文件:/*-----------------------------------------------6 x 8 font1 pixel space at left and bottomindex = ASCII - 32-----------------------------------------------*/const unsigned char font6x8[][6] ={{ 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },// ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },// " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },// # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },// $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },// %5 { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },// & { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },// ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },// ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },// ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },// * { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },// + { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },// , { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },// - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },// . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },// / { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },// 0 16 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },// 1 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },// 2 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },// 3 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },// 4 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },// 5 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },// 6 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },// 7 { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },// 8 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },// 9 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },// : 26 { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },// ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },// < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },// = { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },// > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },// ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },// @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },// A33 { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },// B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },// C { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },// D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },// E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },// F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },// G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },// H { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },// I { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },// J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },// K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },// L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },// M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },// N { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },// O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },// P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },// Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },// R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },// S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },// T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },// U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },// V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },// W { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },// X{ 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },// Z{ 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },// [59{ 0x00, 0x02, 0x04, 0x08, 0x10, 0x20 },// '\'{ 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },// ]{ 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },// ^{ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },// _{ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },// '{ 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },// a 65{ 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },// b{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },// c{ 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },// d{ 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },// e{ 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },// f{ 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },// g{ 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },// h{ 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },// i{ 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },// j{ 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },// k{ 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },// l{ 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },// m{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },// n{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },// o{ 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },// p{ 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },// q{ 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },// r{ 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },// s{ 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },// t{ 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },// u{ 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },// v{ 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },// w{ 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },// x{ 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },// y{ 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },// z 90{ 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 },// | 91{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }// horiz lines};/***************************************************************************** **************************/void delay(unsigned char x,unsigned char y){unsigned char z;do{z=y;do{;}while(--z);}while(--x);}//名称: 复位DS18B20函数unsigned char reset(void){unsigned char outbit;TRISA4=0;//设置RA4位输出口RA4=0; //设置RA4=0;delay(2,70); //延时503usTRISA4=1; //设置RA4为输入口,以释放总线等电阻拉高总线delay(2,8); //延时70usif(RA4==1) outbit=0; //没有接收到应答信号,继续复位else outbit=1; //接收到应答信号delay(2,60); //延时430usreturn outbit; //带参数返回,如果接收到应答,返回1,否则返回0 }//名称: 写字节函数void write_byte(unsigned char val){unsigned char i;unsigned char temp;for(i=8;i>0;i--){temp=val&0x01; //最低位移出TRISA4=0;//设置RA4位输出口RA4=0; //设置RA4=0;NOP();NOP();NOP();NOP();NOP(); //从高拉至低电平,发生写时间隙if(temp==1) TRISA4=1; //如果写1,拉高电平delay(2,7); //延时63usTRISA4=1; //设置RA4为输入口,以释放总线等电阻拉高总线NOP();NOP();val=val>>1; //右移一位}}//名称: 读字节函数unsigned char read_byte(void){unsigned char i;unsigned char value=0; //读出温度for(i=8;i>0;i--){value>>=1;TRISA4=0;//设置RA4位输出口RA4=0; //设置RA4=0;NOP();NOP();NOP();NOP();NOP();NOP(); //6usTRISA4=1; //设置RA4为输入口NOP();NOP();NOP();NOP(); //4usif(RA4==1) value|=0x80; //如果接收到数据为1,从最高位往右移delay(2,7); //63us}return(value);}//名称: 启动读温度函数void convert_T(void){if(reset()==1) //如果复位胜利{write_byte(0xcc); // 跳过多器件识别write_byte(0x44); // 启动温度转换}}//名称: 读温度函数void read_T(void){unsigned char Lsb,Msb;if(reset()==1){write_byte(0xcc); // 跳过多器件识别write_byte(0xbe); // 读暂存器Lsb=read_byte(); // 低字节Msb=read_byte(); // 高字节temp2=Lsb&0x0f; //LSB的低4位为小数部份temp1=(Lsb>>4)|(Msb<<4);//LSB的高4位和MSB拼成整数部份 }}//名称: 延时函数void delay1(unsigned int t){unsigned int i,j;for(i=0;i<t;i++){for(j=0;j<10;j++);}}//名称: 1602忙检测函数void lcd_wait_busy(void){TRISD7=1; //为读状态做准备,把RD7设为输入RSPIN=0; //选择指令寄存器RWPIN=1; //选择读EPIN=1; //使能线电平变动while(RD7==1); //读忙状态,不忙时退出EPIN=0; //恢复使能线电平TRISD7=0; //把RD7设置为输出}//名称: 1602写命令函数void lcd_write_com(unsigned char combuf){RSPIN=0; //选择指令寄存器RWPIN=0; //选择写PORTD=combuf; //把命令字送入RDEPIN=1; //使能线电平变动,命令送入1602的8位数据口asm("NOP"); //来一个空把持,以延时片刻EPIN=0; //恢复使能线电平}//1602写命令函数(带忙检测)void lcd_write_com_busy(unsigned char combuf){lcd_wait_busy();//调用忙检测函数lcd_write_com(combuf); //调用写命令函数}//1602写数据函数(带忙检测)void lcd_write_data(unsigned char databuf){lcd_wait_busy();//调用忙检测函数RSPIN=1; //选择数据寄存器RWPIN=0; //选择写PORTD=databuf; //把数据字送入RD口EPIN=1; //使能线电平变动,命令送入1602的8位数据口asm("NOP");EPIN=0; //恢复使能线电平}//名称: 1602显示地址写函数void lcd_write_address(unsigned char x,unsigned char y){x&=0x0f;//列地址限制在0-15y&=0x01;//行地址限制在0-1if(y==0x00)lcd_write_com_busy(x|0x80); //第一行的列地址写入elselcd_write_com_busy((x+0x40)|0x80); //第二行的列地址写入}//名称: 1602初始化函数void lcdreset(void){delay1(150);lcd_write_com(0x38);delay1(50);lcd_write_com(0x38);delay1(50);lcd_write_com(0x38);lcd_write_com_busy(0x38); //8位数据,双列,5*7字形lcd_write_com_busy(0x08);//显示功能关,无光标lcd_write_com_busy(0x01);//清屏指令lcd_write_com_busy(0x06);//写入新的数据后,光标右移,显示屏不移动lcd_write_com_busy(0x0c);//显示功能开,无光标,}//指定地址写入函数void lcd_write_char(unsigned char x,unsigned char y,unsigned char buf){lcd_write_address(x,y); //写入地址lcd_write_data(buf);//写入显示数据}/*********************************************************************/ //T0初始化函数void timer0init(void){T0CS=0; //TMR0工作于按时器方式PSA=1; //TMR0不分频TMR0IF=0; //清除TMR0中断标识表记标帜TMR0IE=1; //TMR0中断允许T0CON=0x88; //16bit按时方式,预分频关闭,TMR0H=(65536-50000)/256; //0.05;TMR0L=(65536-50000)%256;//GIE=1;}//T0中断函数 //外部中断INT处置函数 //PIC单片机和51单片机纷歧样,它只能有一个中断服务函数.void interrupt ISR(void){if(TMR0IF==1) //250us{//TMR0=0xff13; //晶振4.0M,按时250usTMR0H=(65536-50000)/256; //0.05;TMR0L=(65536-50000)%256;TMR0IF=0;a++;if(a==20){a=0;b++;if(b==999){b=0;}c++;}}if(INT0IF==1) //如果是外部中断{INT0IF=0; //清中断标识表记标帜位if(IntNum==0) KeyV=0; //接收开始,将缓冲区清零if((IntNum>0)&&(IntNum<9)) //接收8位有效码{KeyV=KeyV>>1; //因键盘数据是低>>高,结合上一句所以右移一位if (Key_Data) KeyV=KeyV|0x80; //当键盘数据线为1时为1到最高位}IntNum++; //中断次数计次if (IntNum > 10){IntNum = 0; //傍边断11次后暗示一帧数据收完,清变量准备下一次接收bf = 1; //接收完成标识表记标帜位,写1后,暗示接收OKkeybuf=KeyV; //把接收缓冲区的数据移植keybufKeyV=0; //接收缓冲区清0}}}/****************************************************************************/ /***************************************************************************/ //PS2解码处置函数unsigned char Decode(unsigned char ScanCode)//注意:如SHIFT+G为12H 34H F0H 34H F0H 12H?//也就是说shift的通码+G的通码+shift的断码+G的断码{unsigned char TempCyc;unsigned char KeyChar=0; if (!Key_UP) //当键盘松开时。
实训报告-智能家居实训报告模板
实训报告嵌入式智能家居实训报告班级学号*****–24姓名张德进实训地点E501指导教师庞春辉完成日期2015 年12月20日一、实训目的(1)具有阅读程序能力,查阅相关资料能力,掌握程序修改能力(2)具备编写代码能力,掌握程序分析,编写,调试能力。
二、实训环境校内环境:E501校外环境:工作单位以校内实训为主,校外实训为辅。
(1)硬件设备计算机。
(2)软件Eclipse。
三、技术介绍随着社会、经济水平的发展,人们对家居品质的要求也越来越高,要求居住环境舒适化、安全化,家居生活人性化、智能化。
智能家居是3C技术(即)向传统家电产业渗透发展的必然结果。
从社会背景的层面来看,近年来信息化的高度进展,通讯的自由化与高层次化、业务量的急速增加与人类对工作环境的安全性、舒适性、效率性要求的提高,造成家居智能化的需求大为增加;此外在科学技术方面,由于计算机控制技术的发展与电子信息通讯技术的成长,促成了智能家居的诞生。
现在的中国正迎来一个"数字城市"、"数字社区"建设与发展的热潮,3G技术和互联网应用对智能家居的发展也起到很重要的推动作用,智能家居的日渐兴起影响到人们生活的方方面面,改变了人们的生活习惯,提高了人们的生活质量,促使家庭实现了生活现代化,给人们的家居生活带来了全新的感受,它必将成为一种发展趋势。
目前市场上出现得智能家居控制系统主要有:(1)X-10系统(美国),该系统是利用电力线作为网络平台,采用集中控制方式实现。
这套系统的功能较为强大,与其它家居控制系统如ABB、C_BUS等比起来更容易接收,使用也相对简单。
因为实现同样的功能,X-10家居控制系统是利用220v电力线将发射器发出的X-10信号传送给接收器从而实现智能化的控制,因此采用这套系统不需要额外的布线,这也是这套系统的最大的一个优势,因为其它系统基本上都需要布低压线,在墙上或地面开槽、钻孔,施工难度大、费用高、工期长。
STR7系列微控制器
第二章 STR7系列微控制器 (2)2.1STR71X系列微控制器 (2)2.1.1 特点 (2)2.1.2 总体结构 (3)2.1.3 引脚描述 (6)2.1.4 电气特性 (20)2.2STR73X系列微控制器 (26)2.2.1 特点 (27)2.2.2 总体结构 (28)2.2.3 引脚描述 (30)2.2.4 电气特性 (40)第二章 STR7系列微控制器意法半导体(ST)的STR7系列微控制器基于16/32位 ARM7TDMI RISC CPU,该系列种类齐全,用户可以根据不同的应用需求选择合适的芯片。
根据内核类型、片内Flash和片内RAM的容量,以及片上外设资源种类和数量的不同,STR7系列微控制器主要分成如下几类:STR71x系列、STR73x系列以及STR75x系列。
本章将对它们的硬件特性、结构和电气特性作一介绍,更详细的交、直流特性可参考ST的相关数据手册。
片内外设的详细描述可参考本书的第三章。
2.1 STR71x系列微控制器STR71x系列是片上集成Flash和RAM的微控制器系列。
它基于高性能的ARM7TDMI内核,拥有丰富的外设和增强的I/O功能。
该系列中的所有器件都包含片上高速单电压Flash存储器和高速RAM存储器。
由于内嵌ARM内核,所以STR71x与所有的ARM工具和软件兼容。
表2.1-1是STR71x系列微控制器器件型号总览,可作为选型参考。
表2.1-1 STR71x器件总表2.1.1 特点1.存储器✓片内集成最高达256+16k字节的flash存储器(代码FLASH可反复擦写10,000次,数据FLASH可反复擦写100,000次,存储信息最长可以保持20年),可加密保护;✓片内集成最高达64k字节的RAM存储器;✓拥有可以寻址4个存储器段的外部存储器接口(EMI),支持SRAM、Flash以及ROM等存储器类型;✓支持多种启动方式。
2.时钟、复位、电源管理✓系统采用3.3V电源供电,I/O接口的驱动电压也是3.3V;✓内嵌1.8V电源稳压器为ARM7TDMI内核供电;✓0~16MHz的外部主晶振;✓32KHz外部备用晶振;✓嵌入式PLL锁相环为CPU提供时钟;✓在内部Flash中运行代码时,系统运行速度可达50MHz时钟频率;✓实时时钟具有日历功能;✓具有4种低功耗模式:SLOW、WFI、STOP和STANDBY。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*********************************************************************************/
#define I2C_MODE_MASTER_TRANSMITTER 0x02
#define I2C_MODE_MASTER_RECEIVER 0x03
#define I2C_MODE_SLAVE_TRANSMITTER 0x04
#define I2C_MODE_SLAVE_RECEIVER 0x05
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
/******************** (C) COPYRIGHT 2005 STMicroelectronics ********************
* File Name : 73x_i2c.h
* Author : MCD Application Team
#define I2C_ITEnable 0x01
#define I2C_ITDisable 0xFE
/* I2C Flags */
#define I2C_FLAG_SB 0x0001
#define I2C_FLAG_M_SL 0x0002
#define I2C_FLAG_ADSL 0x0004
/* Exported macro ------------------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
#define I2C_EVENT_MASTER_BYTE_RECEIVED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_BTF )
#define I2C_EVENT_MASTER_BYTE_TRANSMITTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_BTF | I2C_FLAG_TRA )
/* General Call */
#define I2C_GeneralCallEnable 0x10
#define I2C_GeneralCallDisable 0x00
/* Acknowledgement */
#define I2C_AckEnable 0x04
#define I2C_FLAG_ENDAD 0x2000
#define I2C_FLAG_ACK 0x4000
/* I2C Events */
#define I2C_EVENT_SLAVE_ADDRESS_MATCHED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_ADSL)
typedef struct
{
u8 I2C_GeneralCall;
u8 I2C_Ack;
u16 I2C_OwnAddress;
u32 I2C_CLKSpeed;
}I2C_InitTypetants --------------------------------------------------------*/
#include "73x_map.h"
#include "73x_prccu.h"
/* Exported types ----------------------------------------------------------- */
/* I2C Init structure define */
#define I2C_AckDisable 0x00
/* Fast Standard Mode */
#define I2C_CLKMode_Fast 0x80
#define I2C_CLKMode_Standard 0x00
/* I2C IT enable */
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
#define I2C_ARBITRATION_LOST I2C_FLAG_ARLO
#define I2C_SLAVE_GENERAL_CALL (I2C_FLAG_BUSY | I2C_FLAG_GCAL)
/* I2C Addressing Modes */
#define I2C_EVENT_MASTER_MODE_SELECT ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_SB )
#define I2C_EVENT_MASTER_MODE_SELECTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_ENDAD )
#define I2C_FLAG_BTF 0x0008
#define I2C_FLAG_BUSY 0x0010
#define I2C_FLAG_TRA 0x0020
#define I2C_FLAG_ADD10 0x0040
#define I2C_FLAG_EVF 0x0080
#define I2C_ACK_Mask 0x04
/* I2C Registers offset */
#define I2C_CR 0x00
#define I2C_SR1 0x04
#define I2C_SR2 0x08
#define I2C_CCR 0x0C
#define I2C_OAR1 0x10
#define I2C_OAR2 0x14
#define I2C_DR 0x18
#define I2C_ECCR 0x1C
/* I2C Init Mask */
#define I2C_CR_Mask 0x01
/* Module private variables --------------------------------------------------*/
#define I2C_EVENT_SLAVE_ACK_FAILURE ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF | I2C_FLAG_TRA | I2C_FLAG_AF)
/* I2C Events */
#define I2C_BUS_ERROR_DETECTED I2C_FLAG_BERR
/* I2C Enable, Disable, Start, Stop defines */
#define I2C_PESET_Mask 0x20
#define I2C_PERESET 0xDF
#define I2C_START_Mask 0x08
#define I2C_STOP_Mask 0x02
#define I2C_EVENT_MASTER_MODE_ADDRESS10 ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL |I2C_FLAG_ADD10 )
#define I2C_EVENT_SLAVE_STOP_DETECTED I2C_FLAG_STOPF
#define I2C_MODE_ADDRESS10 0x0
#define I2C_MODE_ADDRESS7 0x1
/* Master/Receiver Mode */
#define I2C_MODE_TRANSMITTER 0x00
#define I2C_MODE_RECEIVER 0x01
#define I2C_EVENT_SLAVE_BYTE_RECEIVED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF )
#define I2C_EVENT_SLAVE_BYTE_TRANSMITTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF | I2C_FLAG_TRA )
/* Define to prevent recursive inclusion ------------------------------------ */
#ifndef __73x_I2C_H
#define __73x_I2C_H
/* Includes ----------------------------------------------------------------- */