这个WORD还算详细吧。
单片机入门级实验板制作
随着单片机生产成本的降低,其应用也随之增加。对于广大电子爱好者来说,在原来硬件设计的基础上,只要掌握了单片机,那对完成的电子制作产品来说,简直是如虎添翼。然而对于一些初学者来说,虽然也知道掌握了单片机技术有很多用武之地,但就是不知如何下手。有些朋友在大学里也学过一些关于单片机的知识,可就是停留在理论的理解上,更有些自学的朋友,关于单片机入门的书买了不少,结果就买来的头几天看一下,以后的日子里天天让书在书架上休假,然而自己的单片机应用技术还是没有丝毫的长进。针对这些情况,同时结合几位电子工程师学习单片机的经验,在这里谈一下看法:
学习单片机光看书的话进展并不大的,对于有一定硬件技术的人来说,最好的方法还是看着别人写的程序自己研究,结合硬件看实现的过程,当遇到不明白的语句再去查看一下书上关于这些语句的介绍。这一方法可以使初学者快速完成对单片机的入门,而对于电子感兴趣的人来说,只要入了门,加上后期的多实践,提高水平是很容易的事。许多搞单片机的人,在开始学习时,都会搞一个专门用于实验的单片机实验板,对实验板的选择,笔者的看法是:实验板的主要目的是入门时做实验用的,真正常握了以后,还有哪个人会再去用实验板,换言之,实验板只要把你领入单片机之门,他的任务就完成了,可以扔了,因此没必要去买些功能很多但价格较高的产品,真正要提高水平必须在掌握了基础后不断地在实践中煅练,初学时的单片机实验板只要具备几个发光管加蜂鸣器和通讯就足够了。
学习单片机关键是要掌握以下步骤:
1、如何编写程序;
2、如何将写的程序变成二进制或十六进制代码;
3、如何将代码通过编程器(或下载线)写入单片机;
4、如何在实验板或应用产品上实现所要达到的功能(有仿真器的可以直接仿真)。
下面介绍一款初学者非常适合的2051实验板,价格较低,在我们相关的网页上全有源程序,初学者可以对照程序学习单片机。同时我们会在讲解第一个简单源程序时,介绍如何按上面提到的步骤进行具体操作。
一、电路原理图
1、电路设计了6个输出口驱动发光二极管,可以设计流水灯等程序之用,也可用为其他指示
2、利用2051的电压比较器端口,设计了光敏电阻输入,可作为光线检测等实验;
3、蜂鸣器输出口设计,可作为各种动作的响应及报警等之用;
4、四位按键输入,可作为类似键盘等输入操作;
5、设计了将单片机的TTL电平转RS232通讯协议的电平转换电路,可完成各种与上位计算机的通讯之用。
制作好的实验板如下图所示:
实战练习1:点亮一个发光二极管
实战练习2:流水灯程序设计
实战练习3:蜂鸣器驱动程序设计
实战练习4:键盘输入程序设计
实战练习5:光控电路程序设计
实战练习6:串行通讯程序设计
2051实验板全套散件:35元/套(不含USB线和串口线)
若需要配置USB电源线,2.5元/条,串口线为4元/条。 |
|
|
第一个单片机程序教程 |
一、实验器材:2051实验板一块,USB线一条,51编程器一套,电脑一台,程序编辑软件一套,编程器支持软件一套;
二、程序功能:点亮一只发光二极管
三、实验目的:帮助初学者了解单片机程序编制、编译、生成*.HEX文件(16进制文件)和写入单片机及运行程序等步骤,为学习者进一步学习各种功能的程序编制打下基础。
三、具体操作:
首先配置好51编程器一套(本站有经济型供货,价格98元),2051实验板一块(本站有经济型供货,价格:35元)。
安装计算机软件。其实对于源程序的编写,在一些文本编辑软件上都可以进行,如:WINDOWS系统上的写字板、WORD软件等都可以进行,这里我们介绍一款集源程序编辑、编译、生成十六进制文件于一体的集成开发软件,有需要的可以点击下载。编程器的支持软件下载。
LED1 EQU P1.7 ;引脚定义 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址为:0000 ;上电复位后,程序从0000单元开始执行 ;复位后,单片机的P1、P3口全部输出高电平,所有发光管全部灭 MAIN: CLR LED1 ;P1.7为低电平输入,点亮一个发光二极管 AJMP MAIN ;程序跳回MAIN处 END ;结束程序
1、编写汇编源程序:
2、将编写好的程序进行编译,具体见下图:
3、生成HEX文件:
点击“输出Intel HEX文件...”后,程序弹出输出文件对话框,询问输出的HEX文件的文件名:
命名好HEX文件名后,按“保存”键,输出HEX文件。
经过以上步骤的操作后,我们得到了一个文件名为:“第一个程序.HEX”的16进制文件,只要将这个文件写入单片机,单片机便可以在实验板上运行。下面我们介绍如何将该文件写入单片机。
4、打开编程器支持软件,进行将源文件写入单片机操作:
进入程序后,依次按:(自动)打开文件→(自动)擦除器件→(自动)写器件,当经过这几步后,程序便写入了单片机。
5、插上单片机,运行程序结果:
以上我们介绍了编程及写入单片机并在实验板上运行程序的整个过程,初学者只要经过以上操作,便可以了解整个单片机应用的过程,有了这个基础,只要再对一些常用程序进行编写并试验,接下来完成各种实际应用系统的开发便有了一个很好的开头,继续努力吧,各种智能电子产品的开发离你不会太遥远!
一下节:流水灯程序设计 |
单片机入门教程之二 |
流水灯程序设计
在上一节中我们讲述了第一个制作实验,从中我们了解了如何编写一个程序控制一个发光二极管,让其发光,在这一节中,我们要让几个发光二极管动起来,形成一个流水灯的效果。
源程序下载
LED1 EQU P1.7 ;引脚定义 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址为:0000 ;上电复位后,程序从0000单元开始执行 ;复位后,单片机的P1、P3口全部输出高电平,所有发光管全部灭 MAIN: SETB LED6 ;关第六个发光二极管 CLR LED1 ;P1.7为低电平输入,点亮第一个发光二极管 ACALL DEL250MS ;延时250MS SETB LED1 ;关第一个灯 CLR LED2 ;点亮第二个灯 ACALL DEL250MS ;延时 SETB LED2 ;关第二个灯 CLR LED3 ;开第三个灯 ACALL DEL250MS ;延时 SETB LED3 ;关第三个灯 CLR LED4 ;开第四个灯 ACALL DEL250MS ;延时 SETB LED4 ;关第四个灯 CLR LED5 ;开第五个灯 ACALL DEL250MS ;延时 SETB LED5 ;关第五个灯 CLR LED6 ;开第六个灯 ACALL DEL250MS ;延时 AJMP MAIN ;程序跳回MAIN处,循环执行 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每个机器周期所用时间为1uS DEL5MS: MOV R7, #94 ;占用一个机器周期 DEL5MS1: MOV R6, #25 ;占用一个机器周期 DJNZ R6, $ ;占用二个机器周期 DJNZ R7, DEL5MS1 ;占用二个机器周期 RET ;总占用机器周期为:4983个,即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;结束程序
在本程序的基础上,网友可以根据自己的理解,将亮灯的方式进行设计,我们的教程是一个灯一个灯的点亮,网友可以让灯二个二个点亮,或自己组合设计出更多种变化的亮灯过程,具体程序网友可以在我们给出的程序上进行改动。
上一节:点亮一个发光管 下一节:蜂鸣器驱动程序
初学者如在这个实验中遇到问题的,可以通过在线技术支持进行咨询:QQ:153286663 张工
|
单片机入门教程之三 |
蜂鸣器驱动程序设计
在这一节中,我们将在上一节的基础上,增加对蜂鸣器的驱动控制。
LED1 EQU P1.7 ;引脚定义 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定义蜂鸣器引脚 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址为:0000 ;上电复位后,程序从0000单元开始执行 ;复位后,单片机的P1、P3口全部输出高电平,所有发光管全部灭 MAIN: SETB LED6 ;关第六个发光二极管 CLR LED1 ;P1.7为低电平输入,点亮第一个发光二极管 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; SETB LED1 ;关第一个灯 CLR LED2 ;点亮第二个灯 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; SETB LED2 ;关第二个灯 CLR LED3 ;开第三个灯 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; SETB LED3 ;关第三个灯 CLR LED4 ;开第四个灯 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; SETB LED4 ;关第四个灯 CLR LED5 ;开第五个灯 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; SETB LED5 ;关第五个灯 CLR LED6 ;开第六个灯 CLR BL ; ACALL DEL250MS ;延时250MS SETB BL ; ACALL DEL250MS ; AJMP MAIN ;程序跳回MAIN处,循环执行 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每个机器周期所用时间为1uS DEL5MS: MOV R7, #94 ;占用一个机器周期 DEL5MS1: MOV R6, #25 ;占用一个机器周期 DJNZ R6, $ ;占用二个机器周期 DJNZ R7, DEL5MS1 ;占用二个机器周期 RET ;总占用机器周期为:4983个,即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;结束程序
上一节:流水灯程序设计 下一节:键盘输入程序设计
初学者如在这个实验中遇到问题的,可以通过在线技术支持进行咨询:QQ:153286663 张工
如何购买? 我要订货!
说明:为了满足部分网友的要求:希望我们帮他把套件做成调试好的成品,我们提供套件的制作业务,统一收取的费用为:一个人工工资或半个人工工资,即80元/人工,若简单的则为半个人工工资,40元! |
单片机入门教程之四 |
按键输入程序设计
在这一节中,我们将介绍如何利用按键输入控制信号,来控制灯的变化。
LED1 EQU P1.7 ;引脚定义 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定义蜂鸣器引脚 K1 EQU P3.5 ;定义按键引脚 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址为:0000 ;上电复位后,程序从0000单元开始执行 ;复位后,单片机的P1、P3口全部输出高电平,所有发光管全部灭 MAIN: JB K1, MAIN ;若K1为"1"(表示没有按下键)则返回 ACALL DEL5MS ;延时,去除抖动 JB K1, MAIN ;短暂延时后,若K1变为"1",则为干扰,返回 CLR BL ;确为按键输入后,蜂鸣器叫 JNB K1, $ ;若K1一直按着,则程序原地等待 SETB BL ;按键松开,开蜂鸣器 MOV A, P1 ;读入P1口数据 CLR C ;C位清0 RRC A ;将亮的灯移动一位 MOV P1, A ;从P1口输出,点亮相应指示灯 JNB P1.1, LOOP1 ;若1.1口为低电平输出,则跳转 AJMP MAIN ;返回主程序 LOOP1: MOV P1, #0FFH ;关断所有输出灯 AJMP MAIN ;返回主程序 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每个机器周期所用时间为1uS DEL5MS: MOV R7, #94 ;占用一个机器周期 DEL5MS1: MOV R6, #25 ;占用一个机器周期 DJNZ R6, $ ;占用二个机器周期 DJNZ R7, DEL5MS1 ;占用二个机器周期 RET ;总占用机器周期为:4983个,即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;结束程序
功能扩展:通过按不同的按键,实现多种亮灯方式选择
上一节:蜂鸣器驱动程序 下一节:光控电路程序设计 |
单片机入门教程之五 |
光控电路程序设计
在这一节中,我们要介绍利用AT89C2051中的电压比较器,来实现光线控制灯的亮与灭。
在编程前,我们先介绍一下电压比较器,在AT89C2051单片机中,其P1.0和P1.1及P3.6组成一个电压比较器。
其中P3.6引脚没有外接端口,正常工作时,当P1.0脚电压值大于P1.1脚时,P3.6便输出逻辑“1”,反之则输出逻辑“0”,从2051实验板的原理图我们可以看到,P1.0脚通过一个光敏电阻接地,当光线较亮时,P1.0引脚上的电低于P1.1脚,这时P3.6输出低电平,而当光线较暗时,光敏电阻阻值增大,随之使P1.0脚的电压上升,当此脚电压大于P1.1脚时,P3.6便输出“1”,这样我们只要判断P3.6脚的状态,便可以判断出外界光线的明与暗。
LED1 EQU P1.7 ;引脚定义 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定义蜂鸣器引脚 K1 EQU P3.5 ;定义按键引脚 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; SUN_IN EQU P3.6 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;定位程序起始地址为:0000 ;上电复位后,程序从0000单元开始执行 ;复位后,单片机的P1、P3口全部输出高电平,所有发光管全部灭 MAIN: JNB SUN_IN, MAIN ;光线亮时,返回 ACALL DEL250MS ;延时250毫秒 JNB SUN_IN, MAIN ;为干扰则返回 LOOP1: MOV P1, #3H ;确实为光线暗了,开启所有灯 JB SUN_IN, LOOP1 ;光线检测,为暗时一直循环亮灯 ACALL DEL250MS ;延时250毫秒 JB SUN_IN, LOOP1 ;为干扰,则返回,继续亮灯 MOV P1, #0FFH ;光线亮后,关所有灯 AJMP MAIN ;返回主程序 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每个机器周期所用时间为1uS DEL5MS: MOV R7, #94 ;占用一个机器周期 DEL5MS1: MOV R6, #25 ;占用一个机器周期 DJNZ R6, $ ;占用二个机器周期 DJNZ R7, DEL5MS1 ;占用二个机器周期 RET ;总占用机器周期为:4983个,即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;结束程序
在本实验程序中我们将光线亮时,关所有灯,而当光线暗时,点亮所有灯,这一功能便是一般的路灯控制的基本原理,若读者在掌握了本实验后,通过单片机输出不同的控制信号,驱动继电器或其他设备,便可以设计出许多利用光线进行控制的自动化产品,这里不再详述,留给感兴趣的网友思考。
初学者如在这个实验中遇到问题的,可以通过在线技术支持进行咨询:QQ:153286663 张工
|
单片机入门教程之六 |
串行通讯程序设计
单片机的强大功能不光表现在本机进行自动化控制上,还可以通过与其他计算机的通讯进行数据传输,实现远程控制。要实现计算机与计算机之间的通讯,目前应用最广的便是用RS232通讯协议。在这一节中,我们要介绍一个上位计算机与单片机的数据通讯的实验。对于计算机上的软件,可以选用串口调试工具来完成,若没有的网友,可以在我们这里下载
单片机通讯程序,所要完成的功能为:当接收到16进制数:88后,改变6只发光二极管的状态,同时蜂鸣器响二声,若接收到的数据不为88H,则蜂鸣器叫二声表示接收到的数据,P1口的输出状态不变。具体汇编程序如下:
LED1 EQU P1.7 ;引脚定义 LED2 EQU P1.6 ; LED3 EQU P1.5 ; LED4 EQU P1.4 ; LED5 EQU P1.3 ; LED6 EQU P1.2 ; BL EQU P3.7 ;定义蜂鸣器引脚 K1 EQU P3.5 ;定义按键引脚 K2 EQU P3.4 ; K3 EQU P3.3 ; K4 EQU P3.2 ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ORG 0000H ;程序定位于0000开始执行 AJMP START ;跳转至START ORG 0023H ;定位于串行中断入口地址 AJMP RECIVE ;执行串行中断程序 START: MOV SCON,#50H ;设置成串口1方式0101,0000 MOV TMOD,#20H ;波特率发生器T1工作在模式2上 MOV PCON,#80H ;波特率翻倍为2400x2=4800BPS MOV TH1,#0F3H ;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0F3H ;预置初值(按照波特率2400BPS预置初值) SETB TR1 ;启动定时器T1 SETB ES ;开串口中断 SETB EA ;开总中断 ;以上完成通讯初始化设置 MOV P1, #0FFH ; MOV P3, #0FFH ; MAIN: AJMP MAIN ;程序原地等待 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;串行中断子程序 RECIVE: CLR EA ;关总中断 MOV A, SBUF ;读取串口接收到的数据 CJNE A, #88H, RE1 ;不等于88H,则跳转RE1 MOV A, P1 ;读取P1口数据 CPL A ;取反 MOV P1, A ;送回P1口,显示与原来相反 RE1: CLR BL ;蜂鸣器响二声 ACALL DEL250MS ; SETB BL ; ACALL DEL250MS ; CLR BL ; ACALL DEL250MS ; SETB BL ; CLR RI ;清串口中断标志 SETB EA ;开总中断,继续接收数据 RETI ; ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;12M晶振,每个机器周期所用时间为1uS DEL5MS: MOV R7, #94 ;占用一个机器周期 DEL5MS1: MOV R6, #25 ;占用一个机器周期 DJNZ R6, $ ;占用二个机器周期 DJNZ R7, DEL5MS1 ;占用二个机器周期 RET ;总占用机器周期为:4983个,即4.98MS
DEL250MS: MOV R5, #50 ; DEL250MS1: ACALL DEL5MS ; DJNZ R5, DEL250MS1; RET ;子程序返回 END ;结束程序
程序演示说明:
将串口线插在计算机的串行通讯口上,另一端与实验板上的串口插座相连,接通实验板电源,打开串口调试助手软件,其界面如下:
设定相应的参数,串口选实际计算机上的串口号,在我们操作的计算机上选用的COM4,因此所选项也为:COM4;
波特率选4800,因为单片机的程序我们设为4800,两者要一致,否则无法通讯;
其他各项参数设成和我们给出的图上一致就可以了。
全部设好后,用鼠标点“手动发送”键,88H这个数据就发送到单片机上了,这时你可以看到输出的发光管的状态改变了,同时蜂鸣器叫二声,若发送的是另外的数据,则蜂鸣器叫二声,但发光管的状态不会改变。
通过以上程序练习,学习者可以掌握如何用计算机向单片机发出控制指令,单片机在接收到上位机传来的控制指令后,执行相应的动作。在本程序中,只传输了一个控制字,传输多个字节的内容,原来也基本相同,学习者可以根据自己的理解,通过对接收到的不同字节信息,控制单片机的相关设备执行不同的动作,从而实现点动鼠标便可以控制各种电子硬件设备的目的。
|
|