(整理)实验二P1口控制LED发光二极管.

(整理)实验二P1口控制LED发光二极管.
(整理)实验二P1口控制LED发光二极管.

实验二 P1口控制LED发光二极管一、实验目的

1、进一步熟练Proteus及Keil软件的基本操作

2、掌握8051单片机P1口的使用方法

3、掌握LED发光二极管的原理及使用方法

4、学习汇编程序的调试及仿真方法

二、实验电路

三、实验内容及步骤:

要求:8个LED发光二极管循环左移显示(发光的移位),间隔时间为一秒。

1、使用Proteus画出电路原理图

2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件

3、进行Protues与Keil uVision联动的相关设置:

4、在Proteus中仿真运行。

四、思考

1、将本实验的实验现象改为“不发光二极管循环移位”。

2、将本实验的实验现象改为“每隔0.5秒发光二极管循环移位”。

参考程序:

ORG 0

LJMP MAIN

ORG 30H MAIN: MOV A,#0FEH LOOP: MOV P1,A

LCALL DELAY

RL A

SJMP LOOP DELAY: MOV R7,#20H DELAY1:MOV R6,#200 DELAY2:MOV R5,#123

DJNZ R5,$

DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

实验三数码管静态显示实验

一、实验目的

1、进一步熟悉51系列单片机

2、了解8051单片机P0口的使用方法

3、掌握共阴极数码管的原理及使用方法

4、学习8051的编程、调试、编译、仿真。

二、实验电路

图3 数码管静态显示电路原理图

注:数码管要从元件库选择Optoelectronics类中的7SEG-COM-CAT-GRN。

三、要求及步骤:

要求:在七段数码管上以递增方式循环显示数字0—9,间隔时间为一秒。

1、使用Proteus画出电路原理图

2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件

3、进行Protues与Keil uVision联动的相关设置:

4、在Proteus中仿真运行。

四、思考

1、为什么要将P0口各引脚通过电阻R3-R9接到电源?

2、如何在共阴数码管上循环显示十六进制数字0—F(不区分字母的大小写)?

3、怎样修改程序使数字以递减方式循环显示?

4、若用共阳极数码管应如何修改电路和程序,才能完成本实验的功能?

参考程序:

ORG 00H

LJMP START

ORG 30H

START: MOV DPTR,#TABLE

S1: MOV R4,#00H

S2: MOV A,R4

MOVC A,@A+DPTR

MOV P0,A

LCALL DELAY

INC R4

CJNE R4,#0AH,S2

SJMP S1

DELAY: MOV R5,#20 ;延时子程序

D2: MOV R6,#200

D1: MOV R7,#123

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,D2

RET

TABLE: DB 3FH,06H,5BH,4FH,66H ;段码表DB 6DH,7DH,07H,7FH,6FH

END

实验四基本输入/输出实验

一、实验目的

1、进一步熟悉8051单片机并行I/O口的使用方法

3、掌握并行I/O口输入/输出操作的方法

4、学习8051的编程、调试、编译、仿真。

二、实验电路

图4 并行I/O口基本输入/输出

注:按钮要从元件库选择Switches & Relays类中的BUTTON。

三、要求及步骤:

要求:在按钮动作的控制下,将十六进制数字0-F循环显示在数码管上(每按一次按钮,显示的数字加1)。

1、使用Proteus画出电路原理图

2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件

3、进行Protues与Keil uVision联动的相关设置:

4、在Proteus中仿真运行。

四、思考

1、如何检测按钮是否按下?

2、怎样修改程序,可以使数字0-F在按钮控制下,以递减方式循环显示?

3、若在P0口接8个LED,如何实现每按一次按钮,点亮的LED左移一位(8个LED中只有一个点亮)?

参考程序:

ORG 00H

LJMP START

ORG 30H

START: MOV P1,#01H

MOV DPTR,#TABLE

MOV R4,#00H

CLR A

MOVC A,@A+DPTR

MOV P0,A

LOOP: MOV A,P1

ANL A,#01H

JZ LOOP

LOOP1: MOV A,P1

ANL A,#01H

JNZ LOOP1

INC R4

MOV A,R4

ANL A,#0FH

MOVC A,@A+DPTR

MOV P0,A

SJMP LOOP

TABLE: DB 3FH,06H,5BH,4FH,66H ;段码表DB 6DH,7DH,07H,7FH,6FH

DB 77H,7CH,39H,5EH,79H,71H,76H

END

实验五数据传送指令练习

一、实验目的

1、进一步掌握Keil软件的使用。

2、熟悉数据传送指令功能及使用。

二、实验内容

1、输入数据传送指令并单步执行输入的指令;

2、练习数据传送指令的基本应用。

三、实验步骤

1、数据传送指令的功能

1)输入如下程序:

ORG 0030H

MOV A,#0BBH

MOV DPTR,#0070H

MOVX @DPTR,A

MOV R0,#70H

MOV @R0,A

MOV A,#0CCH

XCHD A,@R0

SJMP $

END

2)观察DPTR、A、R0、内部RAM70H和外部RAM70H单元中内容并填入表中第一空行。

3)单步执行完上述程序,重新观察上述寄存器和存储单元中内容并填入表中第二空行。

表1 程序执行前后有关寄存器和RAM单元内容对照表

4)分析程序运行结果,并把分析结果和运行结果进行比较。

2、PUSH指令对堆栈的影响

1)输入如下程序:

ORG 0040H

