一、单片机预备知识
(1)、单片机
定义:在一片集成的电路芯片上集成微处理器,储存器、I/O接口电路,从而构成单芯片微型计算机,简称单片机
(2)、单片机内部资源三大指标
1、FLASH (ROM、相当于硬盘)
2、RAM (数据存储器、速度快于RAM)
3、SFR (特殊功能寄存器)
STC 89C52资源
8K FLASH 512字节RAM 32个I/O接口 3个定时器 1个UART(串口) 8个中断源
二、keil软件
1、新建项目:
Project---->New uversion project---->保存---->(自动跳出选择项)芯片选择AT89C52/C51/C55---->跳出选项:copy start up……选择‘是’,该作用是初始化C51内部寄存器地址
2、新建文件:
点击左上角空白页的图标(新建文件)---->保存,后缀名加.c(要注意一个.c一个文件夹,文件夹中同时包含该.c文件中的函数声明)---->右击Sorce Flie Group1---->Add files to Group1
单片机最小系统由四大部分组成:单片机、电源电路、晶振电路、复位电路
三、点亮一个LED发光二极管
1、加10K电阻
2、一般电流3~5mA
3、在单片机的连接电路中:
4、写程序
1、一般包含#include <reg52.h>,该头文件包含寄存器地址
2、写main函数
1>一般要有while(1)
2>P1 = 0x0; //P1为第一个I/O口,对整组I/O接口赋值
3>编译:左端三个
4>编译结果:date = 9.0因为堆栈初始化时占用内存
5>点击小魔术棒按钮,将Xtal(晶振)改为12,Output选项卡将create Hex File勾选
6>烧写程序:STC-ISP
5、delay函数:
1>微妙级函数:
void delay_us(unsigned char t)
{
while(--t); //注意是--t
}
2>毫秒级函数
void delay_ms(unsigned char t)
{
while(--t)
//注意是t--
{
dealy_us(245);
dealy_us(245);
}
}
3>秒级函数
void delay_s(unsigned char t)
{
unsigned char i;
for(i = 0; i < t; i++)
{
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
}
}
四、让LED闪烁
void main()
{
P1 = 0xff; //让灯quanmie
delay_s(1);
P1 = 0x0;
delay_s(1); //让灯全亮
}
五、一个.c一个文件夹注意点
1、写头文件规范:
#ifndef __LED_HH__
#define __LED_HH__
extern void delay_us(unsigned char t);
……
#endif
2、添加相对目录
点击魔术棒---->选择C51标签---->点击Include path
3、点击help然后查询可以查阅相关函数
六、七段共阳数码管
共阴:负极接到一起
共阳:LED阳极接到一起
七、8位共阴数码管:
1、锁存器置1通,置0截断;
1、锁存器置1通,置0截断;
2、共阴极的位选应为0x0;段选应为0xff;共阳反之
3、定义单独I/O口
sbit duan_s P2^0;
sbit wei_s P2^1;
4、锁存器锁住状态:
SEGPORT = 0x0;
wei_s = 1; //打开位锁存
wei_s = 0; //关闭位锁存