欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 实验报告的心得体会单片机

实验报告的心得体会单片机

时间:2017-10-05 20:52

c语言实验报告心得

c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

这样可以大大降低内存占用空间。

定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。

当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为: char data *p;。

还可指定指针本身的存放内存类型,如:char data * xdata p;。

其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。

与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题 单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\\\/6.每当访问外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲.这句话是不是有毛病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.小弟感激涕零.答:其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE 四、如何将一个INT型数据转换成2个CHAR型数据

经keil优化后,char1=int1\\\/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写

右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX 六、typedef 和 #define 有何不同?? typedef 和 #define 有何不同》》》 如typedef unsigned char UCHAR ;#define unsigned char UCHAR ;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了一个新的名字.#define只是一个标号的定义.你举的例子两者没有区别,但是#define还可以这样用#define MAX 100#define FUN(x) 100-(x)#define LABEL等等,这些情况下是不能用typedef定义的 七、请问如何设定KELC51的仿真工作频(时钟) 用右键点击左边的的target 1,然后在xtal一栏输入 八、不同模块怎样共享sbit变量,extern不行? 把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件 九、C51中对于Px.x的访问必须自己定义吗

是的。

如sbit P17 = 0x97;即可定义对P1.7的访问 十、SWITCH( )语句中表达式不可以是位变量对吗

可以用位变量:#include#includevoid main(){bit flag;flag=0;switch(flag){case '0':{printf(0\\\ );break;}case '1':{printf(1\\\ );break;}default:break; }}bit 变量只有两种状态,if 语句足够啦,!!! 十一、const常数声明占不占内存 const 只是用来定义“常量”,所占用空间与你的定义有关,如:const code cstStr[] = {abc};占用代码空间;而如:const char data cstStr[] = {abc};当然占用内存空间。

另外,#define 之定义似乎不占用空间。

十二、philips的单片机P89C51RD+的扩展RAM在C51中如何使用

试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量 十三、BUG of Keil C51 程序中用如下语句:const unsigned char strArr[] = {数学};结果发现strArr[] 内容为 {0xCA,0xD1,0xA7},真奇怪

凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr[]={0xCA,0xfd,0xd1,0xa7}(用Ultraedit会很方便)。

十四、Keil C51中如何实现代码优化

菜单Project下Option for target Simulator的C51.看到Code optimization了吗

十五、请教c的

和 ~ 符号有甚区别

是逻辑取反,~是按位取反。

十六、c51编程,读端口,还要不要先输出1

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事

谢了要输出1的,除非你能保证之前已经是1,而中间没有输出过其他值。

十七、当定时器1(T1)用于产生波特率时,P3^5还是否可以用作正常的I\\\/O口呢

p3.5完全可以当普通的io使用 十八、C51中 INT 转换为 2个CHAR

各位高手:C51中 INT 转换为 CHAR 如何转换诸如:X = LOW(Z);Y = HIGH(Z);答: x=(char)z;y=(char)(z>>8); 十九、如果我想使2EH的第7位置1的话,用位操作可以吗

现在对位操作指令我一些不太明白请各位多多指教:如 SETB 07H 表示的是20H.7置1,对吗

(我在一本书上是这么看到的)那么如果我想使2EH的第7位置1的话,象我举的这个例子怎么表示呢

谢谢

SETB 77Hsetb (2eh-20h)*8+7 20h-2fh每字节有8个可位操作(00h-7fh),其它RAM不可位直接操作 二十、char *addr=0xc000 和char xdata *addr=0xc000有何区别

char *addr=0xc000;char xdata *addr=0xc000;除了在内存中占用的字节不同外,还有别的区别吗?char *addr=0xc000; 是通用定义,指针变量 addr 可指向任何内存空间的值;char xdata *addr=0xc000; 指定该指针变量只能指向 xdata 中的值;后一种定义中该指针变量(addr)将少占用一个存储字节。

uchar xdata *addr=0xc000;指针指向外ram;如果:data uchar xdata *addr=0xc000;指针指向外ram但指针本身存在于内ram(data)中以此类推可以idata uchar xdata *addr=0xc000;pdata uchar xdata *addr=0xc000;data uchar idata *addr=0xa0;......... 二十一、while(p1_0)的执行时间