MOV A,#0AAH

MOV PSW,#0CCH

PUSH ACC

PUSH PSW

SJMP $

END

2)观察A、PSW、SP、07H、08H和09H单元中内容,并填入表表。

表2 PUSH指令对堆栈的影响

3)单步执行上述程序,重新观察上述寄存器和堆栈区中内容填入表中。

4)分析程序运行结果,并把分析结果和实验结果进行比较,看两者是否相同。

3、编写把A、PSW、DPTR中内容入栈保护并恢复的程序,并验证。

4、编写将内RAM的30H、40H单元内容相互交换的程序,并验证。

5、编程实现交换外RAM 1050H、1060H单元的数据,并运行验证。

四、实验总结:

1、堆栈操作的原则是什么?在程序设计中需要保护和恢复数据时应注意什么?

2、对内RAM、外RAM及ROM进行数据传送的指令,分别可使用何种寻址方式?

实验六算术及逻辑运算指令练习

一、实验目的

1、熟悉算术及逻辑运算类指令的功能。

2、掌握算术及逻辑运算类指令对标志位的影响。

3、掌握算术、逻辑运算指令的编程应用。

二、实验内容

1、求两个16位无符号二进制数的和

2、四位十进制数的加法

3、算术、逻辑运算指令的基本应用

三、实验步骤

1、调试程序:求两个16位数的和

设内RAM30H和32H开头的两个单元分别存放有两个16位无符号二进制数(低8位在30H 或32H单元,高8位在31H或33H单元),将和存放在30H单元开始的存储区。

ORG 0000H

LJMP MAIN

ORG 0030H MAIN: MOV A,30H

ADD A,32H

MOV 30H,A MOV A,31H ADDC A,33H MOV 31H,A SJMP $

END

要求:选择几组数据测试该程序,如有错,将其改正。

2、编程:四位十进制数的加法:

设内RAM中30H和32H开头的两个单元分别存放有两个四位十进制数的压缩BCD码(低8位在30H或32H单元,高8位在31H或33H单元),试编写程序求这两个十进制数的和,并将

3、分别编写实现如下功能的程序并运行、验证。

(1)外RAM1000H~1020H单元中8位无符号二进制数求和,结果存放在内RAM30H单元开始的存储区。

(2)外RAM的1000H和2000H单元中分别放着一个8位无符号二进制数X和Y,计算3X+4Y,并将结果存入内RAM的30H单元和31H单元。(低8位在30H单元)。

(3)将两位十进制数的压缩BCD码转换成ASCII码。(源数据在内RAM 20H单元,结果存放在内RAM30H开始的两个单元,低字节在31H单元)

(4)将内RAM 从30H开始的20个单元全部清零。

四、实验总结:

1、算术加、减法指令如何影响PSW中的有关标志位?

2、如何实现两个BCD数的减法?

实验七汇编语言程序设计

一、实验目的:

1、练习常见的简单的分支、循环程序结构的设计方法。

2、练习常见的程序调试方法。

二、实验内容:

1、编写程序,将内RAM的30H~40H单元存放的单字节数据传送到外RAM中以1000H为起始地址的存储区。

在内RAM的30H-40H随意输入数据,调试并运行程序,观察结果。

2、编写程序,查找外部RAM的1020H-1030H单元中是否有0AAH这个数,如果有,将内RAM的30H单元置为01H,否则将30H单元置为00H。

在外RAM中输入数据,运行程序,观察结果。

3、在内部RAM30-5FH单元存放着一组无符号数,编写程序查找出这些无符号数的最大值,将结果存放于60H单元。

在相关单元中输入一些数据,运行程序,观察实验结果。

4、内RAM从40H单元开始的10个单元中存放着单字节带符号数,编程分别统计出正、负数的个数,并存入50H、51H单元中。

三、实验要求:

1、实验前充分预习,写出所需程序

2、上机将程序调试正确,并分析程序运行结果

四、实验报告要求:

写出调试正确的程序。

五、思考题:

1、汇编语言程序如何测试和调试?

2、在子程序调用和返回指令执行时,PC值如何变化?

实验八外部中断实验

一、实验电路(如图3.3.45所示)

图3.3.45 外部中断实验电路原理图

二、实验目的

1、熟悉51系列单片机

2、了解AT89C51 P1口、P3口的使用方法

3、了解键盘的原理及使用方法

4、了解发光二极管的原理及使用方法

5、掌握外部中断的原理及使用方法

6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件INT.HEX

三、实验器材

1、单片机主板

2、单片机扩展板

3、连接导线若干

四、实验注意事项

1、单片机主板、单片机扩展板接+5V

2、因J14为有极性排阻,故单片机扩展板一定要连GND和VCC,否则发光二极管不亮

3、图中粗线部分为要求学生自己连线部分

五、实验现象

正常情况下8个LED发光二极管循环显示,延迟时间为1秒,当有按键按下即产生外部中断时,8个LED发光二极管全亮,延迟时间为2秒。

六、思考

请同学们自己试一下外部中断0。

实验定时器中断

一、实验电路(如图3.3.46所示)

图3.3.46 定时器中断电路原理图

二、实验目的

1、熟悉51系列单片机

2、了解AT89C51 P1口的使用方法

3、掌握定时器、计数器的原理及使用方法

4、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件INT.HEX

三、实验器材

1、单片机主板

2、单片机扩展板

3、连接导线若干

四、实验注意事项

1、单片机主板、单片机扩展板接+5V电压

