电路设计——“天华杯”资料

上传人:飞*** 文档编号:3790237 上传时间:2017-08-11 格式:DOC 页数:18 大小:554.50KB
返回 下载 相关 举报
电路设计——“天华杯”资料_第1页
第1页 / 共18页
电路设计——“天华杯”资料_第2页
第2页 / 共18页
电路设计——“天华杯”资料_第3页
第3页 / 共18页
电路设计——“天华杯”资料_第4页
第4页 / 共18页
电路设计——“天华杯”资料_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电路设计——“天华杯”资料》由会员分享,可在线阅读,更多相关《电路设计——“天华杯”资料(18页珍藏版)》请在金锄头文库上搜索。

1、1电路设计“天华杯”资料一、硬件篇1、三极管及其应用2、光耦及其应用3、继电器及其应用4、595 应用及其应用5、164 及其应用6、74HC573 及其应用7、74LS245 及其应用(样题中要求的芯片)8、光电传感器(反射式和对射式)9、数码管及其应用(共阴和共阳)10、按键及其应用(独立按键、矩阵按键、矩阵转独立按键)11、电机及其应用12、温馨提示二、软件篇1、Keil 仿真及延时语句的精确计算2、c51 常用头文件3、Keil C 编译器常见警告与错误信息的解决方法4、应用单片机端口输出 PWM5、应用反射式光电传感器进行转速检测“天华杯”指定下载软件 ISP-Pgm30ahttp:

2、/www.kmitl.ac.th/kswichit/IspPgm30a/ISP-Pgm30a.html仅供参考,互相交流,共同进步一:三极管PNP:8550 NPN:9013 9014 8050在单片机应用系统中,三极管一般起开关作用,比如蜂鸣器控制电路电阻 R6 主要起限流作用,只要保证三极管工作在饱和区即可,一般选用 1k,由于 51 单片机上电是高电平,所以一般都采用 PNP 管(8550) ,这样的话不会2因为上电的高电平产生误动作。如果遇到功率不够的话,可以采用达林顿管:达 林 顿 管 就 是 两 个 三 极 管 接 在 一 起 , 极 性 只 认 前 面 的 三 极 管 。 具 体

3、 接 法 如 下, 以 两 个 相 同 极 性 的 三 极 管 为 例 , 前 面 为 三 极 管 集 电 极 跟 后 面 三 极 管 集 电 极相 接 , 前 面 为 三 极 管 射 极 跟 后 面 三 极 管 基 极 相 接 , 前 面 三 极 管 功 率 一 般 比后 面 三 极 管 小 , 前 面 三 极 管 基 极 为 达 林 顿 管 基 极 , 后 面 三 极 管 射 极 为 达 林 顿管 射 极 , 用 法 跟 三 极 管 一 样 , 放 大 倍 数 是 两 个 三 极 管 放 大 倍 数 的 乘 积 。二:光耦注意:R1,R2 取值均为 1k,当 IO=1 时,三极管截止,灯不

4、亮;当 IO=0 时,三极管导通,灯亮;实际应用中,两个 VCC 应该是不同的,这样才真正起到隔离的作用三、继电器3 1、12 为线圈的两端,1 为正端,12 为负端。(线圈实质是个电磁铁) 3、4、5 为一个单刀双掷开关,8、9、10 为一个单刀双掷开关。 在电磁铁没吸合的时候,开关的公共端 4、9 分别连接的是 3 和 10。 在电磁铁吸合的时候,开关的公共端 4、9 分别连接的是 5 和 8。2、继电器的保护。 一般都在线圈两端反向加一个二极管做为保护,减小感应电流的损害上图是继电器的一个应用电路:当 P35=0 时,三极管导通,继电器吸合, LED 亮,JDQ52 相连;当 P35=1

5、 时,三极管截止,继电器不吸合, LED 不亮,JDQ53 相连;本电路的一个特点是:继电器的输出端采用分离方式,即输出端不与内电路连接,可外连三个接线端子,用作控制更高电压设备的开关。四、595 应用: 8 位串行输入/输出或者并行输出移位寄存器sbit CLK=P16; /P1.6 为 595 输出锁存器时钟信号端 ,1 时输出数据 ,从 1 到 0 时锁存输出数据.(引脚 12)sbit SCLR=P15; /P1.5 为 595 移位寄存器清零口,平时为 1,为 0 时,输出全为0.(引脚 10)sbit dat_595=P20; /595 的 14 脚sbit Shift_Clk=P

