51单片机入门(第三讲)

共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用

WE端为位选端 即选中哪个数码管工作

a,b,c,d,e,f,g等为段选端 即控制数码管上面那个段亮

WELA为位选的锁存端,先打开位选锁存端(给高电平),然后送入相应的值来控制哪个数码管工作然后关闭锁存端(给低电平),然后位选信号就保持住了。

然后打开段选锁存端DULA给高电平,然后送入相应的值给段选端,使得相应的数码管段亮,最后关闭段选端(给低电平),信号保持。

 数码管采用共阴极  这个公共端就是位选端, 所以当你想选择某个数码管工作时 ,就令对应的WE端为0就可以了。

而想控制数码管上的某一段亮的话,因为是共阴极所以就需要给对应的段加高电平。

#include <reg52.h>
sbit wela=P2^7;
sbit dula=P2^6;
void main()
{
		wela=1;  //打开位选锁存端
	  P0=0xfe;  //给p0信号让第一个数码管工作
	  wela=0;   //关闭位选锁存端
	  
	  dula=1;  //打开段选锁存端
		P0=0x7f;  //给p0信号控制 显示数字8
		dula=0;  //关闭段选端
		while(1); //停留在此处
}

实现了让第一个数码管显示数字8

 可以把这16个数字写成一个数组

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

用的时候可以直接 table[0]  table[3]这样调用

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
uchar sum;
uchar code table[]={  //  建立数组  名字为 table
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);  //声明函数
void main()
{
		wela=1;
		P0=0xc0;  //让6个数码管全部工作
		wela=0;
	  while(1)
		{
			for(sum=0;sum<16;sum++)  //循环
					{
							dula=1;
						  P0=table[sum];   //让P0口依次接收16个数字
						  dula=0;
						  delay(1000);   // 延时
					}
		}
}
void delay(uint z)   //延时函数
{
		uint x,y;
		for(x=z;x>0;x--)
				for(y=110;y>0;y--);
}

中    断

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 01234  用在写中断子程序的后面

void exter0() interrupt 0

 

 定时器

 

 

 

 不可按位寻址    只能 直接对TMOD进行设置

 一般使GATE 为0

 TCON可位寻址

 

 

 

 

 

 

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar sum;
sbit led1=P1^0;
void main()
{
	  TMOD=0x01; //设置工作方式
	  TH0=(65536-50000)/256;//设置初值
	  TL0=(65536-50000)%256;
	  EA=1;  //开启中断总开关
	  ET0=1; //开启定时器0中断开关
	  TR0=1; //开启定时器0
	  while(1); //等待
}

void T0_time() interrupt 1    //中断子程序
{
	  TH0=(65536-50000)/256;
	  TL0=(65536-50000)%256;
	  sum++;
	  if(sum==20)
		{
			  sum=0;
			  led1=~led1;
		}
			
}

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STC51是一款非常常见和广泛使用的单片机,由海上电子公司生产。STC51的全称是STC12C5A60S2,是一款8位的低功耗高性能单片机。它采用MCS-51指令集,具有强大的功能和灵活的扩展性。 STC51单片机入门的第一步是了解其基本原理和架构。STC51采用哈佛结构,具有4KB的内部FLASH存储器和128B的内部RAM。它还具有多种外设接口,包括GPIO、定时器、串口、ADC等。了解这些基本知识是学习STC51的基础。 接下来,我们需要学习如何使用开发工具和编程软件。STC推出了一系列的开发工具和编程软件,其中包括STC-ISP下载器、STC-ISP助手和STC-PROG编程软件。了解如何正确连接硬件并使用这些软件进行编程是非常重要的。 了解STC51的编程语言是必要的。STC51支持多种编程语言,包括C语言和汇编语言。对于初学者来说,建议先学习C语言,因为它更容易上手。可以通过编写简单的程序来熟悉STC51的编程语言和编程技巧。 熟悉基本的输入输出操作和中断是学习STC51的重要一步。STC51具有丰富的输入输出接口,包括数字输入输出口、模拟输入输出口和串口等。了解如何进行输入输出操作和中断处理是开发应用程序的基础。 最后,可以通过实际的项目实践来深入理解和掌握STC51。可以选择一些简单的项目,例如LED灯控制、蜂鸣器控制等,通过实践不断提高自己的能力。 总之,STC51单片机入门需要掌握其基本原理和架构、开发工具和编程软件的使用、编程语言的学习、输入输出操作和中断处理的了解,以及通过实际项目实践来提高能力。希望这些基本知识对你的STC51单片机入门有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值