2、因J14为有极性排阻,故单片机扩展板一定要接GND和VCC,否则LED发光二极管不亮

3、图中粗线部分为要求学生自己连线部分

五、实验现象

LED发光二极管循环显示,延迟时间为1秒。

六、思考

将LED发光二极管的循环延迟时间设置的更长或更短。

实验数码管动态显示实验

一、实验电路(如图3.3.33)

图3.3.33 数码管动态显示电路原理图

二、实验目的

1、熟悉51系列单片机

2、了解AT89C51 P1口、P2口的使用方法

3、学习驱动芯片ULN2003A的原理及使用方法

4、学习驱动芯片74HC245的原理及使用方法

5、掌握数码管(共阴、共阳两种)的原理及使用方法

6、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件LEDDT.HEX

三、实验器材

1、多功能实验板

2、单片机扩展板

3、连接导线若干

四、实验注意事项

1、多功能实验板、单片机扩展板均采用+5V电压

2、因图中将74HC245的GND和VCC引脚隐藏,故学生自己连线时一定要将GND和VCC连上,否则芯片不工作

3、图中粗线部分为要求学生自己连线部分

五、实验现象

1、显示数字1—6。

六、思考

1、显示其它数字和字符。

一、实验电路(如图3.3.34所示)

图3.3.34 矩阵键盘实验电路原理图

二、实验目的

1、熟悉51系列单片机

2、了解AT89C51 P1口、P2口的使用方法

3、了解共阳数码管的原理及使用方法

4、掌握矩阵键盘的原理及使用方法

5、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件KEY.HEX

三、实验器材

1、多功能实验板

2、单片机扩展板

3、连接导线若干

四、实验注意事项

1、多功能实验板、单片机扩展板接+5V电压

2、数码管为共阳数码管,公共端接+5V

3、图中粗线部分为要求学生自己连线部分

五、实验现象

1、ENTER键为全亮键,ESC键为全灭键,其它数字键为按哪一位数字键,在数码管上显示其数字。

一、实验电路(如图3.3.43)

图3.3.43 液晶LCD电路原理图

二、实验目的

1、熟悉51系列单片机

2、了解AT89C51 P1口、P2口的使用方法

3、了解电位器的使用方法

4、掌握液晶模块LCD的原理及使用方法

5、学习AT89C51的编程、仿真、调试、编译、芯片烧录。对应文件LCD.HEX

三、实验器材

1、单片机多功能实验板

2、单片机扩展板

3、连接导线若干

四、实验注意事项

1、单片机扩展板、单片机多功能实验板均采用+5V电压

2、单片机多功能实验板接GND和VCC时一定不能接反,否则会烧毁LCD液晶模块

3、图中粗线部分为要求学生自己连线部分

五、实验现象

1、显示“CS&S”字样。

六、思考

1、请同学们在液晶模块上显示“HOW ARE YOU”。

实验 交通灯控制(定时器延时法)

一、实验目的

1. 进一步理解单片机内部定时器/计数器的工作原理和使用方法。

2. 学习模拟交通灯控制的方法。

3. 学习数据输出程序的设计方法。

4. 学习中断处理程序的编程方法。 二、实验内容

用CPU 的P1口输出控制信号,控制六个LED 灯(红,绿,黄),模拟交通灯管理。

三、实验电路连接

P1.0 ●-----------------------●

P1.1 ●-----------------------● P1.2 ●-----------------------● P1.3 ●-----------------------● P1.4 ●-----------------------● P1.5 ●-----------------------● LED5 四、实验说明

l. 因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始为状态0。 状态0:东西红灯,南北红灯;然后转入

状态1:南北绿灯通车,东西红灯;过一段时间转入

状态2:南北绿灯闪几次转黄灯亮,延时几秒,东西仍然红;再转入 状态3:东西绿灯通车,南北红灯;过一段时间转入

状态4:东西绿灯闪几次转黄灯亮,延时几秒,南北仍然红灯;最后循环至状态1。 2. 各用一组红、黄、绿色LED 分别表示南北方向和东西方向。

3. 由定时器来产生通车延时时间,时间长短1秒以上(由同学自己确定)。

提示:内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是12MHZ ,本程序定时器工作于方式1(16位方式)时,最大定时时间为:

216*1μs=65536μs=65.536ms

所以需要配合软件记数。如要延时2秒,则需要T0中断32次,所 用时间为

65536*32=2097120μs ≈2s

因此在T0中断处理程序中,要判断中断次数是否到32次,若不到32次,则只使中断次数加1,然后返回,若到了32次,定时2秒时间到。 4. 用软件延时方法产生“闪”延时时间。 五、实验仪器和设备

PC 机、W A VE 软件、E2000/S 仿真器+POD8X5X 仿真头、MULT1A 用户板、实验板、开关电源等。

六、参考程序框图(见下页)

主程序框图

中断处理程序框图

51单片机P1口输入输出实验实验报告

