单片机实验报告

时间:2024.5.8

海南大学届

单片机实验报告(4份)

论文题目: 学生姓名:学 号: 所在院系: 专业班级: 授课教师: 完成时间:

单片机实验报告

蜂鸣器实验

实验目的

1.熟悉实验板中蜂鸣器工作原理,掌握汇编编程控制蜂鸣器播放音乐;

2.掌握单片机编程控制蜂鸣器发出不同频率声音的方法;

3.了解一段简短音乐乐谱的构成,及其单片机程序实现的基本方法; 实验原理

1、蜂鸣器类型

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

2、音乐歌曲元素

一首歌曲由音调和节拍两个主要的元素组成。对于蜂鸣器来说,频率的高低决定了音调的高低。所有不同频率的信号都是从同一个基准频率分频得来的。给蜂鸣器输入相应的频率,可以使其发出表中所示的低音、中音、高音的do~xi的声音。将其按照音乐演奏的规律组合,便可以得到所需要的乐曲。

3、原理图

实验步骤

1. 连接试验相关模块连线

如图:

单片机实验报告

J8连接P1.5

2.下载蜂鸣器试验程序

选择芯片为STC89C5XX,串口号,波特率,低速下载,下载完成后程序自动运行,观察实验现象

实验现象

蜂鸣器分别发出所载入程序的音乐,达到实验效果

实验源程序:

#include

#include

sbit Beep = P1^5 ;

unsigned char n=0;

unsigned char code music_tab[] ={ 0x18, 0x30, 0x1C , 0x10, 0x20, 0x40, 0x1C , 0x10, 0x18,0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0xFF, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x80, 0x20, 0x30, 0x1C , 0x10, 0x20, 0x10, 0x1C , 0x10, 0x20, 0x20, 0x26 , 0x20, 0x2B, 0x20, 0x30 , 0x20, 0x2B, 0x40, 0x20 , 0x15, 0x1F, 0x05, 0x20 , 0x10, 0x1C, 0x10, 0x20 , 0x20,

单片机实验报告

单片机实验报告

0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x30, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x40, 0x1C , 0x20, 0x20, 0x20, 0x26 , 0x40, 0x13, 0x60, 0x18 , 0x20, 0x15, 0x40, 0x13 , 0x40, 0x18, 0x80, 0x00

};

void int0() interrupt 1

{ TH0=0xd8;

TL0=0xef;

n--; }

void delay (unsigned char m)

{ unsigned i=3*m;

while(--i); }

void delayms(unsigned char a)

{ while(--a); }

void main()

{ unsigned char p,m;

unsigned char i=0;

TMOD&=0x0f;

TMOD|=0x01;

TH0=0xd8;TL0=0xef;

IE=0x82;

play:

while(1)

{

a: p=music_tab[i];

if(p==0x00) { i=0, delayms(1000); goto play;}

else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;}

else {m=music_tab[i++], n=music_tab[i++];}

TR0=1;

while(n!=0) Beep=~Beep,delay(m);

TR0=0;

}

}

常见问题:

1. 程序下载完成后不响

将杜邦线重新连接下或者换根线试试,将单片机拆下来重新安装下!

2. 自写程序蜂鸣器不响

需要有频率才会响的,持续高或者持续低是不会响的。

静态数码管实验

实验目的

1.理解8段数码管的基本原理。

2.理解8段数码管的显示和编程方法。

3.理解4连排共阴极8段数码管LG5641AH与MCU的接线图。

实验仪器及设备

硬件:PC机,基本配置CPU PII以上,内存2G、单片机开发板

软件:keil 2, 程序烧录软件

实验原理

8段数码管一般由8个发光二极管(LED)组成,每一个位段就是一个发

光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数

点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共

阴极两种。有时数码管不需要小数点,只有7个位段,称7段数码管。共阴极8

段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的

位段发光,比如:要使a段发光,则在a段加上高电平即可。共阳极的8段数码

管则相反,在相应的位段加上低电平即可使该位段发光。 原理图

单片机实验报告

单片机实验报告

单片机实验报告

dp

数码管 数码管外形

实验步骤

1. 连接试验相关模块连线

如图:

JP10(P0)连接JP3

2、下载静态数码管程序

选择芯片为STC89C5XX,串口号,波特率,低速下载,下载完成后程序自动运行,观察实验现象。

实验现象

数码管依次显示0—

单片机实验报告

单片机实验报告

F

实验程序

#include

#define GPIO_DIG P0

void Delay10ms(unsigned int c);

unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

void main(void)

