1、 益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/1简 介单片机益智系列智能寻迹机器人是由益芯科技有限公司为科教方便而研发设计。根据现代学校对嵌入式系统开发的需求。依据提高学生实际动手操作能力和思考能力,以加强学生对现实生活中嵌入式系统的应用为参照。智能寻迹机器人全新的设计模式,良好的电路设计,一体化的机电组合,智趣的系统开发,更是成为加强学生学习兴趣的总动源。智能寻迹机器人采用现在较为流行的 8 位单片机作为系统大脑。以 8051系列家族中
2、的 AT89S51/AT89S52 为主芯片。40 脚的 DIP 封装使它拥有 32 个完全 IO(GPIO通用输入输出)端口,通过对这些端口加以信号输入电路,控制电路,执行电路共同完成寻迹机器人。P0.0,P0.1 ,P0.2,P0.3 分别通过LG9110 电机驱动来驱动电机 1 和电机 2。由电机的正转与反转来完成机器人的前进,后退,左转,右转,遇障碍物绕行,避悬崖等基本动作。在机器人前进时如果前方有障碍物,由红外发射管发射的红外信号被反射给红外接收管,红外接管将此信号经过 P3.7 传送入 AT89S52 中,主芯片通过内部的代码进行机器人的绕障碍物操作,同时主芯片将 P3.7 的信号
3、状态通过 P2.5 的LED 指示灯显示出来。机器人行走时会通过 P3.5 与 P3.6 的红外接收探头来进行检测。 当走到悬崖处时,P3.5 或 P3.6 将收到一个电平信号,此电平信号将通过相应端口传送入主芯片中,主芯片通过内部代码完成机器人的避悬崖操作。同时 P3.5 与 P3.6 的信号状态将通过 P2.6/P2.7 显示出来。在机器人的左转,右转,后退的过程,可以通过观看以 P2.0/P0.7 为指示灯的运行状态。P0.4 为机器人的声控检测端口,在运行为前进状态时,可以能过声控(如拍手声)来控制它的运行与停止。P0.6 为机器人的声音输出端。在机器人遇到障碍物时。进行绕障碍物与避悬
4、崖时可以通过此端口控制蜂鸣器发出报警声。当益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/2为白天或黑夜时可以通过 P0.5 端口中的光敏电阻来进行判断,以方便完成机器人夜间自动照明等功能。两个按键以查询/中断两种不同的方式来展现按键操作。你可以按下 S1 键来进行机器的停止。再按下 S2 键来进行机器人的运行。这个按键的信息分别被 P3.2,P3.4 接收到。 IR1 为红外遥控接收器,这就为机器人进行远程遥控创造了可能。这个红外遥控接收头
5、接收到红外信号时将信号经过 P3.3 送入到主芯片,主芯片对其进行解密后以不同的方式对机器人进行控制。同时将用户的按键信息通过 P2 端口上 LED 数码管显示出来。P3.0、P3.l 中 COM 端口的加入,让你完全可以用电脑对其进行控制。你可以通过对串口发送数据,数据会被显示到 LED 数码管中,并让机器人执行相应的功能。电脑的串口软件要求波特率为 9600。8 位数据位,这时你就可以快乐的用电脑来对它进行你的完全控制了。EXKJ-ZN02 功能的组合多样,使得学生可以充分发挥自主能力,制作出不同的机器人。它为学校进行机器人竞赛和毕业项目设计建立了实物平台,是学校教师授课变得更轻松有趣。同
6、时也能改变学生学习模式和激发学习兴趣。更是作为验证学生学习效果的有力工具。良好的电路板设计,让学生制作变得方便容易,其大大提高了学生的制作成功率。提高了学生对电子电路的兴趣,更是教学过程中不可或缺的教具。益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/3实验一 程序状态指示灯演示一、 实验简介:本程序重点演示了一个最简程序的基本结构,它从顺序、判断、循环的形式表现程序的基本结构,此程序通过闪灯不断的闪动,及闪灯闪动的快慢来表示程序不不同工作状
7、态。它也是常数字设备中进行状态表示的方法之一(例:网卡) 。二、 实验原理图:益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/4三、 实现代码:/= / 实验名称:程序状态指示灯演示程序 / 开发日期: 2009/01/19 / 修改日期: / 程序作者: guojun 邮箱:GuoGuoE / 开发商:益芯科技有限公司技术部 / 程序备注: 此程序仅为表现本机功能而演示用,当用作实际工程时请慎用. / 特别声明: 此程序可作研究之用,但引用
8、,转载,使用请注明出处. /= /#include /包含头文件#define LED P1 /宏定义显示端口号void Delay(unsigned int DelayTime) /定义可变延时函数while(DelayTime-); /延时函数进入倒计时void main() /程序主函数码unsigned int CountData=0; /定义一个整形变量 ,用于闪动次数+while(1) /主程序循环体开始 if(CountData /包含头文件#define Led P1 /定义显示端口号unsigned int code BToM=0x7E,0x3C,0x18,0x00; /定义
9、由两边到中间显示数据unsigned int code MToB=0xE7,0xC3,0x81,0x00; /定义由中间到两边显示数据void Delay() reentrant /定义可重入的延时函数 unsigned int DelayTime=10000; /定义延时时间基数while(DelayTime-); /程序开始延时开始void LeftToRight() /定义从左边到右边显示函数unsigned char TempCount=0; /定义显示次数变量Led=0xFE; /定义初步显示数据for(TempCount=0;TempCount1; /由左边向右移动数据return
10、; /空返语句 ,表明此子程序的结束.void BothToMid() /定义由两边到中间显示子程序 unsigned char TempCount=0; /定义临时次数变量Led=0xFF;for(TempCount=0;TempCount /包含头文件typedef unsigned int uint; /重命名整数类型关键字typedef unsigned char uchar; /重命名字符类型关键字uchar code LedShowData=0x9F,0x25,0x0D,0x99,0x49, /定义固定存储显示字符0x41,0x1F,0x01,0x19,0x03; /1,2,3,4
11、,5,6,7,8,9,0void Delay() /定义延时函数uint TempTime=20000; /定义延时时间变量while(TempTime-); /通过循环进行延时益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/10 void main() /主程序开始 main() uchar CountData=0; /定义计数变量while(1) /主程序无限循环开始P2=LedShowDataCountData; /P2 端口读入显示数
12、据CountData+; /计数变量+(加加)if(CountData=10) /判断是否超出计数范围CountData=0; /重新置零Delay(); /延时函数被调用四、 运行效果:程序运行效果为:程序下载后 ,数码管将从 1-9 依次显示,最后将显示数字 0. 益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/11实验四 数码管及跑马灯演示一、 实验简介:本程序主要是将数码管及跑马灯放在一起显示,它主要说明了,如何将在单系中运行多个看似
13、并行运行的子系统.本程序在此将跑马灯子程序放入到一个头文件中,对于一个大的工程这样将有益于程序文件的管理。二、 实验原理图:三、 实现代码:/=/ 开发日期:2009/01/26 / 修改日期: / 程序作者: guojun 邮箱:GuoGuoE / 开发商:益芯科技有限公司技术部 / 程序备注:此程序仅为表现本机功能而演示用,当用作实际工程时请慎用。 / 特别声明:此程序可作研究之用,但引用、转载、使用请注明出处。 /=/#include /包含端口定义头文件unsigned char code LedShowData=0x9F,0x25,0x0D,0x99,0x49, /定义数码管显示字符
14、0x41,0x1F,0x01,0x19,0x03; /1,2,3,4,5,6,7,8,9,0#define Led P1 /定义显示端口unsigned char CountData=0; /定义数码管计数器益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/12unsigned int code BToM=0x7E,0x3C,0x18,0x00; /定义由两边到中间显示数据unsigned int code MToB=0xE7,0xC3,0x8
15、1,0x00; /定义由中间到两边显示数据void Delay() reentrant /定义可重入延时函数 unsigned int DelayTime=10000; /定义延时时间变量 while(DelayTime-); /通过循环进行延时P2=LedShowDataCountData; /置数码管显示数据到 P2 端口CountData+; /数码管地址计数器+(加 1)if(CountData=10) /判断计数器累计数值CountData=0; /计数器清零#include /包含显示方式头文件 void main() /主程序入口while(1) /无穷循环开始. LeftToR
16、ight(); /从左到右进行显示 RightToLeft(); /从右到左进行显示BothToMid(); /由两边到中间进行显示MidToBoth(); /由中间到两边进行显示/跑马灯.h/void LeftToRight() /定义从左边到右边显示函数unsigned char TempCount=0; /定义显示次数变量Led=0xFE; /定义初步显示数据for(TempCount=0;TempCount1; /由左边向右移动数据return; /空返语句 ,表明此子程序的结束.益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZ
17、henE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/13void BothToMid() /定义由两边到中间显示子程序 unsigned char TempCount=0; /定义临时次数变量Led=0xFF;for(TempCount=0;TempCount /包含 S51 地址头文件typedef unsigned char uchar; /重定义无符号字符型益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:
18、http:/15typedef unsigned int uint; /重定义无符号整型sbit S1=P32; /定义 S1 变量sbit S2=P34; /定义 S2 变量uchar DataCount=0; /定义全局计数器uchar code LedShowData=0x9F,0x25,0x0D,0x99,0x49, /定义固定存储显示字符0x41,0x1F,0x01,0x19,0x03; /1,2,3,4,5,6,7,8,9,0void KeyDelay() /定义键盘防抖子程序 uint KeyTime=20000; /定义防抖时间变量while(KeyTime-); /防抖延时开
19、始return;void S1_Break() interrupt 0 /定义 S1(INT0)外部中断 0while(0=S1); /判断 S1 按键键值DataCount-; /计数器数值减 1if(DataCount9) /判断计数器是否到最小值 DataCount=9; /显示数字 0return; void main() /主程序开始ET0=1; /设定外部中断触发方式(1- 低电平触发)EX0=1; /开启外部中断 0EA=1; /开记总中断while(1) /程序主循环if(0=S2) /通过查询判断键值KeyDelay(); /键盘防抖动开延时子程序开始DataCount+;
20、/计数器加 1if(DataCount9) /判断当前计数器DataCount=0; /将计数器置 0P2=LedShowDataDataCount; /通过端口显示计数器数值四、 运行效果:益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/16程序运行效果:开机后数码管显示数字“1“,当按 S1 不放时,数码管数字不变,,松开 S1按键,数码减 1;按 S2 键不放时,数码管数字会自动加 1。并且数字遵守从 0-9 循环操作。 实验六 话筒声
21、音识别演示一、 实验简介:本程序主要通过话筒对声音信号进行识别,由于本电路有效的去除杂波,所以仅能对响度较大的声音进行识别(例:拍手声 )。像正常的说话声对本电路虑除,不会产生信息的输入。话筒识别的加入,为我们建立了声控平台。二、 实验原理图:三、 实现代码:/= = / 开发日期: 2009/01/27 / 修改日期: / 程序作者: guojun 邮箱:GuoGuoE / 开发商:益芯科技有限公司技术部 /益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺
22、铺:http:/17/ 程序备注: 此程序仅为表现本机功能而演示用,当用作实际工程时请慎用. / 特别声明: 此程序可作研究之用,但引用,转载,使用请注明出处. /=/#include /包含 51 单片机相关头文件sbit LeftLed=P20; /定义前方左侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口sbit B1=P04; /定义话筒输入端口void Delay() /定义去除杂音延时子程序 unsigned int DelayTime=1000; /定义去除杂音变量while(DelayTime-); /延时循环开始return;void main()
23、/主程序入口LeftLed=0; /前方左侧指示灯亮RightLed=0; /前方右侧批示灯亮while(1) /程序主循环if(0=B1) /判断是否有声音输入while(0=B1); /等待声音信号结束Delay(); /去除多余杂音LeftLed=!LeftLed; /前方左侧指示灯取反RightLed=!RightLed; /前方右侧指示灯取反四、 运行效果:程序运行效果:本程序开机后,前方两侧的指示灯点亮,拍一下手后,前方指示灯关闭。再一次进行拍手,指示灯又一次被点亮。益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE
24、产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/18实验七 光敏电阻与蜂鸣器演示一、 实验简介:本程序讲述了光敏电阻的使用方法。当处于光暗时,光敏电阻导通,将信号传入到单片机,单片机将控制蜂鸣器按一定的频率响亮,并且前方的指示灯也开始闪闪亮。通过对光敏电阻信号的接收,从而实现了夜间自动照明的功能。 二、 实验原理图:三、 实现代码:/=/ 开发日期: 2009/01/27 编写光敏电阻与蜂鸣器演示程序最初代码 /益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘
25、宝旺铺:承芯易人 http:/ 有啊旺铺:http:/19/ 修改日期: / 程序作者: guojun 邮箱:GuoGuoE / 开发商:益芯科技有限公司技术部 / 程序备注: 此程序仅为表现本机功能而演示用,当用作实际工程时请慎用. / 特别声明: 此程序可作研究之用,但引用,转载,使用请注明出处. /=/#include /包含 51 单片机相关的头文件sbit RL1=P05; /定义光敏电阻接收端口sbit SB1=P06; /定义蜂鸣器响铃端口sbit LeftLed=P20; /定义前方左侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口void Dela
26、y() /定义蜂鸣器频率响亮子程序 unsigned int DelayTime=20000; /定义频率定时变量while(DelayTime-); /频率定时循环开时return;void main() /主程序入口while(1) /程序主循环if(1=RL1) /判断光敏的现在状态 (有光 0,无光 1)Delay(); /延时子程序开时SB1=!SB1; /蜂鸣器响亮LeftLed=!LeftLed; /前方左侧指示灯闪亮RightLed=!RightLed; /前方右侧指示灯闪亮elseSB1=1; /将蜂鸣器关闭LeftLed=1; /前方左侧指示灯关闭RightLed=1; /
27、前方右侧指示灯关闭四、 运行效果:程序运行效果:打开电源开关,如果本机在有光照的情况下,将无任何的反应,这时将机子移动到较黑暗的地方,将会看到前方指示灯闪亮和蜂鸣器响亮。益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/20实验八 红外反射与直流电机驱动演示一、 实验简介:本程序通过前端,底端的红外发射头和接收头来判断小车的运行轨迹,当前与底端发生信号输入时,信号将被单片机接收,单片机来控制机器按照写好的程序开始运行。同时为达到好的效果,加入声
28、音识别与蜂鸣器输入输出设备。.使得此机器人的运动变得更加有趣。二、 实验原理图:三、 实现代码:/=/ 开发日期:2009/01/28 / 修改日期: / 程序作者:guojun 邮箱:GuoGuoE / 开发商:益芯科技有限公司技术部 / 程序备注:此程序仅为表现本机功能而演示用,当用作实际工程时请慎用。 / 特别声明:此程序可作研究之用,但引用、转载、使用请注明出处。 /益芯科技让您在兴趣中学习,在运用中掌握,在掌握中应用。_益芯电子科技 技术咨询:GuoGuoE ZhenZhenE 产品咨询:HongHongE淘宝旺铺:承芯易人 http:/ 有啊旺铺:http:/21/= /#inc
29、lude /包含 51 单片机相关的头文件sbit LeftLed=P20; /定义前方左侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口sbit LeftIR=P35; /定义前方左侧红外探头端口sbit RightIR=P36; /定义前方右侧红外探头端口sbit FontIR=P37; /定义前方正前方红外探头端口sbit M1A=P00; /定义左侧电机驱动 A 端sbit M1B=P01; /定义左侧电机驱动 B 端sbit M2A=P02; /定义右侧电机驱动 A 端sbit M2B=P03; /定义右侧电机驱动 B 端sbit B1=P04; /定义语音识识别传感器端口sbit SB1=P06; /定义蜂鸣器端口#define RunShow P1 /定义数据显示端口void Delay() /定义机器人调转子时间子程序 unsigned int DelayTime=50000; /定义机器人转弯时间变量while(DelayTime-); /机器人转弯循环SB1=!SB1; /蜂鸣器闪响return;void ControlCar(unsigned char ConType) /定义电机控制子程序M1A=0; /将 M1 电机 A 端初始化为 0M1B=0; /将 M1 电机 B 端初始化为 0M2A=0; /将 M2 电机 A