单片机实验资料大全

合集下载

单片机实验资料大全

单片机实验资料大全

一、熟悉学习工具开发板二、点亮LED1.单片机及最小系统电路1)电源电路2)晶振电路3)复位电路2.74HC245和74HC13874HC245的输入:DB_0 即P0.0DB_1 即P0.1DB_2 即P0.2DB_3 即P0.3DB_4 即P0.4DB_5 即P0.5DB_6 即P0.6DB_7 即P0.7U3 74HC138的输入:ADDR0即P1.0ADDR1即P1.1ADDR2即P1.2ADDR3即P1.3 E3ENLED即P1.4 E1 E2 3.跳线4.LED三极管基极端输入LEDS6是U3 74HC138的输出Y68个LED小灯阴极端的8个输入是74HC245的8个输出:DB 0 也就是P0.0DB 1 也就是P0.1DB 2 也就是P0.2DB 3 也就是P0.3DB 4 也就是P0.4DB 5 也就是P0.5DB 6 也就是P0.6DB 7 也就是P0.75.点亮一个LED的程序新建工程,添加.c文件,编辑编译,生成hex文件编译成功会出现reg2.h,,双击可以打开STP-ISP下载程序到板子,小灯被点亮1)点亮第1个小灯,熄灭第1个小灯2)点亮第2个小灯,熄灭第2个小灯3)点亮第3个小灯,熄灭第3个小灯4)点亮第1、2小灯,熄灭第1、2小灯5)点亮第1、3、5、7小灯,熄灭第1、3、5、7小灯三、闪烁LED修改小灯闪烁的时间:低于20ms,大于50HZ,小灯的闪烁人眼看到是连续的四、流水灯1、用P0点亮小灯2、依次点亮每个小灯,依次要赋给P0 的数值就是:0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F。

•左移<<右移>>•左移,最低位填0补充;右移,最高位填0补充•0xf0 11100000 01111000流水灯程序1.将流水灯左移理解透彻后,独立完成流水灯右移操作。

2.独立完成一个左移到头接着右移,右移到头再左移的花样流水灯程序。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。

二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。

2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。

通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。

三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,点亮LED灯。

2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将按键和LED灯与单片机相连。

(3)编写程序,实现按下按键控制LED灯亮灭。

3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将数码管与单片机相连。

(3)编写程序,将数字输出到数码管上显示。

4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,实现定时器功能。

四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。

2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。

按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。

3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。

通过程序设计,可以实现数码管显示不同的数字。

4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。

通过调节定时器的参数,可以实现不同的定时功能。

五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。

通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。

这些技能对于日常生活和工程设计都具有很大的实用性。

在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。

单片机实验报告

单片机实验报告

一、实验目的1. 熟悉单片机的硬件组成和基本工作原理。

2. 掌握单片机最小系统的搭建方法。

3. 学习使用单片机编程软件进行程序编写和调试。

4. 通过实际操作,加深对单片机应用的理解。

二、实验环境1. 实验设备:MCS-51单片机实验板、电源模块、面包板、连接线、LED灯、蜂鸣器、按键等。

2. 软件环境:Keil uVision5、Proteus仿真软件。

三、实验内容1. 点亮LED灯(1)实验目的:掌握单片机I/O口的使用,实现LED灯的点亮。

(2)实验步骤:① 将LED灯的阳极连接到单片机的P1.0口,阴极连接到GND。

