




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例8:秒表设计内容:
用6个数码管组成一个秒表,可以以1S为时间间隔,可从0计时到999999。设计思路:使用定时器T1,每1ms产生一次中断,每次产生中断,就要自动跳到中断子程序去执行,所以中断子程序要完成这样的功能:每隔1S,将数码管要显示的数据,赋给P0口,用P0口控制6个数码管去显示的内容,故中断子程序是本程序的核心内容。设计步骤:1、因为数码管要显示0-9,故定义数组number[]uint8number[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};number[]中存放的是0-9的段选码,且P0=number[0],数码管显示的是0、P0=number[1],数码管显示的是1,以此类推。规律:数组的下标是什么,数码管就显示什么。2、定义数组a[6],让a[0]-a[5]分别存放6个数码管要显示的数据的各位。例如:计数到321时,也即数码管要显示321,则应让a[0]=1,a[1]=2,a[2]=3。将这些值分别作为number[]数组的下标,例如:number[a[0]],也即number[1]=0XF9,将其赋给P0口,同时打开相应数码管,就会使相应数码管显示数字1。通过refresh函数,将数组a[6]的6个元素分别通过相应的数码管“同时”进行显示。3、定时器初始化,分三步:设置TMOD值;设定初始值(1ms);打开定时器4、中断初始化:打开T1中断;打开总中断。5、编写中断子程序6、编写refresh函数,以便让数码管同时(看上去)显示#include<reg52.h>typedefunsignedcharuint8;typedefunsignedintuint16;typedefunsignedlonguint32;codeuint8number[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//将number[]中数值赋给P0口时,可让数码管对应显示{0,1,2,3,4,5,6,7,8,9}uint8a[6];//定义一个数组,使a[0]显示第一位数码管的值,a[1]显示第二位数码管的值,以此类推
uint16counter=0;sbitA0=P1^0;sbitA1=P1^1;sbitA2=P1^2;sbitE3=P1^3;sbitENLED=P1^4;voidtimer1_init()//定时器1初始化子程序{ TMOD|=0X10;//通过按位或、按位与的方法设置TMOD中T1的值,不改变T0 TMOD&=0XDF;
TH1=0XFC;//定时器1初始化,设置初始值,定时1ms TL1=0X67;
TR1=1;//打开定时器1}voidint_init()//中断初始化(initialize){ ET1=1;//打开T1的中断允许位,可进行位操作
EA=1;//打开中断总控制位
}voidrefresh(){staticuint8j=0;//static为静态变量,是属于局部变量的一种,但只有第一次赋值有效
switch(j){case0:A2=0;A1=0;A0=0;j++;P0=number[a[0]];break;//打开第一个数码管,让其显示个位
case1:A2=0;A1=0;A0=1;j++;P0=number[a[1]];break;//打开第二个数码管,让其显示十位
case2:A2=0;A1=1;A0=0;j++;P0=number[a[2]];break;//打开第三个数码管,让其显示百位
case3:A2=0;A1=1;A0=1;j++;P0=number[a[3]];break;//打开第四个数码管,让其显示千位
case4:A2=1;A1=0;A0=0;j++;P0=number[a[4]];break;//打开第五个数码管,让其显示万位
case5:A2=1;A1=0;A0=1;j=0;P0=number[a[5]];break;//打开第六个数码管,让其显示十万位
default:break;}}main(){
ENLED=0;//设置74138的使能端,从而使其正常工作
E3=1;
timer1_init();//调用子函数,对定时器1初始化
int_init();//调用子函数,进行中断初始化
while(1);//耗时,从而可以每1ms中断一次}voidinterrupt_timer1()interrupt3//中断函数interrupt3,3是中断标号{ staticuint32sec=0;//定义计数数值sec并初始化
TH1=0XFC;//设置定时器初值
TL1=0X67; counter++;//定时器每1ms产生一次中断,counter加1
if(counter==1000)//当1S时
{ sec++; counter=0; a[0]=sec%10;//a[0]保存sec的个位
a[1]=sec/10%10;//a[1]保存sec的十位
a[2]=sec/100%10;//a[2]保存sec的百位
a[3]=sec/1000%10;//a[3]保存sec的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省青桐鸣2024-2025学年高二下学期3月联考 数学人教版【含答案】
- 潍坊食品科技职业学院《互动光媒与空间》2023-2024学年第一学期期末试卷
- 山东省临沂市临沂市蒙阴县达标名校2025年中考物理试题命题比赛模拟试卷(13)含解析
- 江西科技师范大学《万物互联的通信时代》2023-2024学年第二学期期末试卷
- 内蒙古机电职业技术学院《典型优化问题的模型与算法》2023-2024学年第二学期期末试卷
- 山西省临汾市古县2024-2025学年数学三下期末调研试题含解析
- 嘉兴南洋职业技术学院《BIM技术与应用C》2023-2024学年第二学期期末试卷
- 上海市上外附中2024-2025学年高三第一次段考物理试题含解析
- 厦门市重点中学2024-2025学年招生全国统一考试仿真卷(十二)-高考英语试题仿真试题含解析
- 江苏省南京玄武区重点中学2025届初三英语试题下学期第一次月考试题含答案
- 《中外建筑史》课程标准
- 这个杀手不太冷解析
- 造口袋技术要求
- 国家开放大学(江西)地域文化(专)任务1-4试题及答案
- QCR 409-2017 铁路后张法预应力混凝土梁管道压浆技术条件
- 南师地信培养方案
- 采购工作调研报告(3篇)
- 10KV高压开关柜操作(培训课件PPT)
- 希尔国际商务第11版英文教材课件完整版电子教案
- 《学弈》优质课一等奖课件
- 2023年6月大学英语四级考试真题(第1套)(含答案)
评论
0/150
提交评论