ImageVerifierCode 换一换
格式:DOCX , 页数:192 ,大小:185.62KB ,
资源ID:4216979      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4216979.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机C语言编程100例.docx)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

51单片机C语言编程100例.docx

1、 1 / 192 目 录 实例 3:用单片机控制第一个灯亮 3 实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率 3 实例 5:将 P1 口状态分别送入 P0、P2、P3 口:认识 I/O 口的引脚功能 4 实例 6:使用 P3 口流水点亮 8 位 LED.4 实例 7:通过对 P3 口地址的操作流水点亮 8 位 LED .5 实例 8:用不同数据类型控制灯闪烁时间 6 实例 9:用 P0 口、P1 口分别显示加法和减法运算结果 8 实例 10:用 P0、P1 口显示乘法运算结果 8 实例 11:用 P1、P0 口显示除法运算结果 9 实例 12:用自增运算控制 P0 口 8 位 LED

2、 流水花样 9 实例 13:用 P0 口显示逻辑“ 与“运算结果 .9 实例 14:用 P0 口显示条件运算结果 10 实例 15:用 P0 口显示按位“ 异或“运算结果 .10 实例 16:用 P0 显示左移运算结果 10 实例 17:“ 万能逻辑电路“实验 .11 实例 18:用右移运算流水点亮 P1 口 8 位 LED.11 实例 19:用 if 语句控制 P0 口 8 位 LED 的流水方向 12 实例 20:用 swtich 语句的控制 P0 口 8 位 LED 的点亮状态 12 实例 21:用 for 语句控制蜂鸣器鸣笛次数 .14 实例 22:用 while 语句控制 LED 1

3、5 实例 23:用 do-while 语句控制 P0 口 8 位 LED 流水点亮 15 实例 24:用字符型数组控制 P0 口 8 位 LED 流水点亮 16 实例 25: 用 P0 口显示字符串常量 17 实例 26:用 P0 口显示指针运算结果 .18 实例 27:用指针数组控制 P0 口 8 位 LED 流水点亮 18 实例 28:用数组的指针控制 P0 口 8 位 LED 流水点亮 19 实例 29:用 P0 、P1 口显示整型函数返回值 20 实例 30:用有参函数控制 P0 口 8 位 LED 流水速度 21 实例 31:用数组作函数参数控制流水花样 22 实例 32:用指针作函

4、数参数控制 P0 口 8 位 LED 流水点亮 23 实例 33:用函数型指针控制 P1 口灯花样 24 实例 34:用指针数组作为函数的参数显示多个字符串 25 实例 35:字符函数 ctype.h 应用举例 26 实例 36:内部函数 intrins.h 应用举例 .26 实例 37:标准函数 stdlib.h 应用举例 27 实例 38:字符串函数 string.h 应用举例 28 实例 39:宏定义应用举例 2.28 实例 40:宏定义应用举例 2.29 实例 41:宏定义应用举例 3.29 实例 42:用定时器 T0 查询方式 P2 口 8 位控制 LED 闪烁 30 实例 43:用

5、定时器 T1 查询方式控制单片机发出 1KHz 音频 30 实例 44:将计数器 T0 计数的结果送 P1 口 8 位 LED 显示 31 2 / 192 实例 45:用定时器 T0 的中断控制 1 位 LED 闪烁 32 实例 46:用定时器 T0 的中断实现长时间定时 32 实例 47:用定时器 T1 中断控制两个 LED 以不同周期闪烁 33 实例 48:用计数器 T1 的中断控制蜂鸣器发出 1KHz 音频 34 实例 49:用定时器 T0 的中断实现“渴望“主题曲的播放 .35 实例 50-1:输出 50 个矩形脉冲 .38 实例 50-2:计数器 T0 统计外部脉冲数 .39 实例

