| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于51单片机的智能小车(寻迹功能) -> 正文阅读 |
|
[嵌入式]基于51单片机的智能小车(寻迹功能) |
题目:基于C52的智能小车设计与制作 1设计目的 2功能要求及技术指标 功能要求:
技术指标: 可熟练运用按键复用,中断等技术,熟练掌握分模块编程,调用协调函数。各模块各司其职,协调配合,以此达到自己预期想要的效果,同时分模块编程,便于日后小车的维护。
方框图直接用软件VISIO 2003?画出。对方框图应有文字描述:方框图的功能、组成和工作过程(各方框图的相互关系)等。 4 硬件电路设计 主控芯片: 蜂鸣器工作原理:蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型,蜂鸣器的发声原理为: 蜂鸣器工作原理图: 电机驱动原理: 所谓步进电机驱动器就是一种将电脉冲转化为角位移的执行机构;更通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。我们可以通过控制脉冲的个数来控制电机的角位移量,从而达到***定位的目的;同时还可以通过控制脉冲频率来控制电动机转动的速度和加速度,从而达到调速的目的。目前,比较常用的步进电动机包括反应式步进电动机(VR)、永磁式步进电动机(PM)、混合式步进电动机(HB)和单相式步进电动机等。 电机驱动原理图: 5 软件设计 程序流程图直接用软件VISIO 2003 画出。注意绘制的程序流程图要规范,具体有如下要求:(1)开始框两边要是椭圆的;(2)判断框要是菱形,菱形框内的文字后要以问号?结尾,两条分支分别要有“Y”和“N”分支条件;(3)带箭头的流向线能到线的,尽量到线。 对程序程序流程图应有文字描述:程序流程图的功能、初始化的过程、工作流程等。 6 系统测试与结果分析基于物联网技术的智能家居控制系统的实验样机图如图5所示,用1台YB1731A2A型直流稳压电源提供+5V的电压,1台DMM4040型6位半数字万用表同时接入系统分别测量系统的输入电压、输入电流、输出电压。用0~10Ω/50W可调电阻做负载对该系统进行性能测试。 7 使用说明 按下S2键小车启动。放入事先准备好的跑道。小车自动向前行驶,脱离轨道后会发出警报声,根据相对应的程序。小车能够自主在准备好的轨道上行驶而不至于脱离轨道。 8 设计总结 经过为期一周的课设,我们不仅在技术方面得到了很大启发与进步,还在心性方面得到了很大的磨练。在本次实验中,我们了解了AT80C51单片机的基本硬件构成,学习并实践了流水灯、数码管、蜂鸣器、电机、定时器、按键及中断的代码编写,将硬件与代码结合,设计了基于51单片机的智能小车。 有些知识上课听起来云里雾里没怎么搞懂,通过这次自己动手操作,我们把学到的书本知识转化成了实际的应用,加深了我们对知识的掌握,实践和理论结合,让人感到更有意思。这一周中,我们遇到许许多多的困难,同时也不断克服困难。通过这几天的学习与钻研,我们再次培养了实践能力和协作精神,这对我们以后的工作和学习有很大的用处。总的来说,这次学的到了技术,也收获了很多处理问题的技巧与方法,果然实践才是掌握真理的唯一标准。 在这期间和老师的相处也特别的愉快,特别喜欢这种一起努力一起讨论的感觉,也享受这种经过自己的努力将问题解决发自内心的喜悦。 实验代码: #include<reg52.h> #include "main.h" #include"beep.h" #include"car.h" sfr IPH = 0xB7; extern unsigned short pwm_left_val ; extern unsigned short pwm_right_val; extern unsigned int pwm_t; unsigned char car_state = 0; Input_Filter_t input; Input_Flag_t input_flag; void timer0() interrupt 1 { pwm_t++; if(pwm_t == pwm_left_val) EN1 = 0; if(pwm_right_val == pwm_t) EN2 = 0; if(pwm_t == FREQUENCY * 5) { EN1 = 1; EN2 = 1; pwm_t = 0; } } void Timer0_init() { TMOD |= 0x02; TH0 = 235; TL0 = 235; ET0 = 1; EA = 1; IPH &= ~(1<<1); IP |= 1<<1; TR0 = 1; } void key() { while(1) { if(key_s2 == 0) { return; } } } void xj() { if(left_led1 == 1 && right_led1 == 1) { ?? ????forword(); ??BEEP=BEEPOFF; } ? ???????? else if(left_led1 == 0 && right_led1 == 1) { ????????right(); BEEP=BEEPON; } else if(left_led1 == 1 && right_led1 == 0) { ????????left(); ????????BEEP=BEEPON; } else { BEEP=BEEPOFF; } } void Obstacle_Avoidance(void) { //if(input_flag.left_led2_flag == 1 && input_flag.right_led2_flag == 1 && car_state != CAR_FORWARD) if(input_flag.left_led1_flag == 1 && input_flag.right_led1_flag == 1 ) { forword(); //car_state = CAR_FORWARD; } else if(input_flag.left_led1_flag == 1 && input_flag.right_led1_flag == 0 || car_state != CAR_TRUN_LEFT)//修正 { left(); car_state = CAR_TRUN_LEFT; } else if(input_flag.left_led1_flag == 0 && input_flag.right_led1_flag == 1 car_state != CAR_TRUN_RIGHT) ?//右转修正 { right(); car_state = CAR_TRUN_RIGHT; } //else if(car_state != CAR_CLOCKWISE) else { //Back(); //Clockwise_Run(); //car_state = CAR_CLOCKWISE; } } void Input_Check(void) { if(left_led2 == 0) { input.Input_down_filter[0]++; input.Input_up_filter[0] = 0; if(input.Input_down_filter[0] == 100) { input_flag.left_led2_flag = 0; } } else { input.Input_up_filter[0]++; input.Input_down_filter[0] = 0; if(input.Input_up_filter[0] == 100) { input_flag.left_led2_flag = 1; } } if(right_led2 == 0) { input.Input_down_filter[1]++; input.Input_up_filter[1] = 0; if(input.Input_down_filter[1] == 100) { input_flag.right_led2_flag = 0; } } else { input.Input_up_filter[1]++; input.Input_down_filter[1] = 0; if(input.Input_up_filter[1] == 100) { input_flag.right_led2_flag = 1; } } if(left_led1 == 0) { input.Input_down_filter[2]++; input.Input_up_filter[2] = 0; if(input.Input_down_filter[2] == 100) { input_flag.left_led1_flag = 0; } } else { input.Input_up_filter[2]++; input.Input_down_filter[2] = 0; if(input.Input_up_filter[2] == 100) { input_flag.left_led1_flag = 1; } } if(right_led1 == 0) { input.Input_down_filter[3]++; input.Input_up_filter[3] = 0; if(input.Input_down_filter[3] == 100) { input_flag.right_led1_flag = 0; } } else { input.Input_up_filter[3]++; input.Input_down_filter[3] = 0; if(input.Input_up_filter[3] == 100) { input_flag.right_led1_flag = 1; } } } ?void ?main() { key(); Timer0_init(); Motor_Init(); while(1) { xj(); } } ? ? ? ? ? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:36:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |