单片机原理与应用及C51程序设计实验报告

合集下载

单片机原理及应用实验报告

单片机原理及应用实验报告

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。

三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。

在这次实验中同时也遇到了很多问题。

比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。

这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。

实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。

二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。

单片机原理与应用及c51程序设计(第3版)

单片机原理与应用及c51程序设计(第3版)

【单片机原理与应用及C51程序设计(第3版)】文章内容内容包括:一、引言二、单片机原理1. 什么是单片机2. 单片机的基本组成3. 单片机的工作原理4. 单片机的应用领域三、C51程序设计1. C51程序设计的基本概念2. C51程序设计的语法和规则3. C51程序设计的应用示例四、单片机原理与C51程序设计的结合应用1. 如何将单片机原理与C51程序设计结合起来2. 结合应用的案例分析五、总结与展望【单片机原理与应用及C51程序设计(第3版)】文章主要介绍了单片机的基本原理、应用以及C51程序设计的相关知识。

在引言部分,我们可以简要介绍单片机在现代电子设备中的重要性以及C51程序设计在单片机应用中的作用。

接下来进入主题内容,首先详细讲解单片机的基本组成和工作原理,包括单片机的核心部件、指令集和数据存储等方面的内容,重点强调单片机在各个领域中的广泛应用。

然后深入介绍C51程序设计的基本概念、语法和规则,通过实际案例对C51程序设计进行深入分析,以便读者能够更加深入地理解和掌握相关知识。

在单片机原理与C51程序设计结合应用的部分,我们可以通过具体的案例分析,展示单片机原理与C51程序设计在实际项目中的应用,包括控制系统、嵌入式系统等方面。

通过这些案例,读者可以更加直观地了解单片机原理与C51程序设计的实际应用场景,有助于加深对相关知识的理解和掌握。

我们对整个主题进行总结与展望,通过对文章内容的回顾和归纳,强调单片机原理与C51程序设计的重要性,并展望未来单片机技术的发展方向和趋势。

我们可以共享自己对这个主题的个人观点和理解,以及对读者的建议和思考,为读者提供更多的思路和参考。

通过以上内容的深入探讨和详细解读,《单片机原理与应用及C51程序设计(第3版)》将会为读者带来全面、深刻和灵活的理解,帮助读者更好地掌握相关知识,为实际应用提供有力支持。

一、引言单片机在现代电子设备中扮演着非常重要的角色,它集成了处理器、存储器和各种输入输出接口,可以用来控制各种电子设备。

单片机原理与应用及c51程序设计

单片机原理与应用及c51程序设计

单片机原理与应用及c51程序设计单片机是一种集成了中央处理器、存储器和输入输出功能的微型计算机系统,它广泛应用于各种电子设备中。

本文将介绍单片机的基本原理和应用,并重点讨论c51程序设计。

单片机的原理与应用。

单片机是一种集成了微处理器、存储器、定时器、串行通信接口等功能模块的微型计算机系统。

它具有体积小、功耗低、成本低廉等优点,因此在各种电子设备中得到了广泛的应用。

单片机的核心是微处理器,它负责执行指令、进行运算和控制外部设备。

存储器用于存储程序和数据,定时器用于产生精确的时序信号,串行通信接口用于与外部设备进行数据交换。

通过这些功能模块的协同工作,单片机可以实现各种复杂的控制和处理任务。

单片机的应用非常广泛,例如在家用电器中,单片机可以实现定时开关、温度控制等功能;在工业控制系统中,单片机可以实现自动化生产线的控制和监控;在通信设备中,单片机可以实现数据的编解码和调制解调等功能。

可以说,单片机已经成为现代电子设备中不可或缺的核心部件。

c51程序设计。

c51是一种常用的单片机编程语言,它基于C语言,并针对单片机的特殊硬件结构进行了优化和扩展。

c51程序设计是单片机应用开发的重要环节,它直接影响着单片机系统的性能和稳定性。

在c51程序设计中,需要考虑以下几个方面的内容:首先,需要充分理解单片机的硬件结构和特性,包括CPU、存储器、定时器、串行通信接口等模块的功能和工作原理。

只有深入理解了这些硬件特性,才能编写出高效、稳定的程序。

其次,需要合理设计程序的结构和算法,充分利用单片机的硬件资源,提高程序的执行效率和响应速度。

