单片机实验报告含仿真设计

合集下载

单片机实验报告

单片机实验报告
unsigned int second;
unsigned int count;
void display(unsigned int d);
void delay(unsigned int n);
main()
{
second=0;
count=0;
TMOD=0x61; //T0定时器方式1 T1计数器方式2
TH1=255; TL1=255; //T2计数初值计一次即中断
}
else
{TR1=0;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;} //满一分钟停止TR1
}
void time1(void)interrupt 3 using 2
{
second++;
}
void int_1() interrupt 0 using 3 //0号中断(外中断0),使用3号寄存器组
{
display(second);
}
}
void time0(void) interrupt 1 using 1
{
count++; //中断一次计一次数
if(count<1200)
{
TH0=(65536-50000)/256; //T1计数初值(65535-50000)/fosc/12 50ms
TL0=(65536-50000)%256;
outdata[2]=10; //不显示
outdata[3]=d/10000; //取最高位
outdata[4]=d/1000%10; //取次高位
outdata[5]=d/100%10; //取次次高位
outdata[6]=ቤተ መጻሕፍቲ ባይዱ/10%10; //取次低位

proteus单片机实验报告

proteus单片机实验报告

proteus单片机实验报告
Proteus单片机实验报告
一、实验目的
本次实验旨在通过Proteus单片机仿真软件,探索单片机的基本原理和应用,加深对单片机工作原理的理解,提高对单片机编程的熟练程度。

二、实验内容
1. 搭建单片机电路
在Proteus中选择合适的单片机模型,搭建基本的单片机电路,包括单片机、晶振、电源等。

2. 编写程序
利用Proteus提供的编程环境,编写简单的单片机程序,如LED灯闪烁、数码管显示等。

3. 仿真调试
通过Proteus的仿真功能,调试程序,观察单片机在仿真环境下的运行情况,检查程序是否正常运行。

三、实验步骤
1. 打开Proteus软件,选择合适的单片机模型,搭建单片机电路。

2. 编写简单的单片机程序,如让LED灯交替闪烁。

3. 在Proteus中进行仿真调试,观察程序运行情况。

四、实验结果
通过实验,我们成功搭建了单片机电路,并编写了简单的程序。

在Proteus的仿真环境下,LED灯按照设定的程序交替闪烁,证明程序正常运行。

五、实验总结
通过本次实验,我们加深了对单片机的理解,掌握了在Proteus中搭建单片机电路、编写程序并进行仿真调试的基本方法。

同时,也提高了对单片机编程的熟练程度。

总之,Proteus单片机实验为我们提供了一个良好的学习平台,使我们能够更好地理解单片机的工作原理和应用,为以后的学习和实践打下了坚实的基础。

希望通过不断地实践和探索,能够更深入地理解单片机的原理,并在实际应用中发挥其巨大的作用。

单片机仿真实验报告

单片机仿真实验报告
单片机仿真实验报告
一、功能描述:
用P1口控制8个LED灯的两灭。其亮灭规律如下:
第一次8个灯依次点亮,第二次每隔一个灯点亮,第三次每隔三个灯点亮……如此循环。
二、器件简介:
80c51----采用40引脚双列直插式DIP,内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。
此外,该仿真中还使用了电阻,电容,电解电容,晶振,红色的LED和按键开关。
三、硬件原理图
四、软件流程图
五、程序代码
#include <REG51.H>
void Delay(unsigned int d)
{
unsigned int i,j;
for(i=0;i<d;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char m =0,n=0,l=0;
while(1)
{
for(n=1;n<7;n++)
{m=0;
for(l=0;l<(8/= ~(0x01<<m);
m = (m+n)%8;
Delay(500);
}
}
}
}
六、仿真截图

单片机设计报告-带有C语言源程序和proteus仿真图

单片机设计报告-带有C语言源程序和proteus仿真图

单片机课程设计报告河南农业大学机电工程学院目录一、前言—————————————————————3二、功能简介——————————-——————————4三、应用模块————————————————————-5四、设计方框图———————————————————-5五、硬件电路—————————————————————51、键盘部分————————————————————62、LED显示电路——————————————————73、数码管程序——————————————————74、I2C总线AT24C02 ————————————————8六、总图—————————————————————8七、硬件实现图形————————————————9八、程序—————————————————————10九、心得体会———————————————————23十、参考文献———————————————————24课题名称:掉电保护密码锁一、前言:在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点。

在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。

随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。

随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。

单片机仿真实习报告

单片机仿真实习报告

一、实习目的本次单片机仿真实习的主要目的是通过使用仿真软件,对单片机的原理和应用进行深入理解。

通过模拟单片机的实际工作过程,掌握单片机的基本编程方法和调试技巧,提高实际操作能力,为后续单片机相关课程的学习和工作打下坚实基础。

二、实习内容1. 仿真软件介绍本次实习采用Proteus软件进行仿真实验,Proteus是一款功能强大的仿真软件,能够模拟单片机的硬件电路,并提供丰富的编程环境。

2. 实验项目一:LED灯闪烁(1)设计目的:掌握单片机基本编程方法,实现LED灯的闪烁。

(2)实验步骤:a. 创建Proteus仿真项目,添加AT89C51单片机、LED灯和电源等元件。

b. 编写程序,设置单片机的工作模式,通过P1端口控制LED灯的亮灭。

c. 在Proteus中运行程序,观察LED灯的闪烁效果。

3. 实验项目二:按键输入(1)设计目的:学习按键输入的原理,实现按键控制LED灯的亮灭。

(2)实验步骤:a. 在Proteus中添加按键元件,并将其与单片机的P1端口连接。

b. 编写程序,检测按键状态,通过P1端口控制LED灯的亮灭。

c. 在Proteus中运行程序,观察按键控制LED灯的效果。

4. 实验项目三:温度传感器(1)设计目的:学习温度传感器的应用,实现温度显示和报警功能。

(2)实验步骤:a. 在Proteus中添加DS18B20温度传感器,并将其与单片机的P1端口连接。

b. 编写程序,读取温度传感器的数据,通过LCD显示屏显示温度值。

c. 设置温度报警阈值,当温度超过阈值时,LED灯闪烁报警。

5. 实验项目四:数码管显示(1)设计目的:学习数码管的应用,实现数字显示功能。

(2)实验步骤:a. 在Proteus中添加数码管元件,并将其与单片机的P1端口连接。

b. 编写程序,将数字数据显示在数码管上。

c. 在Proteus中运行程序,观察数码管显示效果。

三、实习总结1. 通过本次仿真实习,我对单片机的原理和应用有了更深入的理解,掌握了单片机的基本编程方法和调试技巧。

单片机实验报告

单片机实验报告

一、实验目的1. 熟悉单片机的硬件组成和基本工作原理。

2. 掌握单片机最小系统的搭建方法。

3. 学习使用单片机编程软件进行程序编写和调试。

4. 通过实际操作,加深对单片机应用的理解。

二、实验环境1. 实验设备:MCS-51单片机实验板、电源模块、面包板、连接线、LED灯、蜂鸣器、按键等。

2. 软件环境:Keil uVision5、Proteus仿真软件。

三、实验内容1. 点亮LED灯(1)实验目的:掌握单片机I/O口的使用,实现LED灯的点亮。

(2)实验步骤:① 将LED灯的阳极连接到单片机的P1.0口,阴极连接到GND。

② 在Keil uVision5中新建工程,编写程序如下:```cvoid main() {while (1) {P1 = 0xFF; // 点亮LED灯delay(500000); // 延时P1 = 0x00; // 熄灭LED灯delay(500000); // 延时}}③ 将程序编译并下载到单片机中,观察LED灯的点亮效果。

2. 蜂鸣器控制(1)实验目的:掌握单片机I/O口的使用,实现蜂鸣器的控制。

(2)实验步骤:① 将蜂鸣器的正极连接到单片机的P1.1口,负极连接到GND。

② 在Keil uVision5中编写程序如下:```cvoid main() {while (1) {P1 = 0x02; // 使能蜂鸣器delay(100000); // 延时P1 = 0x00; // 禁止蜂鸣器delay(100000); // 延时}}```③ 将程序编译并下载到单片机中,观察蜂鸣器的鸣叫效果。

3. 按键扫描(1)实验目的:掌握单片机I/O口的使用,实现按键的扫描和识别。

(2)实验步骤:① 将两个按键分别连接到单片机的P1.2和P1.3口。

② 在Keil uVision5中编写程序如下:void main() {while (1) {if (P1 & 0x04) { // 检测按键1是否按下// 执行按键1按下后的操作}if (P1 & 0x08) { // 检测按键2是否按下// 执行按键2按下后的操作}}}```③ 将程序编译并下载到单片机中,观察按键的扫描和识别效果。

单片机项目实训实验报告

单片机项目实训实验报告

一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。

为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。

本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。

二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。

(2)编写计算器的软件程序,实现四则运算功能。

(3)测试计算器的功能,确保其正常运行。

2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。

主要包括以下步骤:1)选择合适的ATmega16单片机开发板。

2)设计矩阵键盘电路,包括按键布局和连接方式。

3)设计LCD1602显示屏电路,包括数据线和控制线。

4)将以上电路连接到ATmega16单片机开发板上。

(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。

2)初始化LCD1602显示屏,显示“0”作为初始值。

3)编写矩阵键盘扫描程序,检测按键状态。

4)根据按键输入,执行相应的四则运算。

5)将运算结果显示在LCD1602显示屏上。

6)实现清零、退格等功能。

(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。

2)连接计算器硬件电路,进行功能测试。

3)针对测试过程中发现的问题,进行调试和修改。

