单片机
adlics_r
这个作者很懒,什么都没留下…
展开
-
由VS1003引起的关于LQFP的思考
(在完成MP3的工作工程中,有一个重要模块的就是解码模块。解码模块的重要芯片就是vs1003.由于在原本的图库中找不到原理图和封装,所以在网上找到了一些资料,和大家一起分享)关于vs1003的数据手册vs1003存在两种封装方式在以上的两种封装格式中,最常用的时LQFP-48的贴片型封装。对于LQFP-48的芯片尺寸为:在这个芯片尺寸的基础上,我画出了如下的图原创 2016-09-09 21:54:20 · 455 阅读 · 0 评论 -
AD/DA转换
A/D是模数转换。 有以下的转换: 1.双积分型A/D转换器 2.逐次逼近比较型A/D转换器 3.并行A/D转换器在德飞莱的实验板上用的是PCF8591芯片。 AD/DA是基于IIC基础上的。所以在昨天IIC的基础上,可以写出以下对AD/DA的读和写的操作。#define SUCC 0#define FAIL 1//读操作unsigned char AD_Read()原创 2016-09-21 23:21:51 · 876 阅读 · 0 评论 -
红外遥控器
红外遥控器 工作参数:工作电压:4.8V–5.3V 工作电流:1.7–2.7mA 输出:高电平 接近于工作电压 低电平 小于0.4V#include <reg52.h>#include <stdio.h>#include "./delay/delay.h"#include "./lcd1602/lcd1602.h"unsign原创 2016-09-24 22:53:04 · 403 阅读 · 0 评论 -
集成电路总线IIC
IIC为一个串行总线。单片机和IIC之间相连这数据线(CLK)和时钟线(SDA)。 IIC总线需通过上拉电阻接正电源,总线空闲时,为高电平。注 上拉电阻的作用 1.让引脚在悬空(开漏)的状态下有确定的电平 2.增加驱动电流void iic_start(){ SDA = 1; SCL = 1; delay_us(1); SDA = 0;原创 2016-09-20 22:12:44 · 713 阅读 · 0 评论 -
ds18b20温度传感器
ds18b20:可编程分辨率的单总线数字温度计。 供电电压:3.0V–5.5V 测温范围为:-55–+125摄氏度 测温精度:-10–+85摄氏度 (上下浮动5摄氏度) 在芯片中,有9个字节的暂存器即 0 温度LSB 1 温度MSB 2 TH用户字节 3 TL用户字节 4 配置寄存器(转换精度,9–12位) 5、6、7 保留 8 CRC原创 2016-09-23 20:44:28 · 761 阅读 · 0 评论 -
RTC实时时钟
在德飞莱的板子上,实时时钟应用的是DS1302芯片。 时钟外接晶振,可以算出最准确的一秒钟。 WP置低,写入;置高,读出#define ds1302_sec_add 0x80 #define ds1302_min_add 0x82 #define ds1302_hr_add 0x84 #de原创 2016-09-22 22:18:00 · 475 阅读 · 0 评论 -
LCD1602的使用
LCD1602为5*8的黑白屏。#include <reg52.h>#define LCDPORT P0#define LCD_WRITE_COM 0#define LCD_WRITE_DATA 1sbit RS = P2^4;sbit RW = P2^5;sbit E = P2^6;//写入数据字符void lcd_write(unsigned char byte, unsigned c原创 2016-09-19 20:55:02 · 861 阅读 · 0 评论 -
串口通信
串行通信的传输方式: 单工,半双工,全双工。 51单片机的串口属于全双工通信 异步通信:使用各自的时钟 同步通信:使用相同的时钟采用8N1模式(8个数据位,n0个校验位,一个停止位,一个起始位,其中起始位是通信标准,必须要有)使用串口定时器1不能被使用 其中俩个SBUF的名字相同,地址不同,物理上是独立的。 波特率 = (2^SMOD * fosc)/(32 * 12*(256-x))原创 2016-09-18 11:26:39 · 1225 阅读 · 0 评论 -
外部中断
外部中断的程序和time0、time1的程序差不多: 一、打开外部中断EA = 1;二、设置外部中断触发方式IT0 = 1; //INT0中断请求触发,1为负边沿触发三、打开外部中断函数EX0 = 1; //enable int0四、编写外部中断函数void ISR_Exit0(void) interrupt 0{ EX0 = 0; /* task */原创 2016-09-17 20:37:16 · 365 阅读 · 0 评论 -
键盘——独立键盘和矩阵键盘
1.独立按键按键按下之后,按键的高电平被拉成低电平。 所以对独立按键按下并且弹起的判断: while(1) { if(0 == key1)//有按键按下 { delay_ms(10); if(0 == key1)//确定有按键按下 {原创 2016-09-16 14:32:21 · 3078 阅读 · 1 评论 -
定时器——timer0和timer0
中断法相对于查询法有两个优点:1.节省能量 2.节省时间定时器的使用方法: 1.打开总中断 2.设置定时器的工作方式 3.设置初值 4.打开定时中断 5.打开定时计数对于定时器0的初始化:void timer0(void){ EA = 1;//打开总中断 TMOD |= 0x01;//设置定时器的工作方式 TH0 = (65536-20000)/256;原创 2016-09-15 22:05:49 · 5220 阅读 · 0 评论 -
数码管——8段共阴极数码管
在德飞莱的系统中,数码管的解法是这样接的: 段锁存器:使能端(低电平有效) c = 0时,锁存; c = 1时,传送数据;段选和位选的操作:sbit bit_sel = P2^0;//位选sbit seg_sel = P2^1;//段选unsigned char segdata[16] = {0x3f,0x06,0x5b,0x4原创 2016-09-14 21:17:50 · 16206 阅读 · 0 评论 -
led流水灯的实现程序
led流水灯的实现是目前单片机程序中最容易实现的程序。1.延时的实现 由于人眼的视觉暂留大约在2us左右,所以,在实现流水灯的时候有一个重要的问题——延时。如果不延时,在人眼看来,Led是全亮的。延时有两种方式可以实现: 1.调用intrins.h_nop_( ); //延迟1us2.自己写一个延迟函数/*t>0 && t<255实际延迟2*t+12*/void delay_us(un原创 2016-09-13 21:07:53 · 5681 阅读 · 1 评论 -
LCD12864的基本要点
在日常的学习中我学习了16*2的黑白屏LCD1602,如今在完成MP3的制作时,黑白屏已经不能满足需求,所以要使用彩屏。彩屏我选择使用LCD12864。1.LCD12864的样式 LCD12864是由于此屏由128*64格得名, 2.LCD12864的接法 LCD12864一共有20个管脚,在德飞莱开发板上是这样接的。 彩屏占用了P0口和P2口,所以在使用彩屏时,应尽量减少在P2口和P0转载 2016-09-12 20:30:07 · 5041 阅读 · 0 评论 -
PCF8591
PCF8591是实现AD/DA转换的芯片之一。 在他的数据手册中可以看到12条特点。其中,我觉得最主要的是一下的特点: 通过I2C总线串行输入/输出 所以从上图可以知道,芯片SDL和SCL的接口要接到51单片机上的TXD和RXD的接口上。 此外,还要注意的是在写芯片的控制程序时,要注意PCF8591的地址和控制字。这是手册说明上的内容。 ·地址 I2C总线系统中的每一片PCF8591转载 2016-09-11 23:12:34 · 9934 阅读 · 0 评论 -
us/os-ll实时系统
1.临界代码段 处理时不可分割的代码,不允许任何中断打断 一般都是:EA = 0;/*不可分割的代码段*/EA = 1;2.任务 CPU完全属于自己。 把问题分割成多个任务 task1调到task2时,堆栈中保存当前CPU中task1的信息,指针指向task2 3.任务状态 运行态唯一的来源就是就绪态,运行态可转到所有状态 4.任务切换5.内核 内核负责管理各个任务,或者说原创 2016-09-10 19:47:03 · 2454 阅读 · 0 评论 -
MP3项目的供电问题
原本我们是打算采用跳线的方式,将项目的板子通过电源插针连接到单片机开发板上通过单片机开发板给项板子供电,但是考虑到项目的独立性,觉得这种方法并不是根本的解决的方法,最根本的方法还是让板子有自己独立的电源,所以就开始着手画电源这一个模块通过在网上搜索,主流的供电方式有两种,一种是通过USB,另一种是通过电源芯片,但是这两种方法的电路都不是很容易,对我们来说有一点困难,所以通过询问老师得知了另外一转载 2016-09-26 21:47:43 · 326 阅读 · 0 评论