单片机实验报告

单片机实验报告
单片机实验报告

单片机应用系统设计报告题目单片机应用系统设计

学院信息学院

专业电气工程及自动化

班级12电气升本

学生姓名朱婉婉

学号

7月16日至7月28日共11天

13年7月18日

(单片机应用系统设计)

设计任务书

学院:信息学院

班级:12电气升本

学生姓名:朱婉婉学号

指导教师:

时间:2013年7月16日到2013年7月26日

摘要

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

基于这种情况,我们课程设计小组两人多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。

关键词:单片机时钟计时

目录

1、总体功能 (1)

2、实验要求 (1)

二、硬件电路图及说明 (3)

1、硬件电路图 (3)

2、12864LCD液晶显示屏 (3)

3、按键功能 (3)

4、实时时钟芯片S-3530A (3)

三、电路及程序设计 (7)

四、设计特点 (16)

五、调试 (17)

1、主循环程序流程 (3)

2、关于3530读出数据的更改 (3)

3、关于秒表的设置 (3)

4、关于时间的设置 (3)

5、遇到的具体问题 (3)

6、注意事项 (3)

六、总结及体会 (19)

七、使用说明书 (21)

八、程序及简单注解 (22)

1、 (3)

2、 (3)

3、 (3)

一、概述

1、总体功能

本次设计时钟电路,使用了STC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、显示屏即可满足设计要求。

2、实验要求

必做实验内容:

1.使用中文液晶128x64点阵LCD ,采用16点阵字库显示当前时间“时时:分分:秒秒”

2.用4个按键设置现在时间: K1进入设置日期;(K1=1) K2调整年; K3调整月; K4调整日。

K1进入设置现在时间;(K1=2) K2调整小时; K3调整分;

K4调整秒。

K1设置完成(K1=3) 增加

闹铃功能,时间到了使用音乐声(指示灯闪动10秒) 可选实验内容

增加闹铃功能,三次闹铃

增加秒表计数功能,精度为秒-

增加万年历显示“年月日”二月28天、29天 增加星期显示

增加整点闹铃指示灯闪动5次

增加整点闹铃开关 反字 小图形

被设置的数字闪动,其他自己认为可添加的内容 课程设计要求

方案设计前要求完成设计报告,每个组一份; 方案实施过程中完善设计报告,每个成员独立进行;

方案实施结束,经过指导老师验收后完成设计报告,每个成员独立完成,其中设计图纸每个组只需要1份

二、硬件电路图及说明

1、硬件电路图

LCD 时钟控制系统利用C8051F020芯片作为控制中心,配合液晶显示128*64液晶显示模块、独立式键盘模块、实时时钟/

日历芯片模块等电路,实现日历时钟实现显示年月日时

分秒。总体设计方框图如图1所示:

图1

2、12864LCD液晶显示屏

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字也可完成图形显示低电压低功耗是其又一显着特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁

得多,且该模块的价格也略低于相同点阵的图形液晶模块。

12864接口定义及其与C8051F020的接口:

引脚及内部结构如图2所示:

图2液晶显示电路

3、按键电路

K1连接口,K2连接口,K3;连接口,K4连接口

键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。按键开关的抖动问题,键盘与单片机的连接组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。当开关S未被按下时,输入为高电平,S闭合后,输入为低电平。而按键会有抖动现象,因此必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法。软件法其实很简单,就是在单片机获得口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。本次实验去抖动采用软件方式。

四个按键分别接到、、和。对于这种键各程序可以采用不断查询的方法,功能就是:检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。

4、实时时钟芯片S-3530A

S-3530是一款低功耗的CMOS实时时钟/日历芯片,它提供二个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动增加。

(1)器件特性:

低工作电流:典型值为μA(VDD=);

世纪标志;

大工作电压范围:~;

BCD码设置时间参数

低休眠电流;典型值为μA(VDD=~时);

稳压电路

报警和定时器;

掉电检测器;

内部集成的振荡器电容;

I2C总线从地址:读:0A3H;写:0A2H;

三、电路与程序设计

1、程序流程图

主程序:

开始

关看门狗程

初始化系统时

初始化定时器

1

开中断

调用函数

TestI2C()

结束

子程序TestI2C():

↓↓Y ↓

↓Y

按键判断程序set_value():

根据设计原则,判断按键并作出相应反应.

闹钟判断程序alarm_check():

判断闹钟是否开,根据闹钟开启数量判断是否到设定时间,若到,则启动LED灯闪四.设计特点:

