如何建设网站兴田德润怎么样,wordpress大前端dux-plus,wordpress 绿色主题,网站访客抓取更多单片机学习笔记#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…更多单片机学习笔记单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8. 矩阵键盘按键检测单片机学习笔记 9. 8×8LED点阵屏单片机学习笔记 10. 中断系统理论单片机学习笔记 11. 外部中断 目录
0、实现的功能
1、Keil工程
1-1 什么是定时/计数器及用处
1-2 如何使用单片机的定时/计数器
1-3 定时/计数器相关的寄存器
2、代码实现 0、实现的功能
用T0定时器定时50ms的满1s就数码管显示1到10s时候清零重新定时
1、Keil工程
1-1 什么是定时/计数器及用处 是有两个功能。65535是16位1所以单次计时最大为71.1ms。PWM一般用于调节电机转速、台灯的亮度调节、波形发生器
1-2 如何使用单片机的定时/计数器 启动---TCON模式选择----TMOD查询溢出----TCON的TF位
1-3 定时/计数器相关的寄存器 TR01时启动计数定时器T0加到65535时溢出用软件去一直查询TF0是否为1为1就表示定时结束再用软件清零进行下一次定时 选择模式TMOD。GATE默认为0C/T0为定时器、1为计数器M1和M0确定具体模式共四种。需要注意T0计时器需要设置初值。初值靠设置TH0和TL0 因为16位T0计时器最大从0计到65535也就是能定时71.1ms。但如果想定时10ms就需要设置初值为56319。因为10ms10000us10000us/1.085(一个机器周期)9216也就是定时10ms需要进行9216个机器周期那初值就要从65535-921656319开始。此时TH0DBTL0FF 如果定时到了T0溢出此时TCON寄存器的TF0会为1。这时一直查询TF0是否为1即可
2、代码实现 写一个定时50ms的满1s就数码管显示1s到10s时候清零 #includereg52.h#define uchar unsigned char
#define uint unsigned intsbit WE P2^7;
sbit DU P2^6;uchar code table[] {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f} ;//延时模块
void delay(uint z)
{uint x;uint y;for(x z; x 0; x--)for(y 114; y 0; y--);
}void display(uint i)
{uchar bai, shi , ge;bai i / 100;shi i % 100 /10;ge i % 10;//第一个数码管P0 0xff;WE 1;P0 0xfe;WE 0;DU 1;P0 table[bai];DU 0;delay(5);//第二个数码管P0 0xff; //清除断码让位锁存器哪个都不选WE 1;//位选锁存打开P0 0xfd;//选第二个管WE 0; //关上位选锁存器进入锁存DU 1;//段选锁存打开P0 table[shi]; //亮shiDU 0;//进入锁存delay(5); //延时5ms//第三个数码管P0 0xff; //清除断码让位锁存器哪个都不选WE 1;//位选锁存打开P0 0xfb;//选第三个管WE 0; //关上位选锁存器进入锁存DU 1;//段选锁存打开P0 table[ge]; //亮geDU 0;//进入锁存delay(5); //延时5ms
}//定时器0初始化,定时50ms
void timer0Init()
{TR0 1; //启动定时器0TMOD 0x01;//启动定时器0的工作模式116位定时TH0 (65535 - 46082) / 256; //取65535-46082的高八位TL0 (65535 - 46082) % 256;//取65535-46082的低八位
}void main()
{uchar mSec, Sec;//毫秒和秒的存储变量timer0Init();//定时器0初始化while(1){if(TF0 1)//定时溢出时已过50ms{TF0 0;//软件清零溢出标志位TH0 0x4b;TL0 0xfd;//重新定时50msmSec;//已过了50msif(mSec 20)//如果已经过了20个50ms 也就是1s{ mSec 0;//mSec清零Sec;//秒就加1 }if(Sec 10)Sec 0;//秒就清零}display(Sec);}
} 实物展示