已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
日志文章列表 2009年06月16日 10:53:12 电子技术学习常用的辅助软件 对于电子学习来说,常用的辅助软件及其功能如下:Protel:绘制原理图、电路板,主要用于电路板绘制以供制板调试电路;版本有很多,目前用得多的有Protes 99SE和PRotel DXP 2004。高版本的操作起来会更简便一些,核心功能上差别不大。PADS(原版本为PowerPCB):电路板绘制软件,相比Protel功能更强大,对于多层板和高速板绘制更合适,于此类似的还有更为强大的Cadence软件。Multisim:电路仿真软件(新版本支持MCU仿真),最大特点是支持实时仿真及拥有大量虚拟仪器。Proteus:电路、单片机仿真软件,主要用于单片机仿真,支持51系列,Z80系列,ARM部分系列,可以与Keil进行连调。PsPICE(新版本叫OrCAD):电路仿真软件,支持SPICE语言建模,适合做电路响应特性参数分析。Keil:不用多说,做单片机的几乎都用过这个软件,51单片机通用编译环境,新版本支持ARM。类别: 技术总结 | 评论(5) | 浏览(521) | 收藏2009年03月29日 11:19:01 给大家分享一个自己写的串口监视程序 使用C#编写的,可以读任意端口(更改端口号里面的端口名称即可),方便监视虚拟端口的数据执行的时候可能需要安装.NET Framework 2.0或更高版本(也可能不需要)。界面图片如图所示:upload=3815程序见附件。串口调试助手V1.1_水剑.rar类别: 技术探讨 | 评论(5) | 浏览(487) | 收藏2009年01月13日 11:09:41 Keil与Proteus安装连接操作(完美版)【转】 1.安装Proteus Version 7.1SET71UP。2.包括安装破解文件MAXIM_LICENCE.lxk。3.安装补丁文件patch,注意要在安装目录下补丁。或者将文件夹BIN下:ARES/ISIS/LICENCE.DLL/PROSPICE.DLL文件夹ELECTRA下:ELECTRA文件夹MODELS下:AVR.DLL/KEYPAD.DLL/LCDALPHA.DLL/LCDPIXEL.DLL/LEDMPX.DLL/MCS8051.DLL/PIC12C5.DLL/PIC12C6.DLL/PIC12F6.DLL/pic16f6.DLL/PIC18.DLL/READOUT.DLL/VTERM.DLL的文件复制到安装目录相应的文件覆盖。4.安装汉化菜单:Proteus 7.01 SP2 ARES的汉化菜单放到Program FilesLabcenter ElectronicsProteus 7 ProfessionalBIN目录下。Proteus 7.01 SP2 ISIS的汉化菜单放到Program FilesLabcenter ElectronicsProteus 7 ProfessionalBIN目录下。5.完成Proteus安装。6.安装keil C518.08 uVision3 setup。7.进入Keil uVision3界面。点File license management打开Keil_lic-v3.2 注册机产生LICO 将其复制填入 NEW LICENSE ID中, 同时复制COMPUTER ID或者通过KEGGEN产生填入 NEW LICENSE ID中。8.Keil 与Proteus连接,连接开始必须在roteus安装目录下 VDM51.dll文件复制到Keil安装目录的 C51BIN 目录中,但新版本中没有,所以必须下载安装补丁vdmagdi.exe,则在Keil安装目录的 C51BIN 目录中有文件:VDM51.dll同时还需下载一破解文件PROSPICE.dll替换Proteus 6 ProfessionalBIN目录下的相同文件(新版本的Proteus可能不需要)。9.修改keil安装目录下 Tools.ini文件用记事本(其它的编辑软件也可以,如Ultra Edit)打开Keil 根目录下的 TOOLS.INI 文件,在C51 栏目下加入TDRV3=BINVDM51.DLL (Proteus VSM Monitor-51 Driver ) ,其中“TDRV3” 中的 “3”要根据实际情况写,不要和原来的重复。10.打开proteus,画出相应电路。在proteus的debug菜单中选中use remote debug monitor 。在keil中编写MCU的程序。 进入KEIL的project菜单option for target 工程名。在DEBUG选项中右栏上部的下拉菜选中 Proteus VSM Monitor-51 Driver。在进入seting,如果同一台机IP 名为,如不是同一台机则填另一 台的IP地址。端口号一定为8000 。11.完成keil C51 uVision2 setup版本号是 7.50a记下安装序列号SN = K1DZP-5IUSH-A01UE, 进入setup目录点击setup.exe进行安装12.一个实际例子:把C:Program FilesLabcenter ElectronicsProteus 6 ProfessionalSAMPLES的8051 LCD Driver”文件夹复制到新建的Proteus文件夹下。运行keil程序,在8051 LCD Driver文件夹下建立一个新的名为8051 LCD Driver工程。单片机的型号选择AT89C52就可以,把LCDDEMO 文件加到Source Group 1组里。点击工具栏的option for target按钮,在出现的对话框里点击Debug,在右栏上部的下拉菜单里选中 Proteus VSM Monitor-51 Driver,还要点击一下Use前面的小圆点。再点击Setting设置通信接口,在Host后面添上,如果你是用的不是同一台电脑,在这里添上另一台电脑的IP地址(另一台电脑安装Proteus)。在Port后面添上8000。点击OK按钮即可。最后把工程编译一下。第五步,Proteus的设置。运行Proteus的ISIS,鼠标左键点击菜单DEBUG,选中use romote debuger monitor。下面我们用鼠标左键点击菜单File,再点击Load Design,导入8051 LCD Driver文件夹下的LCDDEMO.design文件。注意,一定要把keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程指工程的目录,即Proteus的工程文件要和Keil工程的那个文件夹在同一层目录下)。在实现连接调试时最主要的是要修改TOOLS和产生VDM51.DLL。KEIL C51 V805英文版1.点击c51.exe直接安装直到结束,安装路径最好选用默认的c:keil与 原来的老板本放到相同的目录下会自动添加一个新的目录c:keiluv32.第一次运行请先进入file-License Management弹出窗口下输入注册码, 注册码由Keil_lic_v2.exe生成,选择V2选项,生成后复制LIC0内容到keil 弹出窗口的New License ID Code中然后点击Add LIC,注意看看注册后的使 用期限,如果太短可以用注册机重新生成,一般都可以找到30年左右:-)3.复制ccKeilVxx.exe文件到c:keilc51bin下面并运行,以修正0xFD BUG. 至此安装完毕。4.只能注册系统在c盘的uv3.其他盘为系统盘的要麻烦一些。方法如下:先运行Keil_lic_v2.exe,然后运行winhex,进入winhex-tools-open ram-Keil_lic_v2.exe-search-find text c:(共两处)把c替换为你自己的系统盘符,再点generate按钮,就产生正确的注册码。0xfd汉字补丁处理程序中用如下语句:const unsigned char strArr = 数学;结果发现strArr 内容为 0xCA,0xD1,0xA7,真奇怪!凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr=0xCA,0xfd,0xd1,0xa7(用Ultraedit会很方便)。-解决办法-1. 在 CRACK 目录下的 ccKeilVxx.exe (由哓奇工作室开发的0xfd汉字补丁程序),为KEIL C51 所有版本的 0xfd BUG 通用补丁.将其 COPY 到 KEILC51BIN 目录下运行,即可打上修补 0xfd 的补丁( 仅处理了 A51.exe 和 C51.exe )。2. 将 KEILC51BIN 目录下的 AX51.EXE 和 CX51.EXE 文件 COPY 到其他目录,并改名为 A51.EXE 和 C51.EXE ,将 ccKeilVxx.exe 也 COPY 到该目录并运行,即可将该两程序中的 0xfd BUG 去除,将两文件名改回为 AX51.EXE 和 Cx51.exe 再 COPY 回 KEILC51BIN 覆盖原文件,即可消除 MX51 内核 MCU ( 如 P89C699 等飞利蒲MCU )编译为的0xfd BUG。3. 打上补丁后, 可以打开工程压缩包内的 Crack0xfdee.uv2, 修改工程项目中的CPU 选项, 分别选 89C51 (针对 C51.EXE & A51.exe )和 P89C699 ( 针对 CX51.exe &AX51.exe ) 进行编译, 就可以校验 0xfd BUG 是否消除.对于Proteus 7以后的版本,没有VDM51.dll这个文件,因此需要下载vdmagdi.exe补丁来生成VDM51.dll。附件即为该补丁。vdmagdi.rar类别: 单片机 | 评论(8) | 浏览(857) | 收藏2009年01月02日 13:07:36 水剑Multisim讲堂 第一讲器件选择菜单及虚拟仪器菜单说明很早就有想和大家一起学习Multisim和其他仿真软件的想法。趁着元旦放假,和大家一起探讨,算是新年给大家的礼物讲得不好或不对的地方,希望大家补充和指正。先把之前论坛的一些有关Multisim的帖子和资源帖的链接贴出来,方便大家学习交流。Multisim2001教程:/bbs/read-htm-tid-1820.htmlMultisim安装遇到的问题:/bbs/read-htm-tid-2009.htmlMultisim安装软件及破解补丁下载:/bbs/read-htm-tid-70.html电路模拟Multisim入门指导:/bbs/read-htm-tid-2253.htmlMultisim模拟电路仿真教程下载:/bbs/read-htm-tid-1732.htmlMultisim教程及实验:/bbs/read-htm-tid-305.htmlMultisim使用手册:/bbs/read-htm-tid-1310.html下面我来介绍Multisim的器件选择菜单和虚拟仪器菜单的各个选项的基本说明,为了方便大家实际操作,用截图来说明:upload=2941接下来会介绍基本的电路搭建以及仿真。 类别: 技术总结 | 评论(9) | 浏览(596) | 收藏2008年12月23日 10:17:41 关于单片机中断程序 看到论坛有人问单片机中断程序,这里做一些总结。第一、单片机中断程序怎么编写?答:单片机的中断程序对应有相应的中断向量号,例如对于标准51单片机来说,一共有定时器0、1中断,串行通讯中断、外部中断0、1中断。对应的中断向量号分别如下:外部中断00外部中断12定时器0中断1定时器1中断3串行中断4定时器2中断(52系列)5因此可以在头文件中定义中断向量号如下:/Interrupts definiations#define T0_INTERRUPT 1#define T1_INTERRUPT 3#define T2_INTERRUPT 5#define INTERRUPT_EXTERNAL_0 0#define INTERRUPT_EXTERNAL_1 2在Keil C51中定义了关键字interrupt来定义中断函数,需要注意的是中断函数必需是无参数无返回值的。例如假设要定义定时器0中断函数,可以如下定义:void Timer0_ISR(void) interrupt T0_INTERRUPT using 0/定时器中断响应处理注意using 0是可选的,即可要可不要。关于using的使用,论坛的embed写过专门的帖子:using的使用。二、中断函数怎么调用?答:很多初学者都认为中断函数是需要在主函数或其他函数中调用才能执行的,事实上,中断函数是由单片机自行完成调用的。即当有中断发生时,单片机的硬件会保存当前的程序指针(PC),之后自动跳转到中断程序入口执行中断函数代码,执行完之后在返回PC指向的程序地址继续运行之前的代码。类别: 单片机 | 评论(2) | 浏览(883) | 收藏2008年11月20日 18:05:22 轻松搞定液晶LCD1602(转) LCD1602在很多场合都用得到,这里给大家转一个帖帮助大家理解和操作LCD1602首先你要了解LCD1602的工作时序,只有真正了解了,你才可以应用自如.部分引脚功能:upload=2014信号真值表:upload=2015由此可得:一、写指令函数void write_com(unsigned char com)R/W=0; /0:写RS=0; /0:指令E=1; /下降沿 写数据LCD_DATA_PIN=com;E=0;二、写数据函数void write_data(unsigned char data)R/W=0; /0:写RS=1; /1:函数E=1; /下降沿 写数据LCD_DATA_PIN=data;E=0;指令集upload=2016 由上面那些资料我们就可以写出驱动LCD1602的程序,下面我一一讲解:由LCD1602指令集的功能设置我们可知它有两种驱动模式8位数据接口驱动和四位数据接口。由于AVR单片机IO口有限我就讲四位数据接口驱动模式,由于我们很少读LCD1602里面的数据所以我们可以把R/W引脚直接下拉到地,使LCD1602一直处于写状态,没了读状态,判断不了busy情况,只能用延时来等一下,这样又可以省一个IO口,所以共用六个IO口。以下例子釆用ATMEGA16Crystal: 8.0000Mhz定义端口:#define LCD_PORT PORTD#define LCD_DDR DDRD #define LCD_PIN PIND#define RS0#define EN 1#define LCD_DATA (14)|(15)|(16)|(17)#define SETBIT(x,y) (x|=(1y)/set bit y in byte x#define CLRBIT(x,y) (x&=(1y) /clear bit y in byte xx延时函数我就不多说了,直接写出来void delay_1us(void) /1us延时函数 asm(nop);void delay_nus(unsigned int n) /N us延时函数 unsigned int i=0; for (i=0;in;i+) delay_1us();void delay_1ms(void) /1ms延时函数 unsigned int i; for (i=0;i1140;i+);void delay_nms(unsigned int n) /N ms延时函数 unsigned int i=0; for (i=0;in;i+) delay_1ms();设置所需函数一、写指令函数(四线模式数据要分两次写)void write_command(unsigned char com)delay_nus(16);/delayCLRBIT(LCD_PORT,RS); /RS=0SETBIT(LCD_PORT,E); /E=1LCD_PORT&=0X0f; /清高四位LCD_PORT|=com&0xf0; /写高四位CLRBIT(LCD_PORT,E); /E=0com=com4;/低四位移到高四位SETBIT(LCD_PORT,E); /E=1LCD_PORT&=0X0f;/清高四位LCD_PORT|=com&0xf0; /写低四位CLRBIT(LCD_PORT,E); /E=0二、写数据函数(四线模式数据要分两次写)void write_data(unsigned char data)delay_nus(16);/delaySETBIT(LCD_PORT,RS); /RS=1SETBIT(LCD_PORT,E); /E=1LCD_PORT&=0X0f; /清高四位LCD_PORT|=com&0xf0; /写高四位CLRBIT(LCD_PORT,E); /E=0data=data818)serialPuts(Key 1 pressedn); /818=4/5*0x3FFelse if(vol682) /682=2/3*0x3FFserialPuts(Key 2 pressedn);else if(vol341) /341=1/3*0x3FFserialPuts(Key 3 pressedn);else if(vol204) /204=1/5*0x3FFserialPuts(Key 4 pressedn);类别: ARM学习 | 评论(4) | 浏览(979) | 收藏2008年11月02日 14:24:37 单片机入门谈谈我自己的看法 国庆期间写完水剑C51单片机基础讲堂这一系列的内容,又最后根据需要添加了后面的数码管扫描和利用定时器产生PWM波这两讲增加的原因是因为考虑到应用中用得比较多。单片机学习也是如此,主要是拿它来做应用,所以现在市面上看到的很多教材都偏离了单片机学习的初衷。介绍一大堆单片机内部结构,模块内部实现原理等等内容,而在实际应用中这些并不是我们需要考虑的。学习单片机,首先应该把它当作一个控制工具来应用到你的课题中去。汇编也好,C也好,离不开的是编写代码实现你设计的功能。我接触单片机是在大学第三个学期的时候,当时接触的并不是51,而是PIC16F877那款单片机,当时是因为对单片机感兴趣并且学校开设了这门实验选修课,所以就选了这门课。选这门课的时候,没有学过数电,模电也是刚刚开始学。汇编语言更是从来没有接触过。虽然老师说建议大二的学生不要选这门课,因为兴趣,硬着头皮还是选了。为了准备这门课,借了清华那本绿皮的数字电路书,开始学习了基本的门电路,组合电路乃至时序电路的基础知识。同时跑到北航的二手书市买了本实验推荐的教材,李学海编写的PIC单片机基础与提高。每天上自习都会拿出一个小时左右看数电异或是看李学海的书。当时真是对单片机怎么工作,怎么就能跑程序是毫无概念。第一次实验,老师叫我们使用MPLAB的IDE环境,烧写程序到单片机里头跑起来,结果因为机器原因,我的第一次实验以失败而告终。虽然如此,我却得到不少的收获。感谢实验室老师的耐心教导,使我明白了怎么通过IDE环境下载程序到单片机中。接下来是自己写程序实现一些简单的功能。之如读写片内EEPROM,交通灯,数码管扫描,串行通讯,定时器等等。程序自己写的,实验因为第一次往往不成功,补做了很多次,结果很烂,比如交通灯只会用延时实现,定时器原理当时完全没明白,数码管扫描时闪烁得厉害,串行通讯只能发或只能收一个学期下来,不能说入门,只能说对单片机有了大概的了解。形成了单片机具体是个什么东西的这么一个概念:单片机就是通过编写能够在芯片里面运行的程序,进而进行相应控制,完成既定功能的器件。之后开始接触了51单片机,完全是自学,上网找教程,图书馆借书。装Keil软件,不会用,找教程。学会了怎么用Keil进行程序编译,怎么用Keil调试程序。之后又得知了Proteus可以仿真单片机,便下载一个安装,不会用,找教程,自己摸索。最后,果不其然,看着自己写的程序在Proteus跑起来,心里还真是感觉很爽!有了Proteus,相当于有了一个简单的开发板,可以在上面跑一些小程序了。程序写起来也小有规模,从开始的抄程序学习,到后来自己设想一些功能在、编写程序实现,慢慢地,发现自己编写代码的能力在进步,对单片机的学习也有了进一步的了解。总结起来,这期间就是看书(得是好书才行,比如中国电力出版社的M.J.Pont编写的基于时间触发式的嵌入式系统设计就很不错),上网找资料,还有就是上专业的论坛提问,看高手的帖子。简单的学习之后需要做一些时间的东西才能进一步提升自己。很庆幸参加了电子设计竞赛(虽然比赛结果不怎么样)。但是电子设计竞赛给了我们实物去实践,去开发小的项目。期间接触了很多外围器件,比如8279,DDS,ADC/DAC,外部RAM,LCD,IIC器件,SPI器件,单总线器件等等。通过电子竞赛这个平台,提高了自己的同时也发现了很多不足之处,不过,这一过程最重要的一点就是学会了如何阅读器件手册,利用单片机控制外围器件。至此,单片机,也算是入门了。总结一下,我的经验就是选取两三本经典的书籍(一本基础的,一两本本进阶的最好),之后通过查找资料,编写代码,仿真调试,有机会用实验板进行学习开发,做一些实际的东西,你的能力就能得到不断的提升。类别: 学习感慨 | 评论(58) | 浏览(1263) | 收藏2008年11月02日 14:21:12 Show一下自己用C#写的简单的串口收发程序 C#写应用程序确实简单。嘿嘿,Show一下,和串口调试助手比差很远!upload=1582 upload=1583 类别: 技术总结 | 评论(1) | 浏览(592) | 收藏2008年11月02日 14:09:40 水剑C51单片机基础讲堂PDF文档下载 水剑C51单片机基础讲堂PDF文档类别: 单片机 | 评论(3) | 浏览(642) | 收藏2008年11月02日 14:08:31 矩阵键盘扫描 矩阵键盘扫描一般采取行列扫描法。比如先拉低所有列线,拉高行线,之后读取行线状态,如果行线有一行为低,则假设有按键按下,此时再延时20毫秒左右后判断行线的某一行是否仍然为低,若为低则确认有键按下。这时可以进行按键键值判断,即判别在哪一行哪一列有按键按下。判断的方法是通过拉高列线,依次置行线的某一行为低,读取列线值。如果列线有一列为低,则表示按键发生在该行,进而可以通过读取到的列线值确定在哪一列,从而确定按键发生在具体的行和列。为了防止按键按下后一直有按键被读取,需要在程序中设定在按键被释放后才能读取具体的键值来避免这一问题。代码如下:#include#include#define KEY_PORT P2/矩阵键盘端口,其中P2.0-P2.3为列线,P2.4-P2.7为行线typedef unsigned char uchar;typedef unsigned int uint;void serial_init(void) /串口初始化函数 TMOD = 0x20;/T1工作方式1,用于设定波特率 TH1= 0xF3;/波特率4800Bps,12MHz晶振 TL1= 0xF3; PCON |= 0x80; /SMOD = 1,波特率加倍 SCON = 0x50;/允许发送接收 ES = 0; /禁止串口中断 TI = 1; TR1= 1;uchar key_scan(void)/键盘扫描函数,有键按下则返回1,否则返回0uchar keyPressed = 0;KEY_PORT = 0xF0;/置低列线,以读取行线判断是不是有键按下keyPressed = KEY_PORT & 0xF0;/读取行线值if(keyPressed = 0xF0)/无键按下return 0;elsereturn 1;/有键按下uchar key_assert(void)/键值判断函数,第半字节存列号,高半字节存行号uchar keyvalue;/按键键值存储变量,高四位代表行线位置,低四位代表列线位置KEY_PORT = 0xEF;/拉低第一行if(keyvalue = KEY_PORT & 0x0F) != 0x0F) /第一行的键被按下,确认在哪一列while(KEY_PORT & 0x0F) != 0x0F); /等待按键释放return keyvalue | 0xE0; KEY_PORT = 0xDF; /拉低第二行if(keyvalue = KEY_PORT & 0x0F) != 0x0F) /第二行的键被按下while(KEY_PORT & 0x0F) != 0x0F); /等待按键释放return (keyvalue | 0xD0);KEY_PORT = 0xBF; /拉低第三行if(keyvalue = KEY_PORT & 0x0F) != 0x0F) /第三行的键被按下while(KEY_PORT & 0x0F) != 0x0F); /等待按键释放return (keyvalue | 0xB0);KEY_PORT = 0x7F; /拉低第四行if(keyvalue = KEY_PORT & 0x0F) != 0x0F) /第四行的键被按下while(KEY_PORT & 0x0F) != 0x0F); /等待按键释放return (keyvalue | 0x70); void Hardware_Delay_1ms(void)/硬件定时器延时1ms函数 TMOD &=0xF0; TMOD |=0x01;/T016位定时器器模 TH0 = 0xFC; TL0 =0x18;/64536 TF0=0;/清除定时器溢出标志 TR0=1; /启动定时器 while(TF0=0);/等待计数完成 TR0=0; /停止定时器void Delay_Nms(uint N)/延时N毫秒函数uint j;for(j=N;j0;j-) Hardware_Delay_1ms();void main(void)uchar key_value = 0;/键值serial_init();while(1)if(key_scan()Delay_Nms(20); /延时20ms,去抖if(key_scan() /确实有键按下,读取键值key_value = key_assert();/读取P2值做判断P1 = key_value; /通过LED显示键值switch(key_value)/通过串口打印哪个按键被按下信息case 0xEE:printf(Key 1 pressed!n);break;case 0xED:printf(Key 2 pressed!n);break;case 0xEB:printf(Key 3 pressed!n);break;case 0xE7:printf(Key 4 pressed!n);break;case 0xDE:printf(Key 5 pressed!n);break;case 0xDD:printf(Key 6 pressed!n);break;case 0xDB:printf(Key 7 pressed!n);break;case 0xD7:printf(Key 8 pressed!n);break;case 0xBE:printf(Key 9 pressed!n);break;case 0xBD:printf(Key 10 pressed!n);break;case 0xBB:printf(Key 11 pressed!n);break;case 0xB7:printf(Key 12 pressed!n);break;case 0x7E:printf(Key 13 pressed!n);break;case 0x7D:printf(Key 14 pressed!n);break;case 0x7B:printf(Key 15 pressed!n);break;case 0x77:printf(Key 16 pressed!n);break;类别: 单片机 | 评论(54) | 浏览(1137) | 收藏2008年10月31日 20:15:19 【水剑讲堂之数字电路基础知识】 引言这里的数字电路不想讲述之如晶体管、MOS管以及CMOS组成数字电路的内部结构,原理。仅仅是从集成芯片和应用方面来讲述。欢迎各位来补充。一、门电路门电路讲起来很简单,就是通过集成数字芯片实现逻辑简单的逻辑运算的电路。比如实现逻辑与的与门,实现逻辑异或的异或门。逻辑门电路有以下几种:非门,单输入单输出,取输入的反输出,如输入为高电平(逻辑1),输出为低电平(逻辑0),输入为低电平(逻辑0),输出则为高电平(逻辑1)。常见的逻辑非门集成芯片是74HC04(高速CMOS工艺),74LS04(低功耗肖特基工艺)。与门,可以有多个输入,单输出。一般常见的为两输入的。输出逻辑值为A&B&.。常见的与门有74HC08,74LS08。与非门,和与门对应,可以有多个输入,单输出。一般常见的为两输入的。输出逻辑值为(A&B&.)。常见的与非门有74HC00,74LS00。或门,可以有多个输入,单输出。一般常见的为两输入的。输出逻辑值为A|B|.。常见的与门有74HC32,74LS32。或非门,和或门对应,可以有多个输入,单输出。一般常见的为两输入的。输出逻辑值为(A|B|.)。常见的或非门有74HC02,74LS02。异或门,可以有多个输入,单输出。一般常见的为两输入的。输出逻辑值为A xor B xor .,输入中1的个数为偶数时输出值为低电平,否则则为高电平。常见的与门有74HC32,74LS32。三态门,单输入,单输出,外加一个控制端。控制端决定输入输出是否连通。不连通时为高阻状态,一般用于总线结构。常见的三态门为74HC244/74HC245等。类别: 技术总结 | 评论(1) | 浏览(688) | 收藏2008年10月25日 15:27:50 通过单片机定时器产生PWM波 PWM(脉宽调制)在很多场合都用得上,例如LED亮度控制,开关电源输出电圧控制等。这里采用简单的定时器实现PWM波输出,通过更改定时器定时参数,控制IO口输出波形高低电平持续时间,实现PWM波。代码如下:#include#define T0_INTERRUPT 1/T0中断向量号#define PWMH_L 0x9C#define PWMH_H 0xFF /PWM低电平时间0.1ms#define PWML_L 0xCE#define PWML_H 0xFF/PWM高电平时间0.05ms sbit LED1 = P10; /常亮LED,作为对比,仿真看不出效果sbit LED2 = P11;/PWM驱动LEDtypedef unsigned char uchar;typedef unsigned int uint;void Init_T0();void main()LED1 = 0;/点亮LED1LED2 = 1;/熄灭LED2Init_T0();/初始化定时器0while(1)PCON |= 0x01; /单片机进入休眠模式,节省功耗void Init_T0()TMOD &= 0xF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年阿坝市新闻系统事业单位人员招聘考试备考试题及答案详解
- 2026年郴州市人社工商保险服务中心人员招聘考试备考试题及答案详解
- 2026年4月广东深圳市福田区园岭实验小学附属幼儿园招聘1人笔试备考试题及答案详解
- 疫情下职业规划问题指南
- 2026贵州航天职业技术学院引进高层次人才20人笔试备考题库及答案解析
- 2026广东广州市公安局招聘警务辅助人员248人笔试备考试题及答案解析
- 保险面试职业规划指南
- 2026年郴州市社区工作者招聘考试备考试题及答案详解
- 2026年池州市气象系统事业单位人员招聘考试备考试题及答案详解
- 2026 塑型期维补食材搭配课件
- 2026入团考试必刷170题(含答案解析)高频考点全覆盖
- 进出口贸易合同2026版含关税支付方式二篇
- 2026年记忆力判断力反应力三力测试题库
- 2026年北京市平谷区初三下学期一模英语试卷和答案
- 世界小商品之都-解码义乌发展经验与启示课件
- 2024年江苏省常州市中考化学真题(含答案)
- 2026年贵阳市乌当区事业单位招聘笔试参考题库及答案解析
- 2026年及未来5年市场数据中国天然气长输管道行业全景评估及投资规划建议报告
- 2026年成人重症患者持续应用镇静及镇痛药物临床指南更新(完整版)
- 蛋鸡养殖卫生免疫制度
- 寒湿体质万病之源课件
评论
0/150
提交评论