嵌入式入门小结
最近,荒废了一段时间的JAVA和Android,玩了一段时间的89c52单片机。简单小结一下。一是给自己前一段时间的工作做一个记录,自己以后可以回头看看自己跌跌撞撞的入门过程。二是可以给学弟学妹一些经验启示。
提示:以下观点均为个人观点,正所谓所见皆偏,大家如果对我所言有不同的观点,欢迎找我讨论。
2013年10月3日,为了完成电路老师作业一个电子小制作,我翻开了《爱上单片机》,不得不说这本书写的挺好,生动活泼,不拘一格这种叙事风格我特别喜欢。在作者的悉心指导下。我最终做出来了八音电子琴。
具体制作过程,详见书。
我遇到的问题
一.程序烧不进去
当时线路都是对的就是烧不进去程序
解决方法:1.用 stc-isp 时,注意热插拔后才会执行烧录程序。具体操作就是点击烧录后
把VCC的杜邦线,拔出后再插上。
2.把最高波特率和最低波特设为1200(原理暂时不明)
二.用蜂鸣器发音不准确
完成了总线的连接,但是发音效果不理想
解决方法:1.换了个喇叭,不用蜂鸣器。
如果是用开发板就可以忽略上面的问题
10天做出蓝牙小车
主要实现了,串口通信,最小系统板的焊接,程序的编写,以及线路的连接。
了解了单片机开发相关软件的安装,单片机基础知识,数码管综合使用,中断定时器,电子钟的程序设计,以及串口通信。
具体实现歩奏:看视频动手做(实验室有视频哦~)
模块简洁:MCU模块供电模块蓝牙转串口模块驱动模块
注意事项:蓝牙转串口模块上的RXD和TXD分别接单片机上的TXD和RXD.
另外再给单片机烧录程序时要把蓝牙与单片机分开
否则会弄坏蓝牙串口模块
感想:由于中途给单片机烧程序时候没把蓝牙模块分开,导致中间有4天进度缓慢,但也因祸得福,深入了解了蓝牙串口模块。并且总结了经验教训。
感悟:嵌入式入门特别坑,尤其是在没有人指导的情况下,遇到问题很难得到专业性指导,但是只要入门后就特别轻松。就像软件模块化一样,你只要了解不同的通信协议,你就可以很轻松的添加各种模块来实现你想要的功能。(例如添加一个wifi模块,就从蓝牙车变成wifi车)
接下来几个月只要是对前面的蓝牙小车和wifi小车的电路图,工作原理等资料做进一步的整理。同时做出我们自己的手机端的上位机APP。如果可能的话,再加上一些传感器,使小车更智能。
下面附上小车的MCU源码
#include<REG52.h>
sbit LED=P1^0;
sbit LED2=P1^1;
sbit CHE1=P1^0;
sbit CHE2=P1^1;
sbit CHE3=P1^2;
sbit CHE4=P1^3;
char flag=0;//设置标志位
char a;//缓冲接受字符
void init();//初始化程序
void main(){
LED=1;
LED2=1;
init();//初始化中断器
while(1){
if(flag==1){
ES=0;//关闭串口
if(a==0x00){
CHE1=1;
CHE2=0;
CHE3=1;
CHE4=0;
}
if(a==0x01){
CHE1=1;
CHE2=0;
CHE3=0;
CHE4=1;
}
if(a==0x02){
CHE1=0;
CHE2=1;
CHE3=1;
CHE4=0;
}
if(a==0x03){
CHE1=0;
CHE2=1;
CHE3=0;
CHE4=1;
}
if(a==0x04){
CHE1=0;
CHE2=0;
CHE3=0;
CHE4=0;
}
flag=0;//清除标志位
ES=1;//打开串口中断
}
}
}
void communication() interrupt 4
{
RI=0;//取消本次串口的响应
a=SBUF;//接受缓冲区的数据
flag=1;//标记位
}
void init(){
TMOD=0x20;//定时器1设定为方式2 8位数据自动从装
TH1=0xfd;//对定时器赋值,高8位与低低8位相同
TL1=0xfd;//波特率设为9600
TR1=1;//打开定时器1
SM0=0;//设置串口的工作方式1
SM1=1;
REN=1;//允许串口
EA=1;//开总中断
ES=1;//打开串口中断
}
相关推荐
### 浅谈51系列单片机嵌入式程序设计 #### 1. 引言 随着科技的进步和发展,单片机技术已经成为现代工业自动化控制领域的重要组成部分。51系列单片机因其性能稳定、成本低廉等优势,在工业控制系统、智能仪器仪表等...
嵌入式软件开发的优缺点浅谈 嵌入式软件开发是指在嵌入式系统中开发软件的过程,这类系统通常具有资源有限、实时性强、可靠性高的特点。嵌入式软件开发的优点主要有: 1. 嵌入式人才稀缺,身价自然就高,越有经验...
本文将深入浅出地探讨C语言的基础知识,帮助初学者快速入门并实践。 一、C语言简介 C语言由Dennis Ritchie在1972年开发,作为UNIX操作系统的一部分。它具有强大的数据处理能力和高效的程序执行效率,被视作现代编程...
在文章中提到的51单片机,即8051单片机,是一种经典的微控制器,它在工业控制、家用电器和其他嵌入式系统中扮演着重要角色。它不仅有着丰富的学习资料,而且具有学习成本低的特点。不过,由于51单片机已经较为老旧,...
### Linux浅谈与实用功能详解 #### Linux简介与历史背景 - **历史**: Linux 的起源可以追溯至20世纪90年代初。1990年,芬兰赫尔辛基大学的学生 Linus Torvalds 开始开发一个自由操作系统内核,并将其命名为 Linux...
这篇文档“浅谈STM32和51单片机的寄存器编程异同”将深入探讨这两款芯片在寄存器编程上的区别与相似之处。 首先,我们要理解寄存器编程的基本概念。寄存器编程是直接操作微处理器内部寄存器以实现特定功能的方法。...
### STM32汇编入门与实践 #### 一、引言 随着嵌入式系统的不断发展,基于ARM架构的微控制器(MCU)如STM32系列因其高性能、低功耗等特性,在工业控制、消费电子等领域得到了广泛应用。本文将重点介绍STM32汇编语言...
推荐《C程序设计》(谭浩强著)作为入门书籍,对于有一定基础的学习者,《The C Programming Language》(Brian W. Kernighan & Dennis M. Ritchie著)也是非常不错的选择。 3. **实践操作**:理论知识的学习固然...
C语言之所以成为程序员入门的基础语言,主要是由于其特点: 1. 程序结构简洁方便。C语言语法简单,对于初学者来说需要记忆的内容不多,它主要由顺序、选择和循环三种基本结构构成,提供了丰富的控制语句,书写自由...
在SQLite入门与分析(七)---浅谈SQLite的虚拟机.doc中,主要讲解了SQLite如何通过虚拟机执行SQL语句。SQLite的虚拟机,也称为VDBE(Virtual Database Engine),是SQLite的核心组件。它负责解析SQL语句,将其转化为一...
Java由于其简洁的语法和丰富的教程资源,成为初学者入门编程的热门选择。许多大学和在线课程都使用Java作为教学语言,培养下一代软件工程师。 总结,Java编程语言凭借其跨平台、面向对象、高效稳定的特点,在计算机...
### 浅谈计算机应用软件开发中编程语言的选择研究 #### 引言 随着信息技术的快速发展,计算机应用软件在日常生活及各行各业中的作用日益显著。对于软件开发企业而言,提高软件开发的效率与质量不仅能够增强其市场...
此外,还可以参考《微软 Kinect for Windows SDK 使用教程一 (NUI部分)》和《浅谈 Kinect for Windows SDK 之深度数据》这两篇文章,它们分别详细介绍了 SDK 的使用和深度数据的处理。 台湾地区的资料相对更为丰富...
学习C语言不仅是程序设计的入门课程,还是理解计算机操作系统以及深入计算机底层架构的基础。本文旨在探讨学习C语言的正确方法和其在软件开发领域的重要性。 首先,C语言的语法结构简洁高效,非常适合用来描述算法...
第一,C语言很容易被初学者理解并接受,使得非计算机专业的学生也能快速入门。第二,C语言拥有丰富的运算符,包括34种运算符,以及多种数据类型,如整型、实型、字符型、数组类型、指针类型、结构体类型和共用体类型...
C语言是一种通用的高级编程语言,尤其在电子类专业中,它作为一门重要的专业基础课,对于后续的单片机原理、嵌入式系统等课程的学习起着至关重要的作用。然而,由于其自身的复杂性和学生的基础薄弱,使得C语言的教学...
虽然51单片机曾是初学者的首选,但随着技术的发展,如32位Cortex-M系列单片机的普及,它们具有更低的学习门槛,如STM32F系列,其丰富的资源和易于使用的开发工具使得51单片机不再是现代嵌入式学习的基础。...
51单片机是入门者接触的第一个平台,它以其简洁的结构和丰富的资源,为初学者提供了理解微控制器工作原理的良好起点。51系列单片机采用CISC(复杂指令集计算)架构,拥有8位数据处理能力,内部集成了定时器、中断...