单片机
一:基础概念
一:单片机最小系统
单片机:电源+时钟(晶振)+复位 //实现的最小组件
电源:5V直流
时钟(晶振):决定系统运行的速率 一般12M(不超过50M),因为过快导致稳定性,抗干扰性能下降,
分为分频和倍频,一般都是分频(1/(2*6)
分频)
复位:电平信号(高/低) 2种:先上升沿,在下降沿; 先下降沿,后上升沿
原理图:表示器件的逻辑连接关系
PCB:表示器件物理连接关系
二:RAM/ROM
芯片自带
RAM :随机存储器 (访问速度快) 4kb
//掉电数据丢失
ROM :只读存储器 (访问速度慢) 100~200kb
//掉电数据不丢失
三:发光二极管
单个二极管要求电压:0.5v~0.7v
一般给1v~2v
电流:10mv~MAX
四:流水灯
#include <reg51.h>
void delay_ms(unsigned int num)
{
unsigned char i,j;
while(num--)
{
i = 2;//看具体晶振大小
j = 199;
}
do
{
while(--j);
}while(--i);
}
void main(void)
{
unsigned char dat = 0;
while(1)
{
P2 = 255 - dat++; //共阳极
delay_ms(500);
};
}
五:显示数字
#include <reg51.h>
void delay_ms(unsigned int num)
{
unsigned char i,j;
while(num--)
{
i = 2;
j = 199;
}
do
{
while(--j);
}while(--i);
}
void digit_select(unsigned char digit)
{
unsigned char num = P2;
num &= ~(0x7 << 2); //22 23 24 控制
num |= (digit << 2);
P2 = num;
}
unsigned char array[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void digit_show_num(unsigned long num)
{
unsigned char digits[8];
int i = 0;
for (i = 7; i >= 0; i--) {
digits[i] = num % 10;
num /= 10;
}
while(1)
{
for(i=0;i<8;i++)
{
if(digits[i] != 0)
{
digit_select(7 - i);
P0 = array[digits[i]];
delay_ms(2);
}
}
}
}
void main(void)
{
digit_show_num(65536); //51单片机是8位系统,所以要long int
}