ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:1.77MB ,
资源ID:4742962      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4742962.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(MCS-51单片机实验源程序.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MCS-51单片机实验源程序.doc

1、MCS-51单片机实验源程序仅供参考。没有最好,只有更好!希望大家设计出更好的程序来。软件实验一 求一组数据的最大(小)值/*软件实验的目的:熟悉单片机常用的基本程序(算法),调试时观察变量(含数组)值的变化,从而理解程序的功能,了解变量(含数组)在单片机存储器中的具体位置。*/int a=-1,2,-30,40,-500,600,-7000,8000,-32750,32765; /任意给出10个int型数(范围:-32768+32767),放在数组a中void main()unsigned char i;int max,min;max=min=a0; /max,min先取该组数据的第一个fo

2、r(i=1;imax) max=ai; if(aimin) min=ai; while(1); /没有什么要做了,则用该语句作为main函数的结尾,无限循环附调试截图:注意:由于是纯软件实验(单片机没有进行实际的输入与输出),有些变量要声明为全局变量(如上面的数组a),否则可能会被Keil软件编译时优化掉(即:一些语句没有真正生成执行代码),导致无法观察到正确结果。软件实验二 二进制(十六进制)数转换为BCD数/按流程图,编写程序如下:#define uchar unsigned charvoid main()uchar x=0xA5; /设二进制数为1010 0101,在Keil中只能用十六

3、进制0xA5或十进制165(不能直接用二进制形式)uchar a3;a2=x/100;x=x%100;a1=x/10;x=x%10;a0=x;while(1);/或者用for循环语句,先取出个位#define uchar unsigned charvoid main()uchar x=0xA5;uchar i,a3;for(i=0;i4)& 0x0f; /取x的高4位0101(即5)a1=asciicc; /查表,a1存x高4位对应十六进制数(即5)的ASCII码while(1);硬件实验一 并行口输入、输出/P2做输出口,接8只LED,编写程序,使LED循环点亮(流水灯)#include#i

4、nclude /内部函数_crol_,_cror_等的头文件void Delay(unsigned int x) /延时函数,在12MHz晶振下,延时约x msunsigned char i; while(x-) for(i=0;i123;i+);void main() char a=0xfe; while(1) P2=a; Delay(500); /在12MHz晶振下,延时约500ms a=_crol_(a,1); /循环左移,_cror_为循环右移 /P3.2和P3.3做输入口,分别接两个拨动开关到GND;P2.7P2.4做输出口,接4只LED,用来指示两个开关的闭合状态组合#includ

5、evoid main() char a; while(1) a=P3; /读入P3口状态 a=a&0x0C; /a中只保留P3.3、P3.2的值,其余位清零 if(a=0x0C) P2=0x7F; /P3.3=1开,P3.2=1开,则P2.7=0亮 if(a=0x08) P2=0xbF; /P3.3=1开,P3.2=0合,则P2.6=0亮 if(a=0x04) P2=0xdF; /P3.3=0合,P3.2=1开,则P2.5=0亮 if(a=0x00) P2=0xEF; /P3.3=0合,P3.2=0合,则P2.4=0亮 /用一个共阳七段数码管循环显示0-9和A-F,每个数显示0.5s#incl

6、udesbit P1_0=P10;char code TABLE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /共阳数码管段码(放在程序存储器ROM中)void Delay(unsigned int x) /延时函数,在12MHz晶振下,延时约x msunsigned char i; while(x-) for(i=0;i123;i+);void main() char j; P1_0=0; /位选信号 while(1) for(j=0;j16;j+) P0=TABLEj;

7、Delay(500); 硬件实验二 外部中断/通过外部中断0(下降沿触发),启动或关闭流水灯,即上电复位时不亮,按一次INT0(P3.2)引脚的按钮,流水灯开启,再按一次,灯熄灭#include#include /内部函数_crol_,_cror_等的头文件bit LED=0; /位变量LED用于记录流水灯的状态,0为关闭,1为开启void Delay(unsigned int x) /延时函数,在12MHz晶振下,延时约x msunsigned char i; while(x-) for(i=0;i123;i+);void INT0_srv(void) interrupt 0 /INT0中断

8、号为0 Delay(10); /延时10ms,去抖动 if(INT0=0) LED=!LED; /每次中断时切换LED开启或关闭void main() char a=0xfe; IT0=1; /下降沿触发 EX0=1; /允许INT0中断 EA=1; while(1) if(LED) /开启 P2=a; Delay(500); /在12MHz晶振下,延时约500ms a=_crol_(a,1); /循环左移,_cror_为循环右移 else /关闭 P2=0xff; /通过外部中断0(低电平触发),启动或关闭流水灯,即上电复位时不亮,按一次INT0(P3.2)引脚的按钮,流水灯开启,再按一次,

9、灯熄灭#include#include /内部函数_crol_,_cror_等的头文件bit LED=0; /位变量LED用于记录流水灯的状态,0为关闭,1为开启void Delay(unsigned int x) /延时函数,在12MHz晶振下,延时约x msunsigned char i; while(x-) for(i=0;i123;i+);void INT0_srv(void) interrupt 0 /INT0中断号为0 Delay(10); /延时10ms,去抖动 if(INT0=0) LED=!LED; /每次中断时切换LED开启或关闭 while(INT0=0); /如P3.2

10、(INT0)还是0,则等待,变为1后才从中断返回void main() char a=0xfe; IT0=0; /低电平触发 EX0=1; /允许INT0中断 EA=1; while(1) if(LED) /开启 P2=a; Delay(500); /在12MHz晶振下,延时约500ms a=_crol_(a,1); /循环左移,_cror_为循环右移 else /关闭 P2=0xff; 硬件实验三 定时计数器/用单片机内部定时器方式计时,实现每一秒钟P2口输出状态发生一次反转。/设置定时器溢出时间为50ms,溢出20次则为1s/12MHz晶振下,内部每个计数脉冲为1ms,50ms则需要500

11、00个脉冲/在定时器方式1下初值为65536-50000/中断法#includeunsigned char count=20; /定时溢出次数void T0_int(void) interrupt 1 /T0中断号为1 TH0=(65536-50000)/256; /每次溢出重新置初值 TL0=(65536-50000)%256; count-; if(count=0) /溢出20次,即1s count=20; P2=P2; void main() TMOD=0x01; /T0内部定时,方式1 TH0=(65536-50000)/256; /置初值 TL0=(65536-50000)%256;

12、 ET0=1; /允许T0中断 EA=1; TR0=1; /启动T0 while(1); /循环等待/查询法#includeunsigned char count=20; /定时溢出次数void main() TMOD=0x01; /T0内部定时,方式1,由TR0启动 TH0=(65536-50000)/256; /置初值 TL0=(65536-50000)%256; TR0=1; /启动T0 while(1) while(!TF0); /等待定时溢出 TF0=0; /溢出标志清零 TH0=(65536-50000)/256; /溢出重新置初值 TL0=(65536-50000)%256; c

13、ount-; if(count=0) /溢出20次,即1s count=20; P2=P2; /单片机对从P3.4(T0)输入的脉冲信号计数,T0工作于方式1,将计数结果送至P2口显示(二进制形式)/由于输出低电平时LED亮,故需反转后输出#includevoid main() TMOD=0x05; /T0外部计数,方式1,由TR0启动 TH0=TL0=0; /置初值(可省略) TR0=1; /启动T0 while(1) P2=TL0; /将计数值实时送P2口显示,未考虑TH0 /单片机对从P3.4(T0)输入的脉冲信号计数,T0工作于方式1,将计数结果用4位共阳数码管动态扫描显示(P0口输出

14、段码,P1.0P1.3分别选择千、百、十、个位,参见实验板原理图)#includechar code SEG=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /共阳数码管09的段码(放在程序存储器ROM中)char code bit_sel=0xf7,0xfb,0xfd,0xfe;/个、十、百、千 位选信号void Delay(unsigned int x) /延时函数,在12MHz晶振下,延时约x msunsigned char i; while(x-) for(i=0;i123;i+);void main() unsigned int

