请问一个单片机的控制软件开发流程的8个步骤,但是这样好像不能实现

    很多单片机的应用中都需要同时执行很多任务。对于这样的应用,我们可以利用实时操作系统来灵活地安排系统资源。RTX51是德国 Keil公司开发的一种应用于MCS51系列单片机的实时多任务操作系统,它可以工作在所有8051 单片机以及派生家族中,简化了复杂的软件设计,缩短了项目周期。我们在实践中用RTX51来开发单片机软件,设计单片机控制的GPS接收板软件,取得了很好地效果。

RTX51有2个模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一个子集,可以很容易地运行在8051系统上,而不需要外部RAM(XDATA)。RTX51完全模式有4个任务优先级,可以和中断函数并行处理,各个任务之间通过使用“邮箱”系统来进行信号和消息的传递,可以从内存池中申请和释放内存;同时,可以强制一个任务停止执行,等待一个中断,或者是其它中断传来的信号量或者消息。

RTX51对系统硬件的要求如表1所列。 

最大256,19个激活任务,其中16个标准任务,3个快速任务

RTX51区分2类任务:快速任务和标准任务。快速任务有很快的响应速度,每个快速任务使用8051一个单独的寄存器组,并且有自己的堆栈区域。RTX51支持最大同时有3个快速任务。标准任务需要多一点的时间来进行任务切换,因此使用的内部RAM相对快速任务要少,所有的标准任务共用1个寄存器组和堆栈。当任务切换的时候,当前任务的寄存器状态和堆栈内容转移到外部存储器中。RTX51支持最大16个标准任务。

    (2)就绪(READY)-等待运行的任务处于READY状态,在当前运行的任务退出运行状态后,就绪队列中优先级最高的任务进入到运行状态。

    (3)阻塞(BLOCKED)-等待一个事件的任务处于BLOCKED状态,如果事件发生且优先级比正在运行的任务高,此任务进入运行状态;如果优先级比正在运行的任务低,此任务进入READY状态。

    (5)任务切换-RTX51包含一个事件驱动的任务切换机制,它能够按照任务的优先级进行切换,也就是抢占式多任务系统;另外还有一个可选的时间片轮转切换任务模式,在时间片轮转模式下,同级别的任务是按照时间片分别占用CPU 的。RTX51任务有4个优先级:0、1、2 可以分配给标准任务,优先级3是为快速任务保留的。每个任务都可以等待事件的发生,而并不增加系统的负担;任务可以等待消息、信号、 中断、超时事件或者它们的组合。任务切换是按照一定规则进行的,包括:进入到“就绪”状态的优先级高的任务先执行;如果“就绪” 状态的几个任务是同一个优先级,那么最先进入“就绪”状态的先执行。

    *间隔(interval):类似于超时,但是软件定时器没有复位,典型应用是产生时钟。

Full,用于信息的交换。我们可以把一个消息发送到一个特定的邮箱。消息由2字节组成,可以是用户按照自己的需求定义的数据,也可以是指向数据的指针。如果邮箱的消息列表已满,而且是中断发送消息,这个消息将会丢失;如果是任务发送消息,那么任务将会进入到等待状态,直到邮箱重新有了位置可以接收这一条信息。邮箱是按照FIFO的原则来管理消息的,如果几个任务都在等待接收消息,那么最先进入等待接收队列的将接收消息。一个邮箱最多可以存储8条消息。当邮箱满的时候,最多只能有16个等待任务。

Full,信号量用于管理共享的系统资源。通过使用“令牌”,允许在同一时刻只有一个任务使用某些资源。如果几个任务申请访问同一个资源,那么首先提出申请的将允许访问,其它的任务进入等待队列,直到第1个任务操作完毕,下一个任务才能继续。

    Os_wait()函数挂起一个任务来等待一个事件的发生。这样可以同步2个或几个任务。它的工作过程如下:当任务等待的事件没有发生的时候,系统挂起这个任务;当事件发生时,系统根据任务切换规则切换任务。

