参考单片机基于at89s52单片机的遥控器设计毕业论文内容摘要:
设计 16 遥控接收单元的 电路 图设计 遥控接收单元由单片 机最小系统和红外接收器、控制对象电路等组成,遥控接收单元框图如图 44 所示。 图 44 红外 遥控接收单元框图 接收控制器 由 一个 AT89S52芯片作为控制中心 ,与接收电路和各自的控制电路共同构成。 其中接收电路使用一体化红外接收头 HS0038, HS0038工作频率为 38 kHz,能对收到遥控信号进行放大、检波、整形、解调 ,得到 TTL 电平的编码信号 ,再送给单片机 ,经单片机解码并执行相关控制程序 ,对外只有 3 个引脚 :VS、 GND和 1个脉冲信号输出引脚 ,使用方便 ,性能可靠。 图 45 为该遥控器的接收器原理图,其中 P0 口作为数码管的二进制数据输出,显示按键号, 第 9 脚为单片机复位脚,采用复位电路如图所示, 18 19 脚为12MHZ 晶振。 AT89S52 单片机 电源 控制对象 红外接收器 复位电路 晶振电路 基于 AT89S52 单片机的遥控器设计 17 图 45遥控 接收 单元原理图 图 46遥控 接收单元 PCB图 江苏信息职业技术学院毕业设计 18 5 红外遥控 程序流程图 程序开始是对单片机进行初始化设置,循环扫描判断是否有键按下 ,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图 45所示。 图 51 遥控发射程序流程图 开始 键按下 初始化 调用按键 扫描程序 扫描 按键信号发送程序 发送完毕 发送 N Y 基于 AT89S52 单片机的遥控器设计 19 程序开始是对单片机进行初始化设置, 使用显示程序 , 循环扫描判断信号是否有效, 如果有 效就接收 , 接收后调用相应功能程序, 遥控 接收 程序流程图如图46 所示。 图 52 遥控发射程序流程图 开始 初始化 调用显示程序 接收 接收完毕 得键号 调用相应功能程序 判断信号是否有效 N Y 中断触发 返回 中断返回 江苏信息职业技术学院毕业设计 20 6 软件设计 :红外遥控发射端软件设计 /**************************************************************** * 文件名 : 红外遥控发射端 2 ****************************************************************/ include include define uint unsigned int define uchar unsigned char uchar count = 0。 /**************************************************************** * 名称 : delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数 ) ****************************************************************/ void delay_1ms(uint i) { uchar x,j。 for(j=0。 ji。 j++) for(x=0。 x=148。 x++)。 } /*************************************************************** * 名称 : time0_init() * 功能 : 定时器的初始化,定时 10ms ****************************************************************/ void time0_init() { TMOD = 0x01。 IE = 0x82。 TH0 = 0x15。 TL0 = 0xA0。 } /**************************************************************** * 名称 : time0_int() * 功能 : 定时器中断 基于 AT89S52 单片机的遥控器设计 21 ****************************************************************/ void time0_int() interrupt 1 { count++。 TH0 = 0x15。 TL0 = 0xA0。 } /**************************************************************** * 名称 : keyscan() * 功能 : 实现按键的读取 ****************************************************************/ uchar keyscan(void) { uchar i,j, temp, buffer[4] = {0xef, 0xdf, 0xbf, 0x7f}。 for(j=0。 j4。 j++) { P1 = buffer[j]。 /*以下三个 _nop_()。 作用为让 P1 口的 状态稳定 */ _nop_()。 _nop_()。 _nop_()。 temp = 0x01。 for(i=0。 i4。 i++) { if(!(P1 amp。 temp)) { return (i+j*4)。 //返回取得的按键值 } temp = 1。 } } } /**************************************************************** * 名称 : main() * 功能 : 主函数 ****************************************************************/ void main(void) { uchar key_value。 //读出的键值 while(1) { P1 = 0xf0。 江苏信息职业技术学院毕业设计 22 if(P1 != 0xf0) { delay_1ms(15)。 //按键消抖 if(P1 != 0xf0) { key_value = keyscan() + 1。 //key_value 是键码加 1 } time0_init()。 TR0 = 1。 while(1) { uchar i。 for(。 count 10。 ) //发射首部 P2 = 0x00。 count = 0。 for(。 count 10。 ) P2 = 0xff。 count = 0。 for(i = 0。 i key_value。 i++) //发射数据 { for(。 count 5。 ) P2 = 0x00。 count = 0。 for(。 count 5。 ) P2 = 0xff。 count = 0。 } TR0 = 0。 break。 } } } } 基于 AT89S52 单片机的遥控器设计 23 : 红外遥控接收端软件设计 /**************************************************************** * 文件名 : 红外遥控接收端 2 ****************************************************************/ include include define uchar unsigned char define uint unsigned int uchar count = 0。 //定时器计时 uchar time = 0。 //脉冲计时 uchar num = 0。 //键码值 uchar receiv = 0。 //为 0 时不是接收状态,为 1 时为正在接收数据状态 void receive()。 /**************************************************************** * 名称 : delay() * 功能 : 延时 ,延时时间为 ****************************************************************/ void delay(uint k) { uint i,j。 for(i=0。 ik。 i++) for(j=0。 j1800。 j++)。 } /**************************************************************** * 外部中断 0 初始化 inter0_init() ****************************************************************/ void inter0_init() { EA = 1。 PX0 = 0。 IT0 = 1。 //下降沿触发 } /**************************************************************** * 外部中断 0 inter0_int() ****************************************************************/ void inter0_int() interrupt 0 { TR0 = 1。 江苏信息职业技术学院毕业设计 24 while(P3^1 == 0)。 TR0 = 0。 time = 5 * count。 if(time 450 amp。 amp。 time 750) { receiv = 1。 //等于 1 开始接收数据 EX0 = 0。 num = 0。 } count = 0。 } /**************************************************************** * 定时器 0 初始化 ****************************************************************/ void time0_init() { EA = 1。 ET0 = 1。 PT0 = 1。 TH0 = 0xEC。 TL0 = 0x78。 } void time0_int() interrupt 1 { TH0 = 0xEC。 TL0 = 0x78。 count++。 } /**************************************************************** * 键码接收 ****************************************************************/ void receive() { TR0 = 1。 while(P3^1 == 0)。 //计时高电平的时 TR0 = 0。 time = 5 * count。 if(time 180 amp。 amp。 time 420) { num++。 count = 0。 基于 AT89S52 单。参考单片机基于at89s52单片机的遥控器设计毕业论文
相关推荐
数字逻辑集成电路组成的控制电路单片化,可广泛用于家电产品。 (8) 外围电路内装化 这也是单片机发展的主要方向。 随着集成度的不断提高,有可能把众多的各种处围功能器件集成在片内。 除了一般必须具有的 CPU、 ROM、 RAM、定时器 /计数器等以外,片内集成的部件还有模 /数转换器 、 DMA 控制 器、声音发生器、监视定时器、液晶显示驱动器、彩色电视机和录像机用的锁相电路等。
功能 时序 时间 烹 调 烘 烤 解 冻 1 50%时间 高火 75%时间 高火 25%时间 小火 2 25%时间 中火 25%时间 中火 50%时间 中火 3 25%时间 小火 25%时间 小火 注:高中低三个火力大小用三个发光二极管模拟。 电路设计 本 系统以 AT89S52 单片机为核心,连接各外部电路完成人机交互等各功能的控制。 系统总体框图如下图 23 所示。 图 22 系统功能图
通断,进而控制量程的选择,译码器是用来根据量程的控制信号指示量程的位置的。 由此,实现了量程的自动选择。 组成框图如下图 2: 5 系统总图及程序 见附图。 模拟比较器 Ui 超出基准 不足基准 量程开关 量程寄存器 CP+ CP 译码器 最高位 最低位 17 结束语 由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的 A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠
W77E58F40 − 无铅封装 DIP 40: W77E058A40DL − 无铅封装 PLCC 44: W77E058A40PL − 无铅封装 PQFP 44: W77E058A40FL 中北大学分校 毕业设计(论文) 7 相关通信技术 、协议等 (1)通信 的概念 不同的独立系统利用线路互相交换数据便是通信,而构成整个通信的线路称为网络。 交换信息的系统若为计算机系统(当然也可以是其他系统
式智能家电控制系统,综合二者之所长,具有费用低,操作简单, 高可靠性和稳定性等 特点。 家电自身的进化必定要进一步智能化,家电与外界的沟通必定要实现网络化。 这是家电发展的两个重要方向。 将短信息应用于嵌入式智能家电系统,可让智能家电更加智能化。 用户只要在 GSM网络的服务区内,随时都可以知道家中各家 用电器的工作状态 ,而且可以只发 1条短信息就可以对家中电器进行远程控制,资费
RD EQU 058H MRD1 EQU 063H ORG 0000H AJMP START ORG 0003H。 外部中断 0 中断服务子程序入口地址 AJMP INTL ORG 0013H。 外部中断 1 中断服务子程序入口地址 AJMP INTY ORG 0100H START: MOV SP,30H MOV P1,11110011B。 initial I/O MOV SLA,0A0H。