实验_8051+Proteus定时计数器仿真设计

上传人:壹****1 文档编号:511510677 上传时间:2023-11-08 格式:DOC 页数:32 大小:1,005KB
返回 下载 相关 举报
实验_8051+Proteus定时计数器仿真设计_第1页
第1页 / 共32页
实验_8051+Proteus定时计数器仿真设计_第2页
第2页 / 共32页
实验_8051+Proteus定时计数器仿真设计_第3页
第3页 / 共32页
实验_8051+Proteus定时计数器仿真设计_第4页
第4页 / 共32页
实验_8051+Proteus定时计数器仿真设计_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《实验_8051+Proteus定时计数器仿真设计》由会员分享,可在线阅读,更多相关《实验_8051+Proteus定时计数器仿真设计(32页珍藏版)》请在金锄头文库上搜索。

1、.专业整理 .实验: 8051+Proteus定时 /计数器仿真一、 定时器控制单只LED/*名称 :定时器控制单只LED说明 : LED 在定时器的中断例程控制下不断闪烁。*/#include#define uchar unsigned char#define uint unsigned intsbit LED=P00;uchar T_Count=0;/ 主程序void main()TMOD=0x00;/ 定时器 0 工作方式 0TH0=(8192-5000)/32; /5ms定时TL0=(8192-5000)%32;IE=0x82;/ 允许 T0 中断TR0=1;while(1);/T0

2、中断函数.学习帮手 .专业整理 .void LED_Flash() interrupt 1TH0=(8192-5000)/32; /恢复初值TL0=(8192-5000)%32;if(+T_Count=100)/0.5s 开关一次LEDLED=LED;T_Count=0;二、 TIMER0 控制流水灯/*名称 : TIMER0 控制流水灯说明 :定时器控制P0、 P2 口的 LED 滚动显示 ,本例未使用中断函数。*/#include#include#define uchar unsigned char#define uint unsigned int/ 主程序void main()uchar

3、 T_Count=0;.学习帮手 .专业整理 .P0=0xfe;P2=0xfe;TMOD=0x01;/ 定时器 0 工作方式1TH0=(65536-40000)/256;/40ms定时TL0=(65536-40000)%256;TR0=1;/ 启动定时器while(1)if(TF0=1)TF0=0;TH0=(65536-40000)/256;/ 恢复初值TL0=(65536-40000)%256;if(+T_Count=5)P0=_crol_(P0,1);P2=_crol_(P2,1);T_Count=0;.学习帮手 .专业整理 .三、定时器控制4 个 LED 滚动闪烁/*名称 :定时器控制4

4、 个 LED 滚动闪烁说明 : 4 只 LED 在定时器控制下滚动闪烁。*/#include#defineucharunsignedchar#define uint unsigned intsbit B1=P00;sbit G1=P01;sbit R1=P02;sbit Y1=P03;uint i,j,k;/ 主程序void main()i=j=k=0;P0=0xff;TMOD=0x02;/ 定时器 0 工作方式 2TH0=256-200;/200us定时TL0=256-200;IE=0x82;.学习帮手 .专业整理 .TR0=1;/ 启动定时器while(1);/T0 中断函数void LE

5、D_Flash_and_Scroll() interrupt 1if(+k35)return;/ 定时中断若干次后执行闪烁k=0;switch(i)case 0:B1=B1;break;case 1:G1=G1;break;case 2:R1=R1;break;case 3:Y1=Y1;break;default:i=0;if(+j300) return;/ 每次闪烁持续一段时间j=0;P0=0xff;/ 关闭显示i+;/ 切换到下一个LED四、T0 控制 LED 实现二进制计数.学习帮手 .专业整理 ./*名称 : T0 控制 LED 实现二进制计数说明 :本例对按键的计数没有使用查询法,没

6、有使用外部中断函数, 没有使用定时或计数中断函数 。 而是启用了计数器,连接在 T0 引脚的按键每次按下时,会使计数寄存器的值递增,其值通过 LED 以二进制形式显示*/#include/ 主程序void main()TMOD=0x05;/ / 定时器 0 为计数器 ,工作方式1,最大计数值65535TH0=0;/ 初值为 0TL0=0;TR0=1;/ 启动定时器while(1)P1=TH0;P2=TL0;五、TIMER0 与 TIMER1 控制条形LED.学习帮手 .专业整理 ./*名称 : TIMER0 与 TIMER1 控制条形LED说明 :定时器 T0 定时控制上一组条形LED,滚动速

7、度较快定时器 T1 定时控制下一组条形LED,滚动速度较慢*/#include#include#define uchar unsigned char#define uint unsigned intuchar tc0=0,tc1=0;/ 主程序void main()P0=0xfe;P2=0xfe;TMOD=0x11;/ / 定时器 0、定时器 1 均工作于方式1TH0=(65536-15000)/256;/ 定时器 0: 15msTL0=(65536-15000)%256;TH1=(65536-50000)/256;/ 定时器 1: 50msTL1=(65536-50000)%256;IE=0

8、x8a;TR0=1;/ 启动定时器TR1=1;while(1);.学习帮手 .专业整理 ./T0 中断函数void Time0() interrupt 1TH0=(65536-15000)/256;/ 恢复定时器0 初值TL0=(65536-15000)%256;if(+tc0=10)/150ms转换状态tc0=0;P0=_crol_(P0,1);/T1 中断函数void Time1() interrupt 3TH0=(65536-50000)/256;/ 恢复定时器1 初值TL0=(65536-50000)%256;if(+tc1=10)/500ms转换状态tc1=0;P2=_crol_(P

9、2,1);.学习帮手 .专业整理 .六、10s 的秒表/*名称 : 10s 的秒表说明 :首次按键计时开始,再次按键暂停,第三次按键清零。*/#include#define uchar unsigned char#define uint unsigned intsbit K1=P37;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 延时void DelayMS(uint ms)uchar t;while(ms-) for(t=0;t120;t+);/ 处理按键事件void Key_Event_Handle().学习帮手 .专业整理 .if(Key_State=0)Key_Flag_Idx=(Key_Flag_Idx+1)%3;switch(Key_Flag_Idx)case 1:EA=1;ET0=1;TR0=1;break;case 2:EA=0;ET0=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号