51单片机学习随笔(2)
来源:互联网 发布:饮食通软件 编辑:程序博客网 时间:2024/05/17 02:21
3.单片机最小系统组成
单片机+电源+晶振+复位电路
4.机器周期(运行速度)
时钟周期,一般也称振荡周期(如果晶振的输出没有经过分频就直接作为cpu的工作时钟,则时钟周期就等于振荡周期),即CPU的晶振的工作频率的倒数,是计算机中最基本的、最小的时间单位。对于单片机来说,时钟周期是单片机的基本时间单位。
机器周期是指CPU完成一个独立操作所需要的时间,12个时钟周期是一个机器周期。
对于11.0592M的晶振来说,一个机器周期为:1/11.0592*12≈1.085um。
5.点亮led流水灯
点亮led流水灯是学习使用51单片机的第一步,也是大多数人学习51单片机收获的第一份成就感吧。
LED灯实际上就是发光二极管的简称,普通发光二极管的工作电压一般是1.6v~2.1v,阻值为150Ω~3000Ω。
这是我的学习板上led灯模块的原理图:
这8个LED灯对应主控芯片上P10~P17这8个引脚,是共阳极接法,低电平点亮,点亮方法常用有两种:
①用特殊功能位声明,例如声明led1:sbit led1 = P0^1,则led1 = 0便是亮,led1 = 1便是灭;
②用寄存器P0直接控制8个led流水灯,P0由两个十六进制数表示对应8个二进制数这八个二进制数由高到低对应led8~led1,所以可以通过给P0赋值来控制led灯
如 P0 = 0xff就是全灭,P0 = 0x00就是全亮
可以通过for函数一类控制依次亮灭设计成成跑马灯,例如:
#include <reg52.h>#include <intrins.h>unsigned int a;unsigned int b;unsigned int c;void main(){ c = 0xfe; P1 = c; a=10000; while(a--); while(1){ for(b=0;b<8;b++) { c = _crol_(c,1);if(c!=0xfe){ P1 = c; a=10000; while(a--); } } for(b=0;b<8;b++) { c = _cror_(c,1); P1 = c; a=10000; while(a--); } }}
6.使用led数码管显示
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
LED显示器工作方式有两种:
①静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
②动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
我的学习板上的led数码管模块原理图为:
这是四位共阳极数码管四个位选端对应P20~P23,每位数码管由a、b、c、d、e、f、g、h8个led灯组成通过P0^0~P0^7等8个引脚控制
控制方法为先选位选端,然后通过P0控制显示的数字,例如让第一位显示6:
#include<reg52.h>sbit we1 = P2^0;void main(){ while(1){ we1 = 0; P0 = 0x82; while(100--); we1 = 1;}}
- 51单片机学习随笔(2)
- 51单片机学习随笔(1)
- 51单片机学习随笔(3)
- 学习51单片机杂记2
- 单片机学习笔记--51单片机
- httpclient 4.5.2 学习随笔(2)
- mysql存储过程学习随笔(2)
- HttpClient 4.5.2 学习随笔(1)
- httpclient 4.5.2 学习随笔(3)
- httpclient 4.5.2 学习随笔(1)
- opengl学习随笔2
- 英语学习随笔(2)
- Linux学习随笔(2)
- 暑假学习随笔2
- JAVA学习随笔2
- jmeter学习随笔2
- spring学习随笔2
- 51单片机 学习之旅[2] 数码管
- 字符串的交换,, 大神与我的作品有差距。等我成为了指针之王再来干他!!!!
- NOIP2017 赛前集训
- 51nod 1596 搬货物
- C语言中函数之指针参数
- python 通过pip生成requirements.txt,以及通过该文件导入依赖库
- 51单片机学习随笔(2)
- Axure打包html
- 以工作和任务为中心的组织设计,只能制结构和团队
- Oracle之分区表与全局索引和局部索引
- 【Maven】使用Eclipse创建Maven项目(五)
- 带缓冲区的输出流(写)案例2
- Solidthinking Evolve&Inspire 2017官方版下载附安装教程
- Android内存查看(2)
- Quick Sort篇