假设,P1_0为单片机P1口的第一脚,请问,while(P1_0){P1_0=0;}while(!P1_0){P1_0=1;}以上代码,在KEIL C中,需要多长时间,执行完。

能具体说明while(P1_0)的执行时间吗

仿真运行看看就知道了,我仿真了试了一下,约14个周期 二十二、怎样编写C51的watchdog程序

各位大虾,我用KEIL C51 编写了一个带外部开门狗的程序,可程序无法运行起来,经过查找,发现程序在经过C51编译后,在MAIN()函数的前部增加了一端初始化程序,等到进入主程序设置开门狗时,开门狗已经时间到,将我的程序复位了,请问我怎样才能修改这一端初始花程序,使他一运行,就设置开门狗

可以在startup.a51中加入看门狗刷新指令,当然用汇编,然后重新编译startup.a51,将他和你的程序连接即可。

新的startup.a51会自动代替系统默认的启动模块。

二十三、keil C51 怎样把修改的startup.a51 加到工程文件中 直接加入即可注意不要改动?STACK,?C_START,?C_STARTUP等符号。

startup.a51直接加入项目,不用修改也可。

可在内面自己修改汇编的一些限制或堆栈指针。

二十四、关于波特率的设置 我在设定串口波特率时发现一个问题:在晶体震荡器为11.0592MHz时,若设9600BPS的话,TH1=0XFD,TL1=0XFD,而要设19200BPS的话,TH1、TL1有否变化,如果没变,为什么

如果变了,又为什么

(因为我看书上俩个是一样的),希望大家点拨。

答:当电源控制寄存器(PCON)第BIT7(SMOD)为1时波特率加倍。

TH1和TL1的值不变. 二十五、如何在C中声明保留这部分RAM区不被C使用

我不知道在C源程序中怎么控制这个,但在汇编程序中加入下面一段就行:DSEG AT 20HAA: DS 10这样C51就不会占用20H--29H了或者在c51里这样定义:uchar data asm_buff[10] _at_ 0x20; 二十六、问浮点运算问题 我在用C51时发现它对传递浮点参数的个数有限制,请问:1)参数是以全局变量的形式传递的,请问以全局变量的形式传递的参数也有限制吗

2)这种传递浮点参数的限制有多少呢

3)float*float的结果是float类型还是double类型?能否直接赋值给float类型的变量

答:由于KEIL C51的参数传递是通过R0-R7来传递的,所以会有限制。

不过KEIL提供了一个编译参数,可以支持更多参数的传递。

具体的内容见KEIL的PDF文档。

我建议你把多个要传递的参数定义到指针或结构体中去,传递参数通过指针或结构进行,这样好一些。

第3个问题回答是YES,你自己试试不就知道了。

二十七、如何在某一个地址定义ram 用_at_ 命令,这样可以定位灵活一点的地址uchar xdata dis_buff[16] _at_ 0x6020 ;\\\/\\\/定位RAM将dis_buff[16]定位在0x6020开始的16个字节 二十八、keil c中,用什么函数可以得到奇偶校验位

例如32位数据,将四个字节相互异或后检查P即可,若耽心P被改变,可用内嵌汇编。

#include unsigned char parity(unsigned char x){x^=x;if(P)return(1);else return(0);}unsigned char parity2(unsigned int x){#pragma asmmov a,r7xrl ar6,a#pragma endasmif(P)return(1);else return(0);}

微机原理与接口技术 实验心得

实得这学期通过对微机原理和微机实验学习,对微机系统和它的工作原理有了的了解。

微机实验课,总共做了十几个实验,回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,它是和机器语言最接近的,用它来编程序,会比用其它高级语言要快得多。

实验课程加深了我们对汇编语言指令的熟悉和理解。

不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

对于这门课,我们收获了很多,我觉得这门课偏重于工程思维,主要难点在于对程序的理解。

但是老师让我们通过手打程序,控制实验平台很好的理解了各实验的实验程序。

对于课程的建议,实验讲义给的程序很清楚,大大降低了实验预习和自主编程的难度,给实验讲义可以更多的给方法和方式,提供一些程序建议而减少直接给出程序内容。