6、51-2:定时器 T0 的模式 2 测量正脉冲宽度 .39 实例 52:用定时器 T0 控制输出高低宽度不同的矩形波 40 实例 53:用外中断 0 的中断方式进行数据采集 41 实例 54-1:输出负脉宽为 200 微秒的方波 .42 实例 54-2:测量负脉冲宽度 .42 实例 55:方式 0 控制流水灯循环点亮 43 实例 56-1:数据发送程序 .44 实例 56-2:数据接收程序 .45 实例 57-1:数据发送程序 .46 实例 57-2:数据接收程序 .48 实例 58:单片机向 PC 发送数据 48 实例 59:单片机接收 PC 发出的数据 50 实例 60:用 LED 数码显

7、示数字 5.51 实例 61:用 LED 数码显示器循环显示数字 09 .51 实例 62:用数码管慢速动态扫描显示数字“1234“ .52 实例 63:用 LED 数码显示器伪静态显示数字 1234 .52 实例 64:用数码管显示动态检测结果 53 实例 65:数码秒表设计 55 实例 66:数码时钟设计 57 实例 67:用 LED 数码管显示计数器 T0 的计数值 60 实例 68:静态显示数字“59” 62 实例 69:无软件消抖的独立式键盘输入实验 62 实例 70:软件消抖的独立式键盘输入实验 62 实例 71:CPU 控制的独立式键盘扫描实验 63 实例 72:定时器中断控制的

8、独立式键盘扫描实验 66 实例 73:独立式键盘控制的 4 级变速流水灯 70 实例 74:独立式键盘的按键功能扩展:“以一当四“ .72 实例 75:独立式键盘调时的数码时钟实验 73 实例 76:独立式键盘控制步进电机实验 78 实例 77:矩阵式键盘按键值的数码管显示实验 80 实例 78:矩阵式键盘按键音 83 实例 79:简易电子琴 85 实例 80:矩阵式键盘实现的电子密码锁 91 实例 81:用 LCD 显示字符 A .94 实例 82:用 LCD 循环右移显示 “Welcome to China“.97 实例 83:用 LCD 显示适时检测结果 100 实例 84:液晶时钟设计

9、 104 3 / 192 实例 85:将数据“0x0f“ 写入 AT24C02 再读出送 P1 口显示 .110 实例 86:将按键次数写入 AT24C02,再读出并用 1602LCD 显示 .115 实例 87:对 I2C 总线上挂接多个 AT24C02 的读写操作 .122 实例 88:基于 AT24C02 的多机通信 读取程序 127 实例 88:基于 AT24C02 的多机通信 写入程序 131 实例 90:DS18B20 温度检测及其液晶显示 142 实例 91:将数据“0xaa“写入 X5045 再读出送 P1 口显示 .151 实例 92:将流水灯控制码写入 X5045 并读出送

10、 P1 口显示 155 实例 93:对 SPI 总线上挂接多个 X5045 的读写操作 .158 实例 94:基于 ADC0832 的数字电压表 .163 实例 95:用 DAC0832 产生锯齿波电压 .169 实例 96:用 P1 口显示红外遥控器的按键值 169 实例 97:用红外遥控器控制继电器 172 实例 98:基于 DS1302 的日历时钟 174 实例 99:单片机数据发送程序 183 实例 100:电机转速表设计 184 模拟霍尔脉冲 .189 /*函数的使用和熟悉*/ /实例 3:用单片机控制第一个灯亮 #include /包含 51 单片机寄存器定义的头文件 void m

11、ain(void) while(1) /无限循环 P1=0xfe; /P1=1111 1110B,即 P1.0 输出低电平 /实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率 #include /包含单片机寄存器的头文件 /* 函数功能:延时一段时间 */ void delay(void) /两个 void 意思分别为无需返回值,没有参数传递 unsigned int i; /定义无符号整数,最大取值范围 65535 for(i=0;i0)/将逻辑运算结果送 P0 口 while(1) ; /设置无限循环,防止程序“跑飞” /实例 14:用 P0 口显示条件运算结果 #include /

