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

单片机原理与应用实验报告单片机是一种集成电路,可以在内部集成处理器、内存、输入/输出接口和时钟等多种功能,同时也可以通过编程实现各种应用。
单片机已经广泛应用于工业控制、家电控制、汽车电子、医疗设备等领域。
本实验旨在深入探究单片机的原理和应用,通过实验来加深对单片机的理解和认识。
实验原理单片机由CPU、存储器、I/O接口和时钟四个部分组成。
其中,CPU是单片机最核心的部分,它负责处理各种指令。
存储器包括ROM和RAM,ROM用于存储程序和常量数据,而RAM用于存储变量数据。
I/O接口用于连接外部设备,如传感器、执行器等,时钟用于提供CPU的时钟信号。
实验器材本实验采用的单片机为AT89S52,其主要特点包括:1. 8位CPU,运行频率为12MHz;2. 8KB Flash存储器,可存储程序和常量数据;3. 256字节RAM存储器,用于存储变量数据;4. 32个I/O口,可连接外部设备;5. 两个定时器/计数器,可用于计时和计数;6. 串口通信接口,可用于与PC机通信。
实验内容本实验共包括四个部分,分别是LED闪烁、数码管显示、按键输入和串口通信。
下面分别介绍每个部分的实验内容。
1. LED闪烁LED闪烁是单片机应用中最基本的实验之一。
本实验采用的是P0口控制LED的亮灭。
具体步骤如下:(1)设置P0口为输出口;(2)每隔一定时间,将P0口的值翻转一次,即可实现LED的闪烁。
2. 数码管显示数码管显示是单片机应用中比较常见的实验之一。
本实验采用的是P2口控制数码管的显示。
具体步骤如下:(1)设置P2口为输出口;(2)编写程序将要显示的数值转换成相应的数码管编码;(3)将编码输出到P2口,即可实现数码管的显示。
3. 按键输入按键输入是单片机应用中比较常见的实验之一。
本实验采用的是P3口控制按键输入。
具体步骤如下:(1)设置P3口为输入口;(2)编写程序检测P3口的状态,判断是否有按键按下;(3)如果有按键按下,则执行相应的操作。
单片机原理及应用实验报告

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验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只低电平驱动的发光二极管组成。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
单片机原理与应用实验报告

单片机原理实验报告实验一计数显示[目的]熟悉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次。
北京信息科技大学单片机原理与应用实验4实验报告

实验报告课程名称单片机原理与应用实验项目串行通信指导教师学院信息与通信工程 _ 专业电子信息工程班级/学号学生姓名实验日期成绩______________________一、实验目的1、掌握串行口编程控制方法;2、掌握串口调试和仿真器的烧写方法;3、综合应用定时器、串行接口及中断等。
二、实验内容1、编写一个程序, 利用单片机的串行口向PC机循环发送0x55。
三、编写一个程序, 每当串行口接收到PC机发送的0x55(ASCII码为字母U)时, 返回一个0x41(ASCII码为字母A)。
在PC机一端, 以接收窗口收到0x41为完成(可以循环此过程)。
四、PC机向单片机发送0—9(无需编程, 在DPFlash的串口调试软件下配置即可), 单片机在接收到数据后送数码管显示;同时, 单片机每隔0.5S向PC机发送a—z的ASCII码(0x61~0x7a, 每秒发2个), 在PC机的串口调试软件中显示结果。
五、实验步骤1、新建工程, 编写程序, 实现通过串行口向PC机发送0x55(可采用串口模式1, 波特率2400), 注意工程的环境变量设置, Target窗口下code和xdata memory设置为空, 无须加入startup.A51, Output窗口下选中CreateHex选项, 编译生成HEX文件。
2、阅读网上的实验指导书及下面的说明, 掌握DPFlash软件的使用, 掌握仿真器的两种工作方式使用。
仿真器拨到load方式, 打开DPFlash软件,文件菜单中选择装载, 加入编译生成的*.HEX文件, 点击编程按扭, 使用默认配置即可, 烧入仿真器的Flash中。
3、关闭电源, 将仿真器拨到run方式, 并将连接在仿真器上的PC串口通信电缆拔下, 然后与实验仪上的单片机串口相连。
开机复位后将自动运行单片机程序, 在PC机的DPflash软件中的串口调试器下观察结果。
编写程序实现单片机接收到PC机发来的0x55后回送0x41,在串口调试软件的处理字符串中发送0x55,可以选中下栏的自动发送单选框来实现每隔1S发送一次, 观察结果。
单片机原理及应用实验报告2

