100例单片机程序设计范例汇总(完全).pdf
《100例单片机程序设计范例汇总(完全).pdf》由会员分享,可在线阅读,更多相关《100例单片机程序设计范例汇总(完全).pdf(251页珍藏版)》请在咨信网上搜索。
1、100例程序设计范例汇总第一章.4【实例1】使用累加器进行简单加法运算:.4【实例2】使用B寄存器进行简单乘法运算:.4【实例3】通过设置RSI,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
2、】函数递归调用的简单实例:.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)接口及驱动程
3、序.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】16x2字符型液晶显示实例.55【实例411点阵型液晶显示实例.61【实例42】LCD显示图片实例.63第五章.70【实例43】简易电子琴的设计.70【实例44】基于MCS-51单片机的四路抢
4、答器.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】控制微型打印机
5、.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】12c接口的A/D转换.157【实例72】12c接口的D/A转换.161第十章.164实例73 单片机间双机通信.164实例74 单片机间多机通信方法之一.166实例75 单片机间多机通信方法之二.171【实例76】PC与单片机
6、通信.176实例77 红外通信接口.178第 H-一章.180实例79 单片机实现PWM信号输出.180实例80 实现基于单片机的低频信号发生器.182【实例81 软件滤波方法.183实例82 FSK信号解码接收.186实例83 单片机浮点数运算实现.187实例84 神经网络在单片机中的实现.192【实例85】信号数据的FFT变换.194第十二章.198【实例86】I2C 总线接口的软件实现.198实例87 SPI总线接口的软件实现.200【实例88】1-WIRE总线接口的软件实现.205实例89 单片机外挂CAN总线接口.207实例90 单片机外挂USB总线接口.210【实例91】单片机实现
7、以太网接口.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第一章【实例1】使用累加器进行简单加法运算:MOVA,#02H;A-2ADDA,#06H;A-A+06H【实例2 使用B寄存器进行简单乘法运算:MOVA,#02H;A-2MOVB,#06H;B-6MULAB;BA-A*B=6*2【实例3】通过设置RSI,RSO
8、选择工作寄存器区1:CLRPSW.4;PSW.4-0SETBPSW.5;PSW.5-1【实例4 使用数据指针DPTR访问外部数据数据存储器:MOVDPTR,#datal6;DPTR-data 16MOVXA,DPTR;A-(DPTR)MOVX DPTR,A;(DPTR)-A【实例5】使用程序计数器PC查表:MOVA,#data;A-dataMOVCA,A+DPTR;PC-g+l,A-(A)+(PC)【实例6】if语句实例:void mainQ int a,b,c,min;printsn please input three number:);scanf(n%d%d%d n,&a,&b,&c);
9、if(ab&ac)printf(nmin=%dnn,a);else if(ba&bc)printf(nmin=%dnn,b);else if(ca&c0;a)printf(n%dn,a);)实例9 while语句实例:void main()int i=0;while(i=10)i+;【实例10】dowhile语句实例:void main()int i=0;do i+;while(i=10);)【实例11】语句形式调用实例:void main()int i=0;while(i=10)i+;.Sum();/*函数调用*/)实例12 表达式形式调用实例:void mainQ int a,b,i=0;
10、while(i=10)i+;.i=4*Sum(a,b);/*函数调用*/)【实例13】以函数的参数形式调用实例:void mainQ int a,b,c,i=0;while(i=10)i+;.i=max(c,Sum(a,b);/*函数调用*/实例14 函数的声明实例:void mainQ int max(int x,int y);/*函数的声明*/int a,b,c,i=0;while(i=10)i+;.i=max(c,Sum(a,b);/*函数调用*/【实例15】函数递归调用的简单实例:void fun()int a=l,result,i;fbr(i=0;i10;)i=a+I;result=
11、fun();/*函数调用*/return result;)【实例16】数组的实例:void mainQ charnum3 3=#,;/*定义多维数组*/int i=0,j=0;fdr(;i3;i+)for(;j3;j+)printf(c”,numiJD;printf(/n”);)【实例17】指针的实例:void mainQ int a=3,*p;p=&a;/*将变量a的地址赋值给指针变量p*/printf(d,%d”,a,*p);/*输出二者的数值进行对比*/【实例18】数组与指针实例:void mainQ int i=3,num3=l,2,3,*p;p=num;/*将数组num口的地址赋值给
12、指针变量p*/result=max(p,3);/*函数调用,计算数组的最大值*/)实例19 P1 口控制直流电动机实例sfrp 1=0 x90;sbitplO=plAO;sbitpll=p1A1;void main()(int i,m;int j=100;int k=20;/正快转for(i=0;i100;i+)(P10=l;for(j=0;j50;j+)(m=0;)Pl 0=0;for(j=0;j10;j+)m=0)正慢转fbr(i=0;i100;i+)(P10=l;for(j=0;j10;j+)(m=0)pl 0=0;for(j=0;j50;j+)(m=0/负快转fbr(i=0;i100;
13、i+)(pll=l;for fl=0;j50;j+)(m=0;)pn=o;for(j=0;j10;j+)(m=0;/负慢转for(i=0;i100;i+)(pll=l;for(j=0;j10;j+)(m=0;)pll=0for(j=0;j50;j+)m=0;)第二章实例20 用74LS165实现串口扩展并行输入口(1)函数声明管脚定义/-库函数声明,管脚定义-#includesbit LOAD=P1A7;用P1A7控制SH/管脚(2)串口初始化函数UART_init()/-/函数名称:UART_init()/功能说明:串口初始化,设定串口工作在方式0/-void UARTinit(void)(
14、SCON=OxlO;设串行口方式0,允许接收,启动接收过程ES=0;禁止串口中断)(3)数据接收函数PA()-/函数名称:PA()/输入参数:无/输出参数:返回由并口输入的数据/功能说明:接收八位串行数据/-unsigned char PA(void)unsigned char PA data;LOAD=0;当Pl.7输出低电平,74LS165将并行数据装入寄存器/当中LOAD=1;当P1.7输出高电平,74LS165在时钟信号下进行移位UART_init();/74LS165工作在时钟控制下的串行移位状态while(RI=0);循环等待RI=0;PA_data=SBUF;return PA
15、data;/返回并行输入的数据)(1)函数声明管脚定义/-库函数声明,管脚定义-#includesbit a7=ACCA7;sbit simuseri_CLK=P 1A6;用P1A6模拟串口时钟sbit simuseri DATA=P 1A5;用P1A5模拟串口数据sbit drive74165_LD=P 1A7;用P1A7控制SH/管脚(2)数据输入函数in_simuseri()/-/函数名称:in_simuseri()/输入参数:无/输出参数:data_buf/功能说明:8位同位移位寄存器,将simuseri_DATA串行输入的数据按从低位到/高位/保存到data buf/-unsigne
16、d char in simuseri(void)(unsigned char i;unsigned char data buf;i=8;do(ACC=ACC1;fbr(;simuseri_CLK=O;);a7=simuseriDATA;fbr(;simuseri_CLK=l;);)while(-i!=0);simuseri_CLK=O;data_buf=ACC;retum(databuf);)(3)数据输出函数PAs()/-/函数名称:PAs()/输入参数:无/输出参数:PAs_buf,返回并行输入74LS165的数据/功能说明:直接调用,即可读取并行输入74LS165的数据,不需要考虑74L
17、S165的/工作原理/-unsigned char PAs(void)(unsigned char PAs buf;drive74165_LD=0;drive74165_LD=1;PAs_buf=in_simuseri();retum(PAsbuf);)实例21 用74LS164实现串口扩展并行输出口单片机串口驱动74LS164的程序主要包括函数声明管脚定义部分、串口初始化函数以 及数据发送函数。(1)函数声明管脚定义/-库函数声明,管脚定义-#include sbit CLR=P1A7;用P1A7控制CLRJ2)串口初始化函数UART_init()/-/函数名称:UART_init()/功能
18、说明:串口初始化,设定串口工作在方式0/-void UARTinit(void)(SCON=0 x00;没串行口方式0,允许发送,启动发送过程ES=0;/禁止串口中断)(3)数据发送函数PA_out()/-/函数名称:PA_out()/输入参数:PA_data,需要从74LS164并行口输出的数据/输出参数:无/功能说明:发送八位串行数据至并口/-void PA_out(unsigned char PAdata)(CLR=0;/并口输出清零CLR=1;开始串行移位 UART_init();/74LS165工作在时钟控制下的串行移位状态 while(TI=O);循环等待TI=0;SBUF=PA_
19、data;)单片机I/O端口驱动74LS164主要包括函数声明管脚定义部分、数据输入函数以及数据 输出函数。(1)函数声明管脚定义/-库函数声明,管脚定义-/include sbit simuseri_CLK=P 1A6;用P1A6模拟串口时钟 sbit simuseri_DATA=P 1A5;用PU5模拟串口数据 sbit drive74164_CLR=PlA7;用P1A7控制CLR sbit aO=ACCAO;(2)数据输入函数out_simuseri()/-/函数名称:out simuseri/输入参数:data buf/输出参数:无/功能说明:8位同步移位寄存器,将data_buf的数
20、据逐位输出到simuseri_DATA _一一_-void out_simuseri(char databuf)(char i;i=8;ACC=data_buf;do(simuseri_CLK=O;simuseri_DATA=aO;simuseri_CLK=1;ACC=ACC1;)while(-i!=0);simuseri_CLK=O;(3)数据输出函数PA_out()/-/函数名称:PA out/输入参数:Pseri_out,需要输出的8位数据/输出参数:无/功能说明:将Pseri_out中的数据送到74165并行口 A-G输出/-void PA out(char Pseri out)(dr
21、ive74164_CLR=0;/井口输出清零drive74164 CLR=1;/开始串行移位outsimuseri(Pseriout);)【实例22】P0 I/O扩展并行输入口I/O 口对应的地址为:1111 1110 1111 1111 B=FEFFHCPU操作指令为:/define 244_addr xbyte0XFEFFunsigned char I/O DATA;I/O_DATA=244_addr;【实例23】P0 I/O扩展并行输出口I/O端口对应的地址为:1111 1101 1111 1111 B=FDFFHCPU操作指令为:#define 273_addr xbyte0XFDFF
22、unsigned char I/O DATA;244_addr=I/O_DATA;【实例24】用8243扩展I/O端口#includesbit ContrBit0=PlA0;sbit ContrBitl=PlAl;sbit ContrBit2=PlA2;sbit ContrBit3=PlA3;sbit PROG=P1A4;sbit CS=P1A5;char driver8243(char sele_P,char sele_M,char out data)(char in_data=0;char databuf;PROG=1;置PROG为高电平II-开始写控制字if(sele_P&0 x01)=
23、0)将控制字最低位送到8243的p2.0ContrBit0=0;elseContrBitO=l;if(sele_P&0 x02)=0)将控制字第二位送到8243的p2.1ContrBitl=0;elseContrBitl=l;/以上两位共同指定端口地址/-一写端口工作模式控制字-if(sele_M&0 x01)=0)将端口工作模式控制字低位送到8243的p2.2ContrBit2=0;elseContrBit2=l;if(sele_M&0 x01)=0)/将端口工作模式控制字高位送到8243的p2.3ContrBit3=0;elseContrBit3=l;/完成写控制字PROG=0;在PROG
24、上产生下降沿switch(sele_M&0 x03)(/判断工作模式case 0:break;/sele_M=B00为输入,不处理,等待上升沿case 1:data_buf=out_data;break;sele_M=B01为输出,直接送数据case 2:data_buf=out_data;break;sele_M=B10为逻辑或,直接送数据case 3:data_buf=out_data;break;sele_M=BH为逻辑与,直接送数据PROG=1;/产生上升沿if(sele_M&0 x03)=0)/sele_M=B00 为输入,接收数据in_data=(data_buf&0 x0F);r
25、etum(indata);/sele M=B00,返回接收到的数据/sele_M!=B00,返回 0void main(void)(char receive data;receive_data=driver8243(l,0,5);)实例25用8255A扩展I/O 口/-/函数名称:rd_PA/输入函数:无/输出参数:PA_data,PA输入的数据/功能说明:驱动PA实现输入功能,读入PA的并行数据,/-.-unsigned char rd PA(void)读 PA(1)管脚定义及函数声明/-函数声明,管脚定义-#include#include/define a8255_PA XBYTE0 x7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 100 单片机 程序设计 范例 汇总 完全
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。