《单片机控制技术》课件——任务5.pptx
主讲教师任务5-1简易秒表设计单片机控制技术(C语言版)
任务导入0151单片机内部定时器02程序设计03举一反三04
一、任务导入PARTONE01
用单片机控制两个LED数码管,采用静态连接方式,要求两个数码管显示00~99计数,时间间隔为1s。任务要求
两个共阳极数码管的段码分别由P1口和P2口控制,公共端接高电平。系统采用12MHz晶振硬件电路
二、51单片机内部定时器PARTTWO02
T0、T1:两个16位的计数器TMOD:方式寄存器1.选择4种工作方式2.选择定时/计数3.决定启动方式TCON: 控制寄存器1.启动控制2.计满溢出控制
TMOD(89H)寄存器格式GATE(门控位)010TR1=1启动定时器,不受INT1控制TR1=1,INT1=1共同启动定时器? C/T(功能选择)1定时器计数器? M1M0(工作方式)T1T076543210GATEC/TM1M0GATEC/TM1M0功能工作方式M1M013位计数器方式00016位计数器方式1018位计数器,初值自动重装方式210分成两个8位计数器,仅用于T0。T1停止使用方式311
TCON(88H)寄存器格式和定时计数器无关分别控制T0、T1的启动与溢出TR0=0//位操作指令,给TR0位清0中断系统中才使F1TR1TF0TR0T0启动位TR0=1,启动T0工作TR0=0,停止T0工作T1启动位TR1=1,启动T1工作TR1=0,停止T1工作
TCON(88H)寄存器格式while(!TF0);TF0=0;//查询TF0,这是查询方式的应用//如果计满溢出,将TF0清076543210TF1TR1TF0TR01计数溢出,硬件自动置10中断方式:硬件自动清0查询方式:软件清0
三、程序设计PARTTHREE03
定时时间与计数初值定时时间与计数溢出定时1秒溢出查询、中断定时器编程步骤:定时器初始化(设置工作方式)、初值计算和设置、启动定时器计数、计数溢出处理软件设计思路
用单片机定时器T1的工作方式1编制1s延时程序,假定系统采用12MHz晶振,T1的工作方式1定时时间为50ms,再循环20次即可定时到1s。voidtimer_1()interrupt3//T1的中断类型号为3{TH1=(65536-50000)/256;//重新设置T1计数初值高8位TL1=(65536-50000)%256;//重新设置T1计数初值低8位count++;//50ms计数器加1if(count==20)//1s时间到{count=0;//50ms计数器清0miao++;//秒计数器加1if(miao==100)miao=0;//miao计数到100,则从0开始计数}}溢出中断处理
中断源n外部中断00定时器01外部中断12定时器13串行口4中断服务程序以函数形式存在;中断函数定义语法如下:void函数名()interruptn
#includereg51.h//包含头文件reg51.h,定义了51单片机的专用寄存器unsignedcharcount=0;//对50ms定时时间进行计数unsignedcharmiao=0;//秒计数器voiddisp(unsignedchari){unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定义0~9显示码,共阳极数码管P1=led[i/10];//显示i高位