{

unsigned char i = 0;

while(1)

{

GPIO_DIG = ~DIG_CODE[i];

i++;

if(i == 16)

{

i = 0;

}

Delay10ms(50);

}

}

void Delay10ms(unsigned int c) {

unsigned char a, b;

for (;c>0;c--)

{

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

{

for (a=130;a>0;a--);

}

}

}

常见问题

1.数码管有显示,并且在走动,但显示不正确

检查排线连接连接顺序是否正确

2.显示不全,有一段或者多段不亮

将排线重新插拔下,更换排线或者将单片机重新安装下,重启开发板。

Led点阵实验

实验目的

利用EDA技术实现16×16 LED点阵屏的的扫描和动态显示。

实验仪器及设备

硬件:PC机,基本配置CPU PII以上,内存2G、单片机开发板 软件:keil 2, 程序烧录软件

实验原理

LED点阵的行为扫描选通信号、列为数据输入。显示采用逐行扫描方式,数据端不断输入数据,行扫描按一定顺序逐行选通,扫描一个周期(16次)产生一帧画面。

试验步骤

1. 连接开发板LED模块相关电路连线

连线如图:

2. 打开开发板电源

单片机实验报告

单片机实验报告

3. 下载LED程序

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

选择芯片为STC89C5XX,串口号,波特率,低速下载,点击下载程序,提示下载成功!

程序自动运行,观察实验现象。

实验现象

Led显示屏上红绿交替显示

实验程序

#include

unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay1(void)

单片机实验报告

{ unsigned char i,j,k; for(k=10;k>0;k--) for(i=20;i>0;i--) for(j=248;j>0;j--); } { unsigned char i,j; while(1) { for(j=0;j<3;j++) { for(i=0;i<8;i++) { P2=taba[i]; P0=0xff; delay1(); void main(void)

} } for(j=0;j<3;j++) { for(i=0;i<8;i++) { P2=taba[7-i]; P0=0xff; delay1(); } } for(j=0;j<3;j++) { for(i=0;i<8;i++) { P2=0x00; P0=tabb[7-i]; delay1(); } } for(j=0;j<3;j++) { for(i=0;i<8;i++) { P2=0x00; P0=tabb[i]; delay1(); } } } }

常见问题解决方法 LED不亮的

1. 请您检查排线是否插好!

2. 换根排线试试。

交通灯实验

实验目的

1.利用单片机的定时器定时,实现道路的红绿灯交替点亮和熄灭。

2.以单片机为核心,设计一个十字路口交通灯控制系统。用单片机控制LED灯模拟交通信号灯显示。

3.南北方向、东西方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法)。

实验仪器及设备

硬件:PC机,基本配置CPU PII以上,内存2G、单片机开发板 软件:keil 2, 程序烧录软件

实验原理

主体电路:交通灯自动控制模块。这部分电路主要由80C51单片机的I/O端口、定时计数器、外部中断扩展等组成。本设计先是从普通三色灯的指示开始进行设计,用P1口作为输出。程序的初始化是东西南北方向的红灯全亮。然后南北方向红灯亮,东西方向绿灯亮,60秒后东西方向黄灯闪亮5秒后南北方向绿灯亮,东西方向红灯亮。重复执行。倒计时用到定时器T0,用P2口作为LED的显示。二位一体的LED重复执行60秒的倒计时。作为突发事件的处理,本设计主要用到外部中断EX0。用一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。

实验步骤

1. 连接试验相关模块连线

如图:

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

J21跳线帽金接(VCC) JP8(P1)接JP16 J12接JP10(P0) JP1接JP11(P2) J22接P3.0 P3.1 2. 下载交通灯程序

选择芯片为STC89C5XX,串口号,波特率,低速下载,程序下载成功后自动运行,

观察实验现象

实验现象

由红黄绿三种颜色的LED模拟交通灯按照预定要求显示,时间由数码管显示 。

实验程序

#include

#define GPIO_DIG P0

#define GPIO_PLACE P1

#define GPIO_TRAFFIC P2

sbit RED10 = P2^0; sbit GREEN10 = P2^1; sbit RED11= P2^2;sbit YELLOW11= P2^3;sbit GREEN11 = P2^4; sbit RED00 = P3^0; sbit GREEN00 = P3^1; sbit RED01= P2^5;sbit YELLOW01= P2^6;sbit GREEN01 = P2^7; unsigned char code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code DIG_CODE[17]