实验课上,请一个或两个同学讲解一下实验程序设计思路,通过讲解与其他人互动,可以收获更多。

微机原理课程上讲到的各种芯片的功能,以及引脚的作用,在实验中都得到了运用,使我们加深了对于主要芯片的应用的认识,同时在实验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动

单片机最小系统焊接实训心得体会的范文

系统以AT89S51 为核心部件,利用软件编程,通过键盘控制和液晶显示实现了密码锁的功能、报警功能,并能防止多次试探密码,能实现本设计题目的基本要求和发挥部分。

尽到硬件电路简单稳定、减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。

本设计方案的智能密码锁,具有造价低,工作可靠,功能多,智能化,实用性强等特点,在许多场合都能应用,并且控制智能化、灵活。

  由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

例如:扩展红外探测技术,指纹识别技术,语音识别技术,图像识别技术等等。

这样更能满足社会的发展和人民的需求。

  随着计算机科学及传感技术的不断发展,我们相信在不久的将来密码锁和相关技术将发展成熟,为提高人们的生活质量中发挥更大的作用。

  踉踉跄跄地了两个月,我的毕业设计课题也终将告一段落。

设计实物也基本达到预期的效果,但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙……数不胜数。

但我可豪的说,这里面的每一段代码,都有我的劳动。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

  毕业设计,也许是我大学生涯交上的最后一个作业了。

想借此机会感谢一直以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺部分。

我的毕业指导老师吴慧峰老师,她一直都以一位长辈的风范来容谅我的无知和冲动,给我不厌其烦的指导。

在此,特向她道声谢谢。

  这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。

希望这次的经历能让我在以后学习中激励我继续进步。

求一篇发动机拆装实习报告,或者心得体会。

最少500字

差不多全忘记了,比如上面这位同志的这个例子ADD R1,R2 ;R1,R2字节数,这条指令已经在内存将要执行了;1.先是IP指向这条指令->指令寄存器;2.分解指令为微指令,计算机实际只会执行微指令,自己分一下,不记得很清楚了,书的不是有很多吗

这是在网上找到的(讲的很清楚,希望有用):计算机每执行一条指令都可分为三个阶段进行。

即取指令-----分析指令-----执行指令。

取指令的任务是:根据PC中的值从读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。

如指令要求操作数,则寻找操作数地址。

计算机的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。

但单片机中的程序一般事先我们都已通过写入器固化在片内或片外中。

因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:开机时,程序计算器PC变为0000H。

然后单片机在时序电路作用下自动进入过程。

执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已存放74H,0001H单元中已存放E0H。

当单片机开始运行时,首先是进入取指阶段,其次序是:1 的内容(这时是0000H)送到地址寄存器;2 的内容自动加1(变为0001H);3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;4 CPU使读控制线有效;5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。

至此,取指阶段完成,进入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。

所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。

其过程与取指阶段很相似,只是此时PC已为0001H。

指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。

因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。

至此,一条指令的执行完毕。

单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。

这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。

CPU就是这样一条一条地执行指令,完成所有规定的功能。

三人表决电路实验报告,三人表决器的逻辑电路图怎么画

这是一种三人表决器真值表:K1 K2 K3 K0 0 0 00 0 1 00 1 0 00 1 1 11 0 0 01 0 1 11 1 0 11 1 1 1逻辑表达式:K = K1 K2 K3 + K1!K2 K3 + K1 K2!K3 + K1 K2 K3用逻辑代数化简:K = !K1 K2 K3 + K1!K2 K3 + K1 K2= K2 (K1 + K3) + K1 (K2 + K3) + K1 K2 ; 吸收率 A + A'B = A + B= K1K2 + K1K3 + K2K3或用卡诺图化简:K3\\\\K1K2 00 01 11 100 0 0 1 01 0 1 1 1最简与或式:K = K1K2 + K1K3 + K2K3绘制逻辑电路图:根据上式即可绘制。

设计和制作一函数信号发生器

函数信号发生器的设计、和装配实习一.设计制作要求:掌握方波一三角波一正弦波函数发生器的设计方法和测试技术。

学会由分立器件和集成电路组成的多级电子电路小系统的布线方法。

掌握安装、焊接和调试电路的技能。

