51单片机c语言编程100,51单片机C语言编程100例.doc

253b171540df25e1b84436cbe50dfc72.gif51单片机C语言编程100例.doc

目 录实例3用单片机控制第一个灯亮3实例4用单片机控制一个灯闪烁认识单片机的工作频率3实例5将 P1口状态分别送入P0、P2、P3口认识I/O口的引脚功能4实例6使用P3口流水点亮8位LED4实例7通过对P3口地址的操作流水点亮8位LED5实例8用不同数据类型控制灯闪烁时间6实例9用P0口、P1 口分别显示加法和减法运算结果8实例10用P0、P1口显示乘法运算结果8实例11用P1、P0口显示除法运算结果9实例12用自增运算控制P0口8位LED流水花样9实例13用P0口显示逻辑与运算结果9实例14用P0口显示条件运算结果10实例15用P0口显示按位异或运算结果10实例16用P0显示左移运算结果10实例17万能逻辑电路实验11实例18用右移运算流水点亮P1口8位LED11实例19用if语句控制P0口8位LED的流水方向12实例20用swtich语句的控制P0口8位LED的点亮状态12实例21用for语句控制蜂鸣器鸣笛次数14实例22用while语句控制LED15实例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用指针作函数参数控制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宏定义应用举例228实例40宏定义应用举例229实例41宏定义应用举例329实例42用定时器T0查询方式P2口8位控制LED闪烁30实例43用定时器T1查询方式控制单片机发出1KHz音频30实例44将计数器T0计数的结果送P1口8位LED显示31实例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实例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数码显示数字551实例61用LED数码显示器循环显示数字0951实例62用数码管慢速动态扫描显示数字123452实例63用LED数码显示器伪静态显示数字123452实例64用数码管显示动态检测结果53实例65数码秒表设计55实例66数码时钟设计57实例67用LED数码管显示计数器T0的计数值60实例68静态显示数字“59”62实例69无软件消抖的独立式键盘输入实验62实例70软件消抖的独立式键盘输入实验62实例71CPU控制的独立式键盘扫描实验63实例72定时器中断控制的独立式键盘扫描实验66实例73独立式键盘控制的4级变速流水灯70实例74独立式键盘的按键功能扩展以一当四72实例75独立式键盘调时的数码时钟实验73实例76独立式键盘控制步进电机实验78实例77矩阵式键盘按键值的数码管显示实验80实例78矩阵式键盘按键音83实例79简易电子琴85实例80矩阵式键盘实现的电子密码锁91实例81用LCD显示字符A94实例82用LCD循环右移显示Welcome to China97实例83用LCD显示适时检测结果100实例84液晶时钟设计104实例85将数据0 x0f写入AT24C02再读出送P1口显示110实例86将按键次数写入AT24C02,再读出并用1602LCD显示115实例87对I2C总线上挂接多个AT24C02的读写操作122实例88基于AT24C02的多机通信 读取程序127实例88基于AT24C02的多机通信 写入程序131实例90DS18B20温度检测及其液晶显示142实例91将数据0 xaa写入X5045再读出送P1口显示151实例92将流水灯控制码写入X5045并读出送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用单片机控制第一个灯亮includereg51.h 包含51单片机寄存器定义的头文件void mainvoid while1 无限循环P10 xfe; P11111 1110B,即P1.0输出低电平 实例4用单片机控制一个灯闪烁认识单片机的工作频率includereg51.h 包含单片机寄存器的头文件/函数功能延时一段时间*/void delayvoid 两个void意思分别为无需返回值,没有参数传递 unsigned int i; 定义无符号整数,最大取值范围65535 fori0;i20000;i 做20000次空循环 ; 什么也不做,等待一个机器周期/*函数功能主函数 (C语言规定必须有也只能有1个主函数)/void mainvoid while1 无限循环 P10 xfe; P11111 1110B, P1.0输出低电平 delay; 延时一段时间 P10 xff; P11111 1111B, P1.0输出高电平 delay; 延时一段时间 实例5将 P1口状态分别送入P0、P2、P3口认识I/O口的引脚功能includereg51.h 包含单片机寄存器的头文件/*函数功能主函数 (C语言规定必须有也只能有1个主函数)/void mainvoid while1 无限循环 P10 xff; P11111 1111, 熄灭LED P0P1; 将 P1口状态送入P0口P2P1; 将 P1口状态送入P2口 P3P1; 将 P1口状态送入P3口 实例6使用P3口流水点亮8位LED includereg51.h 包含单片机寄存器的头文件/函数功能延时一段时间*/void delayvoid unsigned char i,j; fori0;i250;i forj0;j250;j ;/*函数功能主函数 /void mainvoid while1 P30 xfe; 第一个灯亮 delay; 调用延时函数 P30 xfd; 第二个灯亮 delay; 调用延时函数P30 xfb; 第三个灯亮 delay; 调用延时函数P30 xf7; 第四个灯亮 delay; 调用延时函数P30 xef; 第五个灯亮 delay; 调用延时函数P30 xdf; 第六个灯亮 delay; 调用延时函数P30 xbf; 第七个灯亮 delay; 调用延时函数P30 x7f; 第八个灯亮 delay; 调用延时函数 实例7通过对P3口地址的操作流水点亮8位LEDincludereg51.h 包含单片机寄存器的头文件sfr x0 xb0; P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机 的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/函数功能延时一段时间*/void delayvoid unsigned char i,j; fori0;i250;i forj0;j250;j ; 利用循环等待若干机器周期,从而延时一段时间 /*函数功能主函数 /void mainvoid while1 x0 xfe; 第一个灯亮 delay; 调用延时函数 x0 xfd; 第二个灯亮 delay; 调用延时函数 x0 xfb; 第三个灯亮 delay; 调用延时函数 x0 xf7; 第四个灯亮 delay; 调用延时函数x0 xef; 第五个灯亮 delay; 调用延时函数x0 xdf; 第六个灯亮 delay; 调用延时函数x0 xbf; 第七个灯亮 delay; 调用延时函数x0 x7f; 第八个灯亮 delay; 调用延时函数 实例8用不同数据类型控制灯闪烁时间includereg51.h 包含单片机寄存器的头文件/函数功能用整形数据延时一段时间/void int_delayvoid 延时一段较长的时间 unsigned int m; 定义无符号整形变量,双字节数据,值域为065535 form0;m36000;m ; 空操作 /函数功能用字符型数据延时一段时间/void char_delayvoid 延时一段较短的时间 unsigned char i,j; 定义无符号字符型变量,单字节数据,值域0255fori0;i200;i forj0;j180;j ; 空操作/函数功能主函数/void mainvoid unsigned char i; while1 fori0;i3;i P10 xfe; P1.0口的灯点亮 int_delay; 延时一段较长的时间 P10 xff; 熄灭 int_delay; 延时一段较长的时间 fori0;i3;i P10 xef; P1.4口的灯点亮 char_delay; 延时一段较长的时间 P10 xff; 熄灭 char_delay; 延时一段较长的时间 实例9用P0口、P1口分别显示加法和减法运算结果includereg51.hvoid mainvoid unsigned char m,n; m43; 即十进制数2x161143 n60; 即十进制数3x161260 P1mn; P11030110 0111,结果P1.3、P1.4、P1.7 口的灯被点亮 P0n-m; P0170001 0001,结果P0.0、P0.4的灯被熄灭 实例10用P0、P1口显示乘法运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid unsigned char m,n; unsigned int s; m64; n71; sm*n; s64*714544,需要16位二进制数表示,高8位送P1口,低8位送P0口 由于454417*256192H3*16*16*16H2*16*16H1*16H0两边同除以256,可得17192/256H3*16H2(H1*16H0)/256因此,高8位16进制数H3*16H2必然等于17,即4544除以256的商低8位16进制数H1*16H0必然等于192,即4544除以256的余数 P1s/256; 高8位送P1口 ,P11711H0001 0001B, P1.0和P1.4口灭,其余亮 P0s256; 低8位送P0口 , P3192c0H1100 0000B,P3.1,P3.6,P3.7口灭,其余亮实例11用P1、P0口显示除法运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid P136/5; 求整数 P0365*10/5; 求小数 while1 ; 无限循环防止程序“跑飞” 实例12用自增运算控制P0口8位LED流水花样includereg51.h 包含单片机寄存器的头文件/函数功能延时一段时间/void delayvoid unsigned int i; fori0;i20000;i ;/函数功能主函数/void mainvoid unsigned char i; fori0;i255;i 注意i的值不能超过255 P0i; 将i的值送P0口 delay; 调用延时函数实例13用P0口显示逻辑与运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid P04090 xab;将逻辑运算结果送P0口 while1 ; 设置无限循环,防止程序“跑飞”实例14用P0口显示条件运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid P08484;将条件运算结果送P0口,P080000 1000B while1 ; 设置无限循环,防止程序“跑飞”实例15用P0口显示按位异或运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid P00 xa20 x3c;将条件运算结果送P0口,P080000 1000B while1 ; 设置无限循环,防止程序“跑飞”实例16用P0显示左移运算结果includereg51.h 包含单片机寄存器的头文件void mainvoid P00 x3b2; 将左移运算结果送P0口,P01110 1100B0 xec while1 ; 无限循环,防止程序“跑飞”实例17万能逻辑电路实验includereg51.h 包含单片机寄存器的头文件sbit FP14; 将F位定义为 P1.4sbit XP15; 将X位定义为 P1.5sbit YP16; 将Y位定义为 P1.6sbit ZP17; 将Z位定义为 P1.7void mainvoid while1 FX 将逻辑运算结果赋给F ; 实例18用右移运算流水点亮P1口8位LEDincludereg51.h 包含单片机寄存器的头文件/*函数功能延时一段时间*/void delayvoid unsigned int n; forn0;n30000;n ;/*函数功能主函数*/void mainvoid unsigned char i; while1 P10 xff;delay;fori0;i8;i设置循环次数为8 P1P11; 每次循环P1的各二进位右移1位,高位补0delay; 调用延时函数 实例19用if语句控制P0口8位LED的流水方向includereg51.h 包含单片机寄存器的头文件sbit S1P14; 将S1位定义为P1.4sbit S2P15; 将S2位定义为P1.5/*函数功能主函数*/void mainvoid while1 ifS10 如果按键S1按下 P00 x0f; P0口高四位LED点亮 ifS20 如果按键S2按下 P00 xf0; P0口低四位LED点亮 实例20用swtich语句的控制P0口8位LED的点亮状态includereg51.h 包含单片机寄存器的头文件sbit S1P14; 将S1位定义为P1.4/*函数功能延时一段时间*/void delayvoid unsigned int n; forn0;n10000;n ;/*函数功能主函数*/void mainvoid unsigned char i;i0; 将i初始化为0while1 ifS10 如果S1键按下 delay; 延时一段时间 ifS10 如果再次检测到S1键按下 i; i自增1 ifi9 如果i9,重新将其置为1 i1; switchi 使用多分支选择语句 case 1 P00 xfe; 第一个LED亮break;case 2 P00 xfd; 第二个LED亮 break;case 3P00 xfb; 第三个LED亮 break;case 4P00 xf7; 第四个LED亮 break;case 5P00 xef; 第五个LED亮 break;case 6P00 xdf; 第六个LED亮 break;case 7P00 xbf; 第七个LED亮 break;case 8P00 x7f; 第八个LED亮 break;default 缺省值,关闭所有LED P00 xff; 实例21用for语句控制蜂鸣器鸣笛次数includereg51.h 包含单片机寄存器的头文件sbit soundP37; 将sound位定义为P3.7/函数功能延时形成1600Hz音频/void delay1600void unsigned char n; forn0;n100;n ;/函数功能延时形成800Hz音频/void delay800void unsigned char n; forn0;n200;n ;/函数功能主函数/void mainvoid unsigned int i;while1 fori0;i830;i sound0; P3.7输出低电平 delay1600; sound1; P3.7输出高电平 delay1600; fori0;i200;i sound0; P3.7输出低电平 delay800; sound1; P3.7输出高电平 delay800; 实例22用while语句控制LEDincludereg51.h 包含单片机寄存器的头文件/函数功能延时约60ms 3*100*20060000s/void delay60msvoid unsigned char m,n; form0;m100;m forn0;n200;n ;/函数功能主函数/void mainvoid unsigned char i;while1 无限循环 i0; 将i初始化为0 whilei0 xff 当i小于0 xff(255时执行循环体 P0i; 将i送P0口显示 delay60ms; 延时 i; i自增1 实例23用do-while语句控制P0口8位LED流水点亮includereg51.h 包含单片机寄存器的头文件/函数功能延时约60ms 3*100*20060000s/void delay60msvoid unsigned char m,n; form0;m100;m forn0;n200;n ;/函数功能主函数/void mainvoid do P00 xfe; 第一个LED亮delay60ms; P00 xfd; 第二个LED亮delay60ms;P00 xfb; 第三个LED亮delay60ms;P00 xf7; 第四个LED亮delay60ms;P00 xef; 第五个LED亮delay60ms;P00 xdf; 第六个LED亮delay60ms;delay60ms;P00 xbf; 第七个LED亮delay60ms;P00 x7f; 第八个LED亮 delay60ms; while1; 无限循环,使8位LED循环流水点亮实例24用字符型数组控制P0口8位LED流水点亮includereg51.h 包含单片机寄存器的头文件/函数功能延时约60ms 3*100*20060000s/void delay60msvoid unsigned char m,n; form0;m100;m forn0;n200;n ;/函数功能主函数/void mainvoid unsigned char i; unsigned char code Tab 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; 定义无符号字符型数组 while1 fori0;i8;i P0Tabi;依次引用数组元素,并将其送P0口显示 delay60ms;调用延时函数 实例25 用P0口显示字符串常量includereg51.h 包含单片机寄存器的头文件/*函数功能延时约150ms 3*200*250150 000s150ms*/void delay150msvoid unsigned char m,n; form0;m200;m forn0;n250;n ;/*函数功能主函数*/void mainvoid unsigned char strNow,Temperature is ; 将字符串赋给字符型全部元素赋值 unsigned char i; wh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章.... 4 【实例1】使用累加器进行简单加法运算:... 4 【实例2】使用B寄存器进行简单乘法运算:... 4 【实例3】通过设置RS1,RS0选择工作寄存器区1:... 4 【实例4】使用数据指针DPTR访问外部数据数据存储器:... 4 【实例5】使用程序计数器PC查表:... 4 【实例6】if语句实例:... 4 【实例7】switch-case语句实例:... 4 【实例8】for语句实例:... 4 【实例9】while语句实例:... 5 【实例10】do…while语句实例:... 5 【实例11】语句形式调用实例:... 5 【实例12】表达式形式调用实例:... 5 【实例13】以函数的参数形式调用实例:... 5 【实例14】函数的声明实例:... 5 【实例15】函数递归调用的简单实例:... 5 【实例16】数组的实例:... 6 【实例17】指针的实例:... 6 【实例18】数组与指针实例:... 6 【实例19】P1口控制直流电动机实例... 6 第二章.... 8 【实例20】用74LS165实现串口扩展并行输入口... 8 【实例21】用74LS164实现串口扩展并行输出口... 10 【实例22】P0 I/O扩展并行输入口... 12 【实例23】P0 I/O扩展并行输出口... 12 【实例24】用8243扩展I/O端口... 12 【实例25】用8255A扩展I/O口... 14 【实例26】用8155扩展I/O口... 19 第三章.... 26 【实例29】与AT24系列EEPROM接口及驱动程序... 26 【实例30】EEPROM(X5045)接口及驱动程序... 30 【实例31】与铁电存储器接口及驱动程序... 33 【实例32】与双口RAM存储器接口及应用实例... 35 【实例33】与NANDFLASH(K9F5608)接口及驱动程序... 35 第四章.... 43 【实例34】独立键盘控制... 43 【实例35】矩阵式键盘控制... 44 【实例36】改进型I/O端口键盘... 46 【实例37】PS/2键盘的控制... 49 【实例38】LED显示... 53 【实例39】段数码管(HD7929)显示实例... 54 【实例40】16×2字符型液晶显示实例... 55 【实例41】点阵型液晶显示实例... 61 【实例42】LCD显示图片实例... 63 第五章.... 70 【实例43】简易电子琴的设计... 70 【实例44】基于MCS-51单片机的四路抢答器... 71 【实例45】电子调光灯的制作... 76 【实例46】数码管时钟的制作... 81 【实例47】LCD时钟的制作... 96 【实例48】 数字化语音存储与回放... 103 【实例49】电子标签设计... 112 第六章.... 120 【实例50】指纹识别模块... 121 【实例51】数字温度传感器... 121 第七章.... 124 【实例53】超声波测距... 124 【实例54】数字气压计... 125 【实例55】基于单片机的电压表设计... 132 【实例56】基于单片机的称重显示仪表设计... 133 【实例57】基于单片机的车轮测速系统... 136 第八章.... 138 【实例58】电源切换控制... 138 【实例59】步进电机控制... 140 【实例60】单片机控制自动门系统... 141 【实例61】控制微型打印机... 144 【实例62】单片机控制的EPSON微型打印头... 144 【实例63】简易智能电动车... 145 【实例64】洗衣机控制器... 149 第九章.... 152 【实例65】串行A/D转换... 152 【实例66】并行A/D转换... 153 【实例67】模拟比较器实现A/D转换... 154 【实例68】串行D/A转换... 155 【实例69】并行电压型D/A转换... 156 【实例70】并行电流型D/A转换... 156 【实例71】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的A/D转换... 157 【实例72】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的D/A转换... 161 第十章.... 164 【实例73】单片机间双机通信... 164 【实例74】单片机间多机通信方法之一... 166 【实例75】单片机间多机通信方法之二... 171 【实例76】 PC与单片机通信... 176 【实例77】红外通信接口... 178 第十一章.... 180 【实例79】单片机实现PWM信号输出... 180 【实例80】实现基于单片机的低频信号发生器... 182 【实例81】软件滤波方法... 183 【实例82】FSK信号解码接收... 186 【实例83】单片机浮点数运算实现... 187 【实例84】神经网络在单片机中的实现... 192 【实例85】信号数据的FFT变换... 194 第十二章.... 198 【实例86】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image005.gif总线接口的软件实现... 198 【实例87】SPI总线接口的软件实现... 200 【实例88】1-WIRE总线接口的软件实现... 205 【实例89】单片机外挂CAN总线接口... 207 【实例90】单片机外挂USB总线接口... 210 【实例91】单片机实现以太网接口... 214 【实例92】单片机控制GPRS传输... 221 【实例93】单片机实现TCP/IP协议... 223 第十三章.... 229 【实例94】读写U盘... 229 【实例95】非接触IC卡读写... 234 【实例96】SD卡读写... 238 【实例97】高精度实时时钟芯片的应用... 242 第十四章.... 247 【实例98】智能手机充电器设计... 247 【实例99】单片机控制门禁系统... 248

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值