




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学本科实验报告题目: 利用AT89S52单片机设计 红外遥控发射显示电路课程名称: 电子工程训练 学院(系): 电子信息与电气工程学部 专 业: 电子信息工程 班 级: 电子 0905 学 号: 200981022 学生姓名: 周柏会 成 绩: 2012年 12 月 21 日题目:利用AT89S52单片机设计红外遥控发射显示电路1 设计要求(1)51最小系统(2)点阵显示预设内容(3)红外发射系统2 设计分析及系统方案设计电路分为5个部分:晶振电路、复位电路、发射电路、显示电路、按键电路。(1)晶振电路 晶振电路输入端为引脚XTAL1,输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容,石英晶体为一感性原件,与电容构成振荡回路,为片内放大器提供正反馈和振荡的相移条件,从而构成一个稳定的自激振荡器。振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.212 MHz之间任选,电容C1、C2可在530 pF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调作用。(2)复位电路 通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。51单片机在时钟电路工作以后,在RST/VPD端持续给出2个机器周期的高电平就可以完成复位操作。复位电路采用按键及上电复位,上电与按键均可有效复位。上电瞬间RST引脚获得高电平,单片机复位电路随着电容的C5的充电,RST引脚的高电平逐渐下降。RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。按键复位是直接将高电平通过电阻R6、R8分压到达RESET引脚,实现复位操作。(3)按键电路 通过键盘扫描查询,其中包括防抖、防止多按键同时操作的功能。(4)显示电路用点阵以一行一个图像逐列扫描的形势进行显示程序预设的字符。(5)发射电路 用一个发光二极管和三极管组成发射电路,通过示波器是否有波形显示来判断是否能够发射红外。电源电路AT89S52单片机红外发射器按键电路复位电路晶振电路点阵显示图一:总体电路框图3 各功能模块硬件电路设计 51单片机最小系统由AT89S52单片机、晶振电路和复位电路组成。图二:51单片机最小系统图三:LED8x8点阵控制系统图四:发射电路4 系统软件设计 程序开始是对单片机进行初始化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图六所示。开始键按下初始化调用按键扫描程序扫描按键信号发送程序发送完毕发送NY图六:红外遥控单元发射程序流程图源代码:#include#define KEYPORT P1 /用P0口做键盘矩阵sbitSetKey = P15;/设定按键sbitKey0 = P10 ;sbitKey1 = P11 ;sbitKey2 = P12 ;sbitKey3 = P13;sbitSend_Ir =P14;/接发射二极管/*#defineROW_MAX 15#define COL_MAX 8unsigned char code tab=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/P2口unsigned char code graphROW_MAXCOL_MAX = /定义字模,二维数组一行一幅图像0xBA,0xAA,0xBA,0xFE,0x92,0xBA,0x92,0xFE,/周字0x00,0x7C, 0x44, 0x7C,0x44,0x7C,0x10,0xFE,/百字0x7E,0x24, 0X7C, 0x00,0xBA,0x44,0x28,0x10,/会字0x3C,0x10,0x08,0x04,0x24,0x24,0x18,0x00,/2字0x18,0x24,0x24,0x24,0x24,0x24,0x18,0x00,/0字0x18,0x24,0x24,0x24,0x24,0x24,0x18,0x00,/0字0x18,0x24,0x04,0x1C,0x24,0x24,0x18,0x00,/9字0x18,0x24,0x24,0x18,0x24,0x24,0x18,0x00,/8字0x08,0x08,0x08,0x08,0x08,0x18,0x08,0x00,/1字0x18,0x24,0x24,0x24,0x24,0x24,0x18,0x00,/0字0x3C,0x10,0x08,0x04,0x24,0x24,0x18,0x00,/2字0x3C,0x10,0x08,0x04,0x24,0x24,0x18,0x00,/2字0x00,0x18,0x24,0x42,0x81,0x99,0x99,0x66,/心字0x3C,0x04,0x04,0x3C,0x24,0x24,0x3C,0x00,/9字0x00,0x08,0x08,0x08,0x08,0x18,0x08,0x00,/1字发射标志;unsigned int row = 0;/二维数组的行值变量unsigned int col = 0;/二维数组的列值变量/unsigned char cnta = 0;/扫描到哪一列/unsigned char scan_cnt = 0;/每帧图像被扫描的次数/unsigned char img_cnt = 0;/*-*- * 函数名称: System_Init() * 输 入: * 返 回: * 函数功能: 系统初始化-*-*/void System_Init(void) P0 = 0x0FF; P1 = 0x0FF; P2 = 0x0FF; P3 = 0x0FF; /*-*- * 函数名称: Ex0_Init() * 输 入: * 返 回: * 函数功能: 外中断0初始化-*-*/void timer0_Init(void) TMOD = 0x12; TL0 = -13; TH0 = -13; ET0 = 1; TR0 = 1; EA = 1;/*-*- * 函数名称: Delay() * 输 入: * 返 回: * 函数功能: 12MHz延时-*-*/void Delay(unsigned int i) while (-i);/-END OF FILE- void HardWareTimer1(void) / 设置定时器0 / 16位定时,1毫秒延时 TMOD = 0x12; TH1 = (65536-840) / 256; TL1 = (65536-840) % 256; TF1 = 0; TR1 = 1; / 启动定时器2 ET1 = 0; / 关定时器0中断 / 等待 while (!TF1); /*/-#define Null z / 不能和键值相同/ 按键按下标志static bit KeyPress;/ 按键缓冲区unsigned char KeyBuf;/ 按键计数unsigned char KeyCnt;/*-*- * 函数名称: GetKey() * 输 入: / * 返 回: Null/(KeyBuf) * 函数功能: 按键扫描-*-*/unsigned char GetKey(void) unsigned char Keytemp; Keytemp = KEYPORT; if (Keytemp = 0xff) KeyPress = 0; / 清按键按下标志 KeyBuf = 0; / 清按键缓冲区 KeyCnt = 0; / 清按键计数器 return Null; Delay(1250); / 延时10毫秒 Keytemp = KEYPORT; if (Keytemp = 0xff) / 是抖动 KeyPress = 0; / 清按键按下标志 KeyBuf = 0; / 清按键缓冲区 KeyCnt = 0; / 清按键计数器 return Null; else / 真的有键按下 if (KeyPress) return Null;/ 上次按键没有释放 / 是设置键按下 /*if (SetKey = 0) KeyPress = 1; / 置位按键按下标志 KeyBuf = A; KeyCnt+; / 按键计数器加1 */ / 是键0按下 if (Key0 = 0) KeyPress = 1; / 置位按键按下标志 KeyBuf = 0; KeyCnt+; / 按键计数器加1 / 是键1按下 if (Key1 = 0) KeyPress = 1; / 置位按键按下标志 KeyBuf = 1; KeyCnt+; / 按键计数器加1 / 是键2按下 if (Key2 = 0) KeyPress = 1; / 置位按键按下标志 KeyBuf = 2; KeyCnt+; / 按键计数器加1 / 是键3按下 if (Key3 = 0) KeyPress = 1; / 置位按键按下标志 KeyBuf = 3; KeyCnt+; / 按键计数器加1 / 同时有多个按键同时按下视为按键无效 if (KeyCnt 1) return Null; else / 获取扫描到的键值 return KeyBuf; /*bit OP;void timer0(void) interrupt 1 if (OP) Send_Ir = Send_Ir; else Send_Ir = 1; #includevoid Send_0(void);void Send_1(void);void Send_0(void) OP = 1; / 启动载波 HardWareTimer1(); OP = 0; / 关载波 HardWareTimer1();void Send_1(void) OP = 0; / 关载波 HardWareTimer1(); OP = 1; / 启动载波 HardWareTimer1(); OP = 0; / 关载波/ 发送键号0-31void send0() /起始位 Send_1(); Send_1(); / 控制位(固定为1) Send_1(); / 系统码位 Send_0(); Send_0(); Send_0(); Send_0(); Send_0(); / 数据码位1 Send_1(); Send_1(); Send_0(); Send_0(); Send_0(); Send_1(); / 结束 Send_Ir = 1; HardWareTimer1(); HardWareTimer1(); HardWareTimer1();/ 发送键号1-33void send1() /起始位 Send_1(); Send_1(); / 控制位(固定为1) Send_1(); / 系统码位 Send_0(); Send_0(); Send_0(); Send_0(); Send_0(); / 数据码位1 Send_1(); Send_1(); Send_0(); Send_0(); Send_1(); Send_1(); / 结束 Send_Ir = 1; HardWareTimer1(); HardWareTimer1(); HardWareTimer1();/ 发送键号2-35void send2() /起始位 Send_1(); Send_1(); / 控制位(固定为1) Send_1(); / 系统码位 Send_0(); Send_0(); Send_0(); Send_0(); Send_0(); / 数据码位1 Send_1(); Send_1(); Send_0(); Send_1(); Send_0(); Send_1(); / 结束 Send_Ir = 1; HardWareTimer1(); HardWareTimer1(); HardWareTimer1();/ 发送键号3-37void send3() /起始位 Send_1(); Send_1(); / 控制位(固定为1) Send_1(); / 系统码位 Send_0(); Send_0(); Send_0(); Send_0(); Send_0(); / 数据码位1 Send_1(); Send_1(); Send_0(); Send_1(); Send_1(); Send_1(); / 结束 Send_Ir = 1; HardWareTimer1(); HardWareTimer1(); HardWareTimer1();void main(void)unsigned char temp;unsigned int pic;unsigned int b;unsigned int d=0; Delay(103); HardWareTimer1(); System_Init();timer0_Init();pic= 4; while (1) temp = GetKey(); switch ( temp ) case 0: send0(); pic = 0; b=3;break; case 1: send1(); pic = 3; b=12;break; case 2: send2(); pic = 12; b=14; break; case 3: send3(); pic = 14; b=15; break; default: break; while(picb)while (d100)for(col=0;col8;col+)P2=tabcol;P0=graphpiccol;Delay(50);d+;d=0;pic+;P0=0xFF;P2=0xFF;Delay(12500);P0=0xFF;P2=0xFF; 5 系统调试运行结果说明计分析软件环境:软件仿真:Keil C51单片机仿真:MedWin编程器:Superpro /Z硬件环境:计算机单片机仿真器编程器运行结果: 1、在51单片机系统焊接完毕后电源模块的测量输出电压值为4.52V,符合要求。2、在点阵控制系统部分焊接完毕后,接通电源后点阵显示初始化的形状,通过分别按下按键1、2、3、4,能够在解码器上显示预设好的频道“31”、“33”、“35”、“37”,同时在点阵上显示出“31”、“31”、“35”、“37”。3、所有电路全部焊接完成接通电源后点阵显示初始化的形状,通过分别按下1、2、3键,能够在解码器上显示预设好的字符“周、百、会”、“2、0、0、9、8、1、0、2、2”、“心形符号和数字9”,同时在点阵上显示出预设的字符。按键4为红外发射按键,按下4键后在示波器上有瞬间的波形显示。调试中出现的问题: 1,硬件问题:在最后检查时,点阵没有完全显示结果。原因:焊接电路时可能把相邻的两个节点连在一起,电路短路导致点阵的某一行没有工作。2,软件问题:在程序编译过程中出现了两处错误,最后在同学的帮助下改正确了,运行以后结果也是正确的。6 结论本次试验中我利用AT89S52单片机设计了红外遥控发射显示电路。电路分为两大部分:一是按键显示部分,按键部分是利用按键扫描查询的方式进行识别,其中包括防
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变电工程施工安全协议标准范例
- 新课标下信息技术与初中数学课堂教学的融合
- 代建房屋合同样本
- 企业购买物品合同样本
- 业绩考核合同标准文本
- 2025年TI粉末多孔过滤器项目发展计划
- 部编版三年级语文下册-《荷花》-教学设计及教学反思
- 体育课教学设计
- 供货应急响应预案
- 期末成绩奖励方案
- 江苏徐州市深地科学与工程云龙湖实验室社会招考聘用9人模拟试卷【附答案解析】
- 土方回填施工记录表
- 植物根茎叶课件
- 反生产行为讲稿
- 施工现场消防安全技术交底
- 冀教版二年级语文下册看图写话专项加深练习题含答案
- 焊接工艺评定及焊接工艺技术评定管理标准
- 洗衣房各岗位工作流程
- 基于SWOT分析的义乌市现代物流业发展研究
- 基于自适应滤波对音频信号的处理详解
- 油浸式变压器工艺文件汇编
评论
0/150
提交评论