12、包含单片机寄存器的头文件 void main(void) P0=(84)?8:4;/将条件运算结果送 P0 口,P0=8=0000 1000B while(1) ; /设置无限循环,防止程序“跑飞” /实例 15:用 P0 口显示按位“异或“运算结果 #include /包含单片机寄存器的头文件 void main(void) P0=0xa20x3c;/将条件运算结果送 P0 口,P0=8=0000 1000B while(1) ; /设置无限循环,防止程序“跑飞” /实例 16:用 P0 显示左移运算结果 #include /包含单片机寄存器的头文件 void main(void) 11 /

13、 192 P0=0x3b1; /每次循环 P1 的各二进位右移 1 位,高位补 0 delay(); /调用延时函数 /实例 19:用 if 语句控制 P0 口 8 位 LED 的流水方向 #include /包含单片机寄存器的头文件 sbit S1=P14; /将 S1 位定义为 P1.4 sbit S2=P15; /将 S2 位定义为 P1.5 /* 函数功能:主函数 */ void main(void) while(1) if(S1=0) /如果按键 S1 按下 P0=0x0f; /P0 口高四位 LED 点亮 if(S2=0) /如果按键 S2 按下 P0=0xf0; /P0 口低四位

14、 LED 点亮 /实例 20:用 swtich 语句的控制 P0 口 8 位 LED 的点亮状态 #include /包含单片机寄存器的头文件 sbit S1=P14; /将 S1 位定义为 P1.4 /* 函数功能:延时一段时间 */ void delay(void) 13 / 192 unsigned int n; for(n=0;n80 /如果字符串 100 大于 80 30 / 192 P3=0xf0; /P3 口低四位 LED 点亮 #else P3=0x0f; /否则,P3 口高四位 LED 点亮 #endif /结束本次编译 /*中断、定时器*/ /实例 42:用定时器 T0 查

15、询方式 P2 口 8 位控制 LED 闪烁 #include / 包含 51 单片机寄存器定义的头文件 /* 函数功能:主函数 */ void main(void) / EA=1; /开总中断 / ET0=1; /定时器 T0 中断允许 TMOD=0x01; /使用定时器 T0 的模式 1 TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 TR0=1; /启动定时器 T0 TF0=0; P2=0xff; while(1)/无限循环等待查询 while(TF0=0) ; TF0=0;

16、 P2=P2; TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位赋初值 /实例 43:用定时器 T1 查询方式控制单片机发出 1KHz 音频 #include / 包含 51 单片机寄存器定义的头文件 31 / 192 sbit sound=P37; /将 sound 位定义为 P3.7 引脚 /* 函数功能:主函数 */ void main(void) / EA=1; /开总中断 / ET0=1; /定时器 T0 中断允许 TMOD=0x10; /使用定时器 T1 的模式 1 TH1=

17、(65536-921)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位赋初值 TR1=1; /启动定时器 T1 TF1=0; while(1)/无限循环等待查询 while(TF1=0) ; TF1=0; sound=sound; /将 P3.7 引脚输出电平取反 TH1=(65536-921)/256; /定时器 T0 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T0 的高 8 位赋初值 /实例 44:将计数器 T0 计数的结果送 P1 口 8 位 LED 显示 #include / 包含 51

18、 单片机寄存器定义的头文件 sbit S=P34; /将 S 位定义为 P3.4 引脚 /* 函数功能:主函数 */ void main(void) / EA=1; /开总中断 / ET0=1; /定时器 T0 中断允许 TMOD=0x02; /使用定时器 T0 的模式 2 TH0=256-156; /定时器 T0 的高 8 位赋初值 TL0=256-156; /定时器 T0 的高 8 位赋初值 TR0=1; /启动定时器 T0 while(1)/无限循环等待查询 32 / 192 while(TF0=0) /如果未计满就等待 if(S=0) /按键 S 按下接地,电平为 0 P1=TL0;

19、/计数器 TL0 加 1 后送 P1 口显示 TF0=0; /计数器溢出后,将 TF0 清 0 /实例 45:用定时器 T0 的中断控制 1 位 LED 闪烁 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 /* 函数功能:主函数 */ void main(void) EA=1; /开总中断 ET0=1; /定时器 T0 中断允许 TMOD=0x01; /使用定时器 T0 的模式 2 TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器

