单片机C语言编程.pdf
《单片机C语言编程.pdf》由会员分享,可在线阅读,更多相关《单片机C语言编程.pdf(193页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录实例3:用单片机控制第一个灯亮.3实例4:用单片机控制一个灯闪烁:认识单片机的工作频率.3实例5:将P1 口状态分别送入PO、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实 例1 1:用P1、P0 口显示除法运算结果.9实 例12:用自增运算控制P0 口 8位LED流水花样.9实 例13:用P0 显示逻辑 与 运算结果.10实 例14:用P0 口显示条
2、件运算结果.10实 例1 5:用P0 显示按位 异或 运算结果.10实 例16:用P0显示左移运算结果.10实 例17:万能逻辑电路 实验.11实 例18:用右移运算流水点亮P1 口 8位LED.11实 例1 9:用if语句控制P0 口 8位LED的流水方向.12实例2 0:用swtich语句的控制P0 口 8位LED的点亮状态.12实例21:用f or语句控制蜂鸣器鸣笛次数.14实例2 2:用whi Ie语句控制LED.15实例2 3:用do-wh i I e语句控制P0 口 8位LED流水点亮.16实例24:用字符型数组控制P0 口 8位LED流水点亮.16实例2 5:用P0 显示字符串常
3、量.17实例2 6:用P0 口显示指针运算结果.18实例2 7:用指针数组控制P0 口 8位LED流水点亮.18实例2 8:用数组的指针控制P0 口 8位LED流水点亮.19实例29:用P 0、P1 显示整型函数返回值.20实例3 0:用有参函数控制P0 口 8位LED流水速度.21实例31:用数组作函数参数控制流水花样.22实例32:用指针作函数参数控制P0 口 8位LED流水点亮.23实例33:用函数型指针控制P1 灯花样.24实例34:用指针数组作为函数的参数显示多个字符串.25实例35:字符函数ctype.h应用举例.26实例3 6:内部函数i ntr i ns.h应用举例.27实例3
4、7:标准函数std I ib.h应用举例.27实例38:字符串函数string,h应用举例.28实例39:宏定义应用举例2.28实例40:宏定义应用举例2.29实例41:宏定义应用举例3.29实例4 2:用定时器T0查询方式P2 口 8位控制LED闪烁.30实例4 3:用定时器T1查询方式控制单片机发出1K Hz音 频.31实例44:将计数器T0计数的结果送P1 口 8位LED显 示.31实例4 5:用定时器TO的中断控制1位LED闪烁.32实例4 6:用定时器TO的中断实现长时间定时.33实例47:用定时器T1中断控制两个LED以不同周期闪烁.34实例4 8:用计数器T1的中断控制蜂鸣器发出
5、1K Hz音 频.35实例4 9:用定时器TO的中断实现 渴望 主题曲的播放.35实例50-1:输出50个矩形脉冲.38实例50-2:计数器T0统计外部脉冲数.39实例51-2:定时器T0的模式2测量正脉冲宽度.40实例52:用定时器T0控制输出高低宽度不同的矩形波.40实例5 3:用外中断0的中断方式进行数据采集.41实例5 4 7:榆出负脉宽为200微秒的方波.42实例54-2:测量负脉冲宽度.43实例5 5:方式0控制流水灯循环点亮.44实例56-1:数据发送程序.45实例56-2:数据接妆程序.46实例57-1:数据发送程序.47实例57-2:数据接收程序.48实例5 8:单片机向PC
6、发送数据.49实例5 9:单片机接收PC发出的数据.50实例6 0:用LED数码显示数字5.51实例61:用LED数码显示器循环显示数字。9.51实例62:用数码管慢速动态扫描显示数字1234”.52实例63:用LED数码显示器伪静态显示数字1234.53实例64:用数码管显示动态检测结果.54实例65:数码秒表设计.56实例66:数码时钟设计.57实例67:用LED数码管显示计数器T0的计数值.61实例68:静态显示数字“59”.62实例69:无软件消抖的独立式键盘输入实验.63实例70:软件消抖的独立式键盘输入实验.63实例71:CPU控制的独立式键盘扫描实验.64实例72:定时器中断控制
7、的独立式键盘扫描实验.67实例73:独立式键盘控制的4级变速流水灯.70实例74:独立式键盘的按键功能扩展:以一当四”.72实例7 5:独立式键盘调时的数码时钟实验.74实例76:独立式键盘控制步进电机实验.78实例77:矩阵式键盘按键值的数码管显示实验.81实例78:矩阵式键盘按键音.84实例7 9:简易电子琴.85实例80:矩阵式键盘实现的电子密码锁.91实例8 1:用LCD显示字符A.95实例82:用LCD循环右移显示W elcome to China.98实例8 3:用LCD显示适时检测结果.102实例84:液晶时钟设计.106实例85:将数据OxOf 写入AT24co2再读出送P1
8、口显示.112实例86:将按键次数写入AT24co2,再读出并用1602LCD显示.116实例87:对I2C总线上挂接多个AT24co2的读写操作.124实例88:基于AT24co2的多机通信 读取程序.129实例8 8:基于AT24C02的多机通信 写入程序.133实例90:D S18B20温度检测及其液晶显示.144实例91:将数据Oxaa写入X5045再读出送P1 口显示.153实例92:将流水灯控制码写入X5045并读出送P1 口显示.157实例9 3:对SPI总线上挂接多个X5045的读写操作.161实例94:基于AD C0832的数字电压表.165实例9 5:用D AC0832产生
9、锯齿波电压.171实例9 6:用P1 口显示红外遥控器的按键值.172实例9 7:用红外遥控器控制继电器.174实例9 8:基于D S1302的日历时钟.177实例9 9:单片机数据发送程序.186实 例100:电机转速表设计.187模拟霍尔脉冲.192/*函数的使用和熟悉*/实例3:用单片机控制第一个灯亮#include 包含51单片机寄存器定义的头文件vo i d ma in(void)whi le(1)无限循环P1=0 xf e;/P1=1111 1110B,即 P1.0 输出低电平)实例4:用单片机控制一个灯闪烁:认识单片机的工作频率#include/包含单片机寄存器的头文件函数功能:
10、延时一段时间void de I ay(vo i d)/两个void意思分别为无需返回值,没有参数传递(unsigned int i ;/定义无符号整数,最大取值范围65535f or(i=0;i20000;i+)/做 20000 次空循环;/什么也不做,等待一个机器周期1函数功能:主 函 数(C语言规定必须有也只能有1个主函数)void main(void)(whi le(1)/无限循环(P1=0 xf e;/P1=1111 1110B,P1.0 输出低电平de I ay();/延时一段时间P1=0 xf f;/P1=1111 1111B,P1.0 输出高电平delay 0;/延时一段时间)实
11、例5:将 P1 状态分别送入PO、P2、P3 :认 识 I/O 口的引脚功能#incIude/包含单片机寄存器的头文件函数功能:主 函 数(C语言规定必须有也只能有1个主函数)vo i d ma i n(vo id)whi le(1)无限循环(P1=0 xf f;/P1=1111 1111,熄灭 LEDPO=P1;/将P1 口状态送入PO 口P2=P1;/将P1 口状态送入P2 口P3=P1;/将P1 口状态送入P3 口实例6:使 用 P3 口流水点亮8 位 LED#include/包含单片机寄存器的头文件函数功能:延时一段时间void delay(void)uns i gned char i
12、,j;f or(i=0;i250;i+)f or(j=0;j250;j+)函数功能:主函数void main(void)(wh i le(1)(P3=0 xf e;第一个灯亮delay();调用延时函数P3=0 xf d;/第二个灯亮de I ay 0;/调用延时函数P3=0 xf b;/第三个灯亮delay();/调用延时函数P3=0 xf 7;/第四个灯亮de I ay();/调用延时函数P3=0 xef;/第五个灯亮delayO;/调用延时函数P3=0 xdf;/第六个灯亮delayO;/调用延时函数P3=0 xbf;/第七个灯亮delayO;/调用延时函数P3=0 x7f;/第八个灯亮
13、de I ay();/调用延时函数/实例7:通过对P3 地址的操作流水点亮8位LED#i nc I ude/包含单片机寄存器的头文件sf r x=0 xb0;/P3 在存储器中的地址是bOH,通 过sf r可定义8051内核单片机的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作函数功能:延时一段时间void delay(void)(uns i gned char i,j;f or(i=0;i250;i+)f or(j=0;j250;j+);利用循环等待若干机器周期,从而延时一段时间)函数功能:主函数void main(void)(whi le(1)x=0 xf e;第一个灯亮d
14、e I ay();/调用延时函数x=0 xf d;/第二个灯亮de I ay();/调用延时函数x=0 xf b;/第三个灯亮de I ay 0;/调用延时函数x=0 xf 7;/第四个灯亮de I ay 0;/调用延时函数x=0 xef;第五个灯亮de I ay();/调用延时函数x=0 xdf;/第六个灯亮de I ay();/调用延时函数x=0 xbf;/第七个灯亮de I ay();/调用延时函数x=0 x7f;/第八个灯亮de I ay();/调用延时函数)实例8:用不同数据类型控制灯闪烁时间#include/包含单片机寄存器的头文件函数功能:用整形数据延时一段时间void int_
15、de lay(void)延时一段较长的时间unsigned int m;/定义无符号整形变量,双字节数据,值域为065535f or(m=0;m36000;m+);/空操作函数功能:用字符型数据延时一段时间void char_de I ay(void)/延时一段较短的时间(unsigned char i,j;定义无符号字符型变量,单字节数据,值 域0255f or(i=0;i200;i+)f or(j=0;j180;j+);/空操作函数功能:主函数vo i d ma i n(vo i d)(uns i gned char i;whi le(1)(f or(i=0;i3;i+)(P1=0 xf
16、e;P1.0 的灯点亮i nt_de I ay 0;/延时一段较长的时间P1=0 xf f;/熄灭i nt_de I ay 0;延时一段较长的时间f or(i=0;i3;i+)(P1=0 xef;/P1.4 口的灯点亮char_delay 0;/延时一段较长的时间P1=0 xf f;/熄灭char_de I ay();/延时一段较长的时间实例9:用 0 口、P1 口分别显示加法和减法运算结果#includevo i d ma i n(vo i d)unsigned char m,n;m=43;/即十进制数 2x16+11=43n=60;/即十进制数 3x16+12=60P1=m+n;/P1=1
17、03=0110 0111,结果 P1.3、P1.4、P1.7 口的灯被点亮P0=n-m;/P0=17=0001 0001,结果 P0.0、P0.4 的灯被熄灭/实 例 10:用 P0、P1 口显示乘法运算结果#include/包含单片机寄存器的头文件void ma in(void)unsigned char m,n;uns i gned i nt s;m=64;n=71;s=m*n;s=64*71=4544,需 要16位二进制数表示,高8位 送P1 口,低8位 送P0 口由于 4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+HO两边同除以 256,可得 1
18、7+192/256=H3*16+H2+(H1*16+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.(HnP1.4tr灭,其余亮P0=s%256;/低 8 位送 P0 口 ,P3=192=cOH=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮/实 例1 1:用 P1、P0 口显示除法运算结果#i nc I ude/包含单片机寄存器的头文件void main(void)(
19、P1=36/5;/求整数P0=(36%5)*10)/5;/求小数whi le(1);/无限循环防止程序“跑飞”)/实 例1 2:用自增运算控制P0 口 8 位 LED流水花样#include 包含单片机寄存器的头文件函数功能:延时一段时间void delay(void)(unsigned int i;f or(i=0;i20000;i+)函 数 功 能:主函数void main(void)(uns i gned char i;f or(i=0;i255;i+)/注 意i的值不能超过255(P0=i;将i的值送PODde I ay();/调用延时函数实例1 3:用 P0 显示逻辑 与 运算结果#
20、include 包含单片机寄存器的头文件void main(void)(PO=(40)&(90 xab);将逻辑运算结果送PO 口whi le(1);设置无限循环,防止程序“跑飞”/实 例1 4:用 P0 口显示条件运算结果#include/包含单片机寄存器的头文件void main(void)(P0=(84)?8:4;将条件运算结果送 PO 口,P0=8=0000 1000Bwhi le(1);设置无限循环,防止程序“跑飞”实例1 5:用 P0 显示按位 异或 运算结果#include/包含单片机寄存器的头文件void main(void)(P0=0 xa2-0 x3c;将条件运算结果送 P
21、O 口,PO二8二0000 1000Bwhi le(1);设置无限循环,防止程序“跑飞”/实例1 6:用 P0显示左移运算结果#incIude/包含单片机寄存器的头文件void ma in(void)(P0=0 x3b2;将左移运算结果送 PO 口,P0=1110 1100B=0 xecwhi le(1)无限循环,防止程序“跑飞”/实 例17:“万能逻辑电路 实验#includesbit F=Pr 4;sbit X=Pr5;sbit 丫=P1%;sbit Z=P7;void main(void)包含单片机寄存器的头文件 将F位 定 义 为P1.4 将X位 定 义 为P1.5/将丫位定义为P1.
22、6 将Z位 定 义 为P1.7whi le(1)F=(X)&Y)|Z;/将逻辑运算结果赋给F/实 例18:用右移运算流水点亮P1 口 8位LED#incIude 包含单片机寄存器的头文件函数功能:延时一段时间void de I ay(void)unsigned int n;f or(n=0;n30000;n+)函数功能:主函数void main(void)(uns i gned char i;whi le(1)P1=0 xf f;delay();f or(i=0;i8;i+)设 置 循 环 次 数 为8(P1=P11;每 次 循 环P 1的 各 二 进 位 右 移1位,高 位 补0de I a
23、y();/调用延时函数实例19:用if语句控制P0 口 8位LED的流水方向#incIude/包含单片机寄存器的头文件sbit Sk P1-4;将S1位 定 义 为P1.4sbit S2=P5;将 S2 位定义为 P1.5函 数 功 能:主函数void main(void)whi le(1)if(S1=0)如 果 按 键S1按下P0=0 x0f;/PO 口高四位 LED 点亮if (S2=0)如 果 按 键S2按下P0=0 xf 0;/PO 口 低四位 LED 点亮/实例2 0:用swtich语句的控制P0 口 8位LED的点亮状态#include/包含单片机寄存器的头文件sbit S1=P1
24、4;将 S1 位定义为 P1.4函 数 功 能:延时一段时间void de I ay(void)unsigned int n;f or(n=0;n10000;n+))函数功能:主函数void main(void)(uns igned char i ;i=0;将i初始化为0wh i le(1)if(S1=0)/如 果S 1键按下de I ay 0;/延时一段时间if(S1=0)如果再次检测到S 1键按下i+;/i 自增 1if(i=9)/如 果i=9,重新将其置为1i=1;)switch(i)/使用多分支选择语句break;def ault:/缺省值,关闭所有LEDP0=0 xf f;case1
25、:P0=0 xf e;break;/第一个L E D亮case 2:P0=0 xf d;break;第二个L E D亮case 3:P0=0 xf b;break;/第三个L E D亮case 4:P0=0 xf 7;break;第四个L E D亮case 5:P0=0 xef;break;/第五个L E D亮case 6:P0=0 xdf;break;/第六个L E D亮case 7:P0=0 xbf;break;/第七个L E D亮case 8:P0=0 x7f;/第八个L E D亮/实例2 1:用 fo r 语句控制蜂鸣器鸣笛次数#i nc Iude 包含单片机寄存器的头文件sb it
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 编程
限制150内