C51单片机之keil编程入门(一)
编程需结合原理图来理解
附上单片机原理图:http://file.elecfans/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<reg52.h>
sbit Dula=P2^6;//段选--控制亮出什么数字
sbit Wela=P2^7;//位选--控制哪一个数码管亮
int main()
{
Wela=1;//锁存端为高电平时,其输入端和输出端置通
P0=0xfe;
Wela=0;//锁存端为低电平时,输入端和输出端断开,输出端保持原来的值不变
Dula=1;
P0=0x06;
Dula=0;
while(1);
}
更多推荐
C51单片机之keil编程入门(一)
发布评论