1.该时钟由四个按键控制,按键功能分明:K1进入设置日期;(K1=1)

K2调整年;

K3调整月;

K4调整日。

K1进入设置现在时间;(K1=2)

K2调整小时;

K3调整分;

K4调整秒。

K1设置完成(K1=3)

进入闹铃设置。

2.秒表采用定时器中断控制,计时精确。K3一次进入秒表。K3两次开始计时。K3三次计时停止。K4退出秒表。

3.显示页面结构清晰,功能明确。平时若无设置,则只显示年月日,时分秒以及星期

4.进入设置后会出现一些提示字符,表述明了。

五.调试:

1.主循环程序流程

实验初期,原来的流程是测试按键,完成所有操作后再刷新显示,进入主循环,但是,这样在测试按键,等待操作时会造成较大的延时。因此该方案未录取。

最后采用的方案是:检测到一次按键,就更改flag和flag1标志位,记录按键次序后就进入主循环,然后继续检测有无按键操作,这样对于程序就基本不会造成延时,而且程序的流程也更清晰。

关于标志位:

flag用来记录之前按键次数和次序

flag=0表示之前无按键操作

flag=1表示K1按一下

flag=2表示K1按两下

flag=3表示K2按一下

flag=4表示K2按两下

flag=5表示K2按三下

flag=6表示K2按四下

flag=7表示K3按一下

flag1表示之前有无按键按下

flag1=1,表示无按键,flag1=0,表示已有按键按下过。

2.关于3530读出数据的更改

遇到的具体问题:时间设置时,10以下的都能正确显示,两位数的就不会正确显示。在设置“时”时,只能加到12,而程序中的时钟为24小时制,所以不正确。原因:3530中读出的数据格式为BCD码,而程序中修改则按照16进制进行。所以会有数据错误。解决方法:在设置时钟时间时,要先读出3530数据,更改后再读入3530中,而3530中的数据存放为BCD码,读出后并不表示时间的真实数据,因此,我编写了两个转化函数:change()将16进制转化为BCD码

fchange()将BCD码转化为16进制

读出数据后先将其转化为16进制,进行操作后再转化为BCD码,读入3530数据更改中,因为“时”的数据表示只需低4位和高4位中的低两位,所以最高2位中会有一些脏数据,在读出后应先与上0x3f再进行转化操作。

3.关于秒表设置

秒表采用定时器1,初值为(65536-18432),并利用一个计数变量miaobiao,初值为10,中断中重新赋初值,每次中断miaobiao减1,减至0时,秒表计数变量加1,miaobiao

重新赋值为10! 4.关于时间的设置

在时间设置时遇到的问题基本上是因为考虑的不够周全,刚开始时,没考虑到闰年,大小月等情况,因此,闰年的二月不能调出29号,大小月也不能区别,遇到这个问题后就开始更改程序的细节问题,使得设置时间时所有的日子都能设置出。

要考虑的设置:年有闰年,平年,月有大小月,星期要随着年,月,日的更改而更改。 5.遇到的具体问题

在运行时,显示屏幕卡屏。只要一运行秒表程序,很快就会使程序卡在某一点。 原因:在原来的中断程序中还有加入显示代码,造成在运行时,显示屏幕卡屏。因为屏幕中显示的时间和秒表分别由两个计数器控制,在刷新时因为计数器冲突而造成了卡屏的现象。

那是因为屏幕中显示的时间和秒表分别由两个计数器控制,在刷新时因为计数器冲突而造成了卡屏的现象。 更改方法:将中断程序中的显示代码取出,直接放在主循环程序中,这样就能顺利运行了。6.注意事项

在设计秒表时,定时器1的主要程序放在文件中,而一些显示程序则在文件中,因此,在调用这些变量时就会出现编译错误。为解决该现象,我在文件中先编写了一个小的调用显示程序,在需要显示时再调用该程序,就解决了变量调用问题。

六.总结及体会:

本次课程设计是用AT89S51单片机CPU 及LCM1602设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了少量困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。学以致用,将从书本上学到的知识应用于实践,学会了初步的电子电路仿真设计虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。当最终调试成功的时候也是对自己的一种肯定。此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了

重点。另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。在我们曾经遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息

七.使用说明书:

该产品为电子时钟,能显示年月日,时分秒及星期,有秒表功能,闹钟功能(注1),会进行整点报时,有四个按键控制功能的选择使用,下文中分别称为K1,K2,K3,K4 按键说明:

K1:进入时间设置

K1按一次,设置年月日 K1按两次,设置时分秒

