欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验8051+Proteus定时计数器仿真设计Word文档下载推荐.docx

    • 资源ID:19997216       资源大小:20.30KB        全文页数:23页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验8051+Proteus定时计数器仿真设计Word文档下载推荐.docx

    1、 LED=LED; T_Count=0; 二、 TIMER0控制流水灯 TIMER0控制流水灯 说明:定时器控制P0、P2口的LED滚动显示,本例未使用中断函数。intrins.h uchar T_Count=0; P0=0xfe; P2=0xfe; TMOD=0x01; /定时器0工作方式165536-40000/256; /40ms定时%256; /启动定时器 if TF0=0; TH0= TL0= if P0=_crol_ P2=_crol_ T_Count=0; 三、 定时器控制4个LED滚动闪烁定时器控制4个LED滚动闪烁 4只LED在定时器控制下滚动闪烁。sbit B1=P00;s

    2、bit G1=P01;sbit R1=P02;sbit Y1=P03;uint i,j,k; i=j=k=0; P0=0xff; TMOD=0x02; /定时器0工作方式2 TH0=256-200; /200us定时 TL0=256-200; /启动定时器void LED_Flash_and_Scroll+k return; /定时中断若干次后执行闪烁 k=0; switch case 0: B1=B1;break; case 1: G1=G1; case 2: R1=R1; case 3: Y1=Y1; default:i=0;+j /每次闪烁持续一段时间 j=0; /关闭显示 i+; /切

    3、换到下一个LED四、 T0控制LED实现二进制计数T0控制LED实现二进制计数本例对按键的计数没有使用查询法,没有使用外部中断函数,没有使用定时或计数中断函数。而是启用了计数器,连接在T0引脚的按键每次按下时,会使计数寄存器的值递增,其值通过LED以二进制形式显示 TMOD=0x05; /定时器0为计数器,工作方式1,最大计数值65535 TH0=0; /初值为0 TL0=0; P1=TH0; P2=TL0;五、 TIMER0与TIMER1控制条形LEDTIMER0与TIMER1控制条形LED 定时器T0定时控制上一组条形LED,滚动速度较快 定时器T1定时控制下一组条形LED,滚动速度较慢u

    4、char tc0=0,tc1=0; TMOD=0x11; /定时器0、定时器1均工作于方式165536-15000 /定时器0:15ms TH1= /定时器1:50ms TL1= IE=0x8a; TR1=1;void Time0 /150ms转换状态 tc0=0; P0=_crol_/T1中断函数void Time1 /500ms转换状态 tc1=0; P2=_crol_六、 10s的秒表10s的秒表首次按键计时开始,再次按键暂停,第三次按键清零。sbit K1=P37;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar DSY_CO

    5、DE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/延时void DelayMS uchar t;ms- fort=0;t/处理按键事件void Key_Event_Handle Key_Flag_Idx=%3; switch case 1: EA=1;ET0=1;TR0=1; case 2: EA=0;ET0=0;TR0=0; case 0: P0=0x3f;P2=0x3f;Second_Counts=0; /显示00 P2=0x3f; i=0; Second_Counts=0; Key_Flag_Idx=0; /按键次数取值0,1,2

    6、,3 Key_State=1; /按键状态 /定时器0方式1Key_State!=K1 DelayMS Key_State=K1; Key_Event_Handlevoid DSY_Refresh /50ms*2=0.1s转换状态 i=0;Second_Counts+; P0=DSY_CODESecond_Counts/10; P2=DSY_CODESecond_Counts%10;Second_Counts=100 /满10010s后显示00七、 用计数器中断实现100以内的按键计数用计数器中断实现100以内的按键计数本例用T0计数器中断实现按键技术,由于计数寄存器初值为1,因此 P3.4引

    7、脚的每次负跳变都会触发T0中断,实现计数值累加。 计数器的清零用外部中断0控制。/段码uchar code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;uchar Count=0; P0=0x00; P2=0x00; TMOD=0x06; /计数器T0方式2 TH0=TL0=256-1; /计数值为1 ET0=1; /允许T0中断 EX0=1; /允许INT0中断 /允许CPU中断 IP=0x02; /设置优先级,T0高于INT0 IT0=1; /INT0中断触发方式为下降沿触发 /启动T0 P0=DSY_CO

    8、DECount/10; P2=DSY_CODECount%10;/T0计数器中断函数void Key_Counter Count=%100; /因为只有两位数码管,计数控制在100以内0099/INT0中断函数void Clear_Counter interrupt 0 Count=0;八、 100 000s以内的计时程序100 000s以内的计时程序在6只数码管上完成099 999.9s。uchar code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/6只数码管上显示的数字uchar Digits_of_6DSY=

    9、0,0,0,0,0,0;uchar Count;sbit Dot=P07; uchar i,j; P3=0xff; /计数器T0方式1 /50ms定时 j=0x7f; /显示Digits_of_6DSY5Digits_of_6DSY0的内容 /前面高位,后面低位,循环中i!=-1亦可写成i!=0xff for j=_crol_ P3=j; P0=DSY_CODEDigits_of_6DSYi;i=1 Dot=1; /加小数点2void Timer0 Digits_of_6DSY0+; /0.1s位累加i /进位处理Digits_of_6DSYi=10 Digits_of_6DSYi=0;=5

    10、Digits_of_6DSYi+1+; /如果04位则分别向高一位进位 else break; /若某低位没有进位,怎循环提前结束九、 定时器控制数码管动态显示定时器控制数码管动态显示8个数码管上分两组动态显示年月日与时分秒,本例的 位显示延时用定时器实现。/段码,最后一位是-的段码uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf;/待显示的数据:09-12-25与23-59-58分两组显示uchar code Table_of_Digits8=0,9,10,1,2,10,2,5,2,3,10,

    11、5,9,10,5,8;uchar i,j=0;uint t=0; P3=0x80; /位码初值 /计数器T0方式08192-4000 /4ms定时/T0中断函数控制数码管刷新显示void DSY_Show /恢复初值 /输出位码和段码 P0=DSY_CODETable_of_Digitsij; P3=_crol_ j=%8; /数组第i行的下一字节索引+t!=350 /保持刷新一段时间 t=0; i=%2; /数组行i=0时显示年月日,i=1时显示时分秒十、 用定时器设计的门铃用定时器设计的门铃按下按键时蜂鸣器发出叮咚的门铃声。sbit Key=P17;sbit DoorBell=P30;ui

    12、nt p=0; DoorBell=0; /T0方式08192-700 /700us定时 Key=0 /按下按键启动定时器 TR0=1; while/T0中断控制点阵屏显示 DoorBell=DoorBell; p+;p /若需要拖长声音,可以调整400和800 TH0= TL0= else if8192-1000 /1ms定时 else TR0=0; p=0;十一、 演奏音阶演奏音阶本例使用定时器演奏一段音阶,播放由K1控制。sbit K1=P10;sbit SPK=P34;uint i=0; /音符索引/14个音符放在方式2下的定时寄存器TH0,TL0uchar code HI_LIST=0

    13、,226,229,232,233,236,238,240,241,242,244,245,246,247,248;uchar code LO_LIST=0,4,13,10,20,3,8,6,2,23,5,26,1,4,3;/定时器0中断函数void T0_INT TL0=LO_LISTi; TH0=HI_LISTi; SPK=SPK; /T0方式0 SPK=0; while /未按键等待K1=0 /等待释放i=1;15; /播放一个音符500 /播放延时 TR0=0;50十二、 按键控制定时器选播多段音乐按键控制定时器选播多段音乐本例内置3段音乐,K1可启动停止音乐播放,K2用于选择音乐段。

    14、/播放和停止键sbit SPK=P37; /蜂鸣器uchar Song_Index=0,Tone_Index=0; /当前音乐段索引,音符索引/数码管段码表uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/标准音符频率对应的延时表/三段音乐的音符uchar code Song50= 1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1, 3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,53,3,2,1,1,-1, 3,2

    15、,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1;/三段音乐的节拍uchar code Len50= 1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1, 1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1, 1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1/外部中断0void EX0_INT TR0=0; /播放结束或者播放中途切换歌曲时停止播放 Song_Index= /跳到下一首的开头 Tone_Index=0; P2=DSY_CODESong_Index; /数码管显示当前音乐段号 TL0=LO_LISTSongSong_IndexTone_Index; TH0=HI_LISTSongSong_IndexTone_Index;


    注意事项

    本文(实验8051+Proteus定时计数器仿真设计Word文档下载推荐.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开