单片机原理及应用实验报告2单片机原理及应用实验报告2实验报告:单片机原理及应用实验一、实验目的1、了解单片机的基本工作原理;2、掌握单片机的编程方法和编写汇编语言程序的能力;3、学习单片机的应用实验。
二、实验原理单片机是一种集成电路,内部包含了中央处理器、存储器和各种输入输出端口。
单片机的工作原理是通过对输入信号的处理和对输出信号的控制来实现各种功能。
单片机的编程方法一般采用汇编语言编写程序。
汇编语言是一种低级语言,可以直接对单片机进行操作。
通过编写汇编语言程序,可以实现各种功能,如控制LED灯的亮灭、控制电机的转动等。
本次实验主要通过控制LED灯的亮灭来演示单片机的应用。
在实验中,我们将使用汇编语言编写程序,通过编程来控制LED灯的亮灭。
三、实验步骤2、编写汇编语言程序:打开编程软件,进入编程界面,编写程序代码;3、编译程序:将编写好的程序进行编译,生成机器码;4、烧录程序:用编程工具将编译好的机器码烧录到单片机中;5、连接电路:使用面包板将单片机与LED灯连接起来;6、测试程序:将单片机的电源接通,观察LED灯的亮灭情况。
四、实验结果与分析经过以上步骤,我们成功地编写了汇编语言程序,并将程序烧录到了单片机中。
在实验中,我们观察到LED灯根据程序的控制产生了相应的亮灭效果。
实验结果表明,通过编程可以实现对单片机的控制,从而实现各种功能。
单片机在嵌入式系统、自动控制系统、家电等方面有着广泛的应用。
五、应用实例1、家居智能化控制:通过编程控制单片机,可以实现对家电的智能化控制。
例如,可以根据日出日落时间控制窗帘的开闭,根据室内温度控制空调的开关等。
2、工业自动化:在工业生产中,单片机可以用来控制各种设备和机械,实现生产线的自动化控制。
例如,可以根据产品的规格和数量,自动调整机械的工作速度和工作时间。
3、智能交通系统:在交通领域,单片机可以用来控制信号灯、道闸等设备,实现交通流量的控制。
例如,可以根据道路的拥堵程度和车辆的行驶速度,调整信号灯的红绿灯时间,从而达到交通畅通的目的。
单片机原理及接口技术实验报告

