当前位置:文档之家› 8253与8255的走马灯实验

8253与8255的走马灯实验

8253与8255的走马灯实验
8253与8255的走马灯实验

汇编用8253和8255编写个走马灯的程序?

; Aexp8.asm 走马灯(灯光变幻)程序 *

; 内容:用DIP的8位开关控制走马灯的花样,用SW3控制走马灯的起/停

; 运行步骤:1.按下一次开关SW3,开始灯光变幻,再按下一次则停止; 可重复进行 *

; 2.按下SW3后,拨动不同的数码开关DIP,就会出现不同的灯光变幻 *

; 3.按下"q"或者"Q",退出 *

sseg segment para stack 'stack'

dw 200 dup (?)

sseg ends

dseg segment para public 'data'

message db 'press SW3 to start and then press SW3 to stop,and so

on!',0ah,0dh;系统提示信息

db 'turn on DIP one by one and display various soud-op patterns!' db 0ah,0dh

db 'if you want to quit, please hit ''q'' or ''Q''!',0ah,0dh,'$' flag db 0 ;初始化状态标志变量为0

t dw 0 ;初始化延时变量为0

num dw 0 ;初始化数字变量为0

data1 db 80h,40h,20h,10h,08h,04h,02h,01h ;八种不同的灯光变幻组合data2 db 01h,02h,04h,08h,10h,20h,40h,80h

data3 db 80h,20h,08h,02h,40h,10h,04h,01h

data4 db 01h,04h,10h,40h,02h,08h,20h,80h

data5 db 0c0h,30h,0ch,03h,0c0h,30h,0ch,03h

data6 db 03h,0ch,30h,0c0h,03h,0ch,30h,0c0h

data7 db 81h,42h,24h,18h,81h,42h,24h,18h

data8 db 18h,24h,42h,81h,18h,24h,42h,81h

dseg ends

cseg segment para public 'code'

assume ss:sseg,cs:cseg,ds:dseg

m proc far

start: mov ax,ds

push ax

mov ax,00h

push ax ;保留程序数据段地址

mov ah,09h ;显示系统提示信息

mov dx,seg message

mov ds,dx

mov dx,offset message

int 21h

;初始化8255

mov dx,303h ;取8255的控制端口的地址

mov al,83h ;初始化8255的A口和C口高四位为输出模式out dx,al ;B口和C口低四位为输入模式

;初始化灯LED全灭

mov dx,300h ;取8255的端口A的地址

mov al,00h ;使8255的PA0-PA7全为0

out dx,al ;使所有的灯LED全灭

wait: ;检测"q"或者"Q"键

mov ah,0bh

int 21h ;调用DOS 21H 功能0BH 进行键盘判断

inc al

jnz readpc ;检测是否有键按下

mov ah,08h

int 21h ;调用DOS 21H 功能08H 进行键盘输入判断

cmp al,'q'

jz quit ;检测到"q",退出

cmp al,'Q'

jz quit ;检测到"Q",退出

readpc: ;判断开关SW3的状态

mov dx,302h ;取8255的端口C的地址

in al,dx ;读端口C的值

;当按下开关SW3时,PC2口为低电平

test al,04h ;检测PC2口状态

jnz case

lp: in al,dx

test al,04h

jz lp ;循环检测直至放开

xor flag,01h ;将状态值取反

case: cmp flag,01h ;进行状态值比较

jne stop

begin: call ledflash ;调用灯光变幻过程

call delay2

jmp wait

;灯LED全灭

stop: mov dx,300h ;取8255的端口A的地址

mov al,00h ;使8255的PA0-PA7全为0

out dx,al ;使所有的灯LED全灭

jmp wait

quit: ;灯LED全灭

mov dx,300h ;取8255的端口A的地址

mov al,00h ;使8255的PA0-PA7全为0

out dx,al ;使所有的灯LED全灭

;返回DOS

mov ah,4ch

int 21h

m endp

delay2 proc

push cx

push bx

mov cx,02ffh

dl4: mov bx,0ffffh

dl3: dec bx

jnz dl3

dec cx

jnz dl4

pop bx

pop cx

ret

delay2 endp

;检测数码开关DIP的状态,以便产生八种不同的灯光变幻ledflash proc

mov dx,301h ;取8255的端口B的地址

in al,dx ;读端口B的值

cmp al,0feh ;检测PB0口是否为0

jne choice1

mov si,offset data1 ;置第一种灯光变幻组合

jmp here

choice1: cmp al,0fdh ;检测PB1口是否为0

jne choice2

mov si,offset data2 ;置第二种灯光变幻组合

jmp here

choice2: cmp al,0fbh ;检测PB2口是否为0 jne choice3

mov si,offset data3 ;置第三种灯光变幻组合jmp here

choice3: cmp al,0f7h ;检测PB3口是否为0 jne choice4

mov si,offset data4 ;置第四种灯光变幻组合jmp here