={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char DisplayData[8];unsigned char Time, Second;

void DigDisplay();void Timer0Cofig(void);

void main(void)

{

Second = 1;

Timer0Cofig();

while(1)

{

if(Second == 70)

{

Second = 1;

}

if(Second < 31)

{

DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(30 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();GPIO_TRAFFIC = 0xFF; RED00 = 1;

GREEN00 = 1;

GREEN11 = 0;

GREEN10 = 0;

RED01 = 0;

RED00 = 0;

}

else if(Second < 36)

{

DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10]; DisplayData[3] = DIG_CODE[(35 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00; DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();GPIO_TRAFFIC = 0xFF; RED00 = 1;

GREEN00 = 1;

YELLOW11 = 0;

RED10 = 0;

YELLOW01 = 0;

RED00 = 0;

{

DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10];

DisplayData[3] = DIG_CODE[(65 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();

GPIO_TRAFFIC = 0xFF;

RED00 = 1;

GREEN00 = 1;

RED11 = 0;

RED10 = 0;

GREEN01 = 0;

GREEN00 = 0;

{

DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(70 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();GPIO_TRAFFIC = 0xFF;

RED00 = 1;GREEN00 = 1;YELLOW11 = 0; RED10= 0; YELLOW01 = 0; RED00 = 0;

}

void DigDisplay()

{

unsigned char i; unsigned int j; for(i=0; i<8; i++) { GPIO_PLACE = DIG_PLACE[i]; GPIO_DIG = DisplayData[i]; j = 10; while(j--); } } } else } else if(Second < 66)

} } GPIO_DIG = 0x00;

void Timer0Cofig(void)

{

TMOD = 0x01;

TH0 = 0x3C;

TL0 = 0xB0;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void Timer0() interrupt 1

{

}

TH0 = 0x3C; TL0 = 0xB0; Time++; if(Time == 20) { } Second ++; Time = 0;

常见问题解决方法

1. 交通信号灯亮的不对

将接JP1的排线反过来插,也就是将线序反过来

更多相关推荐:
单片机实验报告

单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实验目的熟悉MCS51指令系统掌握程序设计方法加深对内部存储器读写的认识熟悉仿真开...

单片机实验报告

通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日1实验一单片机汇编语言程序设计一实验目的1学习MedWin或Keilc51仿真软...

单片机实验报告

题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握Keil软件的基本使用12掌握单片机汇编语言基本编程二实验内容1学习用Keil软件...

51单片机课程设计实验报告

51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机学习板2.要求:(1)了解并能识别学习板上的各种元器件,会读元器件标示;(2)会…

单片机实验报告

单片机课程设计报告实验五系别物理与电子工程学院年级专业班级学号学生姓名指导教师设计时间常熟理工学院课程设计报告目录1题目22实验要求221实验目的222实验内容23总体设计231硬件设计232软件设计44运行结...

51单片机实验报告

08424020xx单片微型计算机原理学院班级学号姓名指导教师成绩120xx年6月08424020xx硬件实验实验一定时器中断实验实验内容fosc110592MHzT0方式2产生定时中断实现秒表功能数码管后两位...

单片机交通灯实验报告

交通灯控制系统设计院系:电子电气工程学院专业:电气自动化班级:P10电气四班成员:*************交通灯控制系统设计实验一.设计目的1.通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加…

单片机实验报告(BUPT)

实验课程名称自动控制综合实验2》姓名学院自动化学院专业班级学号、班内序号指导教师20##年月单片机部分一、仿真软件的使用以及跑马灯的设计1.实验目的:1)掌握仿真软件的使用方法。2)掌握MCS-51单片机的P0…

单片机实验报告

摘要AD转换器是模拟信号源和CPU之间联系的接口它的任务是将连续变化的模拟信号转换为数字信号以便计算机和数字系统进行处理存储控制和显示在工业控制和数据采集及许多其他领域中AD转换是不可缺少的能把输入模拟电压或电...

单片机实验报告

成绩计算机原理实验室实验报告课程单片机原理及接口技术姓名聂建建专业计算机科学与技术学号1120xx206日期20xx年6月10日太原工业学院计算机工程系计算机原理实验室实验报告实验一循环程序实验排序1234计算...

单片机实验报告

单片机与嵌入式系统实验报告1一软件模拟调试实验本部分实验内容主要为指令系统和汇编语言程序设计采用软件模拟调试的方法目的在于通过这些实验使学生巩固所学知识加深对MCS51单片机内部结构指令系统的理解更进一步掌握汇...

单片机实验报告

单片机实验报告学院信息工程学院专业班级生物医学工程111班姓名学号南昌大学实验报告实验一IO口输入输出实验学生姓名学号班级生医111班实验类型验证综合设计创新实验日期20xx1126实验成绩一实验目的掌握单片机...

单片机实验报告(42篇)