掌握在装配过程中可能发生的故障进行维修的基本方法。

二.方波一三角波一正弦波函数发生器设计要求函数发生器能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形。

其电路中使用的器件可以是分立器件,也可以是集成电路(如单片集成电路函数发生器ICL8038)。

本次电子工艺实习,主要介绍由集成运算放大器和晶体管差分放大器组成的方波一三角波一正弦波函数信号发生器的设计和制作方法。

产生正弦波、方波、三角波的方案有多种:1:如先产生正弦波,然后通过整形电路将正弦波变换成方波,再由积分电路将方波变成三角波。

2:先产生三角波一方波,再将三角波变成正弦波或将方波变成正弦波。

33:本次电路设计,则采用的图1函数发生器组成框图是先产生方波一三角波,再将三角波变换成正弦波的电路设计方法。

此钟方法的电路组成框图。

如图1所示:可见,它主要由:电压比较器、积分器和差分放大器等三部分构成。

为了使大家能较快地进入设计和制做状态,节省时间,在此,重新复习电压比较器、积分器和差分放大器的基本构成和工作原理:所谓比较器,是一种用来比较输入信号v1和参考电压VREF,并判断出其中哪个大,在输出端显示出比较结果的

实训报告呀怎么写~

实训报告总结范文  本次实训,是对我潜力的进一步锻炼,也是一种考验。

从中获得的诸多收获,也是很可贵的,是十分有好处的。

在实习中我学到了许多新的知识。

是一个让我把书本上的理论知识运用于实践中的好机会,在这次实习中还锻炼了我其他方面的潜力,提高了我的综合素质。

首先,它锻炼了我做项目的潜力,提高了独立思考问题、自己动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等。

其次,实训中的项目作业也使我更加有团队精神。

  从那里,我学会了下面几点找工作的心态:  一、继续学习,不断提升理论涵养。

  在信息时代,学习是不断地汲取新信息,获得事业进步的动力。

作为一名青年学子更就应把学习作为持续工作用心性的重要途径。

走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

  二、努力实践,自觉进行主角转化。

  只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。

同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

务必在实际的工作和生活中潜心体会,并自觉的进行这种主角的转换。

  三、提高工作用心性和主动性  实习,是开端也是结束。

展此刻自己面前的是一片任自己驰骋的沃土,也分明感受到了沉甸甸的职责。

急求一个89c51设计的电子时钟,有原理图和C程序

请访问 数字电子钟的设计数字IC构成)一、设计目的1. 熟悉集成的引脚安排。

2. 掌握片的逻辑功能及使用方法。

3. 了解面包板结构及其接线方法。

4. 了解数字钟的组成及工作原理。

5. 熟悉数字钟的设计与制作。

二、设计要求1.设计指标时间以24小时为一个周期;显示时、分、秒;有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时;为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

2.设计要求画出电路原理图(或仿真电路图);元器件及参数选择;电路仿真与调试;PCB文件生成与打印输出。

3.制作要求 自行装配和调试,并能发现问题和解决问题。

4.编写设计报告 写出设计与制作的全过程,附上有关资料和图纸,有心得体会。

三、设计原理及其框图1.数字钟的构成数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路构成数字钟。

图 3-1所示为数字钟的一般构成框图。

图3-1 数字钟的组成框图 ⑴晶体振荡器电路  晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。

不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

⑵分频器电路  分频器电路将32768Hz的高频方波信号经32768( )次分频后得到1Hz的方波信号供秒计数器进行计数。

分频器实际上也就是计数器。

⑶时间计数器电路  时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。

⑷译码驱动电路  译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。

⑸数码管  数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。

2.数字钟的工作原理1)晶体振荡器电路晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。

图3-2所示电路通过CMOS非门构成的输出为方波的数字式晶体振荡电路,这个电路中,CMOS非门U1与晶体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。

输出反馈电 阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。

电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。

由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。

晶体XTAL的频率选为32768HZ。

该元件专为数字钟电路而设计,其频率较低,有利于减少分频器级数。

从有关手册中,可查得C1、C2均为30pF。

当要求频率准确度和稳定度更高时,还可接入校正电容并采取温度补偿措施。

