欢迎来到天天文库
浏览记录
ID:39825045
大小:106.51 KB
页数:9页
时间:2019-07-12
《单片机原理 定时器计数器-单片机原理-实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单片机原理实验名称定时器与计数器专业计算机科学与技术(非师)年级12级学号B2012102147姓名王秋指导教师杨烈君实验日期2015.5.27实验目的:1.通过实验学习单片机的定时器计数器功能,学会编程实现单片机的定时与计数功能;2.掌握中断处理程序的编程方法;3.掌握查表的编程方法。实验要求:1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2.在电路中增加按键、Led灯、八位7段数码管(共阳/共阴
2、自选),将P2口作数据输出口与7段数码管数据引脚相连,P3引脚输出位选控制信号。3.实现单按键控制Led灯闪烁(用定时器实现1s变化一次)4.实现0-99码表(按一次开始计时1S加一,第二次停止,第三次清零)实验设备(环境):计算机、ProteusISIS7Professional应用程序、Keil应用程序实验内容:使用内部定时器与外部中断实现:1.实现单按键控制Led灯闪烁(1s变化一次)2.实现0-99码表(按一次开始计时1S加一,第二次停止,第三次清零)参考原理图实验步骤、实验结果及分析:1
3、、使用ProteusISIS7Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。3、构建仿真电路4、创建一个Keil应用程序:新建一个工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。5、把用户程序经过编译后生成的HEX文件
4、添加到仿真电路中的处理器中(编辑元件→文件路径)程序代码:1.实现单按键控制Led灯闪烁(1s变化一次)#include"reg51.h"#defineucharunsignedcharucharTime_50ms;sbitLed1=P1^0;ucharMode;voiddelay(intx)//定义时间间隔{while(x--);}voidLedFlash()interrupt1//溢出中断的中断服务程序{if(Mode==1){Time_50ms++;//每50ms累加1次TH0=15526/
5、0xff;//计数重新赋初值TL0=15526%0xff;if(Time_50ms>=20)//当为1s时{Led1=~Led1;Time_50ms=0;}}}voidint0()interrupt0//外部中断0的中断服务程序{Mode=(Mode+1)%2;//更改按键标志值if(Mode==0){Led1=0;Time_50ms=0;}}voidmain(){IE=0x83;//允许定时器0中断和外部中断0TMOD=0x01;//定时方式,设定工作方式1TCON=0x11;//打开定时器0和
6、设置外部中断为边沿触发TH0=(65536-50000)/256;//定时器T0的高8位赋初值TL0=(65536-50000)%256;//定时器T0的低8位赋初值Led1=0;while(1);}图1单按键控制Led灯闪烁,1s变化一次1.实现0-99码表(按一次开始计时1S加一,第二次停止,第三次清零)#include"reg51.h"#defineucharunsignedchar#definedisp_null10ucharcodetab[11]={0xc0,0xf9,0xa4,0xb0
7、,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管显示0~9的段码表ucharDispBuf[8];ucharsec=0;ucharTime_50ms;ucharMode=2;voiddelay(intx)//定义时间间隔{while(x--);}voidPutTime(){DispBuf[7]=sec%10;DispBuf[6]=sec/10;DispBuf[5]=disp_null;DispBuf[4]=disp_null;DispBuf[3]=disp_
8、null;DispBuf[2]=disp_null;DispBuf[1]=disp_null;DispBuf[0]=disp_null;}voiddisplay(){uchari;for(i=0;i<8;i++){P2=0;P2=1<
此文档下载收益归作者所有