15、count; unsigned char k; TMOD=0x05; /T0外部计数,方式1,由TR0启动 TH0=TL0=0; /置初值(可省略) TR0=1; /启动T0 while(1) count=TH0*256+TL0; /将计数值送countfor(k=0;k4;k+) /动态扫描显示 P1=bit_selk; /输出位选信号 P0=SEGcount%10; /输出段码 Delay(5); count=count/10; 硬件实验四 串行通信/单片机甲用于串行发送,单片机乙用于接收。甲向乙发送0-9和A-F共16个数。/乙接收这16个数存放到数组,然后依次用一个接在P0口的共阳七段

16、数码管显示出来,每个数显示时间约0.5s/单片机甲发送程序(查询方式) Keil中需单独建一个项目#include #define uchar unsigned charvoid main() uchar i=0; TMOD=0x20; /*设置定时器T1为方式2*/ TH1=TL1=0xfd;/*波特率9600*/ SCON=0x40; /*串口方式1只发送,不接收*/ TR1=1;/*启动T1*/ for(i=0;i16;i+) /循环16次,依次发送0-F SBUF=i; /*数据送串行口发送缓冲器*/ while(TI=0);/*如果TI=0,未发送完,循环等待*/ TI=0;/*已发

17、送完,再把TI清0*/ while(1);/单片机乙接收程序(中断方式) Keil中需单独建一个项目#include sbit P1_0=P10;#define uchar unsigned charuchar sc=0,a16; /数组a存放接收到的数据,sc为数组下标char code TABLE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; /共阳数码管段码void Delay(unsigned int x) /延时函数unsigned char i; while(x-)

18、 for(i=0;i=16) /接收到16个数后,循环显示 for(i=0;i16;i+) /循环16次,依次显示a0-a15 P0= TABLEai; Delay(500); /发生外部中断0(下降沿触发)时,单片机从串行口输出字符串Hello;/发生外部中断1(下降沿触发)时,单片机从串行口输出字符串SCUT!。#include char sa=Hello,sb=SCUT!;void INT0_srv(void) interrupt 0 /INT0中断号为0 char i; for(i=0;i5;i+) /循环5次,依次发送各字符 SBUF=sai; /*数据送串行口发送缓冲器*/ whi

19、le(TI=0);/*如果TI=0,未发送完,循环等待*/ TI=0;/*已发送完,再把TI清0*/ void INT1_srv(void) interrupt 2 /INT1中断号为2 char i; for(i=0;i5;i+) /循环5次,依次发送各字符 SBUF=sbi; /*数据送串行口发送缓冲器*/ while(TI=0);/*如果TI=0,未发送完,循环等待*/ TI=0;/*已发送完,再把TI清0*/ void main() TMOD=0x20; /*设置定时器T1为方式2*/ TH1=TL1=0xfd;/*波特率9600*/ SCON=0x40; /*串口方式1只发送,不接收*/ TR1=1;/*启动T1*/ IT0=IT1=1; /INT0,INT1下降沿触发 EX0=EX1=EA=1; /允许INT0,INT1中断 while(1);

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服