收藏 分享(赏)

十天学会单片机实例100.doc

上传人:weiwoduzun 文档编号:2751674 上传时间:2018-09-26 格式:DOC 页数:391 大小:1.10MB
下载 相关 举报
十天学会单片机实例100.doc_第1页
第1页 / 共391页
十天学会单片机实例100.doc_第2页
第2页 / 共391页
十天学会单片机实例100.doc_第3页
第3页 / 共391页
十天学会单片机实例100.doc_第4页
第4页 / 共391页
十天学会单片机实例100.doc_第5页
第5页 / 共391页
点击查看更多>>
资源描述

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

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

3、 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 流水速度 20实例 31:用数组作函数参数控制流水花样 .21实例 32:用指针作函数参数控制 P0 口 8 位 LE

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

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

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

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

8、立式键盘控制的 4 级变速流水灯 .67实例 74:独立式键盘的按键功能扩展: “以一当四 “ .69实例 75:独立式键盘调时的数码时钟实验 .71实例 76:独立式键盘控制步进电机实验 75实例 77:矩阵式键盘按键值的数码管显示实验 .78实例 78:矩阵式键盘按键音 805实例 79:简易电子琴 82实例 80:矩阵式键盘实现的电子密码锁 88液晶显示 LCD91实例 81:用 LCD 显示字符A 91实例 82:用 LCD 循环右移显示“Welcome to China“ .94实例 83:用 LCD 显示适时检测结果 98实例 84:液晶时钟设计 102一些芯片的使用*24c02

9、DS18B20 X5045 ADC0832 DAC0832 DS1302 红外遥控 108实例 85:将数据“0x0f“写入 AT24C02 再读出送 P1 口显示 108实例 86:将按键次数写入 AT24C02,再读出并用 1602LCD 显示 .112实例 87:对 I2C 总线上挂接多个 AT24C02 的读写操作 .119实例 88:基于 AT24C02 的多机通信 读取程序 125实例 88:基于 AT24C02 的多机通信 写入程序 129实例 90:DS18B20 温度检测及其液晶显示 .140实例 91:将数据“0xaa“写入 X5045 再读出送 P1 口显示 148实例

10、92:将流水灯控制码写入 X5045 并读出送 P1 口显示 152实例 93:对 SPI 总线上挂接多个 X5045 的读写操作 156实例 94:基于 ADC0832 的数字电压表 .160实例 95:用 DAC0832 产生锯齿波电压 .166实例 96:用 P1 口显示红外遥控器的按键值 166实例 97:用红外遥控器控制继电器 1696实例 98:基于 DS1302 的日历时钟 171实例 99:单片机数据发送程序 180实例 100:电机转速表设计 181/模拟霍尔脉冲 186函数的使用和熟悉实例 3:用单片机控制第一个灯亮#include /包含 51 单片机寄存器定义的头文件v

11、oid main(void)P1=0xfe; /P1=1111 1110B,即 P1.0 输出低电平实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率#include /包含单片机寄存器的头文件/*函数功能:延时一段时间*/7void delay(void) /两个 void 意思分别为无需返回值,没有参数传递unsigned int i; /定义无符号整数,最大取值范围 65535for(i=0;i /包含单片机寄存器的头文件/*函数功能:主函数 (C 语言规定必须有也只能有 1 个主函数)*/void main(void)while(1) /无限循环 P1=0xff; / P1=111

12、1 1111B,熄灭 LEDP0=P1; / 将 P1 口状态送入 P0 口P2=P1; / 将 P1 口状态送入 P2 口P3=P1; / 将 P1 口状态送入 P3 口实例 6:使用 P3 口流水点亮 8 位 LED #include /包含单片机寄存器的头文件/*函数功能:延时一段时间9*/void delay(void)unsigned char i,j;for(i=0;i /包含单片机寄存器的头文件sfr x=0xb0; /P3 口在存储器中的地址是 b0H, 通过 sfr 可定义8051 内核单片机/的所有内部 8 位特殊功能寄存器,对地址 x 的操作也就是对 P1 口的操作/*函