K2移位,K3加1,K4退出

K1按三次,退出设置

如右图,在时间设置时,屏幕右上角会根据按键操作而出现“时”“分”“秒”“年”“月”“日”提示当前操作的作用对象。 K2:进入闹钟设置

K3选择开闹钟的次数(0-3),若开的闹钟个数为零则表示闹钟关闭

K2进入闹钟时间设置,K3时加,K4分加 再按K2退出

闹钟操作界面如右图:右上角会出现“闹”提示字。 最下一行显示当前设置闹钟时间,闹钟次数,及闹钟开关状况。

K3:开启秒表

K3开始/停止计时

K4退出秒表. 秒表界面:

注1:闹钟功能,本产品闹钟最多能设置3个不同时间,可选择开闹钟的次数,例如,若选择次数为1时,则只会

对闹钟一设置的时间作出反应(LED 灯闪),次数为2时,则对前两个闹钟设定时间作出反应,因此,建议将常用的闹钟时间设在前面.

八.程序及简单注释:

1、

#include"" #include<>

voidDelay1us(unsignedcharus) { while(us) { _nop_();_nop_();_nop_();_nop_();_nop_(); --us; } }

voidSYSCLK_Init(void) {

inti;unsignedchar*I2CDataBuff;

intn=0,i,flag=1,m=0,h,f,hm=0,s=0,bs=0,l=0,q=0,q1=1,h1,h2,f1,f2; charBYTE_NUMBER; SM_BUSY=1;

COMMAND=(CLOCK3530_ADDRESS_RESET|READ); SM_BUSY=1; COMMAND=(CLOCK3530_ADDRESS_DATEHOUR|WRITE); SM_BUSY=1; COMMAND=(CLOCK3530_ADDRESS_DATEHOUR|READ); SM_BUSY=1; SM_BUSY=1;

EIE1|=2; var=GetRealClockStatus(); ResetRealClock(); var=GetRealClockStatus(); SetRealClockStatus(0xc2); var=GetRealClockStatus(); GetRealClock(); SetRealClock(); GetRealClock(); LCD_WriteHZ(32,4,wu);

LCD_WriteHZ(64,4,wu);

LCD_WriteHZ(96,4,wu);

LCD_WriteHZ(32,2,wu);

LCD_WriteHZ(64,2,wu);

LCD_WriteHZ(96,2,wu);

LCD_WriteHZ(64,0,wu);

LCD_WriteHZ(80,0,wu);

LCD_WriteHZ(0,0,wu);

LCD_WriteHZ(112,0,wu);

LCD_WriteHZ(112,2,wu);

LCD_WriteHZ(112,4,wu);

LCD_WriteHZ(0,6,wu);

LCD_WriteHZ(16,6,wu);

LCD_WriteHZ(32,6,wu);

LCD_WriteHZ(112,6,wu);

LCD_WriteHZ(16,0,xiao);

LCD_WriteHZ(32,0,xin);

LCD_WriteHZ(48,0,xi);

LCD_WriteHZ(64,0,xue);

LCD_WriteHZ(80,0,yuan);

LCD_WriteHZ(96,0,xiao);

LCD_DispChar(0,2,1);

LCD_DispChar(8,2,2);

LCD_DispChar(16,2,3);

LCD_DispChar(24,2,0);

LCD_DispChar(32,2,4);

LCD_DispChar(40,2,0);

LCD_DispChar(48,2,0);

LCD_DispChar(56,2,3);

LCD_DispChar(64,2,6);

LCD_WriteHZ(80,2,wu1);

LCD_WriteHZ(96,2,xi1);

LCD_WriteHZ(112,2,zhan);

LCD_DispChar(0,4,1);

LCD_DispChar(8,4,2);

LCD_DispChar(16,4,3);

LCD_DispChar(24,4,0);

LCD_DispChar(32,4,4);

LCD_DispChar(40,4,0);

LCD_DispChar(48,4,0);

LCD_DispChar(56,4,2);

LCD_DispChar(64,4,1);

LCD_WriteHZ(80,4,zhu);

LCD_WriteHZ(96,4,wan);

LCD_WriteHZ(112,4,wan);

for(i=0;i<=30;i++)

Delay1ms(500);

InitLCD();

STA=0;

break;

I2CDataBuff++;

BYTE_NUMBER--;

}

else