实验一P1口输入输出实验 一实验目的 1 掌握P1口作为I/O口时的使用方法。 2 理解读引脚和读锁存器的区别。 二实验原理 由 AT89C51 组成的单片机系统,通常情况下 P0 口分时复用作为地址、数据总线, P2 口提供 A15-A8 即高 8 位地址, P3 口用作第二功能,只有 P1 口用作 I/O 口。 P1 口是 8 位准双向口,它的每一位都可独立地定义为输入或输出。既可作为 8 位的并行 I/O 口,也可作为 8 个不同的输入输出端。 P1 口的结构如图 2.1 所示,当其工作在输入方式时,对应锁存器必须先写 1 ,才能正确地读到引脚上的信号,否则,若对应锁存器的值为 0 ,执行读引脚指令时,读到的结果永远为 0 。每个 I/O 端口都有两种读入,即读锁存器和读引脚,读引脚指令一般都是以 I/O 端口为源操作数的指令,如 MOV C , P1.3 ,而读锁存器指令一般为“读 - 修改 - 写”指令,如 ANL P1.3 , C 指令,请同学们在实验中体会。图 2 中, P1.2 作为输出口, P1.3 作为输入口。

三实验内容与要求 1.编写程序实现当P1.3为低电平时(SW1闭合),发光管亮;P1.3为高电平时发光管灭。 修改程序在执行读P1.3之前,先执行CLR P1.3,观察结果是否正确,分析在第二种情况下程序为什么不能正确执行,理解读引脚和读锁存器区别。 四实验内容 实验程序: ORG 0000H MAIN: MOV SP,#60H ; 设置堆栈指针SP为60H MOV P1,#0FFH ;当P1口用作输入时,所有位对应的锁存器必须先置1 LOOP: ;CLR P1.3 MOV C,P1.3 ;读P1.3 JC LIGHT CLR P1.2 ;LED灭 SJMP LOOP LIGHT: SETB P1.2 ;LED 亮 SJMP LOOP RET END 若在执行读P1.3之前,先执行CLR P1.3,观察结果将会不正确。 五实验结论 1、当P1口用作输入时,所有位对应的锁存器必须先置1 2、在执行读P1.3之前,先执行CLR P1.3,观察结果不正确,程序不能正确执行,因为系统读取的是锁存器的状态。 3、读引脚和读锁存器区别:第一种方式是将引脚作为输入,那是真正地从外部引脚读进输入的值,第二种方式是该引脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读引脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。

键盘与LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。

5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

实验七 LED灯控制实验

实验七LED灯控制实验 一、实验目的 1、掌握通过文件系统操作I/O设备的方法; 2、学会使用S5PV210 的GPIO设备实现简单的功能。 二、实验设备 1)装有Ubuntu系统或装有Ubuntu虚拟机的PC 机一台; 2)A8嵌入式实验箱一台; 3)本实验用到的实验箱模块有:S5PV210 CPU板模块,LED 模块 三、实验要求 循环让led1-led4点亮 四、实验原理 在Linux 系统中,所有设备都是以文件的形式被打开并进行读/写操作的,本实验中使用POSIX容的文件操作接口函数对底层设备进行操作。POSIX是Portable Operating System Interface foIX的首字母缩写词,是一套IEEE 和ISO标准。这个标准定义了应用程序和操作系统之间的一个口。只要保证他们的程序设计的符合POSIX 标准,开发人员就能确信他们的程序可以和支持SIX 的操作系统互联。这样的操作系统包括大部分版本的UNIX。POSIX 标准现在由IEEE 的一分支机构Portable Applications Standards Committee(PASC)维护。 本实验需要用到以下几个文件操作函数: 【函数原型】int open(const char *pathname, int oflag); int open(const char *pathname, int oflag, mode_t mode); 【功能】打开名为path 的文件或设备,成功打开后返回文件句柄。 【参数】pathname : 文件路径或设备名 oflag : 打开方式。可选值可以是表1.1中的一个值或几个值的组合 【返回值】成功打开后返回文件句柄,失败返回-1 【头文件】使用本函数需要包含。 表 1.1 打开方式对照表

-单片机报告第一个实验p1口输入输出实验

电工电子实验报告 课程名称:单片机原理及接口技术 实验项目名称:P1口输入、输出实验 实验学生班级:D自集成111 实验学生姓名:吴弟 实验学生学号:233110138 同组学生姓名: 实验指导老师:曾宪阳屈波 孙来业陆红伟 实验时间:2013.4.1 实验地点:B302 工业中心

预习报告 实验目的: 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 3、理解读引脚和读锁存器的区别。 主要实验仪器: 1、计算机一台 2、实验箱一台 实验原理及主要工作: 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS 管导通,读入的数据是不正确的。 2.8051延时子程序的延时计算问题,对应程序 DELAY: MOV R6,#0H MOV R7, #0H DELAYLP:

DJNZ R6,DELA YLP DJNZ R7,DELA YLP RET 查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为: (256×255+2)×2×12÷6 ≈261ms 实验电路与连线: 实验2 P1口输入输出 P1.0 ●———●LED0 K0 ●———●P1.0 P1.1 ●———●LED1 K1 ●———●P1.1 P1.2 ●———●LED2 K1 ●———●P1.1 P1.3 ●———●LED3 P1.3 ●———●L5

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

P1口输入输出实验

实验一P1 口输入输出 一.实验目的 (1)进一步熟悉51单片机外部引脚线路连接; (2)验证常用的51指令; (3)学习简单的编程方法; (4)掌握单片机全系统调试的过程及方法; (5)学习P1 口的有关功能作用以及使用方法。 二?实验说明 P1 口由于有内部上拉电阻,没有高阻抗输入状态,称为准双向口。作为输出口时,不需要在片外接上拉电阻,P1 口“读引脚”输入时,必须先向锁存器写1; 三?实验内容 P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1.0、P1.1作输入口接两个拨动开关,P1.2、P1.3作输出口,接两个发光二极管,编写程序 读取开关状态,将此状态,在发光二极管上显示出来 四?实验原理 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。循环时间由定时器控制。 五?实验流程 ORG 0000H ;程序入口 AJMP RIGHT ;跳向标号RIGHT处 ORG 0030H ;程序