13、数功能:延时一段时间11*/void delay(void)unsigned char i,j;for(i=0;i /包含单片机寄存器的头文件/*函数功能:用整形数据延时一段时间*/void int_delay(void) /延时一段较长的时间13unsigned int m; /定义无符号整形变量,双字节数据,值域为065535for(m=0;mvoid main(void) unsigned char m,n;m=43; /即十进制数 2x16+11=43n=60; /即十进制数 3x16+12=60P1=m+n; /P1=103=0110 0111B,结果 P1.3、P1.4、P1.7

14、口的灯被点亮P0=n-m; /P0=17=0001 0001B,结果 P0.0、P0.4 的灯被熄灭实例 10:用 P0、P1 口显示乘法运算结果#include /包含单片机寄存器的头文件void main(void) unsigned char m,n;unsigned int s;m=64;n=71;s=m*n; /s=64*71=4544,需要 16 位二进制数表示,高 8 位送 P1 口,低 8 位送 P0 口16/由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0/两边同除以 256,可得17+192/256=H3*16+H2+(H1*1

15、6+H0)/256/因此,高 8 位 16 进制数 H3*16+H2 必然等于17,即 4544 除以 256 的商/低 8 位 16 进制数 H1*16+H0 必然等于 192,即4544 除以 256 的余数P1=s/256; /高 8 位送 P1 口 ,P1=17=11H=0001 0001B, P1.0和 P1.4 口灭,其余亮P0=s%256; /低 8 位送 P0 口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7 口灭,其余亮实例 11:用 P1、P0 口显示除法运算结果#include /包含单片机寄存器的头文件void main(void) P1

16、=36/5; /求整数P0=(36%5)*10)/5; /求小数while(1) 17; /无限循环防止程序“跑飞”实例 12:用自增运算控制 P0 口 8 位 LED 流水花样#include /包含单片机寄存器的头文件/*函数功能:延时一段时间*/void delay(void) unsigned int i; for(i=0;i /包含单片机寄存器的头文件void main(void) P0=(40)/将逻辑运算结果送 P0 口while(1); /设置无限循环,防止程序“跑飞”实例 14:用 P0 口显示条件运算结果#include /包含单片机寄存器的头文件void main(voi

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

18、定义为 P1.4sbit X=P15; /将 X 位定义为 P1.5sbit Y=P16; /将 Y 位定义为 P1.6sbit Z=P17; /将 Z 位定义为 P1.7void main(void) while(1)F=(X) /将逻辑运算结果赋给 F; 实例 18:用右移运算流水点亮 P1 口 8 位 LED#include /包含单片机寄存器的头文件/*函数功能:延时一段时间*/21void delay(void)unsigned int n;for(n=0;n1; /每次循环 P1 的各二进位右移 1 位,高位补0delay(); /调用延时函数22实例 19:用 if 语句控制 P

19、0 口 8 位 LED 的流水方向#include /包含单片机寄存器的头文件sbit S1=P14; /将 S1 位定义为 P1.4sbit 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 口低四位 LED 点亮 23实例 20:用 swtich 语句的控制 P0 口 8 位 LED 的点亮状态#include /包含单片机寄存器的头文件sbit S1=P14; /将 S

20、1 位定义为 P1.4/*函数功能:延时一段时间*/void delay(void)unsigned int n;for(n=0;n /包含单片机寄存器的头文件sbit sound=P37; /将 sound 位定义为 P3.7/*函数功能:延时形成 1600Hz 音频*/void delay1600(void)unsigned char n;for(n=0;n /包含单片机寄存器的头文件/*函数功能:延时约 60ms (3*100*200=60000s)*/void delay60ms(void)unsigned char m,n;28for(m=0;m /包含单片机寄存器的头文件/*函数功能:延时约 60ms (3*100*200=60000s)*/void delay60ms(void)unsigned char m,n;for(m=0;m /包含单片机寄存器的头文件/*函数功能:延时约 60ms (3*100*200=60000s)*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报