choice4: cmp al,0efh ;检测PB4口是否为0 jne choice5

mov si,offset data5 ;置第五种灯光变幻组合jmp here

choice5: cmp al,0dfh ;检测PB5口是否为0 jne choice6

mov si,offset data6 ;置第六种灯光变幻组合jmp here

choice6: cmp al,0bfh ;检测PB6口是否为0 jne choice7

mov si,offset data7 ;置第七种灯光变幻组合jmp here

choice7: cmp al,7fh ;检测PB7口是否为0 jne choice0

mov si,offset data8 ;置第八种灯光变幻组合jmp here

;choice0: call m0 ;调用声光变幻过程choice0: jmp wait

;送加电数据

here: add si,num

mov al,[si] ;取当前加电数据

mov dx,300h ;取8255的端口A的地址

out dx,al ;输出加电数据到端口A

inc num ;改变数字变量的值

cmp num,08h

jne next

mov num,00h

next: ret

ledflash endp

cseg ends

end start

此程序是用单片机的p1口接八个led灯作跑马灯试验

拆字程序 Org 0000h Mov A , 2000H Add A ,#F0H MOV 2001H ,A MOV A ,2000H ADD A , #0FH MOV 2002H , A MOV A , 2001H ADD A , 2002H END 拆分BCD 码 ? *************************************************************************** ;此程序是用单片机的p1口接八个led灯作跑马灯试验,八个led依次亮了又熄灭,形成漂亮;的跑马灯。本人已经试验成功。 ;单片机教程网https://www.doczj.com/doc/c817099354.html, 原创

;该8路单片机跑马灯程序代码简单,电路也容易搭建,只需把led接在p1口上就可以了,希望大家能试验成功顺利的完成跑马灯报告 ;*************************************************************************** org 0000h loop0:cjne r0 ,#01h,rel,loop0 ;判断开关打开情况 ajmp start;跳转到程序开始 org 0030h;定义起始汇编地址 start: mov a,#0ffh ; clr c ; mov r2,#08h ;循环八次。 loop: rlc a ;带进位左移。 mov p1,a ;此时led灯开始有反映了。 call delay ;延时 djnz r2,loop ;循环(djnz条件判断) mov r2,#07h ; loop1: rrc a ;带进位右移 mov p1,a ;此时led灯开始有反映了。 call delay ; djnz r2,loop1 ;反复循环 jmp start ;回到程序的开头 delay: mov r3,#20 ;延时子程序 d1: mov r4,#20 d2: mov r5,#248 djnz r5,$ djnz r4,d2 ```````````````````````````````````````````````---------3路单片机跑马灯程序---------------------------------------

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________ 院(部)____________________________ 专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 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、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3

跑马灯实验报告.

山西大学数字电子技术基于硬件设计的跑马灯电路 系别:电力工程系 班级:电本1254班 姓名:所谓伊人 学号: 12322454**

一、实验目的 1. 熟悉NE555定时器,计数器CD4017的逻辑特性。 2. 熟悉NE555构成多谐振荡器原理。 3. 设计跑马灯电路并利用Multisim软件仿真电路。 二、实验要求 1. 知道NE555、CD4017的管脚排列顺序。 2. 利用NE555构成多谐振荡器。 3. 知道电阻的主要参数及其标注方法。(见实验指导书116页)。 4. 知道电容器的主要作用。(见实验指导书122页)。 5. 了解有关焊接的知识。 三、实验器材 电路板1块。电容:1μF(1个)。集成芯片:NE555(1个)、CD4017(1个)。电阻:22K?、1K?、500?各一个。二极管:IN4148(8个)、发光二极管(10个)。(自行提供)电池:5V 四、电路的安装 1.555用来定时,用它产生某种方波,相当于有的时钟信号 2.4017是个十进制计数器,按照时钟信号从10个口依次输出 1. 检查集成芯片NE555,CD4017的安装位置有无错误. 2. 检查电解电容的极性有无错误; 3. 检查二极管IN4148及发光二极管的安装方向有无错误; 4. 检查各个电阻的安装是否有误。 5. 检查有无虚焊。 五、电路的调试 1. 电路焊接好后,先将电路板正负端接到直流电压5V及地线处,观察发光二极管是否变亮。 2. 适当改变电位器阻值,观察其对CD4017

循环周期(发功二极管依次循环一周)的影响。 3. 利用秒表记录CD4017一个合适循环周期的时间。(分别测量电阻最大时、最小时、合适时的周期) 附录 1. 跑马灯电路图

单片机实验(新版2010

单片机应用技术课程为一门理论与实践相结合的课程,本课程安排的实验旨在培养学生软硬件开发能力,用编程语言及硬件设备实现串、并行通讯、计数/定时、A/D、D/A等硬件接口的功能,进一步加深对常用硬件芯片的了解和应用,以及学习用单片机解决实际问题。实验要求学生利用编程语言及硬件设备实现单片机的方案设计、程序编写、硬件连接、调试,从中体会具体硬件接口的应用技巧,进一步理解硬件接口芯片,逐步掌握单片机系统的开发和应用方法。 STAR ES598PCI提供实验仪具有与微机同步演示功能, 允许学生在Windows操作系统下编写、编译、连接、错误定位、调试、观察、修改系统, 不需要使用早期的PWB、TD等DOS下的调试环境。 通过本实验的学习,学生可以熟悉各种类型的接口芯片,汇编语言程序的编写、调试,充分锻炼动手及编程能力。

合肥学院电子信息与电气工程系实验室实验守则 (1) 实验一构建单片机最小系统和实验环境熟悉 (2) 实验二跑马灯实验及74HC138译码器 (4) 实验三8255控制交通灯实验 (7) 实验四8253方波实验 (9) 实验五继电器控制/光偶控制实验 (11)

合肥学院电子信息与电气工程系实验室实验守则为了培养严肃认真、实事求是的科学实验态度和善于思考、勤于动手的学习作风以及保证实验教学的正常进行,电子信息与电气工程系实验室特制定以下规则,望遵照执行: 1、禁止一切无关人员随意进入实验室和动用实验仪器设备和实验室内物品,确需进入实验 室工作学习的一切人员要必须严格遵守实验室的规章制度,服从实验室管理人员的安排。 2、学生应认真预习实验内容,预习不合格者不得参加实验,认真完成指定的实验内容或实 验作业,并交指导教师审阅。 3、学生不得迟到、早退、无故缺席,进入实验室后应按指定位置就座,迟到超过五分钟不 得参加实验,实验未完成早退者均按旷课论处。严禁代替他人做实验,缺实验者,课程结束后,考试前主动来补做实验,否则不得参加考试。 4、进入实验室请自带鞋套。书包、水杯等个人物品应放到指定处,且衣冠整齐,保持安静, 严禁吸烟、吃食物、随地吐痰和乱丢杂物等不文明行为,否则实验工作人员有权停止其实验。 5、实验前应先检查实验所需的工具、仪器、材料等是否齐全完好。如有缺漏、损坏应及时 报告请老师处理。 6、听从指导教师的指导,带硬件的实验接好线路后,应先认真检查,关键处确保无误。如 无把握时,须请指导教师审核后方可通电;进行大型仪器和强电实验务必经指导教师检查同意后,才可按操作规程通电实验。 7、实验时必须持严谨的科学态度,励行节约,严格按照实验步骤和正确的方法进行操作, 要细心观察记录实验结果,碰到疑难故障,应冷静分析原因,积极排除,如发生意外及时报告;独立完成实验任务,不得抄袭他人实验结果。 8、欲增加或改变实验内容,须征得指导教师同意。 9、注意人身安全,爱护仪器和设备,实验时仪器、设备、工具、材料不得乱放、乱抛;不 做与实验无关的事情,不动与本次实验无关的仪器设备,不进入与实验无关的场所,不随便串组,有以上表现而又不服从管理教育者,不得参加实验; 10、完成实验后主动整理放好相关设备,搞好卫生,实验中的废弃固体物品、腐蚀性液体必 须倒入指定的容器中,不许倒入水池中,经实验室工作人员、指导教师同意后方可离去。 11、实验室的任何物资不可擅自带走,在实验室中损坏仪器、工具等,应及时向工作人员报告,主动说明原因,并按实验室仪器设备损坏、丢失赔偿制度处理。

单片机课程设计报告-跑马灯

单片机课程设计报告-跑马灯

武汉纺织大学 单 片 机 课 程 设 计 报 告 设计课题:跑马灯 指导教师:刘丰

姓名:颜珊曹坤 班级:应电092 一、设计任务 利用单片机制作让LED灯依次闪烁时间间隔为0.5S二次后时间加快为 0.2S并循环闪烁的跑马灯. 二、设计要求 (1)采用单片机STC89C52来控制,下载器由芯片MAX232来对程序的下载。 (2)LED灯的闪烁间隔时间为0.5S-0.25S-1S,每循环两圈更改闪烁速度。 (3)供电采用USB方口的方式。 三、方案设计与论证 跑马灯电路的组成方框图为: 四,主要元件介绍 (1)单片机STC89C52引脚介绍 stc89c52的内核和AT51系列单片机一样,故引脚也相同: 1~8:I/OP1口(P1.0~P1.7); 9:复位脚(RST/Vpd);

10~17:I/OP3口(P3.0=RXD,P3.1=TXD,P3.2=-INT0,P3.3=-INT1,P3.4=T0,P3.5=T1,P3.6=-WR,P3.7=-RD)主要是此引脚; 18、19:晶振(18=XTAL2,19=XTAL1);20:地(Vss); 21~28:I/OP2口(P2.0~P2.7); 29:-PSEN; 30:ALE/-PROG; 31:-EA/Vpp 32~39:I/OP0口(P0.7~P0.0); 40:+5V电源。 注:引脚功能前加“-”,说明其是低电平有效。如P3.2=-INT0。 (2)MAX232介绍 MAX232芯片是美信公司专门为电脑的RS-2 32标准串口设计的接口电路,使用+5v单电源供电。

单片机实验报告

单片机实验报告 实验一:存储器块清零或赋值 一、实验目的 1 熟悉存储器的读写方法,熟悉51汇编语言结构。 2 熟悉循环结构程序的编写。 3 熟悉编程环境和程序的调试。 二、实验内容 指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的10个字节内容清零或全部赋值为33H。 注意: 1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。 2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容 3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR 4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。 5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。 三、实验仪器 微机、VW,WA VE6000编程环境软件,(单片机实验箱) Lab6000/Lab6000通用微控制器MCS51实验 四、实验步骤 1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)

2、编写程序。 3、运行和调试过程。 外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH): 单步执行程序,观察SFR中外部地址指针的变化; 全速执行程序,可以看到外部数据存储器已赋值33H:

五、实验结果 可以看到外部数据存储器已赋值33H: 六、问题讨论 本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。同时,学习掌握汇编程序的编写和调试过程。 实验二:存储块移动 一、实验目的 1 熟悉51汇编语言程序结构。 2 熟悉循环结构程序的编写,进一步熟悉指令系统。 3 熟悉编程环境和程序的调试。 二、实验内容 将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。 注意:在编程环境中,可以通过软件仿真,观察程单片机运行情况。 由于源地址和目的地址的内容都一样(FF),调试时看不到内容的变化,所以需要给源地址内容赋值。有多种赋值方式(比如在搬移循环体内,赋值一个搬移一个,请在空白处添

嵌入式操作系统跑马灯实验报告

嵌入式操作系统实验报告 实验题目:实验一 CVT-PXA270的使用及跑马灯实验 专业:计算机科学与技术 班级: 姓名: 学号:

1. 了解Linux下端口编程的方法; 2. 掌握CVT-PXA270下的directio通用端口编程驱动程序的使用; 3. 掌握CVT-PXA270下跑马灯的使用方法。 二、实验内容 1.了解CVT-PXA270的外部结构,以及各端口的使用 2.测试跑马灯状态,使跑马灯程序在Linux系统下运行 3.修改跑马灯程序,使跑马灯呈现出不同的状态 三、实验方案 /* 当前跑马灯状态 */ unsigned char led_status = 0x00; / /******************************************************************** // Function name : delay // Description : delay for a while // Return type : void // Argument : int count ********************************************************************* / void delay(int count) { while(count --); } /* 主函数*/ int Main(int argc, char* argv[]) { while(1) { *((unsigned char *) 0x04005000) = led_status; delay(0xffffff); led_status ++; } return 0; } 四、试验结果 实验箱上的四个跑马灯将不断闪烁,修改程序中delay函数调用的值将变它们显示的速度,值越大,显示越慢。

单片机实训实验报告

单片机实训实验报告 课题:单片机实训 院系:电子信息工程学院 班级 学号: 姓名: 指导老师:熊老师、罗老师 日期:2011.6.10

一、硬件系统 1、自制单片机实验板由七部分组成: (1).8路跑马灯 (2)动态扫描共阳型数码管 (3)4X4矩阵键盘 (4)蜂鸣器 (5)4路独立键盘 (6)温度传感器 (7)I2C通信方式的EEPROM芯片24C02 二、Keil C u Vision2 简述与使用 1.打开 u Vision2 2.新建工程:菜单【project】→【New Project】选择工程存放的路径,并输入工程文件名,然后点“保存” 3.进入器件选择界面树列表框内选择“Atmel”→“AT89C52”,然后点“确定”完成器件选择。 4.编辑源程序: 新建文件:菜单【File】→【new…】。然后输入代码,编辑完成后菜单【File】→【Save】或【Save As…】把代码文件存入硬盘。C源文件存为.C后缀,汇编源文件存为.a或.src后缀,并存放在同一个工程文件夹下。 5.加入源文件到工程中: 在左边浮动窗口【File】选项卡里展开“Target 1”树,在“Source Group 1”上右键单击,弹出菜单,选【Add File to Group“Source Group 1”】,选择需要加入的源文件,点“Add”按钮加入,加入完成后按“Close”关闭。 6.设置编译选项:先选中左边浮动窗口【File】选项卡里“Target1“树节点,然后选菜单【Project】→【Options for Target “Target 1”】。 7.在弹出的“Options for Target “Target 1””对话框中选择[output]选项卡,勾选“Create HEX File”然后按“确定”完成设置。 8.按“F7”开始编译,编译成功后会在工程文件夹内生成.Hex目标文件生成的.hex文件就可以用来对AT89S52芯片进行编程和运行了。 三.STC-ISP V29 Beta5 下载软件的使用 1.连接好电源线与串口线(附件中的九孔对九孔线分别连接电脑和点偏激开发板)。 2.检查电源板上电源指示灯是否亮起,如果亮起则检查USB电源线,如果已亮则关掉电源看后面的步骤。 3.启动软件。 4.选择好STC单片机的型号(STC89CF52RC). 5.选择好你使用的计算机串口号. 6.点击OPEN FILE选择你用KEIL编译好的HEX文件.

跑马灯实验报告

电子系统综合设计报告 学号 201009120229 姓名李文海年级专业 2010级电子信息工程(二) 指导 教师刘怀强 学院理学院 走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会dp-51pro实验仪监控程序下载、动态调试等联机调试功能的使用; 2、理解和学会单片机并口的作为通用i/o的使用; 3、理解和学会单片机外部中断的使用; 4、了解单片机定时器/计数器的应用。 2、实验设备 z pc 机、arm 仿真器、2440 实验箱、串口线。 3、实验内容 z 熟悉 arm 开发环境的建立。 z 使用 arm 汇编和 c 语言设置 gpio 口的相应寄存器。 z 编写跑马灯程序。 5、实验原理 走马灯实验是一个硬件实验,因此要求使用dp-51pro 单片机综合仿真实验仪进行硬件 仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。然后连接仿 真仪,下载监控程序,进行主机与实验箱联机仿真。 为了使单独编译的 c 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规 定一定的规则。atpcs ,即 arm , thumb 过程调用标准(arm/thumb procedure call standard),是 arm 程序和 thumb 程序中子程序调用的基本规则,它规定了一些子程序间调 用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规 则等。 下面结合实际介绍几种 atpcs 规则,如果读者想了解更多的规则,可以查看相关的书 籍。 1.基本 atpcs 基本 atpcs 规定了在子程序调用时的一些基本规则,包括下面 3 方面的内容: (1)各寄存器的使用规则及其相应的名称。 (2)数据栈的使用规则。 (3)参数传递的规则。 相对于其它类型的 atpcs,满足基本 atpcs 的程序的执行速度更快,所占用的内存更少。 但是它不能提供以下的支持: arm 程序和 thumb 程序相互调用,数据以及代码的位置无关 的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的 atpcs 就是在基本 atpcs 的基础上再添加其他的规则而形成 的。其目的就是提供上述的功能。 2.寄存器的使用规则 寄存器的使用必须满足下面的规则: (1) 子程序间通过寄存器 r0~r3 来传递参数。这时,寄存器 r0~r3 可以记作 a0~a3。 被调用的子程序在返回前无需恢复寄存器 r0~r3 的内容。 (2) 在子程序中,使用寄存器 r4~rll 来保存局部变量。这时,寄存器 r4~r11 可以记 作 v1~v8。如果在子程序中使用到了寄存器 v1~v8 中的某些寄存器,子程序进入时必须保

2020年(交通运输)单片机整套实验及程序(交通灯_跑马灯等)

(交通运输)单片机整套实验及程序(交通灯_跑马灯 等)

实验1 跑马灯实验 一、实验目的 ●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用; ●初步掌握采用汇编语言与C语言开发单片机系统的程序结构; ●掌握80C51单片机通用I/O口的使用; ●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。 二、实验设备及器件 ●硬件:PC机,HNIST-1型单片机实验系统 ●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境 三、实验内容 ●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管(D1、D2、D3、D4)按照一定的方式点亮。如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。 ●基于Proteus ISIS仿真环境完成上述功能的仿真。 ●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。 四、实验原理图 图3.1 跑马灯实验电路原理图 电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,

还可以通过软件延时实现。 五、软件流程图与参考程序 ●主程序流程图如下: ●参考程序

#include #include #define uchar unsigned char #define uint unsigned int uchar aa,num,speed,flag; uchar code table[]={0x0e,0x0d,0x0b,0x07}; uchar code table1[]={0x0a,0x05,0x09,0x06}; uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00}; void delay(uint z)//延时函数 { uint x; uchar y; for(x=z;x>0;x--) for(y=200;y>0;y--); } void init()//条件初始化函数 { flag=0; speed=10;//控制跑马灯流水速度 TMOD=0x01;//中断方式 TH0=(65535-50000)/256; TL0=(65536-50000)%256;//初值

走马灯实验报告

电子系统综合设计报告 学号201009120229 姓名李文海 年级专业2010级电子信息工程(二) 指导教师刘怀强 学院理学院

走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会DP-51PRO实验仪监控程序下载、动态调试等联机调试功能的使用; 2、理解和学会单片机并口的作为通用I/O的使用; 3、理解和学会单片机外部中断的使用; 4、了解单片机定时器/计数器的应用。 2、实验设备 z PC 机、ARM 仿真器、2440 实验箱、串口线。 3、实验内容 z熟悉A RM 开发环境的建立。 z使用A RM 汇编和C语言设置G PIO 口的相应寄存器。 z编写跑马灯程序。 5、实验原理 走马灯实验是一个硬件实验,因此要求使用DP-51PRO 单片机综合仿真实验仪进行硬件仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。然后连接仿真仪,下载监控程序,进行主机与实验箱联机仿真。 为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。A TPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是A RM 程序和T humb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。 下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书 籍。 1.基本A TPCS 基本A TPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容: (1)各寄存器的使用规则及其相应的名称。 (2)数据栈的使用规则。 (3)参数传递的规则。 相对于其它类型的A TPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。但是它不能提供以下的支持:ARM 程序和T humb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的A TPCS 就是在基本A TPCS 的基础上再添加其他的规则而形成的。其目的就是提供上述的功能。 2.寄存器的使用规则 寄存器的使用必须满足下面的规则:

labview实验报告

实验报告 课程名称虚拟仪器技术分析与设计 专业测控技术与仪器 班级1301 学号20 姓名郭鹏 实验一 LabVIEW虚拟温度检测系统 一、实验目的 1.了解LabVIEW的编程环境。

2.掌握LabVIEW的基本操作方法,并编制简单的程序。 3.学习建立子程序的过程 二、实验内容 1.建立一个测量温度的VI。 a.实验步骤 1)选择File?New,打开一个新的前面板窗口。 2)从Controls?Numeric中选择Tank放到前面板中。 3)从“结构”里选择一个for循环,用一个随机数乘与100输出到温度计 b.实验结果 前面板图: 程序框图: 三、实验总结 1.总结VI基本编程的快捷操作。 答:显示程序框图或前面板ctrl+E 框图中,对象的移动:shift+鼠标选择移动;对象的复制:ctrl+鼠标选择移动; 对象的删除:鼠标选择,按<退格>;前面板与框图并排:ctrl+T 工具(Tools)模板:在前面板或框图中按住键并单击鼠标右键。 控件(Controls)模板:在前面板激活状态,在前面板空白区单击右键。 函数(Functions)模板:在框图激活状态,在框图空白区单击右键。 消除所有断线:ctrl+B ;实时帮助:快捷键:ctrl+H 2.简述VI程序有什么构成,其各部分的功能是什么。 答:主要有:输入控件、显示控件、程序结构、函数控件、连线 输入控件:完成实时对变量的外界修改,即数据源 显示控件:完成输出显示数据、图形等。显示仪器分析结果 程序结构:用外方框表示程序的执行顺序、总体上把握程序的执行控制。 函数控件:构成程序的主要部分,完成对数据的采集、分析直至输出功能。 连线:用线的方式显示数据流,完成上述结构之间的关系构建。 3.思考:在前面板和框图程序中,如何区分控制器和指示器。 答:在前面板中,控制器用以外部输入数据,因此输入框为白色表示可主动输入。而显示器只有显示功能,用于被动输出虚拟仪器分析结果,数据框显示灰色,不能用于外部输入。 在程序框图中。控制器端子在右侧,用于连接数据输出线。显示器端子在左侧,用于连接数 据输入线。可以右键将显示图标勾掉,此时两种元件外观也不同。 4.心得体会及其它。 答:实验很简单,没吸引力——首先提下建议。Labview是一种图形编程软件。上手很快,但达到一定程度后,发现没有课本便很难取得进步。原因是,个人觉得labview最重要的是对程序编程结构的深入体会和各函数控件功能的充分掌握。前者可以通过看范例理解加深。