RTX51完全模式提供2种方法来处理中断:一种是C51的中断函数,另一种是RTX51的任务中断。它又可以分为快速任务中断和标准任务中断。对于中断函数这种方法,它同时也可以在不使用RTX51的情况下使用,当中断发生的时候,程序就跳到了相应的中断函数,它和正在运行的任务是相互独立的,中断的处理是在RTX51系统之外,和任务切换规则没有关联。对于任务中断的方法,不管使用快速还是标准任务来处理中断,如果中断发生,等待中断的任务就从“等待”状态进入到就绪状态,并按照任务切换规则进行切换。这种中断处理是完全 集成在RTX51的内部,硬件中断事件的处理和信号、消息的处理是完全相同的。在系统响应时间上中断函数是最快的。RTX51必须完全控制中断使能寄存器,这样才能遵守任务的切换规则并保证中断程序的无误进行。必须注意中断使能寄存器是由RTX51完全控制的,禁止用户手动修改

6.20集成开发环境加上RTX51完全版。任务KEY-BOARD,监测键盘的情况,如果有按键按下,把按键的编码发送到邮箱1,外部中断1等待接收GPS数据,并把数据存储起来,向DISPLAY任务发出信号,进行处理。任务SEND_OUT,把接收到的数据 进行处理,并发送出去。任务VOICE进行语音输出。

    通过实践我们可以发现,使用RTX51开发单片机程序更加方便了,尤其是较大的程序,避免了自己写消息循环等烦琐工作,效率明显增加了。在硬件资源足够的情况下,效果更加明显。
}

 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器,亦可以通过上位机进行操作,达到单片机板上按键相同的效果。本系统运行稳定,人机界面友好其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词:单片机,键盘,扬声器,电子琴,PC机,VB

      单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

目前,基于单片机的微控制器已广泛应用于家电控制、通讯、工业控制、智能仪器仪表、金融电子等许多领域。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89S51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线不断的输出”“电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制”“电平的持续时间,就能改变输出波形的频率,从而改变音调。

PC机通过VB编写友好的人机界面,使用户可以很方便的控制单片机系统及其发音。单片机与PC机基于串口通信,稳定可靠。用户亦可以通过鼠标即可在电脑屏幕上点击相应按钮,单片机依据相应的按钮定义发音。

本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴系统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。

本系统 ,优化了电子琴的控制方法,充分体现了电脑作为智能控制终端的优势 。用单位LED显示发音值,蜂鸣器发音。4X4矩阵键盘,作为电子琴的琴键。系统整机设计简洁,精练。

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图(图1):   

由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐10uR10K。原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。

晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作),在本电路中,取12M

单片机:一片AT89S51/52或其他51系列兼容单片机。对于31(EA/Vpp),当接高电平时,单片机在复位后从内部ROM0000H开始执行;当接低电平时,复位后直接从外部ROM0000H开始执行。

AT89C51单片机的共40个引脚功总共40个脚,电源用2(VccGND),晶振用2个,复位1个,EA/Vpp1个,剩下还有34个。29PSEN30ALE为外扩数据/程序存储器时才有特定用处,一般情况下不用考虑,这样,就只剩下32个引脚,它们是:

ISIS是英国Labcenter公司开发的电路分析与实物仿真软件[9]。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

Proteus主要用于绘制原理图并可进行电路仿真,Proteus ARES 主要用于PCB 设计。ISIS 的主界面主要包括:1 是电路图概览区、2 是元器件列表区、3 是绘图区。绘制电路图的过程如下:

单击2 区的P 命令即弹出元器件选择(Pick Devices)对话框,Proteus 提供了丰富的元器件资源,包括30 余种元器件库,有些元器件库还具有子库。利用该对话框提供的关键词(Keywords)搜索功能,输入所要添加的元器件名称,即可在结果(Results)中查找,找到后双击鼠标左键即可将该元器件添到2 区,待所有需要的元器件添加完成后点击对话框右下角的OK 按钮,返回主界面。接着在2 区中选中某一个元器件名称,直接在3 区中单击鼠标左键即可将该元器件添加到3 区。

由于是英国的软件,特别要注意的是绘图区中鼠标的操作和一般软件的操作习惯不同,这正像是司机座位和人行道走向和国内不同一样。单击左键是完成在2 区中被选中的元器件的粘贴功能;将鼠标置于某元器件上并单击右键则是选中该元器件(呈现红色),若再次单击右键的话则删除该元器件,而单击左键的话则会弹出该元器件的编辑对话框(Edit Component);若不需再选中任何元器件,则将鼠标置于3 区的空白处单击右键即可;另外如果想移动某元器件,则选中该元器件后再按住鼠标左键即可将之移动。

