———————————————————————————————————————————— D/A转换器 CS=0.ILE=1时,WR1信号有效时将数据总线上的信号写入8位输入锁存器 XFER=0时,WR2信号有效时将输入寄存器的数据转移到8位DAC寄存器中,输出量随之改变 工作方式: 直通工作方式(如下实验) 当某一根地线或地址译码器的输出线使CS有效(低电平),ILE高电平,同时WR1/XFER/WR2为低电平时,单片机数据线上的数据字节直通D/A转换器,被转换并输出 CS.WR1接引脚,通过…
最近帮别人设计一个毕业设计,做一个多种信号发生器(四种波形:方波.三角波.锯齿波.梯形波),现在贴上来给大家参考,如果有错误的地方,望指出~ 下面先贴上仿真的电路图(仿真的软件是Protuse,上传一个大点的图,方便大家看的清楚点): 原件清单:STC89C52单片机X1.DAC0832转换器X1.12M晶振X1.电容22pfX2.10uf的电容X1.1nf陶瓷电容X1.独立按键X4.10千欧排阻X1.10KΩ电阻X5.LM358                 单电源运放X1.仿真就需要这些原…
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储空间的大小,2*4K=8K 40:晶振最高频率40MHZ,单片机工作的速度 C(commercial):商业级.(还有I(industry):工业级)区别在于温度可用范围,商业级:0~85℃,工业级:-40~125℃,还有军品级:-55~160℃(这个不确定). PDIP:封装形式,双列直插式 07…
技术:51单片机.光敏传感器.PCF8591.DHT11.DS1302.OLED显示屏   概述 项目My-Clock是一个环境监测时钟,接入光敏传感器和温湿度传感器监测环境信息,加入DS1302模块用于获取时间,并用OLED显示屏进行实时显示. 详细 代码下载:http://www.demodashi.com/demo/14761.html 一.My-Clock简介 项目My-Clock是一个环境监测时钟,接入光敏传感器和温湿度传感器监测环境信息,加入DS1302模块用于获取时间,并用OLED…
一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几天,算起来基本弄了3个多星期吧.不多说,总结总结. 二.开发数据准备 应用中主要的数据是单片机的汇编指令,我主要用XML文件来储存数据,没有使用SQLLite数据库,数据格式如下图: xml文件的数据是我手输入的,所以这是比较烦的.(可能有更简洁的办法获取数据). 而xml文件每个每个节点对应实例,…
51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using 0 是第0组寄存器: using 1 是第1组寄存器: using 2 是第2组寄存器: using 3 是第3组寄存器:51单片机内的寄存器是R0--R7(不是R0-R3)R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1.RS0位决定的.using 0时设置 RS1=0,RS…
一.前言 昨天更新了10天前上架到windows8.1平台和windowsphone平台的通用应用“51单片机汇编”,总要是添加了动态磁贴以及ListView的Groupstyle应用.下面主要主要复习下如何利用后台任务添加动态磁贴 二.动态磁贴 动态磁贴也是前几天才掌握的,基本内容可以查看我之前的有关动态磁贴博文.在这里我理顺在我的应用中,利用backgroudtask动态更新磁贴. step1:首先先添加backgroutask组件.如图一.二 step2: 将backgroundtask引…
目录: 单片机的大致介绍         1-1.通俗定义         1-2.51系列产品         1-3.标号意思         1-4.引脚介绍         1-5.用C语言开发的部分信息 1.单片机的大致介绍    1-1.通俗定义    1-2.51系列产品    1-3.标号意思 附加关键字:芯片上标号对应温度范围.芯片封装(DIP\PLCC\QFP\PGA\BGA\CBGA\)    1-4.引脚介绍 通用的为40引脚的,但是也有其他数量引脚的. >_<&quo…
>_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /***********************************************************************************************************/ //HC-SR04 超声波测距模块 DEMO 程序 //晶振:11.0592 //接线:模块TRIG接 P1.2 ECH0 接P1…
堆栈指针(SP,Stack Pointer),专门用于指出堆栈顶部数据的地址. 那么51单片机的堆栈在什么地方呢?由于单片机中存放数据的区域有限,我们不能够专门分配一块地方做堆栈,所以就在内存(RAM)中开辟一块地方,用于堆栈,但是用内存的哪一块呢?还是不好定,因为51是一种通用的单片机,各人的实际需求各不相同,有人需要多一些堆栈,而有人则不需要那么多,所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分了,把分的权利给用户(编程开发者),根据自已的需要去定吧,所以51单片机中堆栈的位置是…
1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候,因为内部电源直接通过V1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因. 2.P0作为一般端口时,V1就永远的截止,V2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平:截止时,P0口就没有输出了,(注意,这种情况就是所谓的高…
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编址的64K的程序存储器地址空间(MOVC)2.256B的片内数据存储器的地址空间(MOV)3.以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号. 程序内存ROM 寻址范围:000…
很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1  = 0x90; 也就是说,到底大写,还是小写,就是在这里面决定的.这就说明,如果你要用小写,就得在头文件中改为小写.其实它都是为了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成了0x90). 下面是一个标准的C51头文件REG52.H: (此文件一般在C:\KEIL\C51…
应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错.这种情况下,用计时器往往有点小题大做.而在极端的情况下,计时器甚至已经全部派上了别的用途.这时就需要我们另想别的办法了.    以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的.比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:     …
51单片机的4个控制引脚,其中一个引脚是复位引脚(RST/Vpd),RST是复位引脚,当RST输入端保持2个机器周期以上高电平时,就实现复位. ALE/PROG是地址锁存允许信号输出端,在读写外部存储器时,用于锁存低8位地址信号.当单片机正常工作后,ALE以时钟振荡频率的1/6输出固定的脉冲信号.第二功能PROG是对片内带有4K EPROM的8751固化程序时,作为编程脉冲输入端. PSEN 是片外程序存储器的读选通信号,低电平有效,CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,…
最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”.在有过单片机中断编程经历者都知道当EA=1,ET0=1的条件下,满足TF0=1时,如果在此期间没有更高优先级的中断执行的情况下定时器中断0必定会产生中断响应.而在我所编写的程序中仅使用了定时器中断0,一个中断也就谈不上存在优先级问题.经过我对自己程序的检查并对各教材中断程序对比发现我的程序中的一个问题:由于中断的不可控性决定其跳出中断返回主程序的不确定,…
//************************************************************************************* //**程序名称:51单片机实现对24C02进行页写.顺序读取并显示验证 //**编写人:**** //**修改人:**** //**程序目的:熟悉I2C总线协议,实现51模拟I2C时序和24C02通信 //**功能描述:51单片机将8个字节数据写入24C02的一页中,然后顺序读出,每隔1秒送P0口LED显示 //**其他…
关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时1读出的就是1,外部没有输入IO处于阻塞读不出电平状态. 用处:感觉在信号处理方面用的比较好,比如在读取一段一段的波形,可以清晰的知道什么时候是0信号,什么时候是1信号,什么时候是没有信号的. 类比:51单片机找不到类似的输入模式   2.上拉输入 上拉输入和浮空输入的区别是,上拉电阻的开关关闭了,…
引言 PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入.一个输出和一个串行I2C 总线接口.3 个地址引脚A0.A1 和A2 用于编程硬件地址,允许将最多8 个器件连接至I2C总线而不需要额外硬件.PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用,这篇文章是介绍IIC通信在ADDA转换芯片PCF8591中的应用. 关于IIC IIC总线通信协议的介绍在"基于51单片机IIC通信的AT24C02学习笔记"有详细的介绍. 关于…
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能作为I/O口(P1.0.P1.1以外): P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线: P3口除了作为普通I/O口之外,其每个引脚都有第二功能. I/O端口具有以下特性: ① 端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令…
上一篇链接 http://www.cnblogs.com/yangfengwu/p/8743936.html 这一篇说一下自己板子的51单片机自动冷启动下载原理,我挥舞着键盘和鼠标,发誓要把世界写个明明白白,突然想起来第一行代码的那句话了. 当接上usb线连接到电脑上的时候 看一下RTS引脚的变化,这个信号是连络信号 所以很多用继电器实现的自动下载在接上电的时候会先啪啪啪的动作一下继电器 说一下当点击下载的时候CH340G的RTS和DTR引脚的变化 先说一下平时RTS和DTR都是高电平,正常的串…
一.C语言相关 Q1:sbit与sfr代表是什么?有什么作用? Q2:#define OSC_FREQ  22118400L这句宏命令里的“L”是什么意思? Q3:我粘贴了别人的代码,怎么发现没有unit这个类型? Q4:为什么好多变量都是char类型?它不是字符类型吗?怎么可以用来计数? Q4.1:51单片机中的char,int,long,float,double各占多少个字节,取值范围多大? Q5:unsigned char data是什么数据类型? Q6:void timer() inte…
51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同类文章X #include "reg52.h" #include "intrins.h" #include "math.h" #include "stdio.h" sbit BT_SND =P1^; sbit BT_REC =P1…
PDF文件有特定的格式要求,本以为.TXT与.PDF之间可以相互转换,只需要修改后缀名就可以了,然而事实并非如此. 如下为.PDF文件打开的编码显示. 如果需要创建PDF文件,只需要按照PDF的编码格式对文件进行编码即可实现PDF文件的生成与追加修改操作. 已经实践试过,能够正常的在51单片机,STM32的U盘以及SD卡上生成PDF文件. 相对于PDF库的移植这种操作最为简单. 如下所示为根据PDF编码自己生成的PDF文件…
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; } return 0; } 1.1 C语言常用的预处理命令 typedef的使用 typedef unsigned int u16; typedef unsigned char u8;`后面需要加上分号` 重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的…
星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编译器是标准C语言,可以编译Intel MCS51架构的微处理器,也可以编译STM8等常见MCU.我们要在linux上搭建51开发环境,首先要搭建SDCC编译环境. 其主页是:http://sdcc.sourceforge.net/ ,下面是SDCC的首页简介: SDCC is a retargett…
在Linux下没有像keli那样好用的IDE来开发51单片机,开发环境只能自己搭建了. 第一步:安装交叉编译工具 a) 安装SDCC sudo apt-get install sdcc b)测试SDCC是否可用,这是个网上找的简单的流水灯代码 test.c, 用来测试 #include "8051.h" #define uint unsigned int #define uchar unsigned char uchar tab[] = {0x01,0x02,0x04,0x08,0x1…
​大部分朋友可能都知道51单片机和stm32单片机也知道一般入门会先学习51单片机在学习stm32单片机会简单一些,但是对于51单片机和stm32单片机的具体区别却不知道了,有些人觉得没必要,但是我个人认为只有在你搞懂了其中的差异之后对于其自身学习是有莫大的好处的. 下面我们就来进入今天的主题 单片机简介 单片微型计算机简称单片机,简单来说就是集CPU(运算.控制).RAM(数据存储-内存).ROM(程序存储).输入输出设备(串口.并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,C…
In Doing We Learning 在操作中学习.如果只是光看教程,没有实际的操作,对编程语言的理解很空泛,所以决定从单片机中学习C语言. #include<reg52.h>                 //包含的头文件. sbit LED = P0^0;                         //这里就是对P0寄存器进行位操作.相当于对P0^0位赋予了一个新的名字,LED.实际上这一块可以包含在头文件中.避免重复操作.sbit ADDR0 = P1^0;sbit ADDR…
1.int===2个字节 2.sfr===特殊功能寄存器,也是一种扩充数据类型,占用1个内存单元,利用它可以访问51单片机内的所有特殊功能寄存器. sfr P1 = 0x90;/////////这一句定义P1为P1端口在片内的寄存器. 3.sfr16===16位特殊功能的寄存器.用于定时器T0,T1 4.sbit===可录址位,也是一种扩充数据类型.利用它可访问芯片内部RAM中的可寻址位或特殊功能寄存器的可寻址位. sfr P1 = 0x90;/////////因P1端口的寄存器是可寻址位的,所…