RIGHT: MOV R0,#08H ;置移位次数

MOV A,#0FFH ;置全 1 CLR C ;将Cy 清零 RIGHT1: RRC A ;由于进位Cy=0 ,所以带进位的循环右移会出现灯的亮灭 MOV P1,A ;输出至P1 口,控制LED CALL DELAY ;调用延时子程序 DJNZ R0,RIGHT1 ;R0-1,不为0则转移到标号 RIGHT1处 AJMP RIGHT ;绝对转移至RIGHT 处 ?***************************************************************************** 5 ; /*延时子程序*/ ?***************************************************************************** DJNZ R5,DELAY1 ;R5-1,不为 0 则转移至 DELAY1,执行 2*10us RET ;退出子程序执行 END 七?硬件设计 (1) P1 口某一 I/O 口线反转输出电路 (2) P1 口输出电路 DELAY: MOV R5,#10 DELAY1: MOV R6,#50 DELAY2: MOV R7,#250 DJNZ R7,$ DJNZ R6,DELAY2 ;R6-1,不为0则转移至 DELAY2,执行2*200*10us H-5V +5V Vcc P1.0 Pl 1 EA XI PL 2 Pl .3 Pl XS Pl.5 Pl.6 Pl .7 R.ST Vss ;使用不停的跳转来实现延时, 30 P 80CS1 LED 360fi + 5V

STM32 汇编语言,按键控制LED移动实验

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;按键控制LED移动实验;;;;;;;;;;;;;;;;;;;; ;;8个LED接在PE口(PE[0..7]);;;;;;;;;;;;;;;;;;;;;;;;; ;;按下按键则LED循环向右跑一格;;;;;;;;;;;;;;;;;;;;;;;; ;;2011-5-3 by 追梦;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BIT2 EQU 0X00000004 BIT6 EQU 0X00000040 BIT8 EQU 0X00000100 GPIOE EQU 0X40011800 ;GPIOE 地址 GPIOE_CRL EQU 0X40011800 ;低配置寄存器 GPIOE_CRH EQU 0X40011804 ;高配置寄存器 GPIOE_ODR EQU 0X4001180C ;输出,偏移地址0Ch GPIOE_BSRR EQU 0X40011810 ;低置位,高清除偏移地址10h GPIOE_BRR EQU 0X40011814 ;清除,偏移地址14h IOPEEN EQU BIT6 ;GPIOE使能位 IOPAEN EQU BIT2 ;GPIOA使能位 KEY EQU BIT8 ;按键在PA.8 GPIOA EQU 0X40010800 GPIOA_CRH EQU 0X40010804 ;高配置寄存器 GPIOA_IDR EQU 0X40010808 RCC_APB2ENR EQU 0X40021018 STACK_TOP EQU 0X20002000 AREA RESET,CODE,READONL Y DCD STACK_TOP ;MSP主堆栈指针 DCD START ;复位,PC初始值 ENTRY ;指示开始执行 START LDR R1,=RCC_APB2ENR LDR R0,[R1] ;读 LDR R2,=IOPEEN ORR R0,R2 ;改 LDR R2,=IOPAEN ORR R0,R2 ;改 STR R0,[R1] ;写,使能GPIOA,E时钟 ;PE[0..7] 8个引脚均设置成推挽式输出 LDR R0,=0x33333333 LDR R1,=GPIOE_CRL STR R0,[R1] ;PA.8--KEY 浮空输入 MOV R0,#0X04 LDR R1,=GPIOA_CRH

06 12864LCD显示计算器键盘按键实验

目录 1 课程设计概述和要求 (1) 1.1 课程设计要求与任务 (2) 1.2 课程设计思路 (2) 1.3 课程设计需要配置的环境 (3) 2 系统设计 (3) 2.1 设计框图 (3) 2.2 元件解析 (3) 2.2.1 LCD12864芯片……………………………………………………………4 2.2.2 AT89C51芯片 (5) 2.2.3 其他部件 (6) 2.2.4 电路分析 (7) 3 软件设计 (12) 3.1 程序流程图 (12) 3.2 程序代码 (12) 4 系统的仿真与调试 (13) 4.1 硬件调试 (13) 4.2 软件调试 (14) 4.3 软硬件调试 (14) 5 总结 (14) 附录1:程序代码 附录2:12864LCD显示计算器键盘按键实验Proteus仿真图

1 课程设计概述和要求 1.1 课程设计任务与要求 设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。 设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键 2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器 设计计算器键盘按键,系统主要包括硬件和软件两部分。重点就 是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统 硬件的设计,其中包括各模块的器件选择和电路设计。将计算器 按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显 示于12864LCD液晶显示屏上。 1.2 课程设计目的思路 1、先把与题目有关的芯片资料找到,熟悉一下芯片资料 2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。 1.3 课程设计需要配置的环境 1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料 2 系统设计 2.1.设计框图 框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。 12864LCD显示计算器键盘按键实验设计框图如下所示

实验三 P1口亮灯实验

