ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验三:中断实验

2020-04-18 15:06:45  阅读:249  来源: 互联网

标签:P0 定时器 中断 void 数码管 实验


实验三:中断实验

强调:本文章为新手提供学习参考

实验三:中断实验

编程中使用中断功能来实现数码管静态显示秒表的正计时。

使用的开发板原理图及本次使用的模块

进取者STC15开发板原理图

进取者stc15开发板
本实验采用拓展口连接数码管的八个引脚实现功能

数码管

在这里插入图片描述数码管正面

在这里插入图片描述
数码管背面

在这里插入图片描述
数码管内部原理
以共阳极数码管为例,从图中可以看出,数码管由8个LED组成,共阳极他们的阳极接在了一起,只要外部给一个VCC就可以通过控制他们的阴极来控制数码管显示
共阳极代码:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
对应0 1 2 3 4 5 6 7 8 9 a b c d e f十六个符号
共阴极代码:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
对应0 1 2 3 4 5 6 7 8 9 a b c d e f十六个符号

备注:

本次实验使用的是P0_0到P0_78个管脚,实际开发板中用杜邦线接出来(图片来源网络,侵删)

模块1个脚提供高电平,其余脚与单片机P0口连接

中断

在这里插入图片描述
STC15w4k58s4与STC15W4k32s4为一个系列,只不过io口有点区别,K32s4的有62个io口,k58s4有48个io口,其余没有太多的差别,单片机所带的中断请求源如图示,有很多,所以说STC15系列芯片是很强大的,

在这里插入图片描述

这是中断执行的内部结构图,通过开关选择不同的模式,在此就不多说了,因为中断这些代码可以直接用相关软件生成。
在这里插入图片描述
本次使用到的就是T0的定时器中断,我们按照datasheet所示编写好代码就可以使用定时器中断功能了。

(摘自STC15datasheet)

实验三的代码部分

#include <reg51.h>	//调用reg51头文件	

#define	uchar	unsigned char//定义uchar类型为unsigned char	储存大小1字节,值范围:0 到 255
#define uint unsigned int  //定义uint类型为unsigned int 储存大小2或4个字节,值范围:0~65536
	
uchar i,j,k;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//一维数组表示数码管显示“0~F”共阳极

void display()//显示函数
{
		P0=tab[j];//P0等于对应的一维数组中值,从而数码管显示相应的数值,例如:j=1,P0=tab【1】=0xc0;
	if(j==10)//对j判断,使j始终保持在0~10循环。
	{
		j=0;//当j=10时,让j重新变为0,重新开始累加。
	}
}
	
void InitTimer0(void)//使用定时器0
{
    TMOD = 0x01;//选择为定时器0模式,工作方式1,仅用TR0打开启动
    TH0 = 0xFC;//给定时器赋初值,定时1ms
    TL0 = 0x18;
    EA = 1;		//打开定时器0中断允许
    ET0 = 1;  //打开总中断
    TR0 = 1;  //打开定时器		
}

void main(void)//主函数
{

		InitTimer0();//定时器初始化
		while(1)//死循环
		{
			display();
		}
	
}

void Timer0Interrupt(void) interrupt 1//定时器0中断函数
{
    TH0 = 0xFC;//给定时器赋初值,定时1ms
    TL0 = 0x18;

		i++;//每过1ms,i+1一次
		if(i==100)//当i达到100时,及经历了0.1s,进入判断
		{
			i=0;//让i恢复初值
			k++;//每次i=100时,k+1一次
			if(k==10)//经历十次k+1,及到达1s
			{
				k=0;//让k恢复初值
				j++;//给j+1,使其显示改变。
			}
		}
}

打字不易,各位少侠点个赞吧,感谢!!!

标签:P0,定时器,中断,void,数码管,实验
来源: https://blog.csdn.net/qq_45284276/article/details/105577357

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有