正文内容
单片机,红绿灯显示实验报告
来源:莲生三十二
作者:开心麻花
2026-01-07
1

单片机,红绿灯显示实验报告(精选5篇)

单片机,红绿灯显示实验报告 第1篇

学生姓名:

学 号:

指导教师:

实验地点:

实验时间:2018年4月2日 实验 红绿灯显示实验

一、实验目的:

1.掌握程序控制指令。

2.掌握分支程序、子程序、循环程序的编写方法。

3.掌握软件延时的方法、了解机器周期和指令周期的概念。4.了解“静态显示”的含义。

二、实验内容:

在显示实验的基础上,如果将第7位,第3位,第1位分别看成红灯、黄灯和绿灯,红灯5秒(对应位显示0)后,显示黄灯1秒(对应位显示0),再显示绿灯3秒,编写对应程序,程序要求,延时使用子程序,最好使用标志位。其它内容见显示实验

三、实验步骤:

1.程序清单:

a)DpyDisplay.c: #include

typedef unsigned char u8;typedef unsigned int u16;

#define Dpy P0 sbit LSA = P2^2;sbit LSB = P2^3;sbit LSC = P2^4;

u8 code array[17] = {0x3f, 0x06, 0x5b, 0x4f,0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c,0x39, 0x5e, 0x79, 0x71,0x00};

void ls(u8 c, u8 b, u8 a)

{ LSA = a;LSB = b;LSC = c;}

void delay(u16 i){ while(i>0)i--;}