实验三、P1口亮灯实验 一、实验目的: a)掌握keil及proteus的联合仿真方法 b)掌握并口的操作方法 c)掌握延时程序的编写 二、实验内容: P1口做输出口,接八只发光二极管(低电平时发光),P0口接七段数码管,编 写程序,使发光二极管循环点亮。请根据系统电路图,编写相应的程序并给予适 当的注释。 (一)实验要求: z基本要求: a)每个二极管每次点亮持续的时间约为一秒钟,假设使用的系统时钟频率为 12MHZ; b)其中时间控制可以利用延时程序实现,也可以利用定时器实现; c)正确连接电路,编写程序,调试运行,使发光二极管能够循环点亮; d)通过Proteus7软件观察实验结果。 z提高要求:能够通过按键控制彩灯循环的模式。 (二)实验基本步骤: 1.打开Keil,新建工程:Project/New Project,输入工程名,并保存 2.选项选择器件:Atmel 的89C51 3.新建程序文本,并另存为该文件为汇编文件格式: (1)“File/New”,(2) File/Save As/键入欲使用的文件名及后缀名,即“文件名.asm”。再单击“保存” 4.添加该文件该工程:回到编辑界面后,单击“Target 1”前面的“+”号,然后 在“Source Group 1”上单击右键,单击“Add File to Group ‘Source Group 1’” 选择刚才新建的汇编文件。 5.设置工程该的options选项:projec / options for project,(1)output 选项卡中Create HEX File 前打勾;(2)Debug 选项卡选择use“Proteus VSM simulator”。 6.用proteus的ISIS打开电路图P1.DSN 7.将proteus 里DEBUG /use remote debug monitor打勾 8.在keil的汇编文件中输入程序代码,并编译,调试。(1)写完代码后单击“Project” 菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成 功后(0个errors),(每次修改程序后都要重新编译下,才能生效)。(2)再单击 “Debug”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷 键Ctrl+F5),点击RUN进行运行。 9.观察运行结果:在proteus中点击运行按键,观测二极管是否循环点亮。 基本要求的参考代码 ORG 0000H MAIN LJMP

实验一 P1口亮灯实验

实验一P1口亮灯实验 一、实验目的 (1)熟悉编程和程序调试 (2)学习P1口的使用方法; (3)学习延时子程序的编写。 二、实验内容 P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 三、实验预备知识 (1)P1口为准双向口,可定义为输入,也可定义为输出。 (2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHZ)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 四、程序框图 五、实验步骤 实验步骤说明: 本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。 用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。 1.使用单片机实验箱,用扁平数据线将单片机P1口与LED灯相连。P1.0~P1.7用插针连至L1~L8。 2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。 3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,输入源程序(实验(一)),进行编译,直到编译无误。生成hex文件。 5.打开实验板总电源,将hex文件下载到实验板内,观察发光二极管显示情况。 参考例子: (1)点亮板子上的第一个灯LED1 (2)点亮板子上的LED1、LED3、LED5、LED7灯,与LED2、LED4、LED6、LED8灯交替

闪烁

(3)流水灯:从LED1---LED8依次点亮参考程序: 1) #include void main() { P1=0xfe; } 2) #include #define uint unsigned int #define uchar unsigned char void delay(); void main() { while(1) { P1=0xaa; delay(); P1=0x55; delay(); } } void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--) ; } 3) #include #include #define uint unsigned int #define uchar unsigned char uchar temp,num;

EDA技术按键控制LED实验

昆明理工大学信息工程与自动化学院学生实验报告 ( 201 —201 学年第学期) 课程名称:EDA技术开课实验室:年月日 一、实验目的 1、熟悉FPGA开发完整流程 2、熟悉管脚分配,熟悉编程 二、实验设备 1、带有quartusII 软件的PC 机一台。 2、 FPGA 实验箱以及电源线下载线。 三、实验要求 实现8 个SW 按键控制8 个led 灯亮灭。

四、实验原理 1、按键控制led 灯原理: 本实验是通过按键的电平控制led灯。其示意图如图 2.1。 图 2.1按键控制led 示意图 8 个SW 按键控制相对的8 个led 灯,当SW1 在上方,其余按键在下方时,此时SW1 为高电平,这时SW1 对应的led 被点亮。 2、模块符号: 图 2.2为按键控制led模块符号。 图 2.2 按键控制led 模块符号 3、源码: module key1(key,led); input[7:0] key; output[7:0] led; reg[7:0] led; always@(key) begin case(key) 8'b00000001:led<=8'b00000001; 8'b00000010:led<=8'b00000010; 8'b00000100:led<=8'b00000100; 8'b00001000:led<=8'b00001000; 8'b00010000:led<=8'b00010000; 8'b00100000:led<=8'b00100000; 8'b01000000:led<=8'b01000000; 8'b00000000:led<=8'b00000000; endcase end endmodule 五、实验步骤 1、打开quartusII 开发环境,建立工程、添加相应源文件(选目标芯片时,应采用EP2C35F672C8芯片)。 2、分配管脚 1)修改tcl 文件:

按键及显示实验

一、实验原理及电路 1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。, 2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。 实验电路图 二、功能说明 设计并实现一4×4键盘的接口,键盘与1602显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送1602显示,键盘采用4×4键盘。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个1602显示出来,当按下下一个按键时便将这个按键的编号1602上显示出来 实验框图

