C51单片机之keil编程入门(一)

C51单片机之keil编程入门(一)

编程需结合原理图来理解
附上单片机原理图:http://file.elecfans.com/web1/M00/56/5B/pIYBAFs9rlmAcK6tABHJTk7qMTw228.pdf

内容提要:

  • 单片机组成
  • 点亮一个发光管
  • 流水灯设计
  • 蜂鸣器发声
  • 数码管静态显示

51单片机组成

  • CPU:由运算和逻辑控制组成,同时还包括中断系统和部分外部特殊功能寄存器;
  • RAM:用以存放可以读写的数据。如运算的中间结果、最终结果以及欲显示的结果;
  • ROM:用以存放程序,一些原始数据及表格;
  • I/O口:四个8位并行I/O口,即可用作输入,也可用作输出;
  • T/C:两个定时/记数器,既可以工作在定时模式,也可工作在记数模式;

1.点亮一个发光管

//通过位操作点亮发光管
include<reg52.h>
sbit D1=P1^0;//sbit位定义,P1^0表示P1口的第一位(从0开始计数)
int main()
{
	D1=0;//单片机的P1.0端口输出低电平时发光管亮,51单片机默认上电后所有I/O口为高电平
}
//直接对P1口进行总线操作
include<reg52.h>
int main()
{
	P1=0xfd;//0x在C/C++中表示十六进制,fd即1111 1101
	        //1111 1101为点亮P1口上的第二位(P1.1)上的发光管,P1.0为最低位,P1.7为最高位
}

先下载程序再打开单片机电源

2.流水灯设计

include<reg52.h>
include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar temp;
void delay(uint n);

int main()
{
	temp=0xfe;
	P1=temp;
	while(1)
	{
		temp=_crol_(temp,1);//C51库函数,功能:将temp循环左移1位
		delay(600);
		P1=temp;
	}
}

//延时函数
void delay(uint n)
{
	uint x,y;
	for(x=100;x>0;x--)
		for(y=n;y>0;y--);
}

3.蜂鸣器发声

include<reg52.h>
sbit beep=P2^3;
int main()
{
	beep=0;
}

4.数码管静态显示

  • 结合原理图理解
  • 用锁存器来实现段选和位选(先控制位选,再控制段选)
  • 锁存器的第11管脚为锁存端
//显示1
#include
sbit Dula=P2^6;//段选--控制亮出什么数字
sbit Wela=P2^7;//位选--控制哪一个数码管亮
int main()
{
	Wela=1;//锁存端为高电平时,其输入端和输出端置通
	P0=0xfe;
	Wela=0;//锁存端为低电平时,输入端和输出端断开,输出端保持原来的值不变
	
	Dula=1;
	P0=0x06;
	Dula=0;
	
	while(1);
}

你可能感兴趣的:(单片机学习总结)