20、 T0 的高 8 位赋初值 TR0=1; /启动定时器 T0 while(1)/无限循环等待中断 ; /* 函数功能:定时器 T0 的中断服务程序 */ void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的 1 为定时器 T0 的中断编号; 0 表示使用第 0 组工作 寄存器 D1=D1; /按位取反操作,将 P2.0 引脚输出电平取反 TH0=(65536-46083)/256; /定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位重新赋初值 33 /

21、192 /实例 46:用定时器 T0 的中断实现长时间定时 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 unsigned char Countor; /设置全局变量,储存定时器 T0 中断次数 /* 函数功能:主函数 */ void main(void) EA=1; /开总中断 ET0=1; /定时器 T0 中断允许 TMOD=0x01; /使用定时器 T0 的模式 2 TH0=(65536-46083)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-46083)%256; /定时器 T0 的

22、高 8 位赋初值 TR0=1; /启动定时器 T0 Countor=0; /从 0 开始累计中断次数 while(1)/无限循环等待中断 ; /* 函数功能:定时器 T0 的中断服务程序 */ void Time0(void) interrupt 1 using 0 /“interrupt”声明函数为中断服务函数 /其后的 1 为定时器 T0 的中断编号; 0 表示使用第 0 组工作 寄存器 Countor+; /中断次数自加 1 if(Countor=20) /若累计满 20 次,即计时满 1s D1=D1; /按位取反操作,将 P2.0 引脚输出电平取反 Countor=0; /将 Cou

23、ntor 清 0,重新从 0 开始计数 TH0=(65536-46083)/256; /定时器 T0 的高 8 位重新赋初值 TL0=(65536-46083)%256; /定时器 T0 的高 8 位重新赋初值 34 / 192 /实例 47:用定时器 T1 中断控制两个 LED 以不同周期闪烁 #include / 包含 51 单片机寄存器定义的头文件 sbit D1=P20; /将 D1 位定义为 P2.0 引脚 sbit D2=P21; /将 D2 位定义为 P2.1 引脚 unsigned char Countor1; /设置全局变量,储存定时器 T1 中断次数 unsigned ch

24、ar Countor2; /设置全局变量,储存定时器 T1 中断次数 /* 函数功能:主函数 */ void main(void) EA=1; /开总中断 ET1=1; /定时器 T1 中断允许 TMOD=0x10; /使用定时器 T1 的模式 1 TH1=(65536-46083)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-46083)%256; /定时器 T1 的高 8 位赋初值 TR1=1; /启动定时器 T1 Countor1=0; /从 0 开始累计中断次数 Countor2=0; /从 0 开始累计中断次数 while(1)/无限循环等待中断 ; /* 函

25、数功能:定时器 T1 的中断服务程序 */ void Time1(void) interrupt 3 using 0 /“interrupt”声明函数为中断服务函数 /其后的 3 为定时器 T1 的中断编号; 0 表示使用第 0 组工作 寄存器 Countor1+; /Countor1 自加 1 Countor2+; /Countor2 自加 1 if(Countor1=2) /若累计满 2 次,即计时满 100ms D1=D1; /按位取反操作,将 P2.0 引脚输出电平取反 Countor1=0; /将 Countor1 清 0,重新从 0 开始计数 if(Countor2=8) /若累计

26、满 8 次,即计时满 400ms D2=D2; /按位取反操作,将 P2.1 引脚输出电平取反 Countor2=0; /将 Countor1 清 0,重新从 0 开始计数 TH1=(65536-46083)/256; /定时器 T1 的高 8 位重新赋初值 35 / 192 TL1=(65536-46083)%256; /定时器 T1 的高 8 位重新赋初值 /实例 48:用计数器 T1 的中断控制蜂鸣器发出 1KHz 音频 #include / 包含 51 单片机寄存器定义的头文件 sbit sound=P37; /将 sound 位定义为 P3.7 引脚 /* 函数功能:主函数 */ v