跑马灯实验报告

基于Proteus 的跑马灯 一、实验目的 1、 掌握Proteus 系统的使用,能够建立、保存,打开和修改文件。 2、 掌握使用各种元器件绘制电路原理图的方法,实现电路的仿真。 二、实验内容 跑马灯电路,即完成P1口上的八个发光二极管循环闪亮。 三、实验程序 ORG 0000H AJMP MAIN ORG 30H MAIN: MOV R2,#16 MOV A,#0FEH LOOP: MOV P1,A LCALL D1 RL A DJNZ R2,LOOP D1: MOV R4,#10 D2: MOV R5,#100 D3: MOV R6,#249 DJNZ R6,$ DJNZ R5,D3 DJNZ R4,D2 RET END 四、实验硬件电路 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C52 R1 10k C1 1nF C2 1nF C3 1uF X1 CRYSTAL D1 LED-BIBY D2 LED-BIBY D3 LED-BIBY D4 LED-BIBY D5 LED-BIBY D6 LED-BIBY D7 LED-BIBY D8 LED-BIBY 23456789 1 RP1 RESPACK-8 五、运行Proteus 仿真结果

基于单片机的跑马灯设计课程设计论文

课程设计(论文) 题目基于单片机的跑马灯 学院名称电气工程学院 指导教师肖金凤 职称副教授 班级电力1002班 学号20104450216 学生姓名耿翼鹏 2013年 1 月5日