6、21; /595 的 11 脚void SendByte_595(unsigned char byte) / 595 发送一个字节的数据 unsigned char i;for(i=0;i=1;dat_595=CY;Shift_Clk=1;_nop_();_nop_();Shift_Clk=0;4 五、164 应用典型应用:驱动数码管,164 用作 8 位移位锁存器(好像还有几种用法)输入:CLR=1,CLK=LSCLK;A=B=LSDATA,一般都用 IO 口来模拟,eg:LSCLK=P05, LSDATA=P04.输出:Q0Q7#define HIGH 1#define LOW 0#def

7、ine LS164_DATA(x) if(x) P0_4=1;else P0_4=0; /164 的数据端,x=1 时,输出高;x=0 时,输出低 5#define LS164_CLK(x) if(x)P0_5=1;else P0_5=0; /164 的时序端,x=1 时,输出高;x=0 时,输出低/*/名称: void LS164Send(unsigned char byte) */功能: 164 发送一个字节数据 */参数: unsigned char byte */返回: 无 */*void LS164Send(unsigned char byte) /这个函数如果还是不明白的话,你们可

8、暂且不理它unsigned char j; /定义一个变量for(j=0;jsbit BEEP=P12;sbit PWM=P00;sbit k1=P13;sbit k2=P14;int i=0;void PWM_OUT(int t);void delay_ms(unsigned int ms)unsigned int i,j; for(i=110;i0;i-) for(j=ms;j0;j-);void main(void)BEEP=0; delay_ms(500); BEEP=1; delay_ms(500); while(1)PWM_OUT(i);if(k1=0) delay_ms(10);

9、if(k1=0) i+=100;if(i=1000)i=0;13if(k2=0) delay_ms(10);if(k2=0)i-=100;if(isbit BEEP=P12;sbit PWM=P00;int i=0;void time0_init(void); /定时器 0 初始化void main(void) BEEP=0;delay_ms(500);BEEP=1;delay_ms(500);time0_init();while(1)if(i=20) /到达 1si=0;/计数值清 0 14 void time0_init(void)TMOD=0X01; /定时器工作方式设置为,定时器 0,

10、方式 1TH0=(65536-50000)/256; /计数寄存器高 8 位TL0=(65536-50000)%256; /计数寄存器低 8 位TR0=1; /开启定时器 0 运行ET0=1; /开定时器 0 中断EA=1; /开总中断void time0_irq(void) interrupt 1TH0=(65536-50000)/256; /计数寄存器高 8 位重载TL0=(65536-50000)%256; /计数寄存器低 8 位重载i+;应用反射式光电传感器进行转速检测直流电动机转速的测量有两种方法:定时法和间隔法:定时法:在一定的时间间隔内检测脉冲的数量(通过反射式光电传感器的白线的

11、数量进行测量) ,通过计算得出在单位时间内直流电动机转过的圈数,即可得到转速。间隔法:检测白线与白线之间的间隔时间,通过这个时间可以计算出直流电动机旋转一周需要的时间,进而得出转速。常用到的是定时法。1、用定时计数器 T0(P34)检测通过反射式光电传感器白线的数量 (需要注意的是外部脉冲信号的频率不能低于晶振振荡频率经过 12 分频后的频率值,否则将无法完成准确的计数);2、用定时计数器 T1 进行定时。在应用定时法进行程序设计时需要考虑采样的时间间隔。例如电机的转速为 3000rpm,即每秒钟旋转 50 圈,每一圈上可以得到 2 个脉冲(看你电机上白线的数量,越多的话越精确) ,所以每秒钟

12、可以得到 100 个脉冲,如果直流电动机的负载惯性较大,可以选择每隔 1s 检测一次转速并调整一次输出量;如果直流电动机为空载状态,可以选择每隔 0.2s 检测一次转速并调整一次输出量。程序实例:#include #include sbit PWM=P10; /电机控制,高电平不转,低电平转,应用三极管的开关作用unsigned char timecount; /1s 定时计数值int count; /计数次数int KM; /公里数bit time_1s_flag; /1s 定时标志位unsigned char speed; /电机速度15void PWM_OUT(int t); / 电机速

13、度控制void Count0_init(void); /定时器计数器初始化void delay_100us(unsigned char i ); /100us 延时void delay_ms(unsigned int ms); /1ms 延时void main(void)Count0_init();/定时器计数器初始化while(1)PWM_OUT(40); /电机控制 void delay_100us(unsigned char i )unsigned char j;for(;i0;i-)for(j=29;j0;j-)_nop_();_nop_();void delay_ms(unsigne

14、d int ms)unsigned int i,j;for(i=80;i0;i-)for(j=ms;j0;j-);/ 电机速度控制,软件延时的方式输出 PWMvoid PWM_OUT(int t)PWM=0;delay_100us(t);PWM=1;delay_100us(100-t);/定时器计数器初始化void Count0_init(void)TMOD=0X16; /定时器 1 计时工作方式 1,计数器 0 计数工作方式 2TH0=0; /计数器初值TL0=0;TH1=(65536-50000)/256;/定时器 1 初值,50MSTL1=(65536-50000)%256;16TR0=1; /开启计数器 0TR1=1; /开启定时器 1ET1=1; /开定时器 1 中断EA=1; /开总中断/定时器 1 中断服务程序void time1_irq(void) interrupt 3TH1=(65536-50000)/256; /定时器 1 初值重载TL1=(65536-50000)%256;if(+timecount=20) /1s 到 timecount=0; /计数值清 0TR0=0; /关计数器 0count=TL0; /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号