27、oid main(void) EA=1; /开总中断 ET1=1; /定时器 T1 中断允许 TMOD=0x10; /TMOD=0001 000B,使用定时器 T1 的模式 1 TH1=(65536-921)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位赋初值 TR1=1; /启动定时器 T1 while(1)/无限循环等待中断 ; /* 函数功能:定时器 T1 的中断服务程序 */ void Time1(void) interrupt 3 using 0 /“interrupt”声明函数为中断服务函数 sound=sou

28、nd; TH1=(65536-921)/256; /定时器 T1 的高 8 位重新赋初值 TL1=(65536-921)%256; /定时器 T1 的高 8 位重新赋初值 /实例 49:用定时器 T0 的中断实现“ 渴望“主题曲的播放 #include /包含 51 单片机寄存器定义的头文件 sbit sound=P37; /将 sound 位定义为 P3.7 unsigned int C; /储存定时器的定时常数 /以下是 C 调低音的音频宏定义 36 / 192 #define l_dao 262 /将“l_dao”宏定义为低音“1”的频率 262Hz #define l_re 286 /

29、将“ l_re”宏定义为低音“2”的频率 286Hz #define l_mi 311 /将“l_mi”宏定义为低音“3”的频率 311Hz #define l_fa 349 /将“l_fa”宏定义为低音“4”的频率 349Hz #define l_sao 392 /将“ l_sao”宏定义为低音“5”的频率 392Hz #define l_la 440 /将“l_a ”宏定义为低音“6” 的频率 440Hz #define l_xi 494 /将“l_xi”宏定义为低音“7”的频率 494Hz /以下是 C 调中音的音频宏定义 #define dao 523 /将 “dao”宏定义为中音“1

30、”的频率 523Hz #define re 587 /将“re ”宏定义为中音“2”的频率 587Hz #define mi 659 /将“mi”宏定义为中音“3”的频率 659Hz #define fa 698 /将“fa”宏定义为中音“4”的频率 698Hz #define sao 784 /将“sao”宏定义为中音“5”的频率 784Hz #define la 880 /将“la ”宏定义为中音“6 ”的频率 880Hz #define xi 987 /将“xi”宏定义为中音“7” 的频率 523H /以下是 C 调高音的音频宏定义 #define h_dao 1046 /将“h_dao

31、”宏定义为高音 “1”的频率 1046Hz #define h_re 1174 /将“h_re”宏定义为高音“2”的频率 1174Hz #define h_mi 1318 /将“h_mi”宏定义为高音 “3”的频率 1318Hz #define h_fa 1396 /将 “h_fa”宏定义为高音“4”的频率 1396Hz #define h_sao 1567 /将“h_sao”宏定义为高音“5”的频率 1567Hz #define h_la 1760 /将“h_la”宏定义为高音“ 6”的频率 1760Hz #define h_xi 1975 /将“h_xi”宏定义为高音“7”的频率 1975