4)确保计算器能够正常运行,实现预期功能。

三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。

单片机仿真模拟实验报告

单片机仿真模拟实验报告

计算机专业类课程实验报告课程名称:单片机原理及应用学院:数学科学学院专业:数学与应用数学学生姓名:梁南学号:2011101020013指导教师:米源日期:2016年4月15日电子科技大学实验报告实验一一、实验名称:秒表设计二、实验学时:4三、实验内容和目的:设计一个秒表,可以利用按键实现开始、停止计时的功能。

四、实验原理:该实验要求进行计时并在数码管上显示时间,用AT89C51单片机来实现,按设计要求本实验要采用四个按键,其中复位按键在电路中,不需要再用程序控制,在用protues仿真时用不到,其他三个按键可以用I/O端口来控制,写上其对应的程序,延时一秒钟可以用中断来控制,计算好中断次数.写程序时要加上防止按键抖动程序,选择好数码管的显示方式,分为静态和动态,想减少I/O 口的使用就用动态,想编程简单就是用静态,五、实验器材(设备、元器件)proteus模拟六、实验步骤:用proteus和keil实现联调,做软件仿真七、实验数据及结果分析:一些子程序的设计1)、显示精度为1秒程序if(++countor==20) { countor=0;ViewData[0]=Tab[seconed/10];ViewData[1]=Tab[seconed%10];++seconed;2)、消除按键抖动程序keynum=P1;if(keynum!=0xff){ delay(10);temp=P1;if(keynum==temp)八、实验结论、心得体会和改进建议:相比正常时间流动,该仿真的结果反而慢一些,具体尚不明白原因。

在设计中有好多问题都是因为理论知识不扎实,在有些管脚的置零置一上,概念的模糊,这使我明白要把所学到的理论转化为实践需要一段努力学习的过程;在做一个设计的过程中,一定要注意理论和实践同步进行,光有理论知识还是远远不够的电子科技大学实验报告实验二一、实验名称:两位数加法器二、实验学时:4三、实验内容和目的:设计并用proteus实现一个两位数加法器四、实验原理:计数器是一种重要的时序逻辑电路,它不仅计数,而且用作定时控制及进行数字运算等。

单片机实验电子变色龙设计代码仿真实验报告

单片机实验电子变色龙设计代码仿真实验报告

单片机实验电子变色龙设计代码仿真实验报告设计一个电子变色龙系统,可以根据环境的颜色实时改变自身的颜色,并通过仿真验证该系统的设计。

以下是详细的实验报告,包括设计原理、电路图、代码以及仿真结果。

实验名称:电子变色龙系统的设计与仿真一、设计原理:电子变色龙系统是一个能够根据环境颜色实时改变自身颜色的系统。

该系统由一个单片机、两个RGBLED、一个颜色传感器和几个电阻组成。

单片机通过颜色传感器获取环境颜色信息,然后根据环境颜色信息控制RGBLED显示相应的颜色。

二、电路图:请参考附件中的电路图。

三、代码设计:```c#define RED_PIN 1 //定义红色引脚#define GREEN_PIN 2 //定义绿色引脚#define BLUE_PIN 3 //定义蓝色引脚void delay(unsigned int i)while(i--);void mainunsigned char red = 0; //红色值unsigned char green = 0; //绿色值unsigned char blue = 0; //蓝色值unsigned int color; //环境颜色值while(1)color = get_color(; //从颜色传感器获取环境颜色值if(color == 0x00FF00) //如果环境颜色为绿色red = 0;green = 255;blue = 0;}else if(color == 0x0000FF) //如果环境颜色为蓝色red = 0;green = 0;blue = 255;}else if(color == 0xFF0000) //如果环境颜色为红色red = 255;green = 0;blue = 0;}else //其他颜色red = 255;green = 255;blue = 255;}set_color(red, green, blue); //设置RGB LED的颜色delay(1000); //延时1秒钟}void set_color(unsigned char red, unsigned char green, unsigned char blue)RED_PIN = red;GREEN_PIN = green;BLUE_PIN = blue;unsigned int get_color//读取颜色传感器的数值//返回读取到的环境颜色值```四、仿真结果:将上述的代码导入仿真软件进行仿真,可以展示出电子变色龙系统随环境颜色实时改变的效果。

单片机实验报告

单片机实验报告

实验1 二进制到BCD转换一、实验目的学习星研Star16L仿真器系统的基本操作,熟悉EL-Ⅱ型通用接口板实验电路,掌握简单的数值转换算法。

二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路。

三、实验内容1)将给定的一个单字节二进制数(存放在R2中), 转换成非压缩的二—十进制(BCD)码, 并存放到R3R4R5中。