② 在Keil uVision5中新建工程,编写程序如下:```cvoid main() {while (1) {P1 = 0xFF; // 点亮LED灯delay(500000); // 延时P1 = 0x00; // 熄灭LED灯delay(500000); // 延时}}③ 将程序编译并下载到单片机中,观察LED灯的点亮效果。

2. 蜂鸣器控制(1)实验目的:掌握单片机I/O口的使用,实现蜂鸣器的控制。

(2)实验步骤:① 将蜂鸣器的正极连接到单片机的P1.1口,负极连接到GND。

② 在Keil uVision5中编写程序如下:```cvoid main() {while (1) {P1 = 0x02; // 使能蜂鸣器delay(100000); // 延时P1 = 0x00; // 禁止蜂鸣器delay(100000); // 延时}}```③ 将程序编译并下载到单片机中,观察蜂鸣器的鸣叫效果。

3. 按键扫描(1)实验目的:掌握单片机I/O口的使用,实现按键的扫描和识别。

(2)实验步骤:① 将两个按键分别连接到单片机的P1.2和P1.3口。

② 在Keil uVision5中编写程序如下:void main() {while (1) {if (P1 & 0x04) { // 检测按键1是否按下// 执行按键1按下后的操作}if (P1 & 0x08) { // 检测按键2是否按下// 执行按键2按下后的操作}}}```③ 将程序编译并下载到单片机中,观察按键的扫描和识别效果。

单片机实验——精选推荐

单片机实验——精选推荐

实验一认识实验一.实验目的1.了解仿真器的硬件结构与接线。

2.了解MCS-51单片机复位功能及复位后的内部状态。

3.通过示例程序的键入与执行,学习仿真器的使用与操作方法。

二.实验内容1.对照实验指导书,查对实验机具体接线。

2.按照开发系统的使用方法,分别查看复位后PC、SP、DPTR等特殊功能寄存器及片内、片外RAM的内容。

3.熟悉开发器的使用,将下面程序键入实验机。

ORG 2000H2000 74AA MOV A,#0AAH2002 75F0BB MOV B,#0BBH2005 E5F0 MOV A,B2007 78CC MOV R0,#0CCH2009 E8 MOV A,R0200A 80FE SJMP $4.程序键入后,检查各存储单元所储机器码是否正确如有误,重新键入,达到修正的目的。

5.单步执行示例程序,逐步检查执行结果,核查与分析结果是否相符,直到执行完最后一条指令。

6.练习连续执行示例程序,检查执行结果,核查与分析结果是否相符。

7.自己在示例程序中插入一条指令,执行并查看结果,然后删除,熟悉插入/删除操作。

8.将示例程序移到另外一个存储区,执行并查看结果,熟悉程序块移动操作。

三.实验预习要求1.认真阅读指导书的相关内容,熟悉开发系统的各种操作。

2.实验前应写出规定操作任务的具体操作方法步骤。

四.思考题1.MCS-51单片机怎样实现内部复位,画出一种复位电路。

2.PC、SP、P0、P1、P2、P3复位状态是什么?各有何意义?3.示例程序中最后一条指令SJMP $的作用是什么?如果取掉这一条指令,程序的执行将发生什么变化?4.实验机监控系统怎样实现程序“单步执行”功能?五.实验报告要求1.按实验顺序,写出实验操作的方法步骤。

2.写出实验中所遇到的问题与解决过程。

写出思考题的答案。

实验二建立数据区、数据块传送一.实验目的1.进一步熟悉实验机操作,练习程序调试方法。

2.理解并掌握建立数据区与数据块传送程序。

(整理)单片机学生实验资料

(整理)单片机学生实验资料

实验报告实验项目名称:P1口实验同组人:实验时间:实验室:K2-407单片机室指导教师:胡蔷一、实验目的:(l)学习P1口的使用方法; 熟悉Proteus软件电路设计和Keil软件程序调试方法。

(2)学习软件延时程序的编写。

重点:延时程序,P1口结构二、实验顶备知识:(l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

(2)Proteus软件应用,Keil软件程序调试应用。

三、实验内容:㈠模拟开关灯的Proteus仿真及C语言程序设计1、设计要求:监视开关K1(接在P3.0端口上),用发光二级管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。

2、仿真电路原理图(预习内容)元器件选取:①AT89C52:单片机;②RES:电阻;③CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤LED-GREEN:绿色发光二级管;⑥SWITCH:开关。

模拟开关灯的电路原理图3、程序设计内容①开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨动开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用if(K1= =1)或者if(K1= =0)指令来完成对开关状态的检测。

②输出控制当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二级管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二级管L1亮。

(预习内容)模拟开关灯的程序流程图4、程序清单(预习内容)㈡广告灯(利用查表方式)的Protues仿真及程序设计1、设计要求:利用查表的方法,使端口P1作单一灯的变化;左移2次,右移2次,闪烁2次(延时的时间0.2 s)。

2、仿真电路原理图(预习内容)元器件选取:①AT89C52:单片机;②RES:电阻;③CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤LED-GREEN:绿色发光二级管。

40个经典单片机实验帮你成功

40个经典单片机实验帮你成功
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为 0.2 秒,相对于微秒来说,相差太大,所以我们在
执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理: 如图 4.1.1 所示的石英晶体为 12MHz,因此,1 个机器周期为 1 微秒 机器周期 微秒
(2). 输出控制
如图 3 所示,当 P1.0 端口输出高电平,即 P1.0=1 时,根据发光二极管的单向 导电性可知,这时发光二极管 L1 熄灭;当 P1.0 端口输出低电平,即 P1.0=0 时,发光二极管 L1 亮;我们可以使用 SETB P1.0 指令使 P1.0 端口输出高电平, 使用 CLR P1.0 指令使 P1.0 端口输出低电平。
3. 系统板上硬件连线
(1. 把“单片机系统”区域中的 P1.0-P1.3 用导线连接到“八路发光二 极管指示模块”区域中的 L1-L4 端口上;
(2. 把“单片机系统”区域中的 P1.4-P1.7 用导线连接到“四路拨动开 关”区域中的 K1-K4 端口上;
4. 程序设计内容
(1. 开关状态检测
对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状 态,根据每个开关的状态让相应的发光二极管指示,可以采用 JB P1.X,REL 或 JNB P1.X,REL 指令来完成;也可以一次性检测四路开关状态,然后让其指 示,可以采用 MOV A,P1 指令一次把 P1 端口的状态全部读入,然后取高 4 位的 状态来指示。
void main(void) {
while(1) { L1=0; delay02s(); L1=1; delay02s(); } }
2. 模拟开关灯 1. 实验任务

单片机实验整理

单片机实验整理

数据传送1.实验目的(1)熟悉51单片机的开发环境Keil C51(2)掌握8051单片机内部数据存储器、外部数据存储器的数据传送特点和应用(3)掌握MOV, MOVX和MOVC类指令的用法及区别2.实验内容(1)将内部数据存储器20H为首地址的十六个字节传送到30H为首地址的数据区,即:20H~2FH送30H~3FH。

(2)将外部数据存储器2000H~200FH单元的十六个数传送至内部数据存储器的30H~3FH。

建立一个数字0~9的ASCII码表,表格放在程序存贮器区首址为1000H的十个单元内,编程根据R0中的内容来查表,所得结果存放在寄存器B中,注意R0中的内容不在0~9范围时的ORG 0000HSJMP MAINORG 3000HMAIN: MOV A,#20H //传送20HLOOP1:MOV 30H,@AINC ACJNE A,#2FH,LOOPMOV DPTR,#2000H //传送2000HLOOP2:MOV 30H,@DPTRINC DPTRCJNE DPTR,#200FH,LOOP2MOV R0,#TABEL //查表MOV B,@R0ORG 1000HTABEL:DB 30H,31H,32H,33H,34HDB 35H,36H,37H,38H,39H编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。

解:STRAT:MOV R0,#30HMOV R7,#0FHMOV DPTR,#3000HLOOP:MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R7,LOOPRET单片机实验指导书--实验3ORG 0000HLOOP0: MOV DPL,R3MOV DPH,R2MOVX A,@DPTRMOV DPL,R5MOV DPH,R4LOOP: MOVX @DPTR,ACJNE R3,#0FFH,LOOPAINC R2LOOPA: INC R3CJNE R5,#0FFH,LOOP1INC R4LOOP1: INC R5CJNE R7,#00H,LOOP2CJNE R6,#00H,LOOP3LOOP4: SJMP LOOP4LOOP2: DEC R7SJMP LOOP0LOOP3: DEC R7DEC R6SJMP LOOP0ENDkeil如何编译1 新建一工程;在主菜单project下(.Uv2)2 新建一文件;如C则存为.c文件,如汇编则存为.asm文件;3 在左边窗口中的Target1上右击,在菜单中选add file to group,再选中你的刚建的文件,即把它加入到你的工程中。

单片机实验报告

单片机实验报告

实验1 二进制到BCD转换一、实验目的学习星研Star16L仿真器系统的基本操作,熟悉EL-Ⅱ型通用接口板实验电路,掌握简单的数值转换算法。

二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路。

三、实验内容1)将给定的一个单字节二进制数(存放在R2中), 转换成非压缩的二—十进制(BCD)码, 并存放到R3R4R5中。

2)(选作)将给定的一个双字节二进制数(存放在R2R3中), 转换成压缩的二—十进制(BCD)码, 并存放到R4R5R6中。

四、实验方法1.将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统1)仿真器与仿真头的硬件连接:STAR16L仿真器与仿真头PODPH51(DIP)用两根40芯扁平电缆连接, 注意电缆插头的方向。

参见下图。

仿真头PODPH512)仿真头与EL-Ⅱ型通用接口板的硬件连接: 将EL-Ⅱ型通用接口板的8051CPU芯片拔下, 将仿真头PODPH51插入该CPU插座(40脚DIP),注意芯片的上下方向8051CPU3)仿真器与微机的连接: 通过USB接口将微机与仿真器相连, 打开仿真器电源。

仿真器与微机的第一次连接将自动引导安装程序, 在该驱动程序的安装过程中, 请勿执行其它应用程序。

2 、单片机仿真系统运行调试通过双击微机桌面的星研图标, 或通过开始菜单, 起动星研仿真系统程序, 通过输入程序, 编译通过后, 进入调试状态, 打相应的观察窗口, 观测CPU内部各个寄存器, 存储器以及外部存储器的状态, 通过单步或断点运行, 验证程序运行的正确性, 并修正错误。

五、参考程序清单及框图1)单字节二进制到非压缩BCD;NAME T1_1_BCDORG 0000H ;0100H不能用, 与星研软件冲突??BCD1: MOV A, R2 ;二进制数送AMOV B, #100 ;100作为除数送入BDIV ABMOV R3, A ;百位数送R3, 余数在B中MOV A, #10 ;分离十位和个位数XCH A, B ;余数送A, 除数10在B中DIV AB ;分离出十位在A, 个位在B中MOV R4, A ;十位送R3MOV A, BMOV R5, A ;个位送R4NOPLJMP BCD1END2)(选作)双字节二进制到压缩BCD;NAME T1_2_BCDORG 0000HBCD2: CLR AMOV R4, AMOV R5, AMOV R6, AMOV R7, #16LOOP: CLR CMOV A, R3RLC AMOV R3, AMOV A, R2RLC AMOV R2, AMOV A, R6ADDC A, R6DA AMOV R6, AMOV A, R5ADDC A, R5DA AMOV R5, AMOV A, R4ADDC A, R4DA AMOV R4, ADJNZ R7, LOOPLJMP BCD2END参考程序框图单字节二进制数转换成非压缩BCD码六、实验要求1.基本内容: 按照实验要求连接系统, 编制程序并运行, 说明如何利用仿真器验证程序的正确性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、熟悉学习工具开发板二、点亮LED1.单片机及最小系统电路1)电源电路2)晶振电路3)复位电路2.74HC245和74HC13874HC245的输入:DB_0 即P0.0DB_1 即P0.1DB_2 即P0.2DB_3 即P0.3DB_4 即P0.4DB_5 即P0.5DB_6 即P0.6DB_7 即P0.7U3 74HC138的输入:ADDR0即P1.0ADDR1即P1.1ADDR2即P1.2ADDR3即P1.3 E3ENLED即P1.4 E1 E2 3.跳线4.LED三极管基极端输入LEDS6是U3 74HC138的输出Y68个LED小灯阴极端的8个输入是74HC245的8个输出:DB 0 也就是P0.0DB 1 也就是P0.1DB 2 也就是P0.2DB 3 也就是P0.3DB 4 也就是P0.4DB 5 也就是P0.5DB 6 也就是P0.6DB 7 也就是P0.75.点亮一个LED的程序新建工程,添加.c文件,编辑编译,生成hex文件编译成功会出现reg2.h,,双击可以打开STP-ISP下载程序到板子,小灯被点亮1)点亮第1个小灯,熄灭第1个小灯2)点亮第2个小灯,熄灭第2个小灯3)点亮第3个小灯,熄灭第3个小灯4)点亮第1、2小灯,熄灭第1、2小灯5)点亮第1、3、5、7小灯,熄灭第1、3、5、7小灯三、闪烁LED修改小灯闪烁的时间:低于20ms,大于50HZ,小灯的闪烁人眼看到是连续的四、流水灯1、用P0点亮小灯2、依次点亮每个小灯,依次要赋给P0 的数值就是:0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F。

•左移<<右移>>•左移,最低位填0补充;右移,最高位填0补充•0xf0 11100000 01111000流水灯程序1.将流水灯左移理解透彻后,独立完成流水灯右移操作。

2.独立完成一个左移到头接着右移,右移到头再左移的花样流水灯程序。

五、定时计数器和数码管开发板上最右边的小灯点亮一秒,熄灭一秒,也就是以0.5Hz 的频率进行闪烁。

写程序之前,我们要先来学会计算如何用定时器定时时间。

晶振是11.0592M,时钟周期就是1/11059200,机器周期是12/11059200假如要定时20ms,就是0.02 秒,要经过x 个机器周期得到0.02 秒我们来算一下x*12/11059200=0.02,得到x= 18432。

16 位定时器的溢出值是65536(因65535 再加1 才是溢出)于是我们就可以这样操作,先给TH0 和TL0一个初始值,让它们经过18432 个机器周期后刚好达到65536,也就是溢出,溢出后可以通过检测TF0 的值得知,就刚好是0.02 秒。

那么初值y = 65536 - 18432 = 47104,转成16 进制就是0xB800,也就是TH0 = 0xB8,TL0 = 0x00。

这样0.02 秒的定时我们就做出来了,细心的同学会发现,如果初值直接给一个0x0000,一直到65536 溢出,定时器定时值最大也就是71ms 左右,那么我们想定时更长时间怎么办呢?用你小学学过的逻辑,倍数关系就可以解决此问题。

使用定时器来实现延时,完成左右移动的流水灯的程序。

位选确定选择哪个数码管,段选确定被选中的数码管显示什么了解数码管的原理,掌握数码管的真值表的计算方法U3 74HC138的输入:ADDR0即P1.0ADDR1即P1.1ADDR2即P1.2ADDR3即P1.3ENLED即P1.4U374HC138的6个输出是6个数码管位选:Y0 即LEDS0Y1 即LEDS1Y2 即LEDS2Y3 即LEDS3Y4 即LEDS4Y5 即LEDS574HC245的8个输出是6个数码管段选:DB 0 也就是P0.0DB 1 也就是P0.1DB 2 也就是P0.2DB 3 也就是P0.3DB 4 也就是P0.4DB 5 也就是P0.5DB 6 也就是P0.6DB 7 也就是P0.72、数码管DS1显示13、用一个数码管间隔1秒钟静态循环显示0至F编程实现数码管静态每隔1秒钟,静态显示9 8 7 6…0。

六、中断和7段数码管1、动态显示0至9999992、用switch实现上述功能3、去鬼影4、消隐扩展:1、尝试修改程序,让我们的数码管只显示有效位,也就是高位的0 不显示。

2、尝试写一个从999999 开始倒计时的程序,并且改用定时器T1 的中断来完成,通过写这个程序,熟练掌握定时器和中断的应用。

七、点阵LEDU4 74HC138的输入:ADDR0即P1.0ADDR1即P1.1ADDR2即P1.2ADDR3即P1.3=E1=0ENLED即P1.4=E2=0 (((U3 74HC138的输入:ADDR0即P1.0ADDR1即P1.1ADDR2即P1.2ADDR3即P1.3=E3=1ENLED即P1.4= E1 E2=0)))点阵LED的阳极端是U4 74HC138的8个输出:Y0 即LEDSC0Y1 即LEDC1Y2 即LEDC2Y3 即LEDC3Y4 即LEDCS4Y5 即LEDC5Y6 即LEDC6Y7 即LEDC7点阵LED的阴极端是74HC245的8个输出:DB 0 也就是P0.0DB 1 也就是P0.1DB 2 也就是P0.2DB 3 也就是P0.3DB 4 也就是P0.4DB 5 也就是P0.5DB 6 也就是P0.6DB 7 也就是P0.7• 1 、点亮左上角的一个点••2、点亮一行•3、点亮全部4、心型显示点阵的动态显示图形5、竖直显示下图6、横向显示下图八函数进阶与按键例1 函数调用实现7段数码管的显示本程序问题是鬼影抖动U3 74HC138的输入引脚:ADDR0 即P1.0ADDR1 即P1.1ADDR2 即P1.2ADDR3 即P1.3键盘的输入控制引脚:KeyIn1 即P2.4KeyIn2 即P2.5KeyIn3 即P2.6KeyIn4 即P2.7键盘的输出引脚:KeyOut1 即P2.3KeyOut2 即P2.2KeyOut3 即P2.1KeyOut4 即P2.0第一排第四个按键抬起时,数码管显示下一个值,循环显示从0至9十一、串行通信速度和数据格式对于STC89C52 单片机来讲,这个波特率发生器只能由定时器T1 或定时器T2 产生定时器T1 的模式2,也就是自动重装载模式,定时器的重载值计算公式为:1、查询方式串口助手发送数据,+1后返回给串口助手这个程序还是用在主循环里等待接收中断标志位和发送中断标志位的方法来编写的,而实际工程开发中,当然就不能这么干了,我们也只是为了用直观的对比来告诉同学们硬件模块可以大大简化程序代码,那么实际使用串口的时候就用到串口中断了,来看一下用中断实现的程序。

请注意一点,因为接收和发送触发的是同一个串口中断,所以在串口中断函数中就必须先判断是哪种中断,然后再作出相应的处理。

2、中断方式串口助手发送数据,+1后返回给串口助手3、数码管显示返回串口助手在这里我用一款简易的逻辑分析仪把串口通信的波形抓出来给大家看一下十二、液晶显示器12.4.1 1602 液晶的硬件接口介绍前边我们讲的流水灯、数码管、LED 点阵这三种都是LED 设备,这节课我们来学习一下LCD 显示设备——1602液晶。

那个大大的,平时第一行显示16 个小黑块,第二行什么都不显示的东西就是1602 液晶,是不是早就注意到它了呢?电子器件数据手册液晶的电源1 脚2 脚以及背光电源15 脚16 脚,不用多说,正常接就可以了。

3 脚叫做液晶显示偏压信号,大家注意到小黑块没有,当我们要显示一个字符的时候,有的黑点显示,有的黑点就不能显示,这样就可以实现我们想要的字符了。

我们这个3 脚就是用来调整显示的黑点和不显示的之间的对比度,调整好了对比度,就可以让我们的显示更加清晰一些。

在进行电路设计实验的时候,通常的办法是在这个引脚上接个电位器,也就是我们初中学过的滑动变阻器。

通过调整电位器的分压值,来调整3脚的电压。

而当产品批量生产的时候,我们可以把我们调整好的这个值直接用简单电路来实现,就如同在我们板子上,我们直接使用的是一个18 欧的下拉电阻,市面上有的1602 的下拉电阻大概1 到1.5K 也是比较合适的值。

4 脚是数据命令选择端。

对于液晶,有时候我们要发送一些命令,让它实现我们想要的一些状态,有时候我们要发给它一些数据,让它显示出来,液晶就通过这个引脚来判断接收到的是命令还是数据,这个引脚我们接到了ADDR0 上,通过跳线帽和P1.0 连接在一起。

大家注意学会读手册,看到这个引脚描述里:数据/命令选择端,而后跟了括号(H/L),他的意思就是当这个引脚是H(High)高电平的时候,是数据,当这个引脚是L(Low)低电平的时候,是命令。

5 脚和4 脚用法类似,功能是读写选择端。

我们既可以写给液晶数据或者命令,也可以读取液晶内部的数据或状态,就是控制这个引脚。

因为液晶本身内部有RAM,实际上我们送给液晶的命令或者数据,液晶需要先保存在缓存里,然后再写到内部的寄存器或者RAM中,这个就需要一定的时间。

所以我们进行读写操作之前,首先要读一下液晶当前状态,是不是在“忙”,如果不忙,我们可以读写数据,如果在“忙”,我们就需要等待液晶忙完了,再进行操作。

读状态是常用的,不过读液晶数据我接触的场合没怎么用过,大家了解这个功能即可。

这个引脚我们接到了ADDR1 上,通过跳线帽和P1.1 连接在一起。

6 脚是使能信号,很关键,液晶的读写命令和数据,都要靠它才能正常读写,我们后边详细讲这个引脚怎么用。

这个引脚我们通过跳线帽接到了ENLCD 上,这个位置的跳线是为了和另外一个12864 液晶的切换使用而设计的。

7 到14 引脚就是8 个数据引脚了,我们就是通过这8 个引脚读写数据和命令的。

我们统一接到了P0 口上。

来看一下开发板上的1602 接口的原理图,如图12-1 所示。

1602 液晶内部带了80 个字节的显示RAM,用来存储我们发送的数据第一行的地址是0x00H到0x27第二行的地址从0x40到0x67其中第一行0x00 到0x0F是与液晶上第一行16 个字符显示位置相对应的第二行0x40 到0x4F 是与第二行16 个字符显示位置相对应的。

而每行都多出来一部分,是为了显示移动字幕设置的。

这个状态字节有8 个位,最高位表示了当前液晶是不是“忙”,如果这个位是1 表示液晶正“忙”,禁止我们读写数据或者命令,如果是0,则可以进行读写。

而低7 位就表示了当前数据地址指针的位置。

这里用的1602液晶所使用的接口时序是摩托罗拉公司所创立的6800时序,还有另外一种时序是Intel 公司的8080 时序,也有部分液晶模块采用,只是相对来说比较少见。

相关文档
最新文档