摘要: 单片机最小系统是在以STC89C52RC单片机为基础上扩展,使其能更方便地运用于测试系统中。本设计主要在单片机上扩展I/O口,复位电路,晶振电路,LED显示电路并写好底层程序,做出能应用于跑马灯的最小系统。矚慫润厲钐瘗睞枥庑赖。 关键词:最小系统,STC89C52RC, 跑马灯 The smallest system one chip computer is in expands at the base of MCS-52 one chip computer,make it used more convient in the test system. This design mainly expands I/O in the take 52 on chip computer, reset circuit, crystals circuit, the LED display circuitand writes the first floor procedure.Make for scrolling minimum system.聞創沟燴鐺險爱氇谴净。Keyword:minimum system, AT89C52, scrolling

南华大学电气工程学院 《单片机原理及应用课程设计》任务书 设计题目:基于单片机的跑马灯 专业:电气工程及其自动化 学生姓名: 耿翼鹏学号: 20104450216 起迄日期: 2013 年12月23日—2014年1月 5日 指导教师:肖金凤老师

走马灯花样实验设计

走马灯花样实验设计 实验报告 实验人:______________ 学号:_________ 日期:— 院(系):软件学院软件工程__________ 专业(班级): 实验题目:走马灯花样实验设计____________________ 一.实验目的 1.进一步了解和掌握计算机各部分的组成及相互关系; 2.了解微指令的执行过程,掌握微程序的设计方 法;