单片机原理及接口技术实验报告一、引言单片机(Microcontroller)是一种集成为了处理器、存储器和各种接口电路的微型计算机系统。
它具有体积小、功耗低、成本低等优点,广泛应用于嵌入式系统、自动化控制、电子设备等领域。
本实验旨在深入了解单片机的原理和接口技术,并通过实验验证相关理论。
二、实验目的1. 理解单片机的基本原理和结构。
2. 掌握单片机与外部器件的接口技术。
3. 进一步培养实际操作能力和解决问题的能力。
三、实验仪器与材料1. 单片机开辟板2. 电脑3. 串口线4. LED灯5. 蜂鸣器6. 数码管7. 按键开关8. 电阻、电容等元件四、实验内容与步骤1. 单片机原理实验1.1 单片机的基本结构单片机由中央处理器(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器、串行通信接口等组成。
通过学习单片机的基本结构,我们可以了解各个部份的功能和作用。
1.2 单片机的工作原理单片机的工作原理是指单片机在不同工作模式下的内部状态和运行规律。
通过学习单片机的工作原理,我们可以更好地理解单片机的工作过程,为后续的实验操作提供基础。
2. 单片机接口技术实验2.1 LED灯接口实验将LED灯与单片机相连,通过控制单片机的输出口电平,控制LED灯的亮灭。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.2 蜂鸣器接口实验将蜂鸣器与单片机相连,通过控制单片机的输出口电平和频率,控制蜂鸣器的声音。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.3 数码管接口实验将数码管与单片机相连,通过控制单片机的输出口电平和数据,显示不同的数字。
通过实验,我们可以学习到单片机的输出接口和数码管的使用方法。
2.4 按键开关接口实验将按键开关与单片机相连,通过检测单片机的输入口电平,实现按键的功能。
通过实验,我们可以学习到单片机的输入接口的使用方法。
五、实验结果与分析1. 单片机原理实验结果通过学习单片机的基本结构和工作原理,我们深入了解了单片机的内部组成和工作过程,为后续的接口技术实验打下了基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验课程:单片机原理及应用实验项目:单片机控制LED灯亮灭专业班级:学号:姓名:实验日期:实验一单片机控制LED灯实验.一、实验目的1、进一步掌握Keil的使用,熟悉单片机C语言编程。
2、学习I/O口的使用方法。
二、实验原理发光二级管是半导体二极管的一种,可以把电能转化为光能,常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
只要加在发光二极管两端的电压超过它的导通电压(一般为1.7V-1.9V)它就会导通,而当流过它的电流超过一定电流时(一般2-3mA)它就会发光。
LED常用在MCS-51单片机中指示单片机的某个开关量的状态。
对单片机的控制,其实就是对I/O口(单片机引脚)的控制。
单片机共四个端口,P0、P1、P2、P3;每个端口分别有8个引脚 P0.0-P0.7、P1.0-P1.7、P2.0-P2.7、P3.0-P3.7;这32个引脚既可以作输出脚,又可以作输入脚。
作输出脚时,单片机可以控制指示灯、数码管、电机等外部器件;作输入脚时,可以“感受”按键、开关、传感器等外部器件(例如接收数据-此就是作为输入脚的),单片机的每个引脚都是可以分开控制的,即独立的给高或者低电平。
想要点亮一个小灯,首先要将小灯与单片机的一个I/O 口连接好,然后将此引脚给高或者低电平,接着这个小灯就可以按照你给的电平实现点亮或熄灭了。
三、硬件电路设计LED模块排线接口如图3-1所示。
依据实验原理,只要将所需控制的LED 对应排线引脚连接到单片机一个I/O口即可。
1、连接方法:JP11(P2)和JP1和LED灯的JP1用8PIN排线连接起来。
2、硬件说明:使用单片机的P2口来驱动8个LED,发光二极管的阳极接高电平,故P2口为低电平时,就可以驱动其点亮。
四、软件设计1.单灯D3闪烁#include<reg51.h>void delay(void) //延时程序{unsigned int i;for(i=0;i<20000;i++);}void main(void){while(1){P2=0xfb; //灯亮delay(); //延时P2=0xff; //灯灭delay(); //延时}}2、双4只 LED 灯(D1、D3、D5、D7 与D2、D4、D6、D8)交替闪烁#include<reg51.h>#define uint unsigned int#define uchar unsigned charvoid delay();void main(){while(1){P2=0xaa; //1010 1010delay();P2=0x55; //0101 0101delay();}}void delay() //延时程序{uint x,y;for(x=100;x>0;x--)for(y=600;y>0;y--);}3、8只LED灯(D1、D2、D3、D4、D5、D6、D7、D8)流水灯显示#include<reg51.h>void delay(void){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}void main(){while(1){P2=0xfe;delay();P2=0xfd;delay();P2=0xfb;delay();P2=0xf7;delay();P2=0xef;delay();P2=0xdf;delay();P2=0xbf;delay();P2=0x7f;delay();}}三、实验结果分析:刚开始不是很熟悉,无法按照老师所讲的进行试验,反复操作后,完成了试验。
实验二数码管实验一、实验目的1、掌握数码管显示原理(静态显示和动态显示)。
2、掌握数码管显示编程。
二、实验原理数码管是一种半导体发光器件,是MCS-51单片机系统中用得非常多的一种输出通设备,其基本单元是发光二级管。
MCS-51单片机系统中最常使用的是8段数码管。
1、数码管显示原理abcddcba图4-1 数码管内部原理图8段数码管的内部结构是由8个发光二极管组成的,如图4-1所示,从图4-1(a)可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装的统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。
而它们的公共端又可以分为共阳极和共阴极,如图4-1(b)所示。
共阳极数码管的8个发光二极管的阳极(正极)连接在一起接高电平(一般接电源),其它管脚接各段驱动电路输出端。
当某段的输出端为低电平时,则该段所连接的发光二极管导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
共阴极数码管的8个发光二极管的阴极(负极)连接在一起接低电平(一般接地),其它管脚接各段驱动电路输出端。
当某段的输出端为高电平时,则该段所连接的发光二极管导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
因此我们在显示数字的时候首先做的就是给“0-9”十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的阳极就行了。
当数码管为多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。
2、数码管静态显示静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。
当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
这种方法的优点是占用CPU时间少,显示便于监测和控制。
缺点是,当显示多位数字时,将占用较多的I/O端口,硬件电路比较复杂,成本较高。
3、数码管动态显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
点亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
三、软件设计1. 用一个数码管循环演示0-9#include<reg51.h>unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};main(){unsigned char i;unsigned int j;while(1){for(i=0;i<10;i++) //循环演示0-9{P2=tab[i];for(j=0;j<50000;j++); //延时}}}2. 用数码管显示1,2,3,4,5,6,7// 数码管同时显示1-7#include<reg51.h>unsigned char code wei[7]={0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; /*共阳0有效*/ unsigned char code duan[7]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; /*共阴1有效*/ main(){unsigned char i;unsigned int j;while(1){for(i=0;i<7;i++) //循环演示1-7{P0=wei[i]; //位选P2=duan[i]; //段选1-7for(j=0;j<10;j++); //短暂延时}}}三、结果分析白色的排线接反了,导致数字出来的不对,重新排线。
多次试验后,完成实验。
实验三按键实验一、实验目的1、掌握单片机键盘与单片机接口2、掌握单片机键盘(独立键盘和矩阵键盘)程序设计方法3、掌握软件消除按键抖动的方法二、实验原理键盘是计算机系统中不可缺少的输入设备,当按键少时可接成线性键盘(或称独立键盘),即一个键盘占用一个I/O口中一位,当按键较多时,这样的接法占用口线较多。
在按键较多时,常将按键接成矩阵的形式,可以节省口线,例如一个I/O口可按2×4的形式接8个按键。
1、独立按键检测原理独立式按键采用每个按键单独占用一个I/O口中的一位结构,即按键的一端与电源地相连,另一端与单片机的任一I/O口中的一位相连。
开始时先给该I/O口赋一高电平,然后让单片机不断检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平;程序一旦检测到I/O口某位变为低电平,则说明连接该位的按键被按下,然后执行相应的指令。
图5-1示出了单片机实验仪的独立键盘模块。
它有K1~K8 8个独立键盘组成,每个按键有一端公共接地,另一端分别连接至JP5接线排座的8个引脚,可通过这些引脚连接到某个I/O口。
图5-1 8个独立按键接线图三、程序设计1. 蜂鸣器#include<reg51.h>sbit buzzer=P2^7;void delay(){int i;for(i=0;i<500;i++);}void main(){while(1){buzzer=1;delay(); //延时buzzer=0;delay(); //延时}}2. 用按键控制灯亮灯灭#include<reg51.h>sbit key=P3^3;sbit led=P2^7;void delay(){int j;for(j=110;j>0;j--);}void main(){P3=0xff;while(1){if(key==0)led=0;elseled=1;}}3. 用按键控制蜂鸣器响程序代码:#include<reg51.h>sbit buzzer=P2^7;sbit key=P3^0;void delay(){int i;for(i=0;i<500;i++);}void main(){while(1){ if(key==0) {buzzer=1;delay(); //延时buzzer=0;delay(); //延时}}}4. 用按键控制数码管亮0-9程序代码:#include<reg51.h>#define uchar unsigned charsbit key=P3^2;void delay(){unsigned long int i;for (i=0;i<2200;i++);}void main(){uchar code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar i;i=0;while(1){if(key==0){delay();if(key==0){if(i!=10){P2=tab[i];i++;}else{i=0;P2=tab[i];i++;}}}}}三、实验结果分析刚开始没弄懂,然后在同学的帮助下完成了实验。