欢迎来到天天文库
浏览记录
ID:51700442
大小:172.16 KB
页数:3页
时间:2020-03-15
《单片机学习项目数码管实现秒显示.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机学习项目项目5-数码管实现秒显示我们先用一个简单例子说明定时器中断应用技巧,电路采用第三章图3-3-2,利用定时器T0中断产生秒信号,然后让单片机的P0口驱动一只数码管显示秒计数。如果单片机的晶振频率为12MHz,则内部机器周期为1微秒,即内部脉冲频率为1MHz。假如定时器对内部脉冲计5000个(5毫秒)就引发中断,定时器T0为工作方式1,则初值应为60536, T0发生200次中断就能累计1秒。T0中断的应用首先要对T0定时器进行初始化设定,通过一个初始化函数完成,包括设定T0工作方式、设定初值、设定中断允许和优先级,最后启动T0。设定所涉及的特殊功能寄存器有TM
2、OD、TCON、IP、IE。T0初始化程序设计流程如图4-2-6所示。程序设计程序包含主函数、定时器T0初始化函数、T0中断服务函数。显示语句放在中断服务函数内,程序清单如下:/*预处理*/#includecodeunsignedcharseven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedcharcp,i; //声明全局变量/*timer0中断服务函数*/voidtimer0_isr(void)interrupt1
3、//timer0中断服务函数{TL0=0x78; //TL0重新预置TH0=0xec; //TH0重新预置cp++; //timer0中断1次,变量cp加1if(cp>=200) //中断200次,时间刚好为1秒{cp=0;i++;}if(i==10)i=0;P0=seven_seg[i] //P0输出显示数据}/*timer0中断初始化函数*/voidtimer0_init(void)
4、 {TMOD=0x01; //设置计时器模式控制寄存器,Time0工作在定时方式1TL0=(65536-5000)%256; //TH0预置,60536十六进制高八位TH0=(65536-5000)/256; //TL0预置,60536十六进制低八位 //PT0=1; //设置中断优先次序寄存器IP中的PT0位,Timer0中断优先EA=1; //打开中断总开关ET0=1;
5、 //设置中断允许寄存器IE中ET0的位,开启中断小开关TR0=1; //开始计数}/*主函数*/voidmain(void){timer0_init(); //timer0初始化,为中断做好准备P2=0; //采用共阳型数码管,共阳极与P2.0 之间有反向器,需设置P2.0=0while(1); //等待中断}
此文档下载收益归作者所有