{

STO=1; SM_BUSY=0; //FreeSMBus }

break;

//主发送器从地址+WRITE已发送收到NACK

//从器件不应答发送STOP+START重试

caseSMB_MTADDNACK:

STO=1; STA=1;

break;

//主发送器数据字节已发送收到NACK

//从器件不应答发送STOP+START重试

caseSMB_MTDBNACK:

STO=1; STA=1;

break;

//主发送器竞争失败

//不应出现如果出现重新开始传输过程

caseSMB_MTARBLOST:

STO=1; STA=1;

break;

//主接收器从地址+READ已发送,收到ACK

caseSMB_MRADDACK:

AA=1;//在应答周期ACK

if(!BYTE_NUMBER)

{

STO=1; SM_BUSY=0;//释放SMBus

}

break;

//主接收器从地址+READ已发送收到NACK

//从器件不应答发送重复起始条件重试

caseSMB_MRADDNACK:

STA=1;

break;

//收到数据字节ACK已发送

//该状态不应出现因为AA已在前一状态被清0如果出现发送停止条件caseSMB_MRDBACK:

if(BYTE_NUMBER)

{

*I2CDataBuff=revolve(SMB0DAT);

I2CDataBuff++;

BYTE_NUMBER--;

}

if(!BYTE_NUMBER) AA=0;

break;

//收到数据字节NACK已发送

//读操作已完成读数据寄存器后发送停止条件

caseSMB_MRDBNACK:

STO=1;

SM_BUSY=0;//释放SMBus

break;

//在本应用中所有其它状态码没有意义通信复位

default:

STO=1;//通信复位

SM_BUSY=0;

break;

}

SI=0;//清除中断标志

}

3、

#include""

#include<>

#defineLCD_DATAP2

#defineLCD_RSP10

#defineLCD_RWP11

#defineLCD_EP12

#defineLCD_CS1P13

#defineLCD_CS2P14

#defineLCD_RSTP15

voidDelay1ms(unsignedchar);

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验报告书

并行I/O 接口实验 一、 实验目的 熟悉掌握单片机并行I/O 接口输入和输出的应用方法。 二、 实验设备及器件 个人计算机1台,装载了 Keil C51集成开发环境软件。 机仿真器、编程器、实验仪三合一综合开发平台 1台。 、实验内容 (1)P1 口做输出口,接八只发光二极管,编写程序,使发光二极管延时 (0.5-1秒)循环点亮。实验原理图如图 3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY 、 LED1 P1.0 VCC T a LED2 r 1k P1.1 .LED8 1k P1. 7 U1 DP-51PRO.NE 单片

RL A

DJNZ R2,L00P LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的 编写方法。 、实验设备及器件 个人计算机 1 台,装载了 Keil C51 集成开发环境软件。 DP-51PR0.NE 单片机仿真器、编程器、实验仪三合一综合开发平台 1台 三、实验内容 AT eK 1 -LJIU1L AUDIOZ20H A^-: M02NP01[EF L^D-GR^NI LEDRSP ■艮 A 4 - i i H - 330 -T I P H T H rs&oRJEtw F 轉-3 BEEN ■jHEEFl U1 30. Pt B -4 PUjfl PO(WO PO.WAtH FQ.27AIE FO3W3 Robert FO.57AW POBWe POJAW F2.1TO F2^fA10 PSjUAH P2 剤MZ F2.5fA13 F2.afAM P2.MM6 P3J0URXD 啊1XW FJ- ZflUTD pa.anHTi FM 4T 「| P3.0>T1 P3JWM PSJ^D 33C> 33P 町E 4 阿5REEF4 XTAL2 RST PSEH ALE

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

实验报告(单片机实验报告)

1 双字节无符号数加法 例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5), R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h) 假设其和不超过16位。请编程。 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验报告

实验报告 专业:计算机科学与技术班级:C093 姓名:孙丽君 学号:098677

实验一:数据传送实验 1.实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV@R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H

MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 3.实验结果: 4. CPU 对8031内部RAM存储器有哪些寻址方式? 答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH内容:A0~AF 内部RAM 50H~5FH内容:A0~AF 实验二多字节十进制加法实验 1.实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG0000H RESET: AJMP MAIN ORG0100H MAIN: MOV SP, #60H MOV R0, #31H MOV@R0, #22H DEC R0 MOV@R0, #33H

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实训心得体会

单片机实训心得体会 篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。 踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。 但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。 这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过