2)(选作)将给定的一个双字节二进制数(存放在R2R3中), 转换成压缩的二—十进制(BCD)码, 并存放到R4R5R6中。

四、实验方法1.将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统1)仿真器与仿真头的硬件连接:STAR16L仿真器与仿真头PODPH51(DIP)用两根40芯扁平电缆连接, 注意电缆插头的方向。

参见下图。

仿真头PODPH512)仿真头与EL-Ⅱ型通用接口板的硬件连接: 将EL-Ⅱ型通用接口板的8051CPU芯片拔下, 将仿真头PODPH51插入该CPU插座(40脚DIP),注意芯片的上下方向8051CPU3)仿真器与微机的连接: 通过USB接口将微机与仿真器相连, 打开仿真器电源。

仿真器与微机的第一次连接将自动引导安装程序, 在该驱动程序的安装过程中, 请勿执行其它应用程序。

2 、单片机仿真系统运行调试通过双击微机桌面的星研图标, 或通过开始菜单, 起动星研仿真系统程序, 通过输入程序, 编译通过后, 进入调试状态, 打相应的观察窗口, 观测CPU内部各个寄存器, 存储器以及外部存储器的状态, 通过单步或断点运行, 验证程序运行的正确性, 并修正错误。

五、参考程序清单及框图1)单字节二进制到非压缩BCD;NAME T1_1_BCDORG 0000H ;0100H不能用, 与星研软件冲突??BCD1: MOV A, R2 ;二进制数送AMOV B, #100 ;100作为除数送入BDIV ABMOV R3, A ;百位数送R3, 余数在B中MOV A, #10 ;分离十位和个位数XCH A, B ;余数送A, 除数10在B中DIV AB ;分离出十位在A, 个位在B中MOV R4, A ;十位送R3MOV A, BMOV R5, A ;个位送R4NOPLJMP BCD1END2)(选作)双字节二进制到压缩BCD;NAME T1_2_BCDORG 0000HBCD2: CLR AMOV R4, AMOV R5, AMOV R6, AMOV R7, #16LOOP: CLR CMOV A, R3RLC AMOV R3, AMOV A, R2RLC AMOV R2, AMOV A, R6ADDC A, R6DA AMOV R6, AMOV A, R5ADDC A, R5DA AMOV R5, AMOV A, R4ADDC A, R4DA AMOV R4, ADJNZ R7, LOOPLJMP BCD2END参考程序框图单字节二进制数转换成非压缩BCD码六、实验要求1.基本内容: 按照实验要求连接系统, 编制程序并运行, 说明如何利用仿真器验证程序的正确性。