四、实验代码 #include #define uchar unsigned char #define uint unsigned int #define lcd_data P3 sbit lcd_EN=P2^2; sbit lcd_RW=P2^1; sbit lcd_RS=P2^0; uchar key,a; uchar sys_time1[]="good"; uchar sys_time2[]="morning!"; uchar sys_time3[]="play"; uchar sys_time4[]="basketball!"; uchar sys_time5[]="study"; uchar sys_time6[]="hard!"; unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xB7,0x77 }; void delayms(uint ms) { uchar t; while(ms--) { for(t=0;t<120;t++); } } void delay_20ms(void) { uchar i,temp; for(i = 20;i > 0;i--) { temp = 248; while(--temp); temp = 248; while(--temp); } } void delay_38us(void) { uchar temp;

实验六LED 控制实验

实验六LED 控制实验 一、实验目的 通过实验学习如何将一个驱动添加到Kconfig,编译到内核; 通过实验掌握在Linux 下驱动程序的编写方法。 二、实验设备 硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机; 软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。 三、实验内容 编写EduKit-IV 实验箱Linux 操作系统下LED 灯的应用程序。 编写 EduKit-IV 实验箱Linux 操作系统下LED 灯的驱动; 实验步骤: 下面介绍如何将一个驱动添加到内核中,并且在配置选项中能够通过menuconfig 配置内核时选择该驱动: 1)单击菜单应用程序->附件->终端打开终端,在终端中输入以下命令设置开发所需的环境变量。 $ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh $ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh 2)将实验目录$SIMPLEDIR/8.1-led_test/driver 下的eduk4-led.c 复制到目录内核目录$KERNELDIR/drivers/char 下。 3)修改$KERNELDIR/drivers/char 目录下的Kconfig 文件,在文件的末尾按照如下内容修改并保存: …. config MMTIMER tristate "MMTIMER Memory mapped RTC for SGI Altix" depends on IA64_GENERIC || IA64_SGI_SN2 default y help The mmtimer device allows direct userspace access to the Altix system timer. config EDUKIT4_LED tristate "Edukit4 Led" source "drivers/char/tpm/Kconfig" endmenu 这样当make menuconfig 时,将会出现Edukit4 Led 选项。

实验五(硬件实验二) 定时器控制P1口亮灯实验 (1)

实验五 定时器控制P1口亮灯实验 一、实验目的 1.熟悉MCS -51定时/计数器的初始化编程方法,掌握根据延时要求计算定时器初值的方法。 2.理解定时器溢出中断的概念,掌握中断服务程序的编程方法。 3. 学习并行口的使用方法。 二、实验项目 1. 根据要求在单片机实验箱上接线。 2. 使用上位机(PC )按要求编制实验程序。 3. 调试实验程序,观察输出结果。 三、实验设备与仪器 1.DVCC 或 Dais 实验箱 1台 2.PC 机 1台 四、实验原理 实验电路原理图如图4-1所示,通过编程使用8051内部的定时器T0计时,当时间到(定时/计数器溢出)时,往并行口P1送数据,点亮外部扩展的LED 小灯。程序流程图如图4-2所示。 图4-1 电路原理图 (a ) 共阳极接法 (b )共阴极接法

图 4-2 实验程序框图 五、注意事项 1.接线时必须关闭实验箱电源。 2.不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 3. Dais 实验箱(大箱)上的LED小灯是共阳极接法,当输出为低电平(逻辑0)时灯 被点亮;而DVCC实验箱(小箱)上的为共阴极接法,当输出为高电平(逻辑1)时点亮。 4. 如使用Dais实验箱,请先检查CPU选择开关是否在51档,与PC通讯速率开关设置 为多少。 5. 如使用DVCC实验箱,按“复位键”后再按下“PCDBG”方可实现与系统的连接。 6.实验箱上,只需把连线从P1口端接到LED小灯模块的接线口即可, 74LS244、电阻 等元件的接线已布在实验箱底板上。 六、实验说明及操作步骤

(LED灯控制实验)

1.实验名称:LED 灯控制实验 2.实验原理:程序通过配置CC2530 IO 寄存器的高低电平来控制LED 灯的状态,用循环语句来实现程序的不间断运行。ZigBee(CC2530)模块硬件上设计有2 个LED 灯,用来编程调试使用。分别连接CC2530 的P1_0、P1_1两个IO 引脚。 3.实验结果:LED1即P1_0输出低电平点亮,LED2即P2_0延时闪烁。 4.实验改进:使LED1和LED2交替闪烁。在LED2延时后改变LED1的状态。 5.代码: #include #define uint unsigned int= #define uchar unsigned char #define LED1 P1_0 #define LED2 P1_1 uint counter=0; uint TempFlag;

void Delay(uint n); void Initial(void); void Delay(uint n) { uint i,t; for(i=0;i<5;i++)= for(t=0;t0) { T1IF=0; TempFlag=!TempFlag; } if(TempFlag) { LED1=!LED1;

Delay(6000); LE D2=!LED2; Delay(60000); } } }

实验二 P1口输入、输出实验

在开始实验二之前,先在实验一(认真分析实验一的代码)的基础上实现如下花型(0表示灯亮,1表示灯灭): 花型之二:即每次亮灯两个进行移动 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 花型之三(跑马灯):1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