在设计程序时,需要考虑到单片机的计算能力和存储空间的限制,避免出现资源浪费和性能瓶颈。

最后,需要进行严格的测试和调试工作,确保程序的正确性和稳定性。

在测试和调试过程中,需要充分利用单片机的仿真工具和调试器,及时发现和解决程序中的错误和问题。

总结。

单片机是现代电子设备中不可或缺的核心部件,它的应用范围非常广泛。

51单片机实验报告(共五则)

51单片机实验报告(共五则)

51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。

实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。

循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。

接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。

实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。

《单片机原理与应用》KeilC51软件使用实验

《单片机原理与应用》KeilC51软件使用实验

《单片机原理与应用》KeilC51软件使用实验
一、实验目的和要求
熟悉51单片机的基本输入输出应用,掌握Proteus ISIS模块原理图绘图方法及单片机系统仿真运行方法。

二、实验内容和原理
(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能。

(2)学会选择元件、画导线、画总线、修改属性等操作。

(3)学会可执行文件加载及程序仿真运行。

(4)验证计数显示器的功能。

三、主要仪器设备
电脑、keil c51、Proteus
四、操作方法与实验步骤
(1)提前阅读与实验1相关的阅读材料;
(2)参考实验1电路原理图和元件清单,在ISIS中完成电路原理图的绘制;(3)加载可执行文件,观察仿真结果,检验电路图绘制的正确性。

五、实验数据记录和处理
代码:
电路图:
六、实验结果与分析运行结果:
实验分析:
由实验结果可知,这是通过开关控制计数器显示,按一次开关计数器计一次数,即加一。

七、讨论和心得
通过本次数码管进行51计数器显示实验,让我知道了对教材应该熟悉,因为教材是基础的,只有把基础的搞好了才能够进行其它层次的学习。

其次,此次实验我还懂得了有时候可以通过软件的仿真来验证书上的一些理论性的东西。

通过C语言的编程,对数码管及51的应用让我对单片机理解更加明了。

单片机原理与应用实验报告

单片机原理与应用实验报告

单片机原理实验报告实验一计数显示[目的]熟悉Proteus仿真软件,掌握单片机原理图的绘制方法【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何使用ISIS模块,学习设置图纸、选择元件、画线、修改属性等基本操作(3)了解如何加载可执行文件和运行程序仿真(4)了解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制[实验步骤](1)观察Proteus软件的基本结构,如菜单、工具栏、对话框等。

(2)Proteus中绘制电路原理图,并根据表A.1将组件添加到编辑环境中(3)在Proteus中,观察仿真结果,检查电路图绘制的正确性【实验示意图】【实验源程序】#include <reg51.h>位 P3_7=P3^7;无符号字符 x1=0;x2=0 ;无符号字符数=0;无符号字符 idata buf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};无效延迟(int时间){整数 k,j;for(;time<0;time--)for(k=200;k>0;k--)for(j=500;j<0;j--);}无效初始化(){P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);}无效的主要(){在里面();而(1){x1=计数/10;x2=计数%10;P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);如果(P3_7==0)// {延迟(10);而(!P3_7);如果(计数==99)计数=0;别的计数=计数+1;}}}[实验结果]阐明计数器的作用是按下K1后,数码管LED1和LED2会显示按键的按下次数, LED1代表一位, LED2代表十位。

当计数器达到99时,再次按下K1键,显示值再次从0开始。

实验2指示灯开关控制器[目的]学习如何编程和调试汇编语言【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何用汇编语言编程(3)ISIS 模块中输入、编译和调试汇编程序(4)了解MCU程序控制原理,实现指示灯/开关控制器的预期功能[实验步骤]( 1 ) 在ISIS中画出电路原理图, 并在编辑环境中添加相应的元器件 .( 2 )在ISIS中编写汇编语言程序( 3 ) 利用ISIS 的汇编调试功能检查程序的语法和逻辑错误( 4 )观察仿真结果,检查程序和电路的正确性【实验示意图】【实验源程序】#include <reg51.h> 无效延迟(int时间){整数 k,j;for(;time<0;time--) {for(k=100;k<0;j--) for(j=500;j<0;j--); }}无效初始化(){P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);}无效的主要(){在里面();P1=0x00;延迟(20);P1=0xff;延迟(20);而(1){P1=P2 ;}}[实验结果]阐明点击运行,8个LED 一起闪烁3次。

C51单片机实验报告

C51单片机实验报告

C51单片机实验报告
一、实验内容
本次实验的目的是实现用C51单片机实现简易的闹钟功能:即用户可以设置闹钟时间,当到达闹钟的设定时间的时候,单片机会控制LED灯或者蜂鸣器发出报警信号来提醒用户。

二、实验任务
本次实验任务如下:
1.使用C51单片机读取外部时钟的时间。

2.实现从按键输入闹钟设定的时间。

3.使用定时器实现任务调度,即在每个时刻检查一次外部时钟的时间是否到达闹钟的设定时间,如果到达设定时间,则控制LED灯或者蜂鸣器发出报警信号。

三、实验过程
1.硬件部分:本实验使用的硬件是硬件C51单片机,它具有单片机主频11.059MHz,外部内存2K和内部RAM 128字节。

本次实验采用的C51单片机核心是AT89C51,它具有4K字节的Flash存储器,它有128个8位I/O口和3个定时器/计数器。

本次实验使用到的外设有:LCD1602显示模块、4个4*4的数字键盘、AT24C02的IIC从机存储器、LED灯和蜂鸣器。

2.软件部分:本次实验使用的软件工具是Keil C51编译器,使用它来编写C51单片机程序。

单片机原理与应用及C51程序设计

单片机原理与应用及C51程序设计

单片机原理与应用及C51程序设计一、单片机原理与应用单片机(Microcontroller Unit,简称MCU)是一种集成电路芯片,拥有处理器核心、存储器、输入输出接口和外设等多种功能,可实现数据处理、控制和通信等任务。

单片机广泛应用于电子产品和自动化设备中,如家电、汽车、工控、通信等领域。

1.单片机原理单片机由五大部分组成:中央处理器(CPU)、存储器、输入输出(I/O)接口、定时/计数器和通信接口。

中央处理器是单片机的核心,负责执行指令和数据处理操作;存储器包括程序存储器和数据存储器,用于存储程序和数据;输入输出接口用于与外部设备进行数据交互;定时/计数器可以用于时间控制和频率测量等操作;通信接口可以实现与外部设备的数据通信和控制。

2.单片机应用单片机应用范围广泛,可以用于各种电子设备和自动化系统中。

以下是一些常见的单片机应用:(1)家电控制:单片机可以用于家电产品的控制和运行管理,如空调、洗衣机、电视等。

(2)汽车电子:单片机可用于汽车电子系统的控制,如发动机控制单元(ECU)、车身电子等。

(3)工控系统:单片机在工业自动化领域有广泛应用,如PLC(可编程逻辑控制器)等。

(4)通信设备:单片机可以用于通信设备的控制和数据处理,如手机、路由器、调制解调器等。

(5)医疗设备:单片机被应用于各种医疗设备,如血压计、体温计、电子血糖仪等。

C51是C语言在C51单片机上的移植,用于单片机的编程和开发。

C51程序设计可以通过Keil C51集成开发环境(IDE)进行。

以下是C51程序设计的主要内容和步骤:1.C语言编程:C语言是一种通用的高级编程语言,具有良好的可移植性和易学性。

在C51程序设计中,使用C语言编写程序代码,通过对变量、函数和数据结构的定义来实现单片机的功能和控制。

2. 程序开发环境:Keil C51是一套成熟的单片机开发软件,提供了丰富的编译、调试和仿真工具。

通过安装和配置Keil C51环境,可以方便地进行C51程序的开发和调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.实验原理图(附录2)
5.源程序:
#include <reg51.h>
#include <stdio.h>
typedef unsigned char BYTE;
BYTE i;//显示的十位数
BYTE j;//显示的个位数
BYTE dis_code[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};
{
count=0;
temp=_cror_(temp,1);
P1=temp;
}
}
}
}
void timer0()interrupt 1
{
TH0=0X3C;
TL0=0XB0;
count++;
}
4.实验总结:通过本次实验,对定时器的中断有了更进一步的掌握,也能够熟练应用定时器,还有按键控制流水灯的流动方向。不过这次实验的难度要高于上一次,经过了多次调试之后才把实验完成,耐心决定一切啊。
sbit p0_0=P0^0;
void Delay(unsigned int Delaytime);
void main(void)
{
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1定时方式2
TCON = 0x40; //设定时器1开始计数
TH1 = 0xE8; //11.0592MHz 1200波特率
//01 2 3 4 5 6 7 8 9
voidmain()
{
char time=0xFFFF,count=0x00FF;//延时常数
SCON=0X00;
do
{
for (i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
SBUF=dis_code[j];//发送字符个位
while(TI==0);TI=0;
三.串并转换实验
1.实验目的:了解单片机串口方式0,及移位寄存器164应用。
实验说明:串口方式0为移位寄存方式,数据由P3_0端口输入,同步移位脉冲由P3_1端口输出,发送的8位数据低位在前。利用单片机的串行接口方式0扩展并行接口输入输出,在LED灯上循环显示00~99。
2.设计流程图:
3.实验连线:DIN连接P3_0;CLK连接P3_1
#define uint unsigned int
uchar count;
void main()
{
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x21;
TCON = 0x40; //设定时器1开始计数
TH1 = 0xE8; //11.0592MHz 1200波特率
TL1 = 0xE8;
SBUF=dis_code[i];//发送字符十位
while(TI==0);TI=0;//是否发送完
do
{
while(time--);
}
while(count--);
}
}
}
while(1);
}
6.实验心得:最后一次实验,设计过程稍难,虽然硬件只需要连接两根线就可以了,但是内部结构较为复杂,需要掌握74HC164芯片的功能和拐角,同时也为时分秒的设计奠定了一定的基础。通过这几次实验,我觉得单片机实验还是很有意思的。虽然我们只是学了一些皮毛,但是让我感觉依然很受用,这门课的重点是实践,只有搞好了动手环节,才能真正学好这门课。
TH0=0X3C;
TL0=0XB0;
EA=1;
ET0=1;
TI = 1;
TR1 = 1; //启动定时器
while(1)
{
if(p0_0==0)
{
TR0=1;
if(count==200)
{
count=0;
printf("hello world!\n");
}
}
}
}
void timer0()interrupt 1
{
TH0=0X3C;
TL0=0XB0;
count++;
}
3.实验心得:
第一次实验不需要硬件实现,只需要用软件仿真,串口输出“hello word”语句就ok,所以此次实验比较简单,不需要费太多时间就能把实验完成。
二.键控流水灯
1.实验要求:
8051单片机的P1口的P1.0—P1.7分别接有LED(D1—D8),当某一端口输出,为“0”时,相应的LED点亮,P0.0、P0.1分别接有两个按钮K1和K2。现要求编写可键控的流水灯程序,K1=0时,灯向左循环流动;K2=0时,灯向右循环流动;K1,K2同时为0时,灯开始一左一右流动;K1,K2同时为1时,灯停止流动。
for(;Delaytime>0;Delaytime--)
for(j=0;j<100;j++);
}
(2).采用定时器定时,延迟输出语句。P0_0控制启动/停止。
#include<reg51.h>
#include<stdio.h>
sbit p0_0=P0^0;
#define uchar unsigned char
《单片机原理与应用及C51程序设计》
实验报告
一.软件仿真
1.实验要求
基本要求:用串口输出“hello word”语句。增加的要求:延时或定时输出语句,采用查询/中断的方式控制启动/停止。
2.源程序:
(1).采用延时函数,延迟输出语句,p0_0控制启动/停止。
#include <reg51.h>
#include <stdio.h>
2.实验原理图:(附录1)
3.源程序:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit p0_0=P0^0;
sbit p0_1=P0^1;
uchar temp,count;
void main()
{
temp=0xfe;
P1=temp;
TMOD=0X01;
TH0=0X3C;
TL0=0XB0;
EA=1;
ET0=1;
while(1)
{
if(p0_0==0)
{
TR0=1;
if(count==20)
{
count=0;
temp=_crol_(temp,1);
P1=temp;
}
}
if(p0_1==0)
{
TR0=1;
if(count==20)
TL1 = 0xE8;
TI = 1;
TR1 = 1; //启动定时器
while(1)
{
if(p0_0=f ("Hello World!\n"); //显示Hello World
}
}
}
void Delay(unsigned int Delaytime)
{unsigned int j=0;
相关文档
最新文档