Proteus硬件仿真(单片机控制流水灯)实 验 报 告

Proteus硬件仿真(单片机控制流水灯)实 验 报 告

湖州师院Proteus硬件仿真(单片机控制流水灯)实验报告姓名汪健雷班级092833学号07083438一、实验目的1、了解proteus软件,掌握Proteus在单片机仿真中的应用,为开发、调试单片机应用系统做准备。

2、熟练掌握isis环境电路图的建立(流水灯电路图)二、实验仪器1、PC机2、proteus仿真软件三、实验内容1、选择元器件,画出电路图,学会硬件的设计2、在仿真软件上实现相应的功能四、实验步骤1、软件打开2、双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional”→“ISIS 7 Professional”,出现如图所示界面,随后就进入了Proteus ISIS集成环境。

2、Proteus ISIS的工作界面是一种标准的Windows界面,如图1-2所示。

包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

3、添加元器件将所需元器件加入到对象选择器窗口。

Picking Components into the Schematic单击对象选择器按钮,根据元件预览区域的显示,双击你所需要的元件,则所选元件出现在原理图编辑环境的元件列表区中,如图所示。

用同样的方法找出原理图中需要的所有元件。

4、放置元器件放置元器件至图形编辑窗口Placing Components onto the Schematic 在对象选择器窗口中,选中AT89C51,将鼠标置于图形编辑窗口该对象的欲放位置、单击鼠标左键,该对象被完成放置。

