微机原理与接口技术课程设计报告音乐流水灯
微机实验-流水灯8255
![微机实验-流水灯8255](https://img.taocdn.com/s3/m/55166129647d27284b735199.png)
电子信息工程系实验报告课程名称:微机原理与接口技术实验项目名称:8255并行接口流水灯实验 实验时间:2009.12班级: 姓名: 学号:一、实 验 目 的:(1)掌握8255的工作方式及应用编程。
(2)掌握8255的典型应用电路接法。
二、实 验 设备:PC 机一台,实验箱及外部线路一套。
三、实验内容:编写程序,使8255的A 口作为LED 灯的输出,实现8位数据灯的相对循环显示。
(思考:用B 口的一位作为输入,控制LED 灯的循环方向。
)四、实 验 原理:INTEL8255是一种通用的可编程并行I /O 接口芯片,是专为INTEL 公司的微处理器设计的,也可用于其它系列的微型机系统中。
利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。
8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。
可与外设并行进行数据交换。
A 口和B 口内具有中断控制逻辑,在外设与CPU 之间可用中断方式进行信息交换。
8255能与许多外部设备连接,例如:键盘、显示器、打印机等。
1、8255芯片特性(1)一个并行输入/输出的LSI 芯片,多功能的I/O 器件,可作为CPU 总线与外围的接口.(2)具有24个可编程设置的I/O 口,即使3组8位的I/O 口为PA 口,PB 口和PC 口.它们又可分为两组12位的I/O 口,A 组包括A 口及C 口(高4位,PC4~PC7),B 组包括B 口及C 口(低4位,PC0~PC3).A 组可设置为基本的I/O 口,闪控(STROBE)的I/O 闪控式,双向I/O3种模式。
2、8255引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU 进行通讯;/CS=1时,8255无法与CPU 做数据传输.RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU 发送数据或状态信息,即CPU 从8255读取信息或数据。
微机原理与接口技术控制流水灯
![微机原理与接口技术控制流水灯](https://img.taocdn.com/s3/m/ffae53e605a1b0717fd5360cba1aa81144318f0b.png)
微机原理与接口技术控制流水灯一、实验目的:掌握汇编语言设计和调试方法。
二、实验要求:利用8253、8255、8259三块芯片相接实现流水灯。
三、芯片介绍:1、intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz) 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GA TE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
2、8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。
微机原理与接口技术课程设计报告音乐流水灯
![微机原理与接口技术课程设计报告音乐流水灯](https://img.taocdn.com/s3/m/789d75e6ba0d4a7302763a86.png)
微机原理与接口技术课程设计论文题目:音乐流水灯姓名:鞠强学号:201330020228班级:1330202专业:自动化2015年6月一、实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。
要求:用8255、8253、8259配合8086使蜂鸣器发出唱歌声同时还能够使用数码管进行边跳舞边唱歌实验。
二、硬件连线键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。
74芯片的片选信号CS1接地址译码信号340H, CS2接地址译码信号360H。
蜂鸣器发声控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V, 8259的IRQ0连接到8253的OUT0。
三、程序流程图主程序初始化各阶段寄存器及相关变量初始化8253、8255芯片设置中断向量、开放8253中断屏蔽开放处理器中断中断服务程序保护现场判断时间是否不小于59分55秒报时扫描键盘G 键?调用启停子程序S COUNT COUNT=40? ADDONE 子程序COUNT 清0显示时间,调用显示时间子程序结束中断(发EOI 命令)恢复现场中断返回Y YN Y四、实验源代码DATA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?MIN DW ?SEC DW ?SLL DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0~F 的共阴极七段译码表00H表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1 EQU 340H ;数码管段选端口PORT2 EQU 360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOV CR0,EAXMOV AX,DATAMOV DS,AXMOV HOUR,0203H ;小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502HLEA BX,TABMOV SLL,0 ;开始暂停标志位置0MOV COUNT ,0 ;中断次数计数初始值为0;8255初始化,用于产生报时的脉冲MOV EAX,80808080H;控制字MOV DX,20CH ;后面的是4个8255的控制端口20C-20F (这个地址由实验台决定)OUT DX,EAX ;初始化8255,A、B、C口均为方式0输出MOV DX,20BHMOV AL,0FFHOUT DX,AL;8253初始化,用于产生周期为25ms的中断MOV AL,00110110B ;计数器0,先低后高,方式三,二进制MOV DX,32cH ;写往控制口OUT DX,ALMOV DX,320H ;计数器0写初值:47KHz*25msMOV AX,1175OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,0FEH ;IR0开屏蔽OUT DX,ALXOR AX,AX ;装载中断向量MOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:[DI],AXMOV AX,SEG INTSRMOV ES:[DI+2],AXSTI ;开中断JMP $INTSR PROC ;中断服务程序CMP MIN,0509H ;比较当前时间是否在59分55秒~00分00秒之间JL NEXT1CMP SEC,0505HJL NEXT1MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT3: MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT2: CMP COUNT,20 ;用8255产生0.5ms的蜂鸣JLE NEXT4MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT4:CMP SLL,0JZ LOBCALL TSTARTLOB: CALL KEYCHECK ;检测有无键按下CMP AL,0AH ;启停键按下,调用启停程序JNZ NEXT5CALL TSTARTJMP NEXT6NEXT5: CMP AL,0BH ;设置键按下,调用设置时间程序JNZ NEXT6CALL SETTIMEINTSR ENDPTSTART PROC ;控制时间暂停和开始。
微机原理课程设计 流水灯控制系统
![微机原理课程设计 流水灯控制系统](https://img.taocdn.com/s3/m/e2aaa043a58da0116d17491b.png)
微机原理课程设计流水灯控制系统姓名:XX学院:物理电气信息学院班级:2010电子姓名:12010245…流水灯控制系统一、设计内容:本课程设计选用8086对8255A的A口控制来实现模拟流水灯功能的实现。
编写相关程序,通过proteus仿真软件来实现我名字“安亮”两个字的闪烁,“安”字接8255的A口的P0,“亮”字接A口的P1。
先让“安”字和“亮”字同时点亮,再让两个字同时暗,接着让“安”字点亮,再让“亮”字点亮,然后让“安”字和“亮”字同时亮暗闪烁八次,再跳到开始,以此循环。
二、设计目的:1、了解流水灯的基本工作原理2、熟悉8255A并行接口的各种工作方式和应用3、利用8255A接口,LED发光二极管,设计一个流水灯模拟系统,让我的名字“安亮”两个字按一定规律点亮。
三、实验原理在8086系统中,采用16位数据总线,进行数据传输时,CPU总是将低8位数据线上的数据送往偶地址端口,而过高8位数据线上的数据送往奇地址端口反过来,从偶地址端口取得的数据总是通过低8位数据线传送到CPU,从奇地址端口取得的数据总是通过高8位数据线送到CPU。
在8086系统中,将8255A的A1端和地址总线的A29255A 在对CPU并且,相连,A1端和地址总线的A0的8255A而将相连,的端口进行访问时,将地址总线的A0位总是设置为0。
本课程设计通过对8255A的A口控制来实现模拟流水灯功能的实现。
“安”接A 口的P0,“亮”接A口的P1,实现两个字按一定规律的一个闪烁。
8255的内部结构255A内部结构由以下四部分组成:数据端口A、B、C;A组控制和B组控制;读/写控制逻辑电路;数据总线缓冲器。
端口A:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。
端口B:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入缓冲器,可作为数据输入或输出端口,但不能工作于方式2。
微机原理流水灯
![微机原理流水灯](https://img.taocdn.com/s3/m/119571b705a1b0717fd5360cba1aa81144318f92.png)
微机原理流水灯流水灯,又称为跑马灯,是一种常见的LED灯效。
它的灯光效果像水流一样流动,非常美观。
在微机原理中,流水灯的实现是一个很好的实践项目,可以帮助学生理解数字电路和微机原理的知识。
本文将介绍如何使用微机原理实现流水灯,并提供相应的代码和电路图供参考。
首先,我们需要准备以下材料:1. 8个LED灯。
2. 8个220Ω的电阻。
3. 一个面包板。
4. 杜邦线若干。
5. 一个Arduino开发板。
接下来,我们来看一下流水灯的原理。
流水灯的实现原理是通过依次点亮LED 灯,然后熄灭前一个LED,点亮下一个LED,以此类推,就形成了灯光像水流一样流动的效果。
在微机原理中,我们可以利用Arduino开发板来实现这一效果。
首先,我们需要将8个LED灯连接到Arduino开发板上。
将LED的长针(阳极)通过220Ω的电阻连接到Arduino的数字引脚2~9上,LED的短针(阴极)接地。
接下来,我们需要编写Arduino的程序来实现流水灯的效果。
以下是流水灯的Arduino代码:```c。
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};void setup() {。
for (int i = 0; i < 8; i++) {。
pinMode(ledPins[i], OUTPUT);}。
}。
void loop() {。
for (int i = 0; i < 8; i++) {。
digitalWrite(ledPins[i], HIGH);delay(100);digitalWrite(ledPins[i], LOW);}。
}。
```。
在这段代码中,我们首先定义了8个LED灯的引脚号,然后在setup函数中将这些引脚设置为输出模式。
在loop函数中,我们依次点亮每个LED灯,并通过delay函数控制灯光的流动速度。
接下来,我们将Arduino开发板连接到电脑上,上传这段代码到开发板中。
微机原理与接口技术课程设计音乐流水灯
![微机原理与接口技术课程设计音乐流水灯](https://img.taocdn.com/s3/m/6f70c4beda38376baf1fae87.png)
微机原理与接口技术课程设计音乐流水灯专业:自动化班级:1530202姓名:何名春学号:201530020226指导老师:胡文龙一、课程设计题目音乐流水灯二、设计目的和要求(1)、目的a、增强对8255和8253芯片的认识b、掌握8255和8253的工作方式及应用编程。
b、熟悉这类的硬件电路c、提高汇编编程的能力d、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法e、掌握实时处理程序的编制和调试方法。
(2)、要求(a)、利用芯片8255和8253实现8个发光LED流水形式,并且在灯依次亮是加上音调,即利用8255和8253实现音乐背景下8个LED 跑马灯功能。
(b)、利用8253经过驱动电路使发出至少4个音调,8255控制8个LED形成流水灯,(c)、用一个按键控制灯全灭和音调全停。
(d)、软件用循环灯和循环音调,使用移位和数组的方式,不能单独的编写一个灯亮一个灯灭的多个程序组合。
三、设计流程图否四、硬件电路8255与8253组合电路图五、原理分析8255:通过8255的PA口控制8个LED灯,以实现流水的形式,并用一个PB口控制一个开关,以实现闭合开关执行功能,断开开关就实现灯灭、音停。
8255的PC口控制8253的GATE口,以实现GATE=1,就开始计时,则发出音调,否则,则反之。
8253:在CLK输入一个时钟信号,通过8MHZ经过393以输入时钟信号,再输出信号OUT输出给功放电路,驱动扬声器,以达到发出音乐六、软件分析通过对8255和8253的控制字,以让8255的PA输入,PB输出,PC输出,8253选择计数器1,根据硬件的连接,再定义控制字总程序DATA SEGMENTDATA ENDSCODE SEGMENT PUBLIC 'CODE'ASSUME CS:CODEmy_8253_0 equ 400hmy_8253_1 equ 402hmy_8253_2 equ 404hmy_8253_com equ 406hmy_8255_a equ 200hmy_8255_b equ 202hmy_8255_c equ 204hmy_8255_com equ 206hy dw 080h,096h,0aeh,0c5h,0d8h,0e9h,0f5h,0FFH,099H,0c5H,0 aehm dw 3816d,3610d,3413d,3215d,3039d,2865d,2703d,2551d,240 9dSTART:; Write your code hereagain: mov al,90Hmov dx,206hout dx,almov dx,200hin al,dxTEST al,03hjz disp_3test al,01hjz disp_1test al,02hjz disp_2test al,00hjz judgejmp againdisp_1:xor ax,axmov bl,101B mov si,0dxxx:mov dx,406hmov al,36hout dx,almov dx,400hmov ax,y[si]out dx,almov al,ahout dx,alrol bl,1mov al,blmov dx,202hout dx,almov cx,00fffh loop $jmp judgeyyy: inc sijl xxxloop disp_1 disp_2:xor ax,axmov bl,01B mov si,0d sss:mov dx,406hmov al,76hout dx,almov dx,402hmov ax,m[si]out dx,almov al,ahout dx,alror bl,1mov dx,202h out dx,almov cx,0108Bh loop $jmp judge zzz: inc sicmp si,18jl ssstest al,01hjz againloop disp_2disp_3:mov dx,406h mov al,76hout dx,almov ax,01hout dx,almov al,ahout dx,almov dx,406hmov al,36hout dx,almov dx,400hmov ax,01hout dx,almov al,ahout dx,almov al,11111111b mov dx,202hout dx,aljmp againjudge:mov al,90Hmov dx,206h out dx,almov dx,200h in al,dxtest al,03h jz disp_3test al,01h jz yyytest al,02h jz zzztest al,00h mov dx,406hmov al,36hout dx,almov dx,400hmov ax,1out dx,almov al,ahout dx,almov dx,406hmov al,76hout dx,almov dx,402hmov ax,1out dx,almov al,ahout dx,al jz again jmp judgeENDLESS:JMP ENDLESSCODE ENDSEND START七、心得体会早在上课的时候老师就说了课程设计,开始以为时间还早,并没有提前去构思,等到要做课程设计的时候,发现自己并不知道该怎么做,然后就回顾了一下以往做的实验,再自己通过看书上的例子,和网上的例子,先一个一个单独实现,开始先单独把流水灯做了出来,然后再把声音做出来,两个虽然都单独做出来了,但是存在很多问题,开始时,灯只要仿真就全亮,并没有实现流水功能,之后进行了调试与程序的修改,最后实现了流水灯。
《微机系统与接口技术》8255流水灯实验报告
![《微机系统与接口技术》8255流水灯实验报告](https://img.taocdn.com/s3/m/4e564414f90f76c660371a6e.png)
《微机系统与接口技术》预习报告学院:计算机学院专业:网络工程班级学号:学生姓名:小发实验日期:指导老师:成绩评定:五邑大学计算机学院制表一,实验目的1,学习并掌握8255 的工作方式及其应用。
2,掌握 8255 典型应用电路的接法。
3,掌握程序固化及脱机运行程序的方法。
二,实验设备PC机器一台,TD-PITE实验装置或TD-PITC实验装置一套三,实验内容1,基本输入输出实验。
编写程序,使 8255 的 A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2,流水灯显示实验。
编写程序,使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
四实验内容及步骤1. 基本输入输出实验本实验使 8255 端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出口。
实验接线图如图 6 所示,按图连接实验线路图。
用一组开关信号接入端口 A,端口 B 输出线接至一组数据灯上,然后通过对 8255 芯片编程来实现输入输出功能。
具体步骤如下述:(1)实验接线图如图 1-4所示,按图连接实验线路图。
(2)编写实验程序,经编译、连接无误后装入系统。
(3)运行程序,改变拨动开关,同时观察 LED 显示,验证程序功能。
(4)点击“调试”下拉菜单中的“固化程序”项,将程序固化到系统存储器中。
(5)将短路跳线 JDBG 的短路块短接到 RUN 端,然后按复位按键,观察程序是否正常运行;关闭实验箱电源,稍等后再次打开电源,看固化的程序是否运行,验证程序功能。
(6)实验完毕后,请将短路跳线 JDBG 的短路块短接到 DBG 端。
图1-4 8255基本输入输出实验接线图实验程序清单(A82551.ASM)SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 90HOUT DX, ALAA1: MOV DX, 0640HIN AL, DXCALL DELAYMOV DX, 0642HOUT DX, ALJMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2:PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START流水灯显示实验:使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
左右来回循环的流水灯实验报告
![左右来回循环的流水灯实验报告](https://img.taocdn.com/s3/m/96ceb92a1711cc7930b7162e.png)
青 岛 科 技 大 学微机原理与接口技术综合课程设计(报告)题 目 __________________________________指导教师__________________________ 学生姓名__________________________ 学生学号_________________________________________________________院(部)____________________________专业________________班______年 ___月 ___日直流电机控制综合实验 周艳平宋雪英 01 信息科学技术学院计算机科学与技术0961 2012 12 27摘要 (2)1、单片机概述 (2)2、仿真软件介绍 (2)3、需求分析 (3)一、课程设计目的 (3)二、课程设计要求 (4)三、实验内容 (4)1、设计任务与要求 (4)2、系统分析 (4)1).硬件电路设计(画出原理图、接线图) (5)2)软件框图 (7)3、用keil建项目流程 (8)4、程序清单 (9)4、系统调试 (11)四、设计总结(结论) (12)摘要近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。
而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。
能够通过按键控制8个LED小灯从左到右依次点亮。
关键字:单片机、LED流水灯1、单片机概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
微机原理流水灯
![微机原理流水灯](https://img.taocdn.com/s3/m/e99f13785b8102d276a20029bd64783e08127d14.png)
微机原理流水灯流水灯是一种常见的电子产品,它可以通过不同的灯光组合展示出各种图案和文字。
在微机原理中,流水灯也是一个经典的实验项目,通过学习和掌握流水灯的原理和实现方法,可以帮助我们更好地理解微机原理的相关知识。
首先,我们需要了解流水灯的工作原理。
流水灯通常由多个LED灯组成,这些LED灯按照一定的顺序依次亮起,然后熄灭,再依次亮起,如此循环往复。
这种效果可以通过微机原理中的计时器和计数器来实现。
计时器用来控制LED灯的亮起时间,而计数器则用来控制LED灯的顺序。
通过合理地设计计时器和计数器的工作模式,我们就可以实现流水灯的效果。
接下来,我们来介绍一种常见的流水灯实现方法。
首先,我们需要准备一块开发板,例如51单片机开发板。
然后,我们需要连接数个LED灯到开发板的GPIO口上,并且通过电阻限流,以防止LED 灯烧坏。
接着,我们需要编写相应的程序,通过控制计时器和计数器的工作模式,来实现LED灯的流水灯效果。
最后,将程序下载到开发板上,即可看到LED灯按照预定的顺序依次亮起和熄灭,实现流水灯的效果。
除了这种基于单片机的实现方法,我们还可以利用FPGA来实现流水灯。
FPGA是一种可编程逻辑器件,可以根据我们的设计需求来实现各种逻辑功能。
通过使用FPGA,我们可以更加灵活地设计流水灯的工作模式,实现更加丰富多彩的流水灯效果。
当然,相比于基于单片机的实现方法,利用FPGA来实现流水灯可能需要更多的硬件资源和编程知识,但是它可以实现更加复杂和高级的流水灯效果。
总的来说,微机原理中的流水灯实验项目不仅可以帮助我们更好地理解计时器和计数器的工作原理,还可以培养我们的动手能力和创造力。
通过不断地实践和探索,我们可以设计出各种各样的流水灯效果,甚至可以将其应用到实际的电子产品中。
希望大家在学习微机原理的过程中能够加深对流水灯的理解,同时也能够在实践中不断提升自己的能力。
最后,希望大家能够在微机原理的学习中取得更大的进步,为将来的发展打下坚实的基础。
流水灯微机原理课程设计
![流水灯微机原理课程设计](https://img.taocdn.com/s3/m/fad88f98d4bbfd0a79563c1ec5da50e2524dd128.png)
流水灯微机原理课程设计一、课程目标知识目标:1. 学生能理解流水灯微机的基本原理,掌握其硬件组成和软件编程方法。
2. 学生能描述流水灯微机的工作过程,了解不同模式下的电路特性。
3. 学生掌握相关电子元件的功能和连接方式,能够正确搭建简单的流水灯微机系统。
技能目标:1. 学生能够运用所学知识,独立设计并实现简单的流水灯微机程序。
2. 学生能够运用调试工具,对流水灯微机程序进行调试和优化,提高程序执行效率。
3. 学生能够通过团队协作,共同完成流水灯微机的设计与搭建,提高沟通与协作能力。
情感态度价值观目标:1. 学生通过学习流水灯微机原理,培养对计算机硬件和编程的兴趣,提高学习积极性。
2. 学生在实践操作过程中,养成动手能力,培养解决问题的自信心和耐心。
3. 学生通过团队协作,培养合作精神,认识到团队协作的重要性,增强团队荣誉感。
课程性质:本课程为实践性较强的课程,注重理论知识与实际操作相结合,培养学生的动手能力和创新能力。
学生特点:本课程面向高年级学生,学生在前期课程中已具备一定的电子技术和编程基础,具备一定的自学能力和团队协作能力。
教学要求:教师应关注学生的个体差异,因材施教,引导学生主动探究,注重培养学生的实践能力和综合素质。
同时,注重教学评价,及时反馈学生的学习成果,指导学生调整学习方法,提高学习效果。
二、教学内容1. 理论部分:(1)流水灯微机原理概述:介绍流水灯微机的基本概念、工作原理及应用场景。
(2)硬件组成:讲解流水灯微机的核心元件,如微控制器、时钟、存储器、输入输出接口等。
(3)软件编程:介绍流水灯微机的编程语言和编程方法,如汇编语言、C语言等。
2. 实践部分:(1)电子元件认知:学习并识别常用的电子元件,如电阻、电容、二极管、三极管等。
(2)电路搭建:学习并搭建简单的流水灯微机电路,掌握电路连接方法和调试技巧。
(3)程序设计:运用所学编程语言,设计并实现流水灯微机程序,实现不同的流水灯效果。
音乐流水灯实验报告(3篇)
![音乐流水灯实验报告(3篇)](https://img.taocdn.com/s3/m/7a743409571252d380eb6294dd88d0d232d43c50.png)
一、实验背景随着科技的不断发展,LED灯的应用越来越广泛。
LED流水灯作为一种新型照明设备,具有节能、环保、美观等特点。
为了进一步丰富LED灯的应用,本实验旨在设计一款音乐流水灯,使LED灯的亮度、颜色和闪烁模式随音乐节奏变化,达到一种动态、立体的视觉效果。
二、实验目的1. 了解音乐流水灯的工作原理和设计方法。
2. 掌握音乐流水灯电路的搭建和调试方法。
3. 熟悉音乐信号处理技术,实现音乐与LED流水灯的同步。
三、实验原理音乐流水灯的原理是利用音乐信号处理技术,将音乐信号转换为控制LED灯的亮度、颜色和闪烁模式的信号。
具体步骤如下:1. 将音乐信号输入到音乐处理器中。
2. 音乐处理器对音乐信号进行采样、滤波、放大等处理,提取出音乐信号的频率、振幅等特征。
3. 根据音乐信号的频率和振幅,控制LED灯的亮度、颜色和闪烁模式。
四、实验器材1. Arduino UNO开发板2. LED灯珠(数量根据实际需求而定)3. 电阻(阻值根据LED灯珠的额定电流而定)4. 面包板5. 音频信号发生器6. 万用表7. 烧录器五、实验步骤1. 搭建音乐流水灯电路:将Arduino UNO开发板、LED灯珠、电阻、面包板等元件连接在一起,形成音乐流水灯电路。
2. 编写程序:使用Arduino IDE编写程序,实现音乐信号处理和LED灯控制功能。
3. 烧录程序:将编写好的程序烧录到Arduino UNO开发板中。
4. 连接音频信号发生器:将音频信号发生器的输出端连接到Arduino UNO开发板的A0引脚。
5. 连接耳机:将耳机连接到Arduino UNO开发板的3.5mm音频接口。
6. 调试电路:检查电路连接是否正确,确保电路工作正常。
7. 播放音乐:播放音乐,观察LED灯的亮度、颜色和闪烁模式是否随音乐节奏变化。
六、实验结果与分析1. 实验结果:通过实验,成功实现了音乐流水灯的功能。
当播放音乐时,LED灯的亮度、颜色和闪烁模式会随音乐节奏变化,达到一种动态、立体的视觉效果。
微机原理与接口技术课程设计流水灯
![微机原理与接口技术课程设计流水灯](https://img.taocdn.com/s3/m/67704abcdbef5ef7ba0d4a7302768e9951e76ee3.png)
微机原理与接口技术课程设计流水灯1. 设计目标设计一个基于51单片机的流水灯系统,能够实现多种不同的流水灯效果,并且可以通过按键进行切换和控制。
2. 硬件设计(1)51单片机使用STC89C52系列单片机作为主控芯片,具有较高的性价比和稳定性。
(2)LED灯使用8个LED灯作为流水灯的显示元件,需要连接到P0口的8个引脚上。
(3)按键使用一个按键作为流水灯效果的切换和控制,需要连接到P3.2口。
(4)电源使用5V直流电源供电,需要连接到单片机的VCC和GND引脚上。
3. 软件设计(1)IO口初始化首先需要将P0口的8个引脚设置为输出模式,P3.2口的引脚设置为输入模式。
(2)流水灯效果实现流水灯效果可以通过循环移位的方式实现,具体代码如下:```cvoid flow_light(){unsigned char i, j;for (i = 0; i < 8; i++){for (j = 0; j < 8; j++){P0 = ~(1 << j);delay_ms(50);}P0 = 0xff;}}```其中,P0 = ~(1 << j)表示将P0口的第j个引脚设置为低电平,其他引脚设置为高电平,从而实现LED灯的亮灭。
(3)按键控制通过检测P3.2口的引脚状态,可以实现按键的控制,具体代码如下:```cvoid key_control(){if (P3 & 0x04){delay_ms(10);if (P3 & 0x04){mode++;if (mode >= 3){mode = 0;}}}}```其中,P3 & 0x04表示检测P3.2口的引脚状态,如果为高电平,则表示按键未按下;delay_ms(10)表示延迟10ms,以避免按键抖动;mode表示当前的流水灯效果模式,通过按键控制其值的变化。
(4)主函数代码主函数代码如下:```cvoid main(){while (1){switch (mode){case 0:flow_light();break;case 1://其他流水灯效果break;case 2://其他流水灯效果break;}key_control();}}```其中,switch (mode)表示根据当前的流水灯效果模式执行不同的函数;key_control()表示检测按键状态并进行相应的控制。
微机原理与单片机接口技术实验报告
![微机原理与单片机接口技术实验报告](https://img.taocdn.com/s3/m/3f02776d31b765ce05081422.png)
}}
Led1=0x00;
Led2=0x00;
delay(65530);
delay(65530);
Led1=0xff;
//闪
Led2=0xff;
delay(65530);
delay(65530);
} } */
//定时器初始化子程序
void Init_Timer0(void)
四、系统软件设计 #include<reg51.h> #define L1 P2 #define L2 P3 bit UpdateTimeFlag; //定义读时间标志 void Init_Timer0(void);//定时器初始化
sbit h1=P3^6; sbit key=P0^5; unsigned char code Led_1[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f,0xff} ; void delay(unsigned int t); void Key(); void shun(); void ni(); void delay_shun(); void delay_ni(); void delay(unsigned int t) { while(t--); } void delay_shun(unsigned int t) { while(t--);{ h1=0; key=1; if(key==0)
delay(65530);
}L2=0xff; }
if(UpdateTimeFlag==1) {UpdateTimeFlag=0;}
}
//定时器初始化子程序 void Init_Timer0(void)
微机原理音乐喷泉课程设计
![微机原理音乐喷泉课程设计](https://img.taocdn.com/s3/m/b67009b65ff7ba0d4a7302768e9951e79a89696c.png)
微机原理音乐喷泉课程设计一、课程目标知识目标:1. 学生能理解微机原理在音乐喷泉控制中的应用,掌握基础电子电路和微控制器的工作原理。
2. 学生能掌握音乐喷泉程序设计的基本步骤,了解编程语言在微机控制系统中的应用。
3. 学生能描述音乐喷泉中水流控制、灯光变换与音乐同步的基本方法。
技能目标:1. 学生能够运用微机原理设计简单的音乐喷泉控制系统,实现基础的音乐与水流同步效果。
2. 学生能够通过编程实现灯光的自动控制,并与音乐节奏相匹配。
3. 学生能够独立或协作完成音乐喷泉项目的设计、搭建与调试,解决过程中遇到的技术问题。
情感态度价值观目标:1. 学生通过实践活动,培养对微机原理及电子控制技术的兴趣,增强创新意识和实践能力。
2. 学生在团队协作中学会沟通、分享与尊重,培养合作精神和集体荣誉感。
3. 学生能够关注科技与社会生活的关系,认识到学习微机原理对于未来发展的重要性,形成积极的学习态度。
二、教学内容本课程依据课程目标,结合教材内容,主要包括以下方面:1. 微机原理基础知识:讲解微控制器的基础结构、工作原理,重点介绍AT89C51微控制器及其编程方法。
2. 电子电路设计:介绍常用电子元件的功能和电路原理,分析音乐喷泉控制电路的构成,包括电源、驱动、传感器等部分。
3. 音乐喷泉控制系统设计:讲解音乐喷泉的设计原理,分析如何实现水流、灯光与音乐的同步控制。
4. 编程与控制:结合教材实例,教授如何使用C语言编写音乐喷泉控制程序,实现灯光、水流与音乐的实时同步。
5. 项目实践:安排学生进行小组合作,设计并搭建一个简易的音乐喷泉控制系统,涵盖电路设计、程序编写、调试与优化等环节。
教学内容安排与进度:1. 微机原理基础知识(1课时)2. 电子电路设计(1课时)3. 音乐喷泉控制系统设计(1课时)4. 编程与控制(2课时)5. 项目实践(3课时)教材章节及内容:1. 微控制器原理与应用(第一章)2. 常用电子元件及电路(第二章)3. 微控制器编程基础(第三章)4. 实例分析:音乐喷泉控制系统(第四章)5. 项目实践与拓展(第五章)三、教学方法本课程将采用以下多样化的教学方法,以充分激发学生的学习兴趣和主动性,提高教学效果:1. 讲授法:通过系统讲解微机原理、电子电路设计、编程与控制等理论知识,为学生奠定扎实的理论基础。
流水灯实验报告
![流水灯实验报告](https://img.taocdn.com/s3/m/f66156a8cfc789eb172dc8e1.png)
《微处理器与接口技术课程设计》报告——流水灯的设计专业:电气工程及其自动化班级:电气1221姓名:章健娅学号:12301171292015年7月14日1.课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2.课程设计要求2.1 不得无故缺课。
2.2 独立完成规定的设计任务。
2.3 完成所有实验资料。
3.硬件设计3.1 设计思想利用51单片机的基本原理来实现设计流水灯。
通过左移右移实现灯来回循环,通过延时让流水灯的闪烁更加显著。
3.2主要元器件介绍杜邦线,51开发板3.3 功能电路介绍用杜邦线连接LED灯和P1口,运用低电平使共阳极LED灯亮的原理,从而根据题目要求来实现灯亮。
4.软件设计4.1 设计思想(1)从左到右一盏一盏显示,共显示两遍;(2)从右到左一盏一盏显示,共显示两遍;(3)从左至右1,3,5,7,然后2,4,6,8;(4)从右至左1,3,5,7,然后2,4,6,8;(5)从左至右1,2(两盏同时,下同)—>3,4—>5,6—>7,8两遍;(6)从右至左1,2(两盏同时,下同)—>3,4—>5,6—>7,8两遍;重复(1),(2),(3),(4),(5),(6)4.2软件流程图4.3 源程序ORG 00HSTART:MOV A,#0FFH ;赋初值CLR CMOV R2,#17LOOP1:RRC A ;带进位左移MOV P1,ALCALL DELAY1DJNZ R2,LOOP1MOV R2,#16LOOP2:RLC A ;带进位右移MOV P1,ALCALL DELAY1DJNZ R2,LOOP2MOV R2,#5LOOP3:RRC AMOV P1,ALCALL DELAY1 DJNZ R2,LOOP3 MOV A,#0FFH CLR CMOV R2,#4 LOOP4:RRC ARRC AMOV P1,ALCALL DELAY1 DJNZ R2,LOOP4 MOV R2,#3 LOOP5:RLC ARLC AMOV P1,ALCALL DELAY1 DJNZ R2,LOOP5 MOV A,#0FFH CLR CMOV R2,#4 LOOP6:RLC ARLC AMOV P1,ALCALL DELAY1 DJNZ R2,LOOP6 MOV R1,#2L1: MOV A,#0FEH CLR CLOOP7:RRC ARRC AMOV P1,ALCALL DELAY1DJNZ R2,LOOP7DJNZ R1,L1MOV R1,#2L2: MOV A,#7FHCLR CMOV R2,#4LOOP8:RLC ARLC AMOV P1,ALCALL DELAY1DJNZ R2,LOOP8DJNZ R1,L2SJMP STARTDELAY1:MOV R3,#20 ;延时0.2秒D1: MOV R4,#20D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND5.调试运行5.1 调试成功6.设计心得体会本次实验是流水灯的设计,主要是要运用单片机的原理进行流水灯的闪烁。
微机原理与接口技术实验2报告
![微机原理与接口技术实验2报告](https://img.taocdn.com/s3/m/ecee291955270722192ef7ff.png)
微机原理与接口技术实验报告实验二实验名称:试验箱软件环境搭建实验实验内容:流水灯显示实验:首先分别向A口和B口写入80H和01H,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。
参考实验程序流程如图所示:实验步骤:(1)实验接线图如图6所示,按图连接实验线路图。
(2)运行Tdpit集成操作软件,根据实验内容,编写实验程序,编译、链接。
(3)运行程序,观察LED灯的显示,验证程序功能。
(4)自己改变流水灯的方式,编写程序。
实验代码:代码一:;T8255-2.asm;8255流水灯显示实验IOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDA TA SEGMENTLA DB ? ;定义数据变量LB DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODE ;定义8255工作方式MOV AL,80H ;工作方式0,A口和B口为输出OUT DX,ALMOV DX,MY8255_A ;写A口发出的起始数据MOV AL,80HOUT DX,ALMOV LA,ALMOV DX,MY8255_B ;写B口发出的起始数据MOV AL,01HOUT DX,ALMOV LB,ALLOOP1: CALL DALL YMOV AL,LA ;将A口起始数据右移再写入A口ROR AL,1MOV LA,ALMOV DX,MY8255_AOUT DX,ALMOV AL,LB ;将B口起始数据左移再写入B口ROL AL,1MOV LB,ALMOV DX,MY8255_BOUT DX,ALMOV AH,1 ;判断是否有按键按下INT 16HJZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出INT 21HDALL Y PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START运行结果:流水灯从两边往中间依次闪烁。
微机原理流水灯
![微机原理流水灯](https://img.taocdn.com/s3/m/74c836b84793daef5ef7ba0d4a7302768e996fff.png)
微机原理流水灯微机原理流水灯是一种常见的电子电路实验项目,通过使用微机原理的知识和流水灯的原理,可以实现一个简单而又有趣的电子电路。
在这个实验项目中,我们将使用集成电路、LED灯和电阻等元件,通过逻辑门的组合和时序控制,实现LED灯的流水效果。
本文将详细介绍微机原理流水灯的原理、电路图、元件选型、电路搭建和实验步骤等内容,希望能帮助大家更好地理解和掌握这一实验项目。
一、原理介绍。
流水灯是一种LED灯的控制方式,通过逐个点亮LED灯,然后依次熄灭,再点亮下一个LED灯,如此循环往复,就形成了LED灯的流水效果。
在微机原理流水灯中,我们将通过逻辑门的组合和时序控制,实现LED灯的流水效果。
具体原理如下:1. 逻辑门的组合,我们将使用多个逻辑门,如与门、或门、非门等,通过它们的组合,实现LED灯的控制和时序逻辑。
2. 时序控制,通过时序控制电路,我们可以控制LED灯的点亮和熄灭的时间,从而实现LED灯的流水效果。
二、电路图。
接下来,我们将介绍微机原理流水灯的电路图,如下图所示:(这里插入电路图)。
三、元件选型。
在搭建微机原理流水灯的电路时,我们需要选择合适的元件,包括集成电路、LED灯、电阻等。
具体的元件选型如下:1. 集成电路,我们将使用74LS164或74HC595等移位寄存器芯片,用于控制LED灯的流水效果。
2. LED灯,选择适合的颜色和亮度的LED灯,用于实现流水灯的效果。
3. 电阻,根据LED灯的参数,选择合适的电阻,限流保护LED 灯。
四、电路搭建。
在进行微机原理流水灯实验之前,我们需要先进行电路搭建。
具体的电路搭建步骤如下:1. 将选好的元件按照电路图连接好,注意元件之间的引脚连接和电路的布局。
2. 检查电路连接是否正确,确保没有接错线或短路等问题。
3. 给电路供电,观察LED灯的流水效果是否符合预期。
五、实验步骤。
最后,我们将介绍微机原理流水灯的实验步骤,帮助大家更好地进行实验:1. 按照电路图和元件选型,搭建好微机原理流水灯的电路。
《微机系统与接口技术》8255流水灯实验报告
![《微机系统与接口技术》8255流水灯实验报告](https://img.taocdn.com/s3/m/98831243f56527d3240c844769eae009581ba2f7.png)
微机系统与接口技术:8255流水灯实验报告实验目的本次实验的目的是加深对8255芯片的理解,掌握8255口的输入、输出和中断原理,在此基础上,实现8255流水灯的控制。
实验原理8255芯片8255是一个可编程的并行输入 / 输出设备,拥有三个可编程I / O端口(Port A,Port B和Port C)。
篮牙分别对应着六个可用的I / O线路。
8255芯片可通过编程来设置8255设备的I / O方式,实现不同的应用。
8255芯片也支持中断请求(IRQ)和中断响应(IRQACK)。
流水灯流水灯是一种LED应用,即多个LED依次熄灭和点亮,形成一个具有动态效果同的图形。
在此次实验中,我们将通过8255口控制流水灯的状态,从而实现LED的流动效果。
实验步骤硬件实现本实验用到的硬件包括:8255芯片、LED灯、电路图板、电缆和电源。
在构建电路时,请按照以下步骤操作:1.首先,将8255芯片插入电路图板上的8255插槽中。
注意芯片的方向应该正确,否则芯片可能会被损坏。
2.将三个分别对应Port A, Port B和Port C的引脚与相应的电路元件进行连接。
在此,我们需要连接6个灯泡和6个电阻,其中每个电阻都应与一个电源连接。
3.最后,将电源输入并连接到电路图板,并打开电源。
软件实现为了控制流水灯的状态,我们将使用汇编程序编写代码,在8255口上进行读/写操作。
具体步骤如下:1.设置8255口的方式。
在此处,我们需要将8255口设置为模式0,即所有口都是单向的,其中Port A和Port B都是输出口,Port C则是输入口。
2.将Port A设为11111111。
这将设置第一个LED灯亮起。
3.然后,依次将Port A的状态更改为10111111,10011111,10001111等,以便LED灯以递减的顺序熄灭。
4.最后,在将Port A的状态设置为00000000之后,程序跳转到开始执行第二个LED的流动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术课程设计论文题目:音乐流水灯姓名:鞠强学号:201330020228班级:1330202专业:自动化2015年6月一、实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。
要求:用8255、8253、8259配合8086使蜂鸣器发出唱歌声同时还能够使用数码管进行边跳舞边唱歌实验。
二、硬件连线键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。
74芯片的片选信号CS1接地址译码信号340H, CS2接地址译码信号360H。
蜂鸣器发声控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V, 8259的IRQ0连接到8253的OUT0。
三、程序流程图主程序初始化各阶段寄存器及相关变量初始化8253、8255芯片设置中断向量、开放8253中断屏蔽开放处理器中断中断服务程序保护现场判断时间是否不小于59分55秒报时扫描键盘G 键?调用启停子程序S COUNT COUNT=40? ADDONE 子程序COUNT 清0显示时间,调用显示时间子程序结束中断(发EOI 命令)恢复现场中断返回Y YN Y四、实验源代码DATA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?MIN DW ?SEC DW ?SLL DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0~F 的共阴极七段译码表00H表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1 EQU 340H ;数码管段选端口PORT2 EQU 360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOV CR0,EAXMOV AX,DATAMOV DS,AXMOV HOUR,0203H ;小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502HLEA BX,TABMOV SLL,0 ;开始暂停标志位置0MOV COUNT ,0 ;中断次数计数初始值为0;8255初始化,用于产生报时的脉冲MOV EAX,80808080H;控制字MOV DX,20CH ;后面的是4个8255的控制端口20C-20F (这个地址由实验台决定)OUT DX,EAX ;初始化8255,A、B、C口均为方式0输出MOV DX,20BHMOV AL,0FFHOUT DX,AL;8253初始化,用于产生周期为25ms的中断MOV AL,00110110B ;计数器0,先低后高,方式三,二进制MOV DX,32cH ;写往控制口OUT DX,ALMOV DX,320H ;计数器0写初值:47KHz*25msMOV AX,1175OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,0FEH ;IR0开屏蔽OUT DX,ALXOR AX,AX ;装载中断向量MOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:[DI],AXMOV AX,SEG INTSRMOV ES:[DI+2],AXSTI ;开中断JMP $INTSR PROC ;中断服务程序CMP MIN,0509H ;比较当前时间是否在59分55秒~00分00秒之间JL NEXT1CMP SEC,0505HJL NEXT1MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT3: MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT2: CMP COUNT,20 ;用8255产生0.5ms的蜂鸣JLE NEXT4MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT4:CMP SLL,0JZ LOBCALL TSTARTLOB: CALL KEYCHECK ;检测有无键按下CMP AL,0AH ;启停键按下,调用启停程序JNZ NEXT5CALL TSTARTJMP NEXT6NEXT5: CMP AL,0BH ;设置键按下,调用设置时间程序JNZ NEXT6CALL SETTIMEINTSR ENDPTSTART PROC ;控制时间暂停和开始。
CMP SLL,0JNZ R1DEC SLLR1: CALL KEYCHECKCMP AL,0AHJZ R2CALL SHOWJMP R1R2 : INC SLLRETTSTART ENDPADDONE PROC ;加1秒子程序MOV AX,SEC ;当前秒个位为9,加1后变0,十位加1CMP AL,9JE N1INC ALMOV SEC,AXJMP N6N1: INC AHMOV AL,0CMP AH,6 ;十位加1后为6,则秒变为00,分钟个位加1JE N2MOV SEC,AXJMP N6N2: MOV AX,0MOV SEC,AXMOV AX,MIN ; 当前分钟个位为9,加1后变0,十位加1CMP AL,9JE N3INC ALMOV MIN,AXJMP N6ADDONE ENDPSETTIME PROC ;设置时间子程序LEA BX,TABMOV HOUR,0MOV MIN,0MOV SEC,0NOPNOPL1: CALL KEYCHECK ;调用KEYCHECK,无键按下时,AL中值为0CH CALL DELAYCMP AL,0CHJNZ L2JMP L1L2: CMP AL,02HJG L1 ;设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CHMOV AH,ALMOV BYTE PTR[HOUR+1],ALMOV BYTE PTR[HOUR],0CHMOV MIN,0C0CHMOV SEC,0C0CHL3: CALL SHOWCALL KEYCHECK ;设置小时的个位CALL DELAYCMP AL,0CHJZ L3MOV AH,BYTE PTR[HOUR+1]SETTIME ENDPKEYCHECK PROC ;判断有无键按下子程序PUSH BXCALL CLEARMOV D X,PORT2NEXT: MOV AL,BLMOV DX,PORT2OUT DX,ALNOPNOPIN AL,DXAND AL,0FHJNZ KEYROL BL,1LOOP NEXTJMP EXITKEY: SHL BL,4OR AL,BL ;形成一个字节的键码信息存入AL,高4位为列信息低4位为行信息LEA SI,KEYCODLEA DI,KEYV ALMOV CX,12NEXT11: CMP AL,[SI]JZ FINDINC SIINC DILOOP NEXT11JMP EXITFIND: MOV AL,[DI] ;AL中内容为所按键的键面值PUSH AXNOPNOPWAIT1: IN AL,DX ;判断按键是否已释放,若无则等待AND AL,0FHCMP AL,0FHJNZ WAIT1POP AXJMP EXIT2EXIT:MOV AL,0CHEXIT2:NOPPOP BXRETKEYCHECK ENDPOUT DX,ALMOV DX,PORT2 ;位选输出分钟的十位MOV AL,0C4HOUT DX,ALCALL DELAYCALL CLEARMOV AX,SECXLATMOV DX,PORT1 ;段选输出数据OUT DX,ALMOV DX,PORT2 ;位选输出秒的个位OUT DX,ALCALL DELAYCALL CLEARRETSHOW ENDPDELAY PROC ;延时子程序PUSH CXMOV CX,1000LOOP $POP CXRETCLEAR ENDPCODE ENDSEND BEG五、总结两天的课程设计到了尾声,在这几天中,通过音乐流水灯实验实验,知道了很多自己的不足,例如,知识不会运用,经常翻书,以及查看相似的例子往实验上套,不过总算完成了实验,实验中遇到很多问题,例如,我的代码可以在一台实验箱上运行,结果良好,不过第二天换了台机子就不行了,数码管不能显示,有的时候蜂鸣器一直响,诸如此类。