32、Hz /* 函数功能:1 个延时单位,延时 200ms */ void delay() unsigned char i,j; for(i=0;i=1; _nop_(); /等待一个机器周期 DQ = 1; /将数据线“ 人为“拉高,为单片机检测 DS18B20 的输出电 平作准备 for(time=0;time=1; /将 dat 中的各二进制位数据右移 1 位 for(time=0;time1; /temp 中的各数据位右移一位,因为先读出的 是高位数据 TH0=0; /定时器清 0 TL0=0; /定时器清 0 TR0=1; /开启定时器 T0 while(IR=0) /如果是低电平就等待

33、 ; /低电平计时 TR0=0; /关闭定时器 T0 LowTime=TH0*256+TL0; /保存低电平宽度 TH0=0; /定时器清 0 TL0=0; /定时器清 0 TR0=1; /开启定时器 T0 while(IR=1) /如果是高电平就等待 ; TR0=0; /关闭定时器 T0 HighTime=TH0*256+TL0; /保存高电平宽度 if(LowTime640) return 0; /如果低电平长度不在合理范围,则 认为出错,停止解码 if(HighTime420) /如果满足条件,执行遥控功能 EX0=1; /开启外中断 EX0 174 / 192 /实例 97:用红外遥控

34、器控制继电器 #include /包含单片机寄存器的头文件 sbit IR=P32; /将 IR 位定义为 P3.2 引脚 unsigned char a4; /储存用户码、用户反码与键数据码、键数据反码 unsigned int LowTime,HighTime; /储存高、低电平的宽度 sbit Relay=P13; /将 Relay 位定义为 P1.3 引脚 /* 函数功能:对 4 个字节的用户码和键数据码进行解码 说明:解码正确,返回 1,否则返回 0 出口参数:dat */ bit DeCode(void) unsigned char i,j; unsigned char temp;

35、 /储存解码出的数据 for(i=0;i1; /temp 中的各数据位右移一位,因为先读出的 是高位数据 TH0=0; /定时器清 0 TL0=0; /定时器清 0 TR0=1; /开启定时器 T0 while(IR=0) /如果是低电平就等待 ; /低电平计时 TR0=0; /关闭定时器 T0 LowTime=TH0*256+TL0; /保存低电平宽度 TH0=0; /定时器清 0 TL0=0; /定时器清 0 TR0=1; /开启定时器 T0 while(IR=1) /如果是高电平就等待 ; TR0=0; /关闭定时器 T0 HighTime=TH0*256+TL0; /保存高电平宽度 i

36、f(LowTime640) 175 / 192 return 0; /如果低电平长度不在合理范围,则 认为出错,停止解码 if(HighTime420) /如果满足条件,执行遥控功能 EX0=1; /开启外中断 EX0 /实例 98:基于 DS1302 的日历时钟 #include /包含单片机寄存器的头文件 #include /包含_nop_()函数定义的头文件 /* * 以下是 DS1302 芯片的操作程序 * */ unsigned char code digit10=“0123456789“; /定义字符数组显示数字 sbit DATA=P11; /位定义 1302 芯片的接口,数据输

37、出端定义在 P1.1 引脚 sbit RST=P12; /位定义 1302 芯片的接口,复位端口定义在 P1.1 引脚 sbit SCLK=P10; /位定义 1302 芯片的接口,时钟输出端口定义在 P1.1 引脚 177 / 192 /* 函数功能:延时若干微秒 入口参数:n */ void delaynus(unsigned char n) unsigned char i; for(i=0;i=1; /将 dat 的各数据位右移 1 位,准备写入下一个数 据位 /* 函数功能:根据命令字,向 1302 写一个字节数据 入口参数:Cmd,储存命令字;dat ,储存待写的数据 */ void

38、 WriteSet1302(unsigned char Cmd,unsigned char dat) RST=0; /禁止数据传递 SCLK=0; /确保写数居前 SCLK 被拉低 RST=1; /启动数据传输 delaynus(2); /稍微等待,使硬件做好准备 Write1302(Cmd); /写入命令字 Write1302(dat); /写数据 SCLK=1; /将时钟电平置于已知状态 178 / 192 RST=0; /禁止数据传递 /* 函数功能:从 1302 读一个字节数据 入口参数:x */ unsigned char Read1302(void) unsigned char i

39、,dat; delaynus(2); /稍微等待,使硬件做好准备 for(i=0;i=1; /将 dat 的各数据位右移 1 位,因为先读出的是字节的 最低位 if(DATA=1) /如果读出的数据是 1 dat|=0x80; /将 1 取出,写在 dat 的最高位 SCLK=1; /将 SCLK 置于高电平,为下降沿读出 delaynus(2); /稍微等待 SCLK=0; /拉低 SCLK,形成脉冲下降沿 delaynus(2); /稍微等待 return dat; /将读出的数据返回 /* 函数功能:根据命令字,从 1302 读取一个字节数据 入口参数:Cmd */ unsigned char ReadSet1302(unsigned char Cmd) unsigned

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。