元器件之间的连线方法为:将鼠标移至元器件的某引脚,即会出现一个“×”符号,按住鼠标左键后移动鼠标,将线引至另一引脚处将再次出现符号“×”,此时单击鼠标左键便可完成连线。连线时在需拐弯的地方单击鼠标左键即可实现方向的改变。绘制好电路后,可利用1 区的绿色边框对3 区的电路进行定位。

目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVision IDE集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51RTX51实时操作系统。

应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存——建立工程并添加源文件——设置工程——编译/汇编、连接,产生目标文件——程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单FileNew…,在源程序编辑器中输入汇编语言或C语言源程序(或选择FileOpen…,直接打开已用其他编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm.a51)或.c;然后选择菜单ProjectNew Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to GroupSource Group1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其他文件)。加入文件后点close返回主界面,展开“Source Group1前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择ProjectOption for TargetTarget1(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其他选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。   

Session(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择DebugStep)、过程单步执行(按F10或选择DebugStep Over)、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(DebugInline Assambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(DebugInsert/Remove BreakpointDebugBreakpoints…等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。

Keil软件Eval版(免费产品)的功能与商业版相同,只是程序的最大代码量不得超过2kB,但对初学者而言已是足够。Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点而受到工程技术人员的欢迎,有人甚至认为Keil是目前最好的51单片机开发应用软件。

    b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定

    上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。

    (1)数码管表面不要用手触摸,不要用手去弄引角;

    (2)焊接温度:260度;焊接时间:5S

    (3)表面有保护膜的产品,可以在使用前撕下来。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

    若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。

利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912μs,因此只要令计数器计时956μs/1μs956,每计数956次时将I/O反相,就可得到中音DO523Hz)。

式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。

其计数初值T的求法如下:

    对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

    下面用AT89S51单片机产生“生日快乐”歌来说明单片机如何产生的。

    在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。

4-5 音乐发声程序框图

本电路采用基于MCS-51单片机,用LM032L进行显示的硬件设计方法,电路硬件模块图如下:

本系统设计为5V直流稳压电源给系统供电,AC220市电经220V9V变压器变压,然后经桥式整流电路,再经电容滤波电路,经7805稳压管稳压,再进行二次滤波,输出较稳定的5V电压,给本系统供电。

   本系统在实际制作过程中,基于成本考虑,本设计未做电源这一部分,而是用USB连接线,代替了电源的制作。因电脑现已非常普及,从电脑的USB口取5V电源,亦非常方便。

    组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。

    编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。

    非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。

    键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。

   1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。

2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。

3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

   4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。

如图4-2-1所示,用单片机的并行口P24×4矩阵键盘,以P2.0P2.3作输入线,以P2.4P2.7作输出线;在数码管上显示每个按键的“0F”序号。对应的按键的序号排列如图4-2-2所示

4-2-1 键盘按键的分布图

 矩阵按键部分由16个轻触按键按照44列排列,连接到JP50端口。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。这种键盘外围元件少,扩充灵活,而且功耗低。

键盘的硬件电路如图2-2所示:

由图2-2可以看出,该键盘为44列(4×4)共16个键,使用8I/O口作为控制线,其中P2.0P2.1P2.2P2.3为扫描线,P2.4-P2.7作为列回复线。其工作原理是:首先使P2.4-P2.7为低电平,P2.0P2.1P2.2P2.3为高电平,读取P2.4P2.7的状态并存放在某个存储器的低4位中,此时高4位置零。然后使P2.4P2.7为高电平,P2.0P2.1P2.2P2.3为低电平,读取P2.0P2.1P2.2P2.3的状态并存放在某个存储器的高4位,而低4位为低电平。最后,将这两个存储器存放的数值取逻辑后,再判断其结果产生按键的键值。

当我们按下某个键时,对应的功能便会通过键盘分析程序得以执行,如果在操作者释放之前,对应的功能多次执行,如同操作者在连续不断的操作该键一样,这种现象就称为连击。连击先可用图4-2-3所示流程图的软件方法来解决:当某个键按下时,首先进行软件去抖处理,确认键被按下后,便执行与该键相对应的功能,执行完后不是立即返回,而是等待键释放之后再返回,使每一次按键只被响应一次,从而达到避免连击的目的。

如果把连击现象加以利用,有时会给操作者带来便利。例如在某些仪器中。因设计的按键很少,没有安排09数字键,只设置了一个调整键,这时需要采用加1(或者减1)的方法来调整有关参数,但当调整量较大时就需要多次按键,使操作者很不方便。如果允许存在连击现象,我们只要按住键不放,参数就会不停的加1(或者减1),会让操作比较方便、快捷。具体实现流程图如图4-2-3所示,其中加入的延时环节是为了控制连击的速度。

RS232串口针脚定义

1 调制解调器 CD 载波检测

2 调制解调器 RXD 接收数据

6 调制解调器 DSR 通讯设备准备好

8 调制解调器 CTS 允许发送

9 调制解调器 RI 响铃指示器

串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如你可以把写入单片机的数据码显示在电脑上,如可以使用一个按键,当按下它时使某一个字母如:AA,通过单片机的串口将它发送到电脑上显示,起到仿真器的某些功效,站长在开发数据采集设备时就是通过串口来检查数据正确与否的。

51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。

    点击这里可以下载并运行这个这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件。软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。

LED是一种较为常用的发光元件。目前以LED为发光元件而研制的显示屏应用可作为实时工业控制系统中的远距离实时信息显示器,对高要求的工艺流程进行实时显示。

单片机P0口段控,数码管的公共脚接地。

目前,LED显示器的主要形式有两种,一种是能够显示各种字符、汉字和图像信息的阵列式LED。另一种则是只能显示0910个阿拉伯数字及少数几个英文字母的数码式LED,即八段数码管。尽管阵列式LED从功能上来说完全取代数码式LED,但由于前者的成本造价要比后者高得多,实现方法要比后者复杂,故在很多场合还经常用到数码式LED。本设计采用的是0.36的数码管。因为AT89C52单片机管脚的驱动能力有限,加470欧姆的上拉电阻驱动。

  每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

4-4 键盘识别程序框图

    七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码表(如表4-1所示)

由于显示的数字09的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字09的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLEDB

4-3 数码显示程序框图

4-4 键盘识别程序框图

将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。本研究通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。说明一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,于是我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将音乐声音放大,同时通过显示模块来确知自己所弹的音符。

    1.可弹奏的音符数较少,只能在一定范围内满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度。

    2.音量不可调。可通过改进功放电路,即在lm3861脚和8脚间增加一直外界电阻和电容,将3脚与地之间的电阻换为10k的变阻,即可调节其放大增益。

    这次毕业论文能够得以顺利完成,是所有曾经指导过我的老师,帮助过我的同学,一直支持着我的家人对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的谢意!

首先,要特别感谢我的指导老师。在我毕业论文的撰写过程中,给我提供了极大的帮助和指导。从开始选题到中期修正,再到最终定稿,陈老师给我提供了许多宝贵建议。老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。

    其次,要感谢所有曾经给我们班任课的老师,老师们教会我的不仅仅是专业知识,更多的是对待学习、对待生活的态度。

    第三,感谢我的父母亲,你们是我力量的源泉,只要有你们,不管面对什么样的困难,我都不会害怕,谢谢你们对我的支持与鼓励!

    再次,感谢我的室友及其他好友,因为有你们的帮助,我的论文得以顺利完成。感谢你们,大学四年给我了那么多的帮助与鼓励,在我不开心的时候,总能让我开心起来。不会忘记,大学四年里我们一起度过的欢乐时光,那些开心的日子,总是那么令人难以忘怀。

    最后对老师,同学和家人再次致以我最衷心的感谢!教导过我的老师,你们的人格魅力永记我心间。身边的同学和朋友,有你们,我的大学才算完整。寝室的好友,你们的天赋犹如上天恩赐,有了你们我的生活更加精彩。感谢考研时的战友,那段光辉岁月不管成败,友情最可贵。

[1] 康年光.电子技术基础(数字部分).高等教育出版社.2005.07 

[2] 刘乐喜.微机计算机接口技术及应用.华中科技大学出版社.2005.08

[3] 谢嘉奎.电子线路(线性部分).高等教育出版社.2004.04

[4] 潭浩强.C语言程序设计.清华大学出版社.2005.07

[5] 李群芳,肖看.单片机原理、接口及应用嵌入式系统技术基础.清华大学出版社.2005.03

[6] 冯博琴.微型计算机原理与接口技术.清华大学出版社.2004

[7] 长德,李华,李东.MCS51/98系列单片机原理与应用.机械工业出版社.1997

[8] 李群芳,张士军,黄建.单片微型计算机原理与接口技术.电子工业出版社.2002

[9] 石东海等.单片机数据通信技术从入门到精通.西安电子科技大学出版社.2002

[10] 谢自美等.电子线路设计、实验、测试(第二版).华中科技大学出版社.2000

}

在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以P1.0端口为例:

让该端口输出高电平的语句是:

让该端口输出低电平的语句是:

好了,现在我们将小灯接在的P1.0端口上,如下图所示:

由上图可知,当端口P1.0输出高电平时,小灯D不亮,因为小灯中不会有通过;当端口P1.0输出低电平时,小灯就亮,因为此时小灯中有电流通过。

要让小灯亮一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让小灯亮一会儿、灭一会儿,交替闪烁的程序:

;目的是让P1.0保持高电平

;和刚才一样,让P1.0保持低

;电平停留一段时间,其实就

;是让它多亮一会儿再熄灭

;以下是延时子程序,有关该延时程序的内容以后再学

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“ uVision2”的软件中汇编完成,汇编后得到一个*.hex文件,这就是目标文件,然后用编程器将该文件“写”到单片机89s51中,这样该89s51就具有自动控制小灯闪烁的功能了。

在实验的时候,通常用发光LED代替小灯,由于LED工作电压小,由此LED要串接一个小电阻,用220欧姆——1k之间的都行,我用的是510欧姆的。

这样还不够,单片机工作还需要两个条件,一是需要加上一定的工作电压,AT89S51工作电压为5V,第20脚接负极,第40脚接正极;另外还要给单片机安装一个心脏起搏器,就是,通常叫做,只要在18脚和19脚之间接一个石英晶体就行了,我用的是12MHz的,另外为了保证振荡器稳定工作,还要在18脚、19脚分别接一个27PF的小电容到地(就是接到负极),此外,89s51的第9脚为复位端,要接一个10uF电容到正极,再接一个10K电阻到负极,最后,第31脚也要和电源的正极接起来,关于31脚,以后再说,这样一台由单片机控制的会自动闪烁的小灯就做好了。下面是完整的电路图:

没有使用的管脚空着就行了,什么也不用接。一通上电,小灯就开始不停的闪烁了。大约1秒钟闪烁3——4次。

原文标题:跟我来编一个最简单的单片机程序

文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

因为单片机有CPU、存储器、IO等等,使他(人性化一点以配合下文)看起来就像一个比较小的计算机,所以....

系统可实现个人用户通过手机或固定电话等信息终端,对家用电器、可燃性气体浓度参数、火情、盗情等进行远程....

介绍了一种用FPGA实现对高速A/D转换芯片的控制电路,讨论了这一控制电路设计思想,提出了更好地解决....

在本系统中,本小节主要讲 ATmega128 单片机的内部资源、工作原理和硬件电路设计等。2.5.1....

单片机芯片EN8F202 应用说明:EN8F202 器件适合的应用有:LED 控制,红外遥控,个人护理设备,安全系统到低功耗远程发...

ADXL345是否有状态寄存器,让单片机可以通过读取该寄存器的值来以判断已有有如数据,从而以查询方式读取加速度测量值?...

单片机仿真器是指以调试单片机软件为目的而专门设计制作的一套专用的硬件装置。 今日主要分享单片机仿真器的软件: Proteus软...

诚聘单片机软件开发工程师 从事软件单片机设计、开发,有经验者优先,应届毕业生均可,公司有全勤奖、年终奖、五险、房补、食堂...

电路原理图如下图所示,我们的主控芯片是Atmega8L单片机。Atmega8L单片机是一款高性能、低....

现在,很多人都把骑自行车作为一项锻炼身体的运动项目,如果在自行车上加装一个里程速度表,就可以知道自己....

C1、VDl、VD2、C2、VD3等组成电容降压式稳压电源电路,输出5V的电压作为智能控制器电路的工....

用keil编译以下代码,并生成HEX文件。(不会?没关系,看小宋老师的视频去,看完再回来,哈哈)  ....

最近老师让我们选一个单片机调查一下它的背景信息,我选的是STM31F103,这种资料在网上实在搜不到了,特来这里问问大家看有谁...

1 stm32单片机数据手册是否通用? 2 有过32位单片机开发经历 使用库函数还是寄存器好?...

在单片机开发过程中,当前期的程序编写或仿真完成后,或者程序需要升级修改时。都需要将程序写到单片机中。....

本多功能通用器功能强大,支持超过400种常用的芯片的编程,包括MCS-51系列、PIC系列、 AVR....

天气转凉后,为电脑加装的排气、硬盘风扇就无须运转。如果能根据电脑机箱温度决定风扇是否旋转,可降低噪音....

说明:函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是....

在上一篇的一文中,讲解的是石英晶振在单片机中的重要性,然而,作为一种精密的频率元件,单片机中的晶振却....

大家可以看到复位电路中电阻R1=10k时RST是高电平 ,而当R1=50时RST为低电平,很明显R1....

单片机芯片中存在可擦写编程Flash和EEPROM,那你选择的单片机芯片需不需要带EEPROM呢?选择能满足的产品功能的单片...

采用声、光及语音进行报警。其中,光效果通常取自发光二极管LED或其他光源器件;声效果可取自电铃、电笛....

  1、 单片机程序程序设计语言概述汇编语言程序设计必须注意如下特点:(1)设计人员必须详细了解单片....

当中央处理器CPU正在处理某件事情的时候,外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处....

本文档的主要内容详细介绍的是80C51单片机的硬件结构是怎么样的?主要内容包括了:80C51单片机的....

通常情况下,采用80C51/87C51的最小应用系统最能发挥单片机体积小、成本低的优点。但在许多情况....

提出一种以AVR单片机ATmegal6为核心、以断路器为控制对象的双电源自动切换开关控制器的设计方案....

设计实现了一种基于C为核心的高稳定性和高性价比气体流量仪。利用C单片....

随着微电子技术的迅速发展单片机微控制器芯片的设计者制造商不断推出性能优越且价格便宜的各类型号的新产品....

高压线故障指示器的意义: 为了更加迅速准确的查找和判断故障性质和位置,缩短故障处理时间,在电力设备和线路上推广安装基...

MCS-51系列单片机是美国Intel公司1980年推出的高性能8位单片微型计算机,较原来的MCS-....

    对于新手来说,在的电路设计中可能不会很注意电路设计中对设计本身的输入输出的影响,但是对于一个电子工程师来说...

为什么网口芯片W5500芯片跟单片机焊接好后进行传数据时不能传送(焊接好,没有虚焊,电路正常在别的板子上印证过)来回排查,后...

数字电压表是对电子电路进行现场检测的常用仪表,本文讨论了一种基于单片机的数字电压表设计方式,将检测到....

GYJ-0055_数显可编程延时模块产品循环通断调节说明三种工作形式分别是: 1、延时接通型:即,....

在使用数码管编程时,假如你正在使用 temp[i] 代表某一个显示字符,突然想显示小数点,可以使用 ....

提起PCB布线,许多工程技术人员都知道一个传统的经验:正面横向走线、反面纵向走线,横平竖直,既美观又....

在我们设计单片机电子电路时,常用应用到一下比较常用的电路,每次都需要从新画,即费力又费神,还容易出错....

太阳能光伏板接入光伏信号处理电路,光伏电压经PWM充电控制电路送到12 V蓄电池内。正常工作时,12....

keil uvision2 C51软件是目前功能最强大的单片机c语言集成开发环境。 下面我们通过图....

本文档的主要内容详细介绍的是单片机的物料整理详细资料免费下载。

单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英....

本文档的主要内容详细介绍的是STC15F2K60S2单片机电路原理图的详细资料免费下载。

家用电器的使用是人们繁忙工作生活必不可少的部分,但往往存在着人走不断电,或者忘记关闭家用电器的现象,....

在学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。

AC LED光源的重大技术突破是超细LED晶粒在封装时的特殊排列组合技术,同时利用LED PN结的二....

LED是一种新型半导体固态冷光源,它是一种能够将电能转化为可见光的光电器件。一般来说,大功率LED的....

MSP430 系列单片机是美国德州仪器(TI)1996 年开始推向市场的一种 16 位超低功耗的混合....

目前的路面上,从豪华车到热销车,以及国产车,贯穿式尾灯越来越常见,似乎已经成为了一种趋势。贯穿式尾灯....

本文档的怎样内容详细介绍的是单片机基础知识概述内容包括了:1.单片机概述2.单片机学习的预备知识3.....

本文档的主要内容详细介绍的是STM32f103rct6单片机的详细原理图资料免费下载。

本文档的主要内容详细介绍的是STM32f103rct6单片机的详细原理图资料免费下载。

简介:PWM控制就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等待地获得所需要....

简介:PWM控制就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等待地获得所需要....

}

我要回帖

更多关于 软件开发流程的8个步骤 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信