其他元器件放置方法相同。

单片机实训教程实验报告

单片机实训教程实验报告

一、实验目的1. 熟悉单片机的基本结构和工作原理。

2. 掌握单片机的编程方法,包括C语言和汇编语言。

3. 学习单片机的接口技术和应用系统设计。

4. 培养动手能力和解决实际问题的能力。

二、实验环境1. 单片机开发系统:STC89C52单片机开发板2. 编译器:Keil uVision3. 调试器:Proteus4. 实验指导书:《单片机实训教程》三、实验内容1. 单片机基本原理实验(1)实验目的:了解单片机的结构、工作原理和引脚功能。

(2)实验步骤:1)搭建实验电路,连接单片机开发板与Proteus仿真软件;2)编写程序,设置单片机的工作模式;3)通过Proteus仿真软件观察单片机的运行状态。

(3)实验结果:通过仿真软件,观察到单片机能够按照程序的要求进行运行,实现了实验目的。

2. 单片机C语言编程实验(1)实验目的:掌握单片机的C语言编程方法。

(2)实验步骤:1)在Keil uVision中创建新项目,选择STC89C52单片机;2)编写C语言程序,实现LED灯闪烁功能;3)编译、烧录程序到单片机,观察LED灯闪烁效果。

(3)实验结果:程序编译成功,烧录到单片机后,LED灯按照预期进行闪烁,实现了实验目的。

3. 单片机汇编语言编程实验(1)实验目的:掌握单片机的汇编语言编程方法。

(2)实验步骤:1)在Keil uVision中创建新项目,选择STC89C52单片机;2)编写汇编语言程序,实现LED灯闪烁功能;3)编译、烧录程序到单片机,观察LED灯闪烁效果。

(3)实验结果:程序编译成功,烧录到单片机后,LED灯按照预期进行闪烁,实现了实验目的。

4. 单片机接口技术实验(1)实验目的:了解单片机的接口技术,掌握常用接口的编程方法。

(2)实验步骤:1)搭建实验电路,连接单片机开发板与外部设备;2)编写程序,实现单片机与外部设备的通信;3)通过Proteus仿真软件观察通信过程。

(3)实验结果:通过仿真软件,观察到单片机与外部设备能够成功通信,实现了实验目的。

单片机仿真报告

单片机仿真报告

单片机数字采集控制系统——基于单片机的数字温度计系别:电子信息工程系班级:电子本1015姓名:曹泽旭学号:1032081503基于单片机的数字温度计一.系统用途基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。

用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。

获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。

二.组成部分控制部分:采用单片机AT89C52,其具有低电压供电、体积小等特点显示电路:显示电路采用LED液晶显示数码管,从P3RXD,TXD串口输出段码。

显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用p3的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄存器驱动,显示比较清晰。

温度传感器部分:采用DS18B20,输出信号全数字化,便于单片机处理及控制,在0—100 摄氏度时,最大线形偏差小于1 摄氏度,并且单总线的数据传输,可直接与计算机连接。