由于CMOS电路的输入阻抗极高,因此反馈电阻R1可选为10MΩ。

较高的反馈电阻有利于提高振荡频率的稳定性。

非门电路可选74HC00。

图3-2 COMS晶体振荡器2)分频器电路通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。

通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。

例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768(215),即实现该分频功能的计数器相当于15极2进制计数器。

常用的2进制计数器有74HC393等。

本实验中采用CD4060来构成分频电路。

CD4060在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,使用更为方便。

CD4060计数为14级2进制计数器,可以将32768HZ的信号分频为2HZ,其内部框图如图3-3所示,从图中可以看出,CD4060的时钟输入端两个串接的非门,因此可以直接实现振荡和分频的功能。

图3-3 CD4046内部框图3)时间计数单元时间计数单元有时计数、分计数和秒计数等几个部分。

时计数单元一般为12进制计数器计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码。

一般采用10进制计数器74HC390来实现时间计数单元的计数功能。

为减少器件使用数量,可选74HC390,其内部逻辑框图如图 2.3所示。

该器件为双2-5-10异步计数器,并且每一计数器均提供一个异步清零端(高电平有效)。

图3-4 74HC390(1\\\/2)内部逻辑框图秒个位计数单元为10进制计数器,无需进制转换,只需将QA与CPB(下降沿有效)相连即可。

CPA(下降没效)与1HZ秒输入信号相连,Q3可作为向上的进位信号与十位计数单元的CPA相连。

秒十位计数单元为6进制计数器,需要进制转换。

将10进制计数器转换为6进制计数器的电路连接方法如图3-5所示,其中Q2可作为向上的进位信号与分个位的计数单元的CPA相连。

图3-5 10进制--6进制计数器转换电路分个位和分十位计数单元电路结构分别与秒个位和秒十位计数单元完全相同,只不过分个位计数单元的Q3作为向上的进位信号应与分十位计数单元的CPA相连,分十位计数单元的Q2作为向上的进位信号应与时个位计数单元的CPA相连。

时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为12进制计数器,不是10的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行12进制转换。

利用1片74HC390实现12进制计数功能的电路如图3-6所示。

另外,图3-6所示电路中,尚余-2进制计数单元,正好可作为分频器2HZ输出信号转化为1HZ信号之用。

图3-6 12进制计数器电路4)译码驱动及显示单元计数器实现了对时间的累计以8421BCD码形式输出,选用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,选用CD4511作为显示译码电路,选用LED数码管作为显示单元电路。

5)校时电源电路当重新接通电源或走时出现误差时都需要对时间进行校正。

通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。

根据要求,数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。

图3-7所示即为带有基本RS触发器的校时电路, 图3-7 带有消抖动电路的校正电路6)整点报时电路一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒。

其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示。

根据要求,电路应在整点前10秒钟内开始整点报时,即当时间在59分50秒到59分59秒期间时,报时电路报时控制信号。

报时电路选74HC30,选蜂鸣器为电声器件。

四、元器件1.实验中所需的器材:5V电源。

面包板1块。

示波器。

万用表。

镊子1把。

剪刀1把。

网络线2米\\\/人。

共阴八段数码管6个。

CD4511集成块6块。

CD4060集成块1块。

74HC390集成块3块。

74HC51集成块1块。

74HC00集成块5块。

74HC30集成块1块。

10MΩ电阻5个。

500Ω电阻14个。

30p电容2个。

32.768k时钟晶体1个。

蜂鸣器。

