a_bit equ 20h ;个位数存放处 b_bit equ 21h ;十位数存放处 temp equ 22h ;计数器寄存器 star: mov temp,#0 ;初始化计数器 stlop: acall display inc temp mov a,temp cjne a,#100,next ;=100重来 mov temp,#0 next: ljmp stlop ;显示子程序 display: mov a,temp ;将temp中的十六进制数转换成10进制 mov b,#10 ;10进制/10=10进制 div ab mov b_bit,a ;十位在a mov a_bit,b ;个位在b mov dptr,#numtab ;指定查表启始地址 mov r0,#4 dpl1: mov r1,#250 ;显示1000次 dplop: mov a,a_bit ;取个位数 MOVC A,@A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码
上传时间: 2013-11-06
上传用户:lx9076
用单片机AT89C51改造普通双桶洗衣机:AT89C2051作为AT89C51的简化版虽然去掉了P0、P2等端口,使I/O口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强,如能用来处理模拟量、进行简单的模数转换等。本文利用这一功能设计了一个数字电容表,可测量容量小于2微法的电容器的容量,采用3位半数字显示,最大显示值为1999,读数单位统一采用毫微法(nf),量程分四档,读数分别乘以相应的倍率。电路工作原理 本数字电容表以电容器的充电规律作为测量依据,测试原理见图1。电源电路图。 压E+经电阻R给被测电容CX充电,CX两端原电压随充电时间的增加而上升。当充电时间t等于RC时间常数τ时,CX两端电压约为电源电压的63.2%,即0.632E+。数字电容表就是以该电压作为测试基准电压,测量电容器充电达到该电压的时间,便能知道电容器的容量。例如,设电阻R的阻值为1千欧,CX两端电压上升到0.632E+所需的时间为1毫秒,那么由公式τ=RC可知CX的容量为1微法。 测量电路如图2所示。A为AT89C2051内部构造的电压比较器,AT89C2051 图2 的P1.0和P1.1口除了作I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,电压比较器的比较结果存入P3.6口对应的寄存器,P3.6口在AT89C2051外部无引脚。电压比较器的基准电压设定为0.632E+,在CX两端电压从0升到0.632E+的过程中,P3.6口输出为0,当电池电压CX两端电压一旦超过0.632E+时,P3.6口输出变为1。以P3.6口的输出电平为依据,用AT89C2051内部的定时器T0对充电时间进行计数,再将计数结果显示出来即得出测量结果。整机电路见图3。电路由单片机电路、电容充电测量电路和数码显示电路等 图3 部分组成。AT89C2051内部的电压比较器和电阻R2-R7等组成测量电路,其中R2-R5为量程电阻,由波段开关S1选择使用,电压比较器的基准电压由5V电源电压经R6、RP1、R7分压后得到,调节RP1可调整基准电压。当P1.2口在程序的控制下输出高电平时,电容CX即开始充电。量程电阻R2-R5每档以10倍递减,故每档显示读数以10倍递增。由于单片机内部P1.2口的上拉电阻经实测约为200K,其输出电平不能作为充电电压用,故用R5兼作其上拉电阻,由于其它三个充电电阻和R5是串联关系,因此R2、R3、R4应由标准值减去1K,分别为999K、99K、9K。由于999K和1M相对误差较小,所以R2还是取1M。数码管DS1-DS4、电阻R8-R14等组成数码显示电路。本机采用动态扫描显示的方式,用软件对字形码译码。P3.0-P3.5、P3.7口作数码显示七段笔划字形码的输出,P1.3-P1.6口作四个数码管的动态扫描位驱动码输出。这里采用了共阴数码管,由于AT89C2051的P1.3-P1.6口有25mA的下拉电流能力,所以不用三极管就能驱动数码管。R8-R14为P3.0-P3.5、P3.7口的上拉电阻,用以驱动数码管的各字段,当P3的某一端口输出低电平时其对应的字段笔划不点亮,而当其输出高电平时,则对应的上拉电阻即能点亮相应的字段笔划。
上传时间: 2013-12-31
上传用户:ming529
第八章 labview的编程技巧 本章介绍局部变量、全局变量、属性节点和其他一些有助于提高编程技巧的问题,恰当地运用这些技巧可以提高程序的质量。 8.1 局部变量 严格的语法尽管可以保证程序语言的严密性,但有时它也会带来一些使用上的不便。在labview这样的数据流式的语言中,将变量严格地分为控制器(Control)和指示器(Indicator),前者只能向外流出数据,后者只能接受流入的数据,反过来不行。在一般的代码式语言中,情况不是这样的。例如我们有变量a、b和c,只要需要我们可以将a的值赋给b,将b的值赋给c等等。前面所介绍的labview内容中,只有移位积存器即可输入又可输出。另外,一个变量在程序中可能要在多处用到,在图形语言中势必带来过多连线,这也是一件烦人的事。还有其他需要,因此labview引入了局部变量。
上传时间: 2013-10-27
上传用户:xieguodong1234
设计了一种基于nRF24L01的无线心电采集系统, 该系统采用模拟集成电路对心电信号进行调理和采样,通过前置放大电路、带通滤波电路、主放大电路、50 Hz陷波电路、电平抬升电路等电路调理心电信号后,使用无线传输模块nRF24L01将心电信号发送至上位机中显示, 从而达到通过PC显示和监测心律变化的目的。
上传时间: 2013-10-09
上传用户:mahone
关于合成孔径激光雷达中微弱光电信号的检测技术,分析了PIN光电二极管的主要噪声来源,设计了偏置电路和滤波电路;鉴于高频效应的影响,合理使用电磁屏蔽等措施。
上传时间: 2014-12-30
上传用户:thinode
针对电子元件的测量问题,提出了一种简易测量方法。采用555多谐振荡电路,通过C8051F060单片机控制测量电阻、电容对应振荡电路所产生的频率实现各个参数的测量,一方面测量精度较高,另一方面便于使仪表实现自动化,并可语音播报使其更加智能化。应用结果表明:该测量方法所用元器件少、电路简单,误差在±5%以内,满足实际测量要求。
上传时间: 2013-11-06
上传用户:huang111
设计了一种无线脉搏测量仪,通过采集被测者手腕处的脉搏信号得到被测者的瞬时脉搏数和平均脉搏数。装置采用HK2000B脉搏传感器采集脉搏信号,经过一级放大电路、基线校正电路、带通滤波电路、陷波器、整形电路等送至单片机处理,处理所得的脉搏数据通过液晶屏显示,同时脉搏数据经过CC1100处理发射到监控室,经CC1100接收处理、通过数码管显示。该仪表使用方便,具有小型化、可视性好等特点。
上传时间: 2013-10-14
上传用户:ruan2570406
对传感器前段信号处理电路进行改进,在传感器上下线圈并联电容形成LC电路,利用LC电路谐振效应改善电路的性能,以提高信号源头的灵敏度;采用Multisim软件对半桥和全桥电路在并联不同大小的电容后的性能进行仿真,并用Matlab对生成的曲线进行最小二乘拟合,比较得出使电路性能最优的电容值和并联方法。结果表明在损失微小线性度的情况下可将灵敏度提高一倍。
上传时间: 2013-11-17
上传用户:名爵少年
DH45L是基于CMOS工艺设计和生产的霍尔IC,元件内部集成了霍尔效应片、电压调节器、休眠唤醒控制电路、信号放大滤波电路、偏移补偿电路、施密特触发器,开漏极输出。与DH481周期性周期检测磁场不同,DH45L连续检测环境磁场强度,响应速度快,但功耗较大(2mA)。DH45L不区分N极和S极,对N极和S极都感应,因此便于较小磁钢的装配。电压是5-24V.
上传时间: 2013-11-12
上传用户:zhaiyanzhong
C++完美演绎 经典算法 如 /* 头文件:my_Include.h */ #include <stdio.h> /* 展开C语言的内建函数指令 */ #define PI 3.1415926 /* 宏常量,在稍后章节再详解 */ #define circle(radius) (PI*radius*radius) /* 宏函数,圆的面积 */ /* 将比较数值大小的函数写在自编include文件内 */ int show_big_or_small (int a,int b,int c) { int tmp if (a>b) { tmp = a a = b b = tmp } if (b>c) { tmp = b b = c c = tmp } if (a>b) { tmp = a a = b b = tmp } printf("由小至大排序之后的结果:%d %d %d\n", a, b, c) } 程序执行结果: 由小至大排序之后的结果:1 2 3 可将内建函数的include文件展开在自编的include文件中 圆圈的面积是=201.0619264
标签: my_Include include define 3.141
上传时间: 2014-01-17
上传用户:epson850