三.软件系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。

从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。

二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。

图5-1 主程序流程图18B20初始化流程图四.总结1.仿真结果图2.心得本实验是基于80C51单片机的数字温度计控制系统的设计,对整个硬件电路和软件程序设计做了分析,文中介绍了数字温度计的现状及发展,介绍了仿真软件proteus及keil的基本知识,学习了proteus的仿真方法和步骤,介绍了数字温度计的设计方案选择及原理介绍,加深了51单片机的知识了解,学习了数字温度传感器DS18B20,设计软件仿真,更直观的反应设计的正确性。

单片机仿真实验报告

单片机仿真实验报告

单片机仿真实验报告1.作业要求:通过T1和T0定时器中断实现对外部按键输入做出反应。

实现10以内的循环递增和递减,并且显示在数码管中。

P3.4/T0:按下键,数码管显示数字加一,从0到9。

当到达9时再加1,变为0。

P3.5/T1:按下键,数码管显示数字减一,从9到0。

当到达0时再减一,变为9。

2.设计思路:用定时器的内触发方式来实现中断,用以实现对外部按键的反应。

其思路是:定时器经过一定时间的时延后,溢出,内部中断被触发。

在中断服务程序中查看P3.4和P3.5的状态,对应的状态实现对应的功能。

注意:(中断使用电平触发,其中时延时间应小于等于外部按键按下产生电平变化的时间,才能保证按键每次按下有效。

在实验过程中可以不断调节实验时间,已达到要求的效果。

)程序思路步骤:(1)把数码管要显示的0-9,做成一个数组,方便调用。

(2)设置定时器T0和T1为中断方式1,选择合适的初值赋给定时器,开中断开关。

(3)中断被触发后,查看外部按键按下的是什么,在中断执行程序里,写入每个按键对应的程序。

(T0对应数码管显示的数递增,T1对应数码管显示的数递减。

)3.特殊功能寄存器的设置:中断允许寄存器IEEA全局中断允许位,此次取EA=1ET0定时器/计数器0中断允许位,此次取ET0=1ET1定时器/计数器1中断允许位,此次取ET1=1中断优先级寄存器IP本实验不用设置,可使用默认值。

定时器/计数器工作方式寄存器TMODM1 M0 工作方式C/T 功能选择。

为0时定时器方式,为1时计算器方式。

GATE 门控位。

为0时,只要控制TR0或TR1置1即可开始相应定时器,为1时则还需考虑INT0/INT1本次试验令TMOD=01010101定时器选工作方式1,为16位定时器。

定时器/计数器控制寄存器TCON本实验不用设置,可使用默认值。

ORG 0000HLJMP MAINORG 000BHLJMP TSRV0ORG 001BHLJMP TSRV1ORG 0030HMAIN:SETB EA //开总中断SETB T0 //开定时器0SETB T1 //开定时器1SETB ET0 // 启动T0中断SETB ET1 //启动T1中断SETB TR0 //开TL0SETB TR1 //开TH0SETB P1.0SETB P1.1SETB P1.2MOV DPTR,#TABLE //将表格中数据存放MOV R1,#0MOV A ,R1MOVC A,@A+DPTR //间接访问MOV R2,AMOV TMOD, #55H // 选择工作方式1MOV TL1, #(65536-1) MOD 256 //赋TL1初值MOV TH1, #(65536-1)/256 //赋TH1初值,延时一个机器周期(1us)MOV TL0, # (65536-1) MOD 256 //赋TL0初值MOV TH0, # (65536-1)/256 //赋TH0初值,延时一个机器周期(1us)LOOP:MOV P0,R2 //把R2数据放到P0中NOP //空运行NOPNOPSJMP LOOP //跳转到LOOPTSRV0:INC R1 //R1 加一CJNE R1,#10,RETURN //判断R1是否到10 若为10执行下面,否则跳转到RETURN。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及应用课程实验报告专业:班级::学号:实验一、keilC51及proteus软件的使用一、实验目的:1、掌握keil和proteus软件的基本操作2、通过具体实例掌握keil和proteus软件的使用。

二、实验原理: keil使用步骤,proteus使用步骤三、程序:四、实验结果分析:五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus软件进行仿真的步骤。