2.芯片内部结构图及引脚图 图4-1 7400 四2输入与非门 图4-2 CD4511BCD七段译码\\\/驱动器 图4-3 CD4060BD 图4-4 74HC390D 图4-5 74HC51D 图4-6 74HC30 3.面包板内部结构图面包板右边一列上五组竖的相通,下五组竖的相通,面包板的左边上下分四组,每组中X、Y列(0-15相通,16-40相通,41-55相通,ABCDE相通,FGHIJ相通,E和F之间不相通。

五、个功能块电路图1. 一个CD4511和一个LED数码管连接成一个CD4511驱动电路,数码管可从0---9显示,以次来检查数码管的好坏,见附图5-1。

图5-1 4511驱动电路2. 利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00连接成一个十进制计数器,电路在晶振的作用下数码管从0-9显示,见附图5-2。

图5-2 74390十进制计数器3. 利用一个LED数码管,一块CD4511,一块74HC390,一块74HC00和一个晶振连接成一个六进制计数器,数码管从0-6显示,见附图5-3。

图5-3 74390六进制计数器4. 利用一个六进制电路和一个十进制连接成一个六十进制电路,电路可从0-59显示,见附图5-4。

图5-4 六十进制电路5. 利用两个六十进制的电路合成一个双六十进制电路,两个六十进制之间有进位,见附图5-5。

图5-5 双六十进制电路6. 利用CD4060、电阻及晶振连接成一个分频--晶振电路,见附图5-6。

图5-6 分频-晶振电路7. 利用74HC51D和74HC00及电阻连接成一个校时电路,见附图5-7。

图5-7 校时电路8. 利用74HC30和蜂鸣器连接成整点报时电路。

见附图5-8。

图5-8 整点报时电路9. 利用两个六十进制和一个十二进制连接成一个时、分、秒都会进位的电路总图,见附图5-9。

用ttl集成电路构成的二十四小时数字钟,具有校时和整点报时功能,555定时器接成多谐振荡器产生秒脉冲信号,调节rw即可校准秒信告,计数器7416 i、ii组成60进制秒计数电路,iii、iv组成分计数电路,v、vi组成24进制时计数电路,校时电路由与非门7400构成的双稳态触发路构成,可消除开关抖动的影响,整点报时 电路 由与非门7430和d触发器7474构成 ,1秒钟响一声、直至整点为止。

有关用晶振电路产生秒脉冲电路的12小时数字钟,请看下回贴 数字电子钟参考电路(24小时数字钟)[upload=jpg,325.83,450,915,822]\\\/58474-1-2-9489.上面的电路图是用ttl集成电路构成的二十四小时数字钟,具有校时和整点报时功能,555定时器接成多谐振荡器产生秒脉冲信号,调节rw即可校准秒信告,计数器7416 i、ii组成60进制秒计数电路,iii、iv组成分计数电路,v、vi组成24进制时计数电路,校时电路由与非门7400构成的双稳态触发路构成,可消除开关抖动的影响,整点报时 电路 由与非门7430和d触发器7474构成 ,1秒钟响一声、直至整点为止。

有关用晶振电路产生秒脉冲电路的12小时数字钟,请看下回贴图。

采用AT89C2051兼容芯片制作六位数显多路定时电子钟采用at89c2051兼容芯片制作六位数显多路定时电子钟电路特点这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片ic实现。

电路见图1。

一片20引脚的单片机stc2032(引脚排列与at89c2051完全相同)为电子钟主体,其显示笔画数据从p1口分时输出,p3口则输出对应的六位选通信号。

由于led数码管点亮时耗电较大,故不能使用at89c2051单片来完成,但是可以可以用stc89c2032来完成。

另外,本站制作时用超高亮的发光二极管代替昂贵的大数码管,成本低,效果独特。

本电子钟设计有三个轻触式按键,这里我们分别命名为:模式设定键k1、加调整键k2、减调整键k3。

由于stc89c2032内部已经集成有复位电阻,所裕

51单片机实验:无符号双字节乘法运算子程序

以前搞的子程序库里的(5) 标号: MULD 功能:双字节二进制无符号数乘法 入口条件:被乘数在R2、R3中,乘数在R6、R7中。

出口信息:乘积在R2、R3、R4、R5中。

影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节MULD: MOV A,R3 ;计算R3乘R7MOV B,R7MUL ABMOV R4,B ;暂存部分积MOV R5,AMOV A,R3 ;计算R3乘R6MOV B,R6MUL ABADD A,R4 ;累加部分积MOV R4,ACLR AADDC A,BMOV R3,AMOV A,R2 ;计算R2乘R7MOV B,R7MUL ABADD A,R4 ;累加部分积MOV R4,AMOV A,R3ADDC A,BMOV R3,ACLR ARLC AXCH A,R2 ;计算R2乘R6MOV B,R6MUL ABADD A,R3 ;累加部分积MOV R3,AMOV A,R2ADDC A,BMOV R2,ARET

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片