void Dpy1Display(u8 i){ ls(1,1,1);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy2Display(u8 i){ ls(1,1,0);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy3Display(u8 i){ ls(1,0,1);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy4Display(u8 i){ ls(1,0,0);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy5Display(u8 i){ ls(0,1,1);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy6Display(u8 i){ ls(0,1,0);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy7Display(u8 i){ ls(0,0,1);Dpy = array[i];delay(100);Dpy = 0x00;}

void Dpy8Display(u8 i){ ls(0,0,0);Dpy = array[i];delay(100);Dpy = 0x00;}

void DpyDisplay(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f, u8 g, u8 h){ Dpy1Display(a);Dpy2Display(b);Dpy3Display(c);Dpy4Display(d);Dpy5Display(e);Dpy6Display(f);Dpy7Display(g);Dpy8Display(h);} b)main.c: #include

typedef unsigned char u8;typedef unsigned int u16;

extern void DpyDisplay(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f, u8 g, u8 h);

void main(){ u16 i, j, n;n = 108;

while(1){ for(j=10;j>0;j--){

for(i=0;i

DpyDisplay(j-1,16,16,16,16,16,16,16);} for(j=2;j>0;j--){

for(i=0;i

DpyDisplay(16,16,j-1,16,16,16,16,16);} for(j=5;j>0;j--)

} } {

} for(i=0;i

2.实验现象:

开发板数码管第一位从9逐秒递减至0后,第三位从1逐秒递减至0,之后第五位从4逐秒递减至0。3.实验原理:

a)通过发送段码选定某位后向该位发送位码以点亮一根数码管。b)数码管以非常短的时间重复点亮,利用人的视觉暂留给人以稳定显示字符之感。

c)利用for循环使数码管稳定显示,并使数字逐秒减少。4.实验中的注意事项、遇到的问题以及总结:

a)点亮数码管的循环函数中语句尽可能少,防止数码管显示过程中的闪烁。b)最好制作编码表,设置输入值与显示字符的关系,后续即可通过查表完成显示,可大大减小工作量。

c)利用for控制每位显示可大大减少代码量。5.实验改进方向与设想

可外接不同色LED模拟红绿灯。

单片机,红绿灯显示实验报告 第2篇

一、实验目的

1、了解液晶显示屏的控制原理及方法。

2、了解点阵汉字的显示原理。

二、实验说明

1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。

2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。

三、实验仪器

计算机

伟福实验箱(lab2000P)

四、实验内容与软件流程图

1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。

2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。

3、直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。计算机通过地址译码控制 E1和 E2的选通;读/写操作信号 R/W由地址线 A1控制;命令/数据寄存器选择信号 AO由地址线 A0控制。实际电路如上图所示。地址映射如下(地址中的X由LCD CS决定,可参见地址译码部分说明)

4、实验流程图

5、实验电路及及连线

五、思考题

1、显示自己的班级和姓名;

2、可以动态显示,上下或者左右移动;

六、源程序修改原理及其仿真结果

初始程序实验结果图

显示自己班级和姓名的修改结果图

动态显示修改的结果图

综上所述,实验要求的显示自己班级和姓名,并且动态显示的基本实现。

七、心得体会

机器人-红绿灯-仿真实验报告 第3篇

机器人控制

综合仿真实验

——红绿灯

姓名:李铃

年级:2011级

系别:信息工程学院 计科(师)学号:1111000048

同组人姓名:杨晨

年级:2011级

系别:信息工程学院 计科(师)同组人学号:1111000054

2013年5月14日

第 1 页 【实验目的】

进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和数码管的电路结构学会构建简单的红绿灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

【实验要求】

利用proteus仿真软件和keil仿真软件实现交通信号灯的功能。

【实验环境】

Proteus与keil联合,语言环境为汇编语言。

【实验用品】

proteus仿真软件,keil仿真软件,个人计算机一台。

【实验内容】

一、利用proteus软件画出电路图

1、打开proteus软件,点击P选择电器元件(见图1.1),在keywords中搜索要用到的电器元件(见图1.2和图1.3),在本次试验中选择型号为AT89C51单片机。找到后双击元件名称,这样元件就显示在DEVICES中了(见图1.4),选好后点击“OK”关闭窗口。

图 1.1

图 1.2

图 1.3

图 1.4

2、选中左侧的AT89C51元件,在作图区域内单击鼠标左键,会出现图1.5左边的图象,再次单击鼠标左键,会出现图1.5右边的图像,此时已经安放好了AT89C51元件。

1.5

3、按照上述步骤找齐电路中还需要的电器元件,包括:电阻(RES17个,RESPACE1个),电容(CAP2个,CAPELEC1个),三极管(2N222 2个),发光二级管(LED-GREEN1个,LED-RED1个,LED-YELLOW1个),数码管(7SEG1个),开关(BUTTON1个),晶振(GRYSTAL1个)。

4、将各个元件组合,最终形成如图1.6的电路图。

二、利用keil软件编写程序并生成.asm文件和.hex文件

1、打开keil软件,选择工程->新建工程(见图1.7),并确定存放位置。

图 1.7

2、选择单片机:Atmel->AT89C51,之后的对话框选择“否”,如图1.8。

图 1.8

3、新建程序:文件->新程序文件,如图1.9.4、编辑程序文件如下:

ORG 0000H TEMP EQU 24H TEMN EQU 25H LJMP MAIN ORG 0003H LJMP T0_INT ORG 0013H LJMP TI_INT T0_INT: MOV A, P1 PUSH ACC MOV P1, #0FFH MOV P1, #0F3H MOV P0, #00H JNB P3.2,$ POP ACC MOV P1, ACC RETI TI_INT: MOV A, P1 PUSH ACC MOV P1, #0FFH MOV P1, #0DEH

图 1.9 MOV P0,#00H JNB P3.3,$ POP ACC MOV P1, A RETI MAIN: SETB EA SETB EX0 SETB EX1 CLR F0 START1: MOV TEMP, #25 MOV P1, #0F3H LOOP1: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START3 JNB P1.7,START11 CJNE A,#0, NEXT1 LJMP START2 NEXT1: LJMP LOOP1 START11: MOV TEMP, #65 MOV P1, #0F3H LOOP11: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START33 JNB P1.7,START1 CJNE A,#0, NEXT11 LJMP START11 NEXT11: LJMP LOOP11 START2: MOV P1, #0F5H MOV TEMN,#05 LOOP2: ACALL DELAY1 DEC TEMN MOV A,TEMN CJNE A, #0,NEXT2 LJMP START3 NEXT2: LJMP LOOP2 START3: MOV TEMP, #25 MOV P1,#0DEH LOOP3: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START1 JNB P1.7,START33 CJNE A, #0,NEXT3 LJMP START4 NEXT3: LJMP LOOP3 START33: MOV TEMP, #65 MOV P1,#0DEH LOOP33: ACALL DELAY DEC TEMP MOV A,TEMP MOV P0, TEMP JNB P1.6,START11 JNB P1.7,START3 CJNE A, #0,NEXT33 LJMP START4 NEXT33: LJMP LOOP33 START4: MOV P1, #0EEH MOV TEMN,#05 LOOP4: ACALL DELAY1 DEC TEMN MOV A, TEMN CJNE A,#0,NEXT4 LJMP START1 NEXT4: LJMP LOOP4 RETI DELAY: MOV A,TEMP MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R0, #10 L0: MOV R1, #250 L1:MOV A,R5 MOV P0, A CLR P2.4 ACALL DIMS SETB P2.4 MOV A,R6 MOV P0,R6 CLR P2.5 ACALL DIMS SETB P2.5 DEC R1 DJNZ R1,L1 DEC R0 DJNZ R0,L0 RETI DELAY1: MOV A,TEMN MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R2, #10 L2: MOV R3, #250 L3:MOV A,R5 MOV P0, A CLR P2.4 ACALL DIMS SETB P2.4 MOV A,R6 MOV P0,R6 CLR P2.5 ACALL DIMS SETB P2.5 DEC R3 DJNZ R3,L3 DEC R2 DJNZ R2,L2 RETI DELAY11: MOV A,TEMP MOV B, #10 DIV AB MOV R5, A MOV R6, B MOV R0, #10 Y0: MOV R1, #250 Y1:MOV A,R5 MOV P2, A CLR P2.6 ACALL DIMS SETB P2.6 MOV A,R6 MOV P2,R6 CLR P2.7 ACALL DIMS SETB P2.7 DEC R1 DJNZ R1,Y1 DEC R0 DJNZ R0,Y0 RETI DIMS: MOV R7,#250 DJNZ R7,$ RET END

4、生成asm文件。文件->保存,如图1.10,注意后缀为.asm

图 1.10

5、生成hex文件。Target->source group 1->右键->Add Files to Group‘Source Group 1’,单击Add,然后单击Close。单击Build Toolbar->Options for Target,如图1.11进行设置。调试正常后,project->build target生成hex文件(十六进制文件)。

图 1.11

【实验小组分工情况】

李铃负责Proteus软件部分,杨晨负责keil软件和p-k联动部分。

【结论】

基本实现红绿灯电路,进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和数码管的电路结构。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

【收获和体会】

单片机,红绿灯显示实验报告 第4篇

我们来到实训室,根据老师发下来的项目实训资料来完成单片机控制4个8×8LED显示实训。我们认真阅读实训内容,打开电脑,打开单片机系统,打开proteu软件,放置以及排序芯片,电阻、译码器、单片机控制的4个8×8LED点阵显示屏。

第二天:

对做好的硬件连接之后,检查所连接好的线是否正确。根据任意编程进行点阵显示,排查连接的是否有错误。

第三天:

分别打开EAT589、字模软件,在EAT598软件上进行编程的时候分清子程序码,使用字模软件的横向取模,取汉字的A51格式。

第四天:

打开软件,在软件上进行汇编语言程序设计,设计出了汉字显示,学习和熟悉单片机的指令程序。第五天:

根据之前所设计的汉字显示来修改,直到完成汉字的切换以及汉字的滚动效果。然后根据自己的兴趣完成自己的作品。

实训结果:

硬件连接完成,可以实现之后的汉字显示汉字切换以及汉字滚动,认真仔细的接好硬件连接,注意在字模上的取模,经过系列的汇编语言程序设计正常运行

体会:

通过这一周的实训,我们很好的完成了单片机的实训,收获了许多单片机的知识。完成了单片机控制4个8×8点阵显示汉字、切换以及滚动汉字。在这次的单片机实训中,了解单片机的用途,译码器原理,掌握单片机的编译程序和装载并进行运行,学习硬件和软件的基本操作,熟悉运行结果及检查进行实践。

ORG 0000H

LJMP MAIN

ORG 0040H

MAIN:MOV SP,#5FH

MOV DPTR,#TAB

MOV R1,#0

LCALL LA

LJMP MAIN

LA:

MOV R0,#00H

MOV R2,#0

MOV R4,#32

LB:

MOV P1,R0;行

MOV A,R2

MOVC A,@A+DPTR

MOV P0,A

INC R2

MOV A,R2

MOVC A,@A+DPTR

MOV P2,A

LCALL DELAY

INC R2

INC R0

DJNZ R4,LB

MOV R5,#8

DJNZ R5,LA

RET

DELAY:MOV R6,#20

D1:

D2:

MOV R7,#30DJNZ R7,$ DJNZ R6,D1 RET

TAB:

DB04H,20H,04H,20H,0FFH,0FEH,04H,20H,00H,00H,7CH,0F8H,44H,88H,44H,0F8H DB44H,88H,7CH,88H,44H,0F8H,44H,88H,7DH,08H,45H,08H,42H,28H,04H,10H

END

实训步骤:

1.硬件连接

2.检查连线是或否正确

3.根据编程进行点阵显示

4.打开软件进行设计汉字的显示

5.分清程序各码进行编译程序并运行

计控实验报告LED动态显示 第5篇

主要教学目标:

掌握LED动态显示的方法。

教学的方法及教学手段:讲授法,讨论法,练习法,实验法 教学重点及难点:LED动态显示 实验内容

1.LED用动态显示123456;

2.时间切换开关K1,可切换动态扫描时间间隔,1ms和50ms。

(一)作法

微型机定时地对显示器件扫描。

显示器件分时工作,每次只能有一个器件显示。1.LED用动态显示123456;

2.时间切换开关K1,可切换动态扫描时间间隔,1ms和50ms。

(二)1、8155 的PA口输出显示码,PB口用来输出位选码。2、74LS07为 6 位驱动器,为LED提供一定的驱动电流 3、8155的PB口经75452缓冲器/驱动器反向后,作为位控信号。4、75452内部包括两个缓冲器/驱动器,它们各有两个输入端。

(三)显示原理 1、8155初始化,建立显示缓冲区为 DISBUF, 存放待显示数据。

2、用软件译码法求出待显示的数对应的七段显示码,由PA口输出,并经过74LS07驱动后送到各显示器

3、由PB口输出位选码。各位从左至右依次显示,每个数码管显示1ms。显示完最后一位数后,再重复上述过程,(四)电路图

(五)参考程序 #include #include #include #define uint unsigned int #define uchar unsigned char /*8155控制字和PA,PB口地址定义*/ #define CON_8155 XBYTE[0x7F00] #define PA_8155 XBYTE[0x7F01] #define PB_8155 XBYTE[0x7F02] //数码管字型定义 uchar LEDDATA[]={

0x3F,/*0*/

0x06, /*1*/

0x5B, /*2*/

0x4F, /*3*/

0x66, /*4*/

0x6D, /*5*/

0x7D, /*6*/

0x07, /*7*/

0x7F, /*8*/

0x6F, /*9*/

0x77, /*A*/

0x7C, /*b*/

0x39,/*C*/

0x5E,0x79,0x71,};

/*d*/ /*E*/ /*F*/ //动态扫描时间间隔50ms标志位 bit g_delay50ms = 0;//函数原型声明 void Delay1ms(void);void Delay50ms(void);void main(){

uchar i, selectLED;IT0 = 1;EX0 = 1;EA = 1;CON_8155 = 0x03;selectLED = 0x20;while(1){

for(i=1;i<7;i++){

PA_8155 = LEDDATA[i];PB_8155 = selectLED;

//从8155 A口输出显示码

//PA口、PB口基本输入输出 //LED位选,从左到右扫描

//外部中断0,边沿触发

//从8155 B口输出位选码 //准备显示下一位 selectLED = _cror_(selectLED, 1);if(selectLED == 0x80){ }

if(g_delay50ms){ } else { } PB_8155=0x00;

//消隐 Delay1ms();

Delay50ms();

selectLED = 0x20;

//动态扫描时间间隔50ms

//动态扫描时间间隔1ms

} } }