程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。 篇二:单片机实验心得 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。 (4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。 (5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.360docs.net/doc/c510689889.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.360docs.net/doc/c510689889.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; 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--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

工作报告之大学单片机实验报告

大学单片机实验报告 【篇一:单片机实验报告】 单片机实验报告 姓名:班级:学号:任课教师:上课地点: 实验一流水灯实验 一、实验目的及要求 1、闪烁的led; 2、从左到右的流水灯; 3、8只led左右来回点亮; 4、led模拟交通灯。 要求1:led按设定的时间间隔闪烁 要求2:接在p0口的8个led从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果; 二、实验原理电路图1、 电路图2、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit led=p1^0; //延时 void delayms(uint x) { uchar i; while(x--) {for(i=0;i120;i++); } } //主程序 void main() { while(1) {led=~led;delayms(150); } } 要求2: #include reg51.h #include intrins.h //包含程序中的_cror_(p0,y) #define uchar unsigned char #define uint unsigned int uchar led; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j-- )for(k=125;k0;k--); } void main() { led=0x7f;//只亮第一个 delay(1000); while(1) { p0=led; delay(500); led=_cror_(led,1);//p0逐步右移一位。} } 要求3: #include reg51.h

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机实验报告书

并行I/O接口实验 一、实验目得 熟悉掌握单片机并行I/O接口输入与输出得应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。DP—51PRO、NET 单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0、5-1秒)循环点亮。实验原理图如图3、2-1所示。 图3、2—1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 ??MOV A,#0FEH LOOP:MOV P1,A ??LCALL DELAY ??RL A

???DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOVR6,#20 D2:MOVR7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 ?RET ?END 中断实验 一、实验目得 熟悉并掌握单片机中断系统得使用方法,包括初始化方法与中断服务程序得编写方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。 DP-51PRO、NET单片机仿真器、编程器、实验仪三合一综合开发平台1

台. 三、实验内容 (2) 用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG0000H LJMPMAIN ORG 0003H LJMPINT00 ORG 0010H MAIN: A1:MOVA,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3、2,B1 SETB IT0 ?SJMP C1 B1:CLR IT0 C1:SETB EA ?NOP SJMPA1 INT00:PUSH Acc PUSH PSW MOV R2,#8 ?MOV A,#0FEH LOOP: MOV P1,A LCALLDELAY RL A DJNZ R2,LOOP POP PSW

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

单片机实验报告

实 验 报 告 实验课程:单片机原理及应用 班级: 12自动化2班 学号: 姓名: 教师:张玲 成绩: 实验日期:年月日 实验名称:实验1——计数显示器 一、实验目的: 学习Proteus 软件的使用,掌握单片机原理图的绘图方法。 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图; 3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验

1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microproces sor ICs “U1”80C51 Miscellaneo us “X1”/12MHz CRYSTAL Capacitors“C1”~“C2” /1nF CAP Capacitors“C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors“R1”/100ΩRES Optoelectro nics “LED1”~ “LED2” 7SEG-COM-CAT-G RN Switches & Relays “BUT”BUTTON 1、编程思路及C51源程序:

2、电路原理图: 3、仿真运行效果展示:

4、实验小结: 熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法, 学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原 理图的绘制。

哈尔滨工业大学单片机实验报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y 单片机原理与应用 实验报告 学生姓名: 学号: 班级: 通信工程 专业: 任课教师: 所在单位: 电子与信息工程学院 月5年2013. 软件实验 在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。 实验一清零程序 一、实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容 把2000~20FFh的内容清零。 三、程序框图

四、实验过程 1、LED环境 ⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。. 2、PC环境 在与PC联机状态下,编译、连接、下载PH51\se01.asm,用连续或单步方式运行程序。 3、运行结果检查 ⑴在单步运行时,每走一步可观察其运行结果。 ⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~20FFH 中执行程序前后的内容变化。 五、实验结果及分析 实验前截图: 实验后截图:

: 实验源程序ORG 0640H SE01: MOV R0,#00H DPTR MOV DPTR,#2000H ;(2000H送(DPTR 送LOO1: MOVX @DPTR,A ;0INC DPTR ;DPTR+1 1 INC R0 ;字节数加个字节再清FF不到CJNE R0,#00H,LOO1 ; SJMP $ END 实验问题:2000H~20FFh中的内容是什么? 解答:实验运行之前,2000H~20FFh中的内容是随机分配的;在执行完清零程序之后, 2000H~20FFh中的内容都变为0. 实验二拆字程序 一、实验目的 掌握汇编语言设计和调试方法。 二、实验内容 把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。 三、程序流程

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导 实验三调度器设计基础 一、实验目的和要求 1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。 2.掌握Keil与Proteus的联调技巧。 3.掌握串行通信在单片机系统中的使用。 4.掌握调度器设计的基础知识:函数指针。 二、实验设备 1.PC机一套 2.Keil C51开发系统一套 3.Proteus 仿真系统一套 三、实验内容 1.甲机通过串口控制乙机LED闪烁 (1)要求 a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时 闪烁,关闭所有的LED。 b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。 i.甲机发送“A”,控制乙机LED1闪烁。 ii.甲机发送“B”,控制乙机LED2闪烁。 iii.甲机发送“C”,控制乙机LED1,LED2闪烁。 iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。 c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。两机的程序要 分别编写。 d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下: i.设置串口模式(SCON) ii.设置定时器1的工作模式(TMOD) iii.计算定时器1的初值 iv.启动定时器 v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图 Figure 1 甲机通过串口控制乙机LED闪烁的原理图 (3)程序设计提示 a.模式1下波特率由定时器控制,波特率计算公式参考: b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。 2.单片机与PC串口通讯及函数指针的使用 (1)要求: a.编写用单片机求取整数平方的函数。 b.单片机把计算结果向PC机发送字符串。 c.PC机接收计算结果并显示出来。 d.可以调用Keil C51 中的printf来实现字符串的发送。 e.单片机的数码港显示发送的次数,每9次清零。

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

单片机实验报告

课程设计课程名称单片机原理及应用 课题名称基于1602电子时钟设计 专业电子信息工程 班级 学号 姓名 指导老师 2017年12月21日 电气信息学院

课程设计任务书 课题名称基于1602电子时钟设计 姓名专业电子信息工程班级学号 指导老师 课程设计时间2017年12月4日-2017年12月15日(14、15周) 教研室意见意见:审核人: 一、任务及要求 设计任务: 以单片机为核心设计一个电子时钟。能焊接开发板的同学,在开发板上进行调试。 (1)时间显示在1602液晶上,并且按秒实时更新。 (2)使用按键随时调节时钟的时、分、秒,按键可设计三个有效键,分别为功能选择键、数值增大键和数值减小键。 (3)每次有键按下时地,蜂鸣器都以短“滴”声报警。 (4)如何继续断电前的时间。 设计要求: (1)确定系统设计方案; (2)进行系统的硬件设计; (3)完成必要的参数计算与元器件选择; (4)开发板焊接及测试 (5)完成应用程序设计; (6)应用系统的硬件和软件的调试。

二、进度安排 第一周: 周一:集中布置课程设计相关事宜,并查阅、收集相关设计资料。 周二:系统方案设计。 周三~周五:实验室进行硬件设计,软件设计及调试。 第二周: 周一~周二:实验室系统仿真及硬件调试。 周三:实验室检查调试结果。 周四:撰写设计报告。 周五:进行答辩和上交设计说明书。 三、参考资料 1、周向红.51系列单片机应用与实践教程.北京航空航天大学出版社.2008.5 2、周向红.51单片机课程设计.华中科技大学出版社.2011.1 3、王迎旭.单片机原理及应用(第2版).机械工业出版社.2012.2 4、郭天祥.51单片机C语言教程(入门提高开发拓展全攻略).电子工业出版社.2012.1 5、樊思奇.80C51单片机C语言程序设计完全手册.电子工业出版社.2014.5 6、彭伟.单片机C语言程序设计实训100例基于8051+Proteus仿真.电子工业出版社.2009.6 7、孙安青.MCS-51单片机C语言编程100例(第二版).中国电力出版社.2017.6 8、赵建领.零基础学单片机C语言程序设计.机械工业出版社.2012.9

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

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

第二节课: 实验一: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++); //延时程序 } }

单片机实验报告

哈尔滨师范大学计算机科学与信息工程学院 实验报告手册 课程名称:嵌入式系统原理与应用指导教师:王洪侠 专业:计算机科学与技术20 18 年—20 19 年第 1 学期姓名:吴晗学号:2016040860 年级:2016级班级: 2 班

实验报告内容 实验题目:P1口输出实验 实验目的:通过实验了解P1口做为输入输出方式使用时,CPU对P1口的操作方式 实验要求:控制8个LED灯,完成从左到右然后从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 1.单片机由P2口控制流水灯 2.根据题目要求实现每点亮一盏灯就熄灭前一盏 3.套用循环实现从左到右的动态流水式亮灯 4.完成从左到右再从右到左再从左刀右流水亮灯 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0xfe; delay(50000); // while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<

相关文档
最新文档