1、目录目录1函数的使用和熟悉*/.4实例 3:用单片机控制第一个灯亮.4实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率.4实例 5:将 P1 口状态分别送入 P0、P2、P3 口:认识 I/O 口的引脚功能 5实例 6:使用 P3 口流水点亮 8 位 LED. 5实例 7:通过对 P3 口地址的操作流水点亮 8 位 LED. 6实例 8:用不同数据类型控制灯闪烁时间.7实例 9:用 P0 口、P1 口分别显示加法和减法运算结果.8实例 10:用 P0、P1 口显示乘法运算结果 9实例 11:用 P1、P0 口显示除法运算结果 9实例 12:用自增运算控制 P0 口 8 位 LED 流水花
2、样 10实例 13:用 P0 口显示逻辑“与“运算结果. 10实例 14:用 P0 口显示条件运算结果.11实例 15:用 P0 口显示按位“异或“运算结果. 11实例 16:用 P0 显示左移运算结果.11实例 17:“万能逻辑电路“实验. 11实例 18:用右移运算流水点亮 P1 口 8 位 LED. 12实例 19:用 if 语句控制 P0 口 8 位 LED 的流水方向 13实例 20:用 swtich 语句的控制 P0 口 8 位 LED 的点亮状态13实例 21:用 for 语句控制蜂鸣器鸣笛次数14实例 22:用 while 语句控制 LED.16实例 23:用 do-while
3、 语句控制 P0 口 8 位 LED 流水点亮 16实例 24:用字符型数组控制 P0 口 8 位 LED 流水点亮 17实例 25: 用 P0 口显示字符串常量.18实例 26:用 P0 口显示指针运算结果19实例 27:用指针数组控制 P0 口 8 位 LED 流水点亮 19实例 28:用数组的指针控制 P0 口 8 位 LED 流水点亮 20实例 29:用 P0 、P1 口显示整型函数返回值 21实例 30:用有参函数控制 P0 口 8 位 LED 流水速度 22实例 31:用数组作函数参数控制流水花样.23实例 32:用指针作函数参数控制 P0 口 8 位 LED 流水点亮 23实例
4、33:用函数型指针控制 P1 口灯花样.25实例 34:用指针数组作为函数的参数显示多个字符串.26实例 35:字符函数 ctype.h 应用举例.27实例 36:内部函数 intrins.h 应用举例. 27实例 37:标准函数 stdlib.h 应用举例.28实例 38:字符串函数 string.h 应用举例 29实例 39:宏定 应用举例 2291 / 192实例 40:宏定 应用举例 230实例 41:宏定 应用举例 330、定时器* .31实例 42:用定时器 T0 方 P2 口 8 位控制 LED 闪烁 31实例 43:用定时器 T1 方 控制单片机 1KHz 频.31实例 44:
5、将 数器 T0 数的结果送 P1 口 8 位 LED 显示 32实例 45:用定时器 T0 的 控制 1 位 LED 闪烁.33实例 46:用定时器 T0 的 实 时间定时.34实例 47:用定时器 T1 控制 个 LED 不同 闪烁.34实例 48:用 数器 T1 的 控制蜂鸣器 1KHz 频.36实例 49:用定时器 T0 的 实 “ “ 的 . 36实例 50-1: 50 个 . 39实例 50-2: 数器 T0 部 数. 40实例 51-2:定时器 T0 的 2 量 度. 40实例 52:用定时器 T0 控制 度不同的 .41实例 53:用 0 的 方 数据currency1.42实例
6、 54-1: 为 200 “的方. 43实例 54-2: 量 度. 43实例 55:方 0 控制流水灯点亮.44实例 56-1:数据 送fifl. 45实例 56-2:数据 fifl. 47实例 57-1:数据 送fifl. 47实例 57-2:数据 fifl. 49实例 58:单片机向 PC 送数据 50实例 59:单片机 PC 的数据 51*数显示 .52实例 60:用 LED 数显示数字 552实例 61:用 LED 数显示器显示数字 0952实例 62:用数速 态显示数字“1234“. 53实例 63:用 LED 数显示器态显示数字 1234. 54实例 64:用数显示 态” 结果.5
7、4实例 65:数 .56实例 66:数时 .58实例 67:用 LED 数显示 数器 T0 的 数值.62实例 68:态显示数字 59”.63* 控制2/ 192*/.63实例 69:件的 入实验.64实例 70:件的 入实验.64实例 71:CPU 控制的 实验.65实例 72:定时器 控制的 实验.68实例 73: 控制的 4 速流水灯.71实例 74: 的按功能 :“ 一 “. 73实例 75: 时的数时实验.75实例 76: 控制电机实验.79实例 77: 按值的数显示实验.82/实例 78: 按 85实例 79: 电 .86实例 80: 实 的电 .92* * 显示 LCD* 显示
8、LCD * 显示 LCD */.95实例 81:用 LCD 显示字符A 96实例 82:用 LCD 右移显示“Welcome to China“. 99实例 83:用 LCD 显示 时” 结果 102实例 84: 时 .106*一 片的使用*24c02 DS18B20 X5045 ADC0832 DAC0832 DS1302控*/ 112实例 85:将数据“0x0f“ 入 AT24C02 送 P1 口显示112实例 86:将按次数 入 AT24C02 用 1602LCD 显示.117实例 87:对 I2C 多个 AT24C02 的 操作.124实例 88: AT24C02 的多机通 fifl
9、129实例 88: AT24C02 的多机通 入fifl 133实例 90:DS18B20 度” 显示. 144实例 91:将数据“0xaa“ 入 X5045 送 P1 口显示153实例 92:将流水灯控制 入 X5045 送 P1 口显示 157实例 93:对 SPI 多个 X5045 的 操作161实例 94: ADC0832 的数字电 165实例 95:用 DAC0832 电 171实例 96:用 P1 口显示 控器的按值.171实例 97:用 控器控制 电器.174实例 98: DS1302 的 时 177实例 99:单片机数据 送fifl.185实例 100:电机速 .186 192
10、3/ 192/*函数的使用和熟悉*/实例 3:用单片机控制第一个灯亮#include / 51 单片机 器定 的 件void main(void)P1=0xfe; /P1=1111 1110B P1.0 电平/ 4/实例 4:用单片机控制一个灯闪烁:认识单片机的工作频率#include /单片机 器的 件/*函数功能:延时一段时间*/void delay(void) / 个 void 意思分别为需返回值 没有参数传递unsigned int i; /定 符号整数 最大值范围 65535for(i=0;iP1 口状态分别送入 P0、P2、P3 口:认识 I/O 口的引脚功能/单片机 器的 件/*
11、函数功能: 函数 (C 语言规定必须有也只能有 1 个 函数)*/void main(void)while(1) /限P1=0xff; / P1=1111 1111B,熄灭 LEDP0=P1; / 将 P1 口状态送入 P0 口P2=P1; / 将 P1 口状态送入 P2 口P3=P1; / 将 P1 口状态送入 P3 口/实例 6:使用 P3 口流水点亮 8 位 LED#include /单片机 器的 件/*函数功能:延时一段时间*/void delay(void)unsigned char i,j;for(i=0;i /单片机 器的 件sfr x=0xb0; /P3 口在 储器 的地址是
12、b0H 通过 sfr 可定 8051 内核单片机/的所有内部 8 位特殊功能 器,对地址 x 的操作也就是对 P1 口的操作/*函数功能:延时一段时间*/void delay(void)unsigned char i,j;for(i=0;i /单片机 器的 件/*函数功能:用整 数据延时一段时间*/void int_delay(void) /延时一段较 的时间unsigned int m; /定 符号整 量 双字节数据 值域为 065535for(m=0;mvoid main(void)unsigned char m,n;口分别显示加法和减法运算结果m=43; / 十制数2x16+11=438
13、 / 192n=60;P1=m+n; / 十制数 3x16+12=60/P1=103=01100111B,结果 P1.3、P1.4、P1.7 口的灯被点亮P0=n-m; /P0=17=00010001B,结果 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 口/由 4544=17*256+192=H3*16*16*
14、16+H2*16*16+H1*16+H0/ 边同除 256 可得 17+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.0 和 P1.4 口灭 余亮P0=s%256; / 8 位送 P0 口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7 口灭 余亮/实例 11:用 P1、P0 口显示除法运
15、算结果#include /单片机 器的 件void main(void)P1=36/5; /求整数P0=(36%5)*10)/5; /求小数while(1)9 / 192 ; /限防止fifl 跑飞”/实例 12:用自增运算控制 P0 口 8 位 LED 流水花样#include /单片机 器的 件/*函数功能:延时一段时间*/void delay(void)unsigned int i;for(i=0;i /单片机 器的 件void main(void)P0=(40)/将逻辑运算结果送 P0 口while(1); /置限 防止fifl 跑飞”110 / 192/ 14 P0/实例 14:用
16、P0 口显示条件运算结果#include /单片机 器的 件void main(void)P0=(84)?8:4;/将条件运算结果送 P0 口 P0=8=0000 1000Bwhile(1); /置限 防止fifl 跑飞”/实例 15:用 P0 口显示按位“异或“运算结果#include /单片机 器的 件void main(void)P0=0xa20x3c;/将条件运算结果送 P0 口 P0=8=0000 1000Bwhile(1); /置限 防止fifl 跑飞”/ 16 P0/实例 16:用 P0 显示左移运算结果#include /单片机 器的 件void main(void)P0=0x
17、3bsbit F=P14; /实例 17:“万能逻辑电路“实验/单片机 器的 件/将 F 位定 为 P1.41 11 / 192sbit X=P15;sbit Y=P16;sbit Z=P17;void main(void)while(1)/将 X 位定 为/将 Y 位定 为/将 Z 位定 为P1.5P1.6P1.7F=(X) /将逻辑运算结果赋给 F;/实例 18:用右移运算流水点亮 P1 口 8 位 LED#include /单片机 器的 件/*函数功能:延时一段时间*/void delay(void)unsigned int n;for(n=0;n1; /每次 P1 的各二位右移 1 位
18、 位补 0delay(); /用延时函数112 / 192/ 19 iff P0 8 LED/实例 19:用 iff 语句控制 P0 口 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 点亮/实例 20:用 swtich 语句的控制 P0
19、口 8 位 LED 的点亮状态#include /单片机 器的 件sbit S1=P14; /将 S1 位定 为 P1.4/*函数功能:延时一段时间*/void delay(void)unsigned int n;for(n=0;n /单片机 器的 件sbit sound=P37; /将 sound 位定 为 P3.7/*函数功能:延时 成 1600Hz 频114 / 192*/void delay1600(void)unsigned char n;for(n=0;n /单片机 器的 件/*函数功能:延时约 60ms (3*100*200=60000s)*/void delay60ms(voi
20、d)unsigned char m,n;for(m=0;m /单片机 器的 件/*函数功能:延时约 60ms (3*100*200=60000s)*/void delay60ms(void)116 / 192unsignedchar m,n;for(m=0;m /单片机 器的 件/*函数功能:延时约 60ms (3*100*200=60000s)*/void delay60ms(void)unsigned char m,n;for(m=0;m /单片机 器的 件/*函数功能:延时约 150ms (3*200*250=150 000s=150ms*/void delay150ms(void)un
21、signed char m,n;for(m=0;mvoid main(void)口显示指针运算结果unsigned char *p1,*p2; /定 符号字符型指针量p1,p2unsigned char i,j; /定 符号字符型数据i=25;j=15;p1=p2=/给 i 赋初值 25/使指针量指向 i/使指针量指向 j对指针初始化对指针初始化P0=*p1+*p2; /*p1+*p2 相 i+j,所 P0=25+15=40=0x28 /则P0=0010 1000B 结果 P0.3、P0.5 引脚 LED 熄灭 余点亮while(1); /限 防止fifl 跑飞”/ 27 P0 8 LED/实
22、例 27:用指针数组控制 P0 口 8 位 LED 流水点亮#include/*函数功能:延时约 150ms (3*200*250=150 000s=150ms*/void delay150ms(void)unsigned char m,n;for(m=0;m口 8 位 LED 流水点亮/*函数功能:延时约 150ms (3*200*250=150 000s=150ms*/void delay150ms(void)unsigned char m,n;for(m=0;m、P1 口显示整型函数返回值/*函数功能: 算 个符号整数的和*/unsigned int sum(int a,int b)un
23、signed int s;s=a+b;return (s);/*函数功能: 函数*/void main(void)unsigned z;z=sum(2008,2009);P1=z/256; /得 z 的 8 位P0=z%256; /得 z 的 8 位while(1);221 / 192/实例 30:用有参函数控制 P0 口 8 位 LED 流水速度#include/*函数功能:延时一段时间*/void delay(unsigned char x)unsigned char m,n;for(m=0;m/*函数功能:延时约 150ms*/void delay(void)unsigned char
24、m,n;for(m=0;m223 / 192/*函数功能:延时约 150ms*/void delay(void)unsigned char m,n;for(m=0;m / 51 单片机 器定 的 件unsigned char code Tab=0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F;/流水灯控制 该数组被定 为全局量/*函数功能:延时约 150ms*/void delay(void)unsigned char m,n;for(m=0;m / 51 单片机 器定 的 件unsigned char code str1 =“Temperature is tes
25、ted by DS18B20“;/C 语言 字符串是作为字符数组来处理的unsigned char code str2 =“Now temperature is:“; /所 字符串的名字就是字符串的首地址unsigned char code str3 =“The Systerm is designed by Zhang San“;unsigned char code str4 =“The date is 2008-9-30“;unsigned char *p =str1,str2,str3,str4; /定 p4为指向 4 个字符串的字符型指针数组/*函数功能:延时约 150ms*/void
26、delay(void)unsigned char m,n;for(m=0;m200;m+)for(n=0;n250;n+);/*函数功能:流水点亮 P0 口 8 位 LED*/void led_display(unsigned char *x ) / 参必须为指针数组unsigned char i,j;for(i=0;i4;i+) /有 4 个字符串要显示j=0; /指向待显字符串的第 0 号元素while(*(xi+j)!=0) /只要第 i 个字符串的第 j 号元素不是结束标志P0=*(xi+j); /得该元素值送到 P0 口显示delay(); /用延时函数j+; /指向下一个元素226 / 192