实验二P1口输入、输出实验 一.实验要求 1、P1口做输出口,接共阳七段显示器,编写程序,显示0到9中的任意一个数字。 2、P1口做输出口,接共阳七段显示器,编写程序,循环显示0到9(延时程序段可以使用实验一种的程序段)。 3、P1口做输入口,接四个开关,编写程序读取开关状态,将此状态在四个发光二极管上显示出来。 二.实验目的 1、学习P1口的使用方法。 2、学习延时子程序的编写和使用。 三.实验电路及连线(见附件) 四.实验说明 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS 管导通,读入的数据是不正确的。 2、延时子程序的延时计算问题(晶振频率为12MHz,请在实验报告中分析如何延时200ms 的)对于程序 DELAY: MOV R5,#20 ; 延时200ms D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET 五.实验程序(见附件)

实验七 单片机键盘LED显示实验

实验七单片机键盘LED显示实验 一、实验目的 1、掌握键盘和LED显示器的接口方法和编程方法。 2、掌握键盘扫描和LED八段码显示器的工作原理。 3、学习并口扩展的程序编写方法。 二、实验说明 利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。 实验程序可分成三个模块。 ①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。 三、实验仪器 计算机 伟福实验箱(lab2000P ) 四、实验内容 1、本实验仪提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如将KEY/LED CS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作LED的位选通信号。 2、本实验仪提供了6 位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。 3、本实验仪中8位段码输出地址为0X004H,位码输出地址为0X002H。此处X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H,位码地址为08002H。 五、思考题 1、按键接收到的数据加1显示出来; 2、实现第2功能键,即按下A后,再按下0-9键为加1显示; 3、保存前一个接收到的数据,数据向前推动显示。 六、源程序修改原理及其仿真结果 原程序: OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 键盘读入口 LEDBuf equ 60h ; 显示缓冲 ljmp Start

单片机实验报告——LED灯控制器

《微机实验》报告LED灯控制器 指导教师: 专业班级: 姓名: 学号: 联系方式:

一、任务要求 实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。 实验内容:利用C8051F310单片机设计一个LED灯控制器 主要功能和技术指标要求: 1. LED灯外接于P0.0端。 2. LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。 3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。 4. 利用单片机内部定时器定时,要求采用中断方式。 提高要求: 使用按键(KINT)控制LED灯闪烁模式的切换。 二、设计思路 C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,所以T1定时器采用定时方式1,单次定时最长可以达到的时间为 1.027s,可以满足0.5Hz是的定时要求。 基础部分: 给TMOD赋值10H,即选用T1定时器采用定时方式1,三种频率对应的半周期时间为0.25s、0.5s、1s。计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。 要使闪烁持续10s,三种模式需要各循环40、20、10次。 用LOOP3:MOV C,PSW.5 ;PSW.5为标志位,进定时器中断后置一 JNC LOOP3 代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。 为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数(用DJNZ语句实现);定时中断里,重新给TH1、TL1赋值时同理。 这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。 蜂鸣器也采用T1定时方式1,定时一秒。

51单片机实验-实验二 P1口输入、输出实验

实验二 P1口输入、输出实验 一、实验目的 学习Pl口的使用方法。 学习延时子程序的编写和使用。 进一步熟悉星研Star16L仿真器系统的操作,和EL-Ⅱ型通用接口板实验电路结构,学习使用PROTEUS仿真软件实现单片机的虚拟仿真。掌握虚拟仿真与实际系统仿真的有机衔接。 二、实验仪器和设备 PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。 三、实验内容 1)P1口做输出口,经过74LS04反相器接八只发光二极管,编写程序,使发光二极管循环点亮。 2)(选作)P1口既做输入又做输出,在P1.0~P1.3口接四个平推开关,通过开关的不同位置向P1.0~P1.3输入不同的状态,然后利用输入指令读取所设开关状态,为验证输入结果的正确与否,将它们输出到P1.4~P1.7,经过74LS04反相器驱动发光二极管。四、实验结果 1)循环点亮八只发光二极管。取P1.0口接出第一个二极管,以此类推,第八个接P1.7口。Proteus 仿真图 ①循环左移,即从第一个二极管开始点亮到第八个二极管 实验程序:

ORG 0000H START:MOV R2,#8 MOV A,#01H ;先让第一个发光二极管点亮 LOOP: MOV P1,A ;从P1口输出到发光二极管 LCALL DELAY RL A ;循环左移(从第一个发光二极管开始一直往下一个二极管)DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环 LJMP START ;循环发光 DELAY:MOV R5,#5 ;延时0.5秒子程序 DEL1: MOV R6,#200 DEL2: MOV R7,#126 DEL3: DJNZ R7,DEL3 DJNZ R6,DEL2 DJNZ R5,DEL1 RET END 仿真结果:发光二极管从D1开始发光,依次往下到D8,然后循环这一过程。 实验结果:发光二极管从第一个开始发光,依次往左到第八个,然后循环这一过程。 ②循环右移,即从第八个二极管开始放光,依次到第一个。 实验程序: ORG 0000H START:MOV R2,#8 MOV A,#80H ;先让第八个发光二极管点亮 LOOP: MOV P1,A ;从P1口输出到发光二极管 LCALL DELAY RR A ;循环右移(从第八个发光二极管开始一直往前一个二极管) DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环 LJMP START ;循环发光 DELAY:MOV R5,#5 ;延时0.5秒子程序 DEL1: MOV R6,#200 DEL2: MOV R7,#126 DEL3: DJNZ R7,DEL3 DJNZ R6,DEL2 DJNZ R5,DEL1 RET END 仿真结果:发光二极管从D8开始发光,依次往上到D1,然后循环这一过程。 实验结果:发光二极管从第八个开始发光,依次往右到第一个,然后循环这一过程。

相关文档
最新文档