实验二、并行输入/输出接口实验一、实验目的:1、进一步熟悉keil仿真软件、proteus仿真软件的使用。

2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。

3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

二、实验原理:MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式 0 扩展并行 i/0 接口:利用方式 1 实现点对点的双机通信;利用方式 2 或方式 3 实现多机通信。

利用方式 0 扩展并行 i/0 接口 MCS 5 1 单片机的串行口在方式 0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。

三、程序:#include<reg51.h>sbit P1_0=P1^0;void main(){unsigned char i;unsigned int j;SCON=0x00;i=0x01;for(;;){P1_0=0;SBUF=I;while(!TI) {i}P1_0=1;TI=0;for(j=0;j<=254;j++){;}i=i*2;if(i==0x00) i=0x01;}}四、实验结果分析:五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。

了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。

掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

实验三、定时器/计数器实验(1)—查询方式产生500us的方波一、实验目的:1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;2、了解51单片机中定时、计数的概念,熟悉51单片机部定时/计数器的结构与工作原理;3、掌握查询方式处理定时/计数的工作过程,4、掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。

二、实验原理:通常利用定时 / 计数器来产生周期性的波形。

利用定时 / 计数器产生周期性波形的基本思想是:利用定时 / 计数器产生周期性的定时,定时时间到则对输出端进行相应的处理。

例如产生周期性的方波只需定时时间到对输出端取反一次即可。

不同的方式定时的最大值不同,如定时的时间很短,则选择方式 2 。

方式 2 形成周期性的定时不需重置初值;如定时比较长,则选择方式 0 或方式 1 ;如时间很长,则一个定时 / 计数器不够用,这时可用两个定时 / 计数器或一个定时 / 计数器加软件计数的方法。

三、程序:#include <reg51.h>sbit P1_0=P1^0;void main(){TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;for(;;){if(TF0){TF0=0;P1_0=!P1_0;}}}四、实验结果分析:五、总结:熟悉了keil仿真软件、proteus的使用和C51定时程序的编写;了解51单片机中定时、计数的概念,熟悉了51单片机部定时/计数器的结构与工作原理;掌握了查询方式处理定时/计数的工作过程,掌握了定时/计数器在C51中的设置与程序的书写格式以及使用方法。

实验四、定时器/计数器实验(2)—中断方式产生500us的方波一、实验目的:1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;2、进一步熟悉51单片机部定时/计数器的结构与工作原理;3、掌握中断方式处理定时/计数的工作过程。

二、实验原理从 P 1.0 输出周期为 500 us 的方波,只需 P 1.0 每 250 us 取反后一次即可。

当系统时钟为 12MHz 时,定时 / 计数器 TO 工作于方式 2 时,最大的定时时间为 256 us ,满足 250us 的定时要求,方式控制字应没定为 000000 1 0B ( 02H )。

系统时钟为12Mhz ,定时 250us,计数值N 为 250 ,初值 X = 256 -250 =6 ,则 THO = TLO =06 H 。

:三、程序:#include <reg51.h>sbit P1_0=P1^0;void main(){TMOD=0x02;TH0=0x06;TL0=0x06;EA=1;ET0=1;TR0=1;while(1);}void time0_int(void) interrupt 1{P1_0=!P1_0;}四、实验结果分析:五、总结:熟悉了keil仿真软件、proteus的使用和C51定时程序的编写;进一步熟悉了51单片机部定时/计数器的结构与工作原理;掌握了中断方式处理定时/计数的工作过程。

实验五:串行接口实验(1)—工作方式0扩展并行IO口一、实验目的:1, 掌握串行口工作方式0的程序设计;2、熟悉51单片机串口的结构和工作原理3、掌握串口工作方式0的工作特点。

二、实验原理:MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式 0 扩展并行 i/0 接口:利用方式 1 实现点对点的双机通信;利用方式 2 或方式 3 实现多机通信。

利用方式 0 扩展并行 i/0 接口 MCS 5 1 单片机的串行口在方式 0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。

三、程序:#include<reg51.h>sbit P1_0=P1^0;void main(){unsigned char i;unsigned int j;SCON=0x00;i=0x01;for(;;){P1_0=0;SBUF=I;while(!TI) {i}P1_0=1;TI=0;for(j=0;j<=254;j++){;}i=i*2;if(i==0x00) i=0x01;}}四、实验结果分析:五、总结:掌握了串行口工作方式0的程序设计;熟悉了51单片机串口的结构和工作原理。

