单片机51 day46
单片机
一:基础概念
一:单片机最小系统
单片机:电源+时钟(晶振)+复位 //实现的最小组件
电源: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
}