void Int0(void)interrupt 0 { } void Delay1ms(void){ uchar i, j, k;for(j=142;j>0;j--)

for(i=1;i>0;i--)

} void Delay50ms(void){

unsigned char a,b;

for(b=173;b>0;b--)

for(a=143;a>0;a--);}

相关文章
谜底是近代人名的谜语

谜底是近代人名的谜语

谜底是近代人名的谜语(精选14篇)谜底是近代人名的谜语 第1篇谜底是水浒传人名的谜语谜底是水浒传人名的谜语:1.谜面:三十六中抓重点 ...

4
2026-01-08
美丽的崂山范文

美丽的崂山范文

美丽的崂山范文(精选3篇)美丽的崂山 第1篇Internet已经成为当代最有影响力、最普遍、最方便的宣传工具和信息来源。现在旅游网站越来越多...

3
2026-01-08
民用建筑防火间距

民用建筑防火间距

民用建筑防火间距(精选6篇)民用建筑防火间距 第1篇1 从建筑物扑救面角度探讨防火间距1.1 GB 50045-95对于建筑物扑救面的规定和解释GB...

2
2026-01-08
美术上学期教学计划

美术上学期教学计划

美术上学期教学计划(精选12篇)美术上学期教学计划 第1篇中班上学期美术计划——单晴 胡容第一周《降落伞下有什么呢?》蜡笔水粉纸黑色...

4
2026-01-08
拇指的故事论文

拇指的故事论文

拇指的故事论文(精选9篇)拇指的故事论文 第1篇在几年的幼儿教学工作中, 我总结了一些经验, 教育幼儿时应讲究一些艺术:一、批评儿童要...

3
2026-01-08
煤矿“四个标准”

煤矿“四个标准”

煤矿“四个标准”(精选8篇)煤矿“四个标准” 第1篇重庆市南川区嘉岭煤矿有限责任公司潼仪煤矿工作标准2018年1月目 录跟班管理人员职责...

3
2026-01-08
美术彩线贴画教案

美术彩线贴画教案

美术彩线贴画教案(精选15篇)美术彩线贴画教案 第1篇人民教育出版社三年级下册第13课彩线贴画人民教育出版社三年级下册第13课彩线贴画教...

3
2026-01-08
慢性甲状腺炎范文

慢性甲状腺炎范文

慢性甲状腺炎范文(精选10篇)慢性甲状腺炎 第1篇1.1 一般资料对从该院2011年3月—2014年3月前来就诊的患者中以随机抽取的方式抽取240例...

2
2026-01-08
付费阅读
确认删除?
回到顶部