掌握了串口工作方式0的工作特点。

实验六:串行接口实验(2)—双机通信一、实验目的:1、掌握串行口工作方式1的程序设计;2、进一步掌握51单片机串口的结构和工作原理3、掌握串口工作方式1的工作特点。

二、实验原理:甲、乙两机处理过程一样,程序相同。

方式选择方式1 :即 8 位异步通信方式,波特率为 1200bps ,既要发送,也要接收,所以串口控制字为 50H 。

由于选择的是方式 1, 波特率由定时 / 计数器 TI 的溢出率和电源控制寄存器 PCON 中的 SMOD 位决定,则需对定时 / 计数器 Tl 初始化。

设振荡频率为 12MHz ,取 SMOD=0,波特率为1200bps ,定时 / 计数器 T1选择为方式 2 ,则初值如下初值 = 256 一 foscx2SMOD /(12 × 波特率× 32 ) = E6H 根据要求,定时 / 计数器 T1的方式控制字为 20H 。

发送过程采用查询方式,在主程序中读取 PI 口的开关状态,通过串口发送;接收过程采用中断方式,接收的容送 P2 口,通过 P2 口的发光二极管显示。

三、程序:#include <reg51.h>void main(){unsigned char i;SP=0x60;SCON=0X50;TMOD=0x20;TL1=0xe6;TH1=0xe6;TR1=1;EA=1;ES=1;while(1){P1=0XFF;i=P1;SBUF=i;while(TI==0);TI=0;}}void funins(void) interrupt 4{EA=0;RI=0;P2=SBUF;EA=1;}四、实验结果分析:五、总结:掌握了串行口工作方式1的程序设计;进一步掌握了51单片机串口的结构和工作原理,掌握了串口工作方式1的工作特点。

实验七:中断系统实验(1)—交通灯模拟控制一、实验目的1、掌握单片机外部中断的原理及过程。

2、掌握单片机外部中断程序的设计方法。

3、掌握单片机外部中断时中断方式的选择方法。

二、实验原理:交通灯正常运行时,可分为 4 个状态:状态 1 ,东西方向绿灯,南北方向红灯20 秒,状态编码“ 00100001 ” ;状态 2 ,东西方向黄灯,南北方向红灯3 秒,状态编码“ 01000001 ” ;状态 3 ,南北方向绿灯,东西方向红灯 20 秒,状态编码“ 00010010 ” 状态 4 ,南北方向黄灯,东西方向红灯 3 秒,状态编码“ 0001m00 ” 。

东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪 60 秒;南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪 60 秒。

主程序中实现交通灯正常运行过程,两种异常用外中断 0 和外中断 1 管理,外接开关模拟异常发生,在中断服务程序中实现异常处理,在主程序中开放外中断 0 和外中断 1 ,设置为边沿触发方式。

时间单位采用 500ms 信号,由定时计数器 0 定时 50ms ,循环 10 次产生,定时计数器 0 采用查询方式,主程序中设定定时计数器 0 的工作方式:方式 1 。

三、程序:#include <reg51.h>void delay500ms(unsigned char k); void main(void){SP=0x60;TMOD=0x01;IE=0x85;TCON=0x05;while(1){P1=0x21;delay500ms(40);P1=0x41;delay500ms(6);P1=0x12;delay500ms(40);P1=0x14;delay500ms(6);}}void int_0(void) interrupt 0{unsigned char i1,i2;i1=P1;for(i2=0;i2<60;i2++){P1=0x21;delay500ms(1);P1=0x00;delay500ms(1);}P1=i1;}void int_1(void) interrupt 2{unsigned char j1,j2;j1=P1;for(j2=0;j2<60;j2++){P1=0x12;delay500ms(1);P1=0x00;delay500ms(1);}P1=j1;}void delay500ms(unsigned char m){unsigned char k1,k2;TH0=0x3C;TL0=0xB0;TR0=1;for(k1=0;k1<m;k1++){for(k2=0;k2<10;k2++){while(!TF0);TF0=0;TH0=0x3C;TL0=0xB0;}}}四、实验结果分析:五、总结:掌握了单片机外部中断的原理及过程。

相关文档
最新文档