3.进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理; 二.实验内容 P27(实验四)在走马灯花样实验设计的基础上,增加在七段数码显示器上滚动显示自己的学号、8X8 点阵上滚动显示自己的名字并控制滚动速度(有些同学姓名笔画较多应简化或用别名)。用到的芯片为

8255、8253、8259 (中断)、ADC0809、点阵等 三. 实验器材 (1) 装有TPC-USB 并连接好TPC-USB 的电脑 —一台 (2) TPC-USB 机 四. 实验原理 1.关于ADC0809的连接: KUl lBkl 2.关于8255的接法: 1 NHZ JITLTL^ 1 3k N m + £. \ 12 QI ______ 13 r~~ITE i s 28 1 N i| reft +) VCC reft 7 >CLDCK Is IN-2 ADD-C APD-B IM-i ADD-A EOC ALE START IN-0 ENABLE EOC 1234567S 7- - z z - 22222222 76543210 210 DDD-DDDDD AAA 299H* 29FH 74LS02

3.关于74LS273的接法: I QU 4. 关于双色点阵发光二极管显示器的接法: CS1连接:程序中的ROW 端口,也就是290H CS2连接: 程序中的COL 端口,也就是298H 5. 关于七段数码管的接法: KO KI K2 K3 K-l K5 K6 K7 PCO PAO ■ PC1 PAI PC2 PA2 PC 3 l J A3 PCI PAI PC? PA5 PC6 PA6 PC 7 PA7 CS ? LO ?11 ? L2 ? L3 * Lt ? L5 * L6 ■ L7 tlH K255 ? 11 74LS273 ? nj D"… &3?- D 4 ?'■■ D5?- D6?- D?*- >CUK CLR E £ 1 2 7 9 H L0 L i L 2 L 3 L 4 L5 L6 L7 1 8

数电实验报告发光二极管走马灯电路设计与实现

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:发光二极管走马灯电路设计与实现 学院: 班级: 姓名: 学号: 任课老师: 实验日期: 成绩:

一.实验名称和实验任务要求 实验名称:发光二极管走马灯电路设计与实现 实验目的:⑴进一步了解时序电路描述方法; ⑵熟悉状态机的设计方法。 实验任务要求: 设计并实现一个控制8个发光二极管亮灭的电路,仿真验证其功能,并下载到实验板测试。 ⑴单点移动模式:一个点在8个发光二极管上来回的亮; ⑵幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后 再向中间点灭,依次往复。 二.设计思路和过程 设计实现过程:⑴设计的电路拥有两种功能,所以设定d_in控制 输出实现两种功能,规定当d_in=0时,实现单 点移动模式;当d_in=1时,实现幕布式。同时, 时序电路中钟控是必不可少的,所以引入clk_in 来实现钟控。最终需输出在实验板上的8个发光 二极管上验证,所以输出f需设定为8端口输出, 如:f:out std_logic_vector(7 downto 0)。 ⑵单点移动模式的实现:来一个时钟沿,实现一次 变化。单点移动模式需实现发光二极管来回亮, 所以需定义一个16变量的数据类型。利用 CASE-WHEN语句实现状态的转移。状态转移

。 ⑶幕布式的实现:需实现发光二极管从中间两个点, 同时向两边依次点亮直至全亮,然后再向中间点 灭,往复。需要8变量数据类型,利用单点式中 信号类型定义给状态转移。状态转移需满足: 三.VHDL程序 发光二极管走马灯电路VHDL程序:

四.仿真波形图 发光二极管走马灯电路的仿真波形图: 五.仿真波形图分析 ⑴单点移动模式功能的仿真波形图分析: 由波形可见,当控制信号d_in=0时,输出的8个端口依次出现正脉冲,波形呈现阶梯状,代表一个发光的点在8个发光二极管上来回的亮,实现了功能要求; ⑵幕布式功能的仿真波形图的分析: 当控制信号d_in=1时,输出的8个端口出现正脉冲的时间与

stm32跑马灯实验

详细了解,请点击https://www.doczj.com/doc/c817099354.html,/ 跑马灯实验 跑马灯实验是最简单,也是一般最先开始的一个实验,他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的GPIO操作都是以跑马灯为基础进行的。 建议:当该实验顺利完成后,作为一个模板,供以后实验使用,最好把相关的某些代码封装起来,方便其他程序重用和其他功能调试时使用,这样可以确保您可以将精力花费在其他需要实现的功能上,而不是多次写下重复的代码。 实验目的: 1.分析和学习固件库 2.理解固件库的结构 3.通过stm32f10x_gpio.c/.h文件,熟悉GPIO的控制和工作原理 4.对开发板LED灯的再次软件封装 实验要求: 1.利用原理图和固件库的实例,移植开发板LED灯的驱动程序,即自己创建一个LED.c/.h 2.用两种方法实现跑马灯程序: 1.LED驱动 2.直接GPIO寄存器控制 硬件分析:

如上所示,4个LED链接在4个不同管脚上,即GPIOF6,GPIOF7,GPIOF8,GPIOC7. 当这4个管脚被置为低电平时,二极管导通。 通用输入输出接口(GPIO)介绍: 多达112多功能的双向IO口:80%的IO口利用率 所有的IO被分成7个端口,即7组GPIO口(GPIOA..GPIOG); 多达21路模拟输入; 可改变功能引脚(如:USARTx、TIMx、I2Cx、SPIx、CAN、USB等); 多达112个IO口可以设置为外部中断(同时可最多可有16个); 一个IO口可用于将MCU从待机模式唤醒(PA.0); 一个IO口可用作防入侵引脚(PC.13); 标准的I/O口可承受5V; IO口可以吸收25mA(总共可吸收150mA); 18MHz翻转速度; 可设置输出速度达到50MHz; 使用BSRR和BRR寄存器可对IO口的位进行位设置或清除; 锁定机制可以避免对IO口的寄存器的误写操作: 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。 除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。 在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 7组GPIO的端口映射地址为:

单片机实验报告(学期全部实验)

单片机程序设计 实 验 报 告 姓名: 学号: 专业班级:

第二节课: 实验一:1357,2468位置的灯交替闪烁 一实验要求 1357,2468位置的灯交替闪烁。 二硬件连接图与结果 三原理简述 程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。四程序 #include main () { int i; P0=0XAA; //1357四个灯亮 for (i=0;i<=25000;i++); //延时程序 P0=0X55; //2468四个灯亮 for (i=0;i<=25000;i++); //延时程序 }

五所遇问题与解决方式 程序比较简单,没有遇到问题。 实验二:流水灯 一实验要求 流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。二硬件连接图与结果 三原理简述 程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转

移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。时间间隔简单的用了一个延时的语句。 因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。 四程序 //流水灯 #include main () { int i,j; while(1) { P0=0X01; //第1个灯亮 for (i=0;i<=30000;i++); //延时程序 for(j=0;j<=7;j++) //移位循环程序 { P0=P0<<1; //移位 for (i=0;i<=30000;i++); //延时程序 } P0=0xff; //全亮 for (i=0;i<=30000;i++); //延时程序 } }

单片机跑马灯(流水灯)控制实验报告

单片机实验报告 姓名: 学号: 一、 实验实现功能: 1:计数器功能 2:流水灯 二、 具体操作: 1、计数器功能 数码管的动态显示。每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。 2、流水灯 当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。 三、 程序流程图 开始 定时器T0 设置初值,启动定时器, 打开中断 复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开

四、程序 #include typedef unsigned char uint8; typedef unsigned int uint16; //类型定义 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; //位声明四个数码管开关 sbit Key2 = P3^2; sbit Key3 = P3^3; //位声明2个按键K2和K3 sbit Ledk = P2^0 ; //LED 开关 void delay(uint16 i); //延时函数声明 void refresh (); // 数码管刷新函数声明 void liushuideng(); //流水灯函数声明 uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管的真值表 uint8 out[4] = {0}; // 数组变量 uint16 counter=0; //用作计数器的变量 uint16 Time_counter=0; //用作定时器的变量 void main() //主函数 { TMOD = 0x01; //定时器0,工作方式一 TH0 = 0xFC; TL0 = 0x18; //定时器初值使每次循环为1ms TR0 = 0; //定时器0开始作 ET0 = 0; // 定时器中断关 EA = 0; // 关中断 while(1) //计数器模式 { Ledk =1 ; //led开关关 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位 if (!Key2) //计数器加1 { ++counter; //自加 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位

相关主题
文本预览
相关文档 最新文档