keil-c51单片机实验指导.5.4演示教学

合集下载

KeilC51使用教程

KeilC51使用教程

Keil C语言程序设计示例教程(开发C8051F310)使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。

KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。

在这里以51单片机并结合C程序为例(汇编操作方法类似,唯一不同的是汇编源程序文件名后缀为“.ASM ”),图文描述工程项目的创建和使用方法。

1.首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合,如下图, 创建了一个名为“PRJ_C8051”文件夹2.点击桌面上的Keil uVision4图标,出现启动画面:3.点击“project --- New uVision Project”新建一个工程:4.在对话框,选择放在刚才建立的“PRJ_C8051”文件夹下,给这个工程取个名为Test_C8051F310, 然后保存,工程的后缀为uvporj。

5.弹出一个框,在CPU类型下我们找到并选中“Silicon Laboratories. Inc.”下的C8051F3106.加入C8051起动码7.建立一个源程序文本8.在下面空白区别写入或复制一个完整的C程序:9.输入源程序文件名名称,示例输入“Test_C8051F310.c”,然后保存:10.把刚创建的源程序文件加入到工程项目文件中。

11.设置---目标(第1步~ 第4步)15.工程项目创建和设置全部完成!点击保持并编译16.在C8051F310中的C语言程序示例//-----------------------------------------------------------------------------// Includes// 在c8051f310.h在头文件中定义了C8051F310的寄存器、输入/输出的端口//-----------------------------------------------------------------------------#include <c8051f310.h> // SFR declarations//-----------------------------------------------------------------------------// 16-bit SFR Definitions for 'F30x//-----------------------------------------------------------------------------sfr16 TMR2RL = 0xca; // Timer2 reload valuesfr16 TMR2 = 0xcc; // Timer2 counter//-----------------------------------------------------------------------------// Global CONSTANTS//-----------------------------------------------------------------------------#define SYSCLK 24500000 / 8 // SYSCLK frequency in Hzsbit LED = P0^0; // LED='1' means ON//-----------------------------------------------------------------------------// Function PROTOTYPES//-----------------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init (void);void Timer2_Init (int counts);void Timer2_ISR (void);//-----------------------------------------------------------------------------// MAIN Routine//-----------------------------------------------------------------------------void main (void){// disable watchdog timerPCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer// enable)SYSCLK_Init (); // Initialize system clock to// 24.5MHzPORT_Init (); // Initialize crossbar and GPIOTimer2_Init (SYSCLK / 12 / 10); // Init Timer2 to generate// interrupts at a 10Hz rate.EA = 1; // enable global interruptswhile (1) // spin forever{}}//-----------------------------------------------------------------------------// SYSCLK_Init//-----------------------------------------------------------------------------//// This routine initializes the system clock to use the internal 24.5MHz / 8// oscillator as its clock source. Also enables missing clock detector reset.//void SYSCLK_Init (void){OSCICN = 0x80; // configure internal oscillator for// its lowest frequency RSTSRC = 0x04; // enable missing clock detector }//-----------------------------------------------------------------------------// PORT_Init//-----------------------------------------------------------------------------//// Configure the Crossbar and GPIO ports.// P3.3 - LED (push-pull)//void PORT_Init (void){// assignmentsXBR0 = 0x00; // no digital peripherals selectedXBR1 = 0x40; // Enable crossbar and weak pull-ups//P3MDOUT |= 0x08;P0MDOUT |= 0x03; // enable LED as a push-pull output}//-----------------------------------------------------------------------------// Timer2_Init//-----------------------------------------------------------------------------//// Configure Timer2 to 16-bit auto-reload and generate an interrupt at// interval specified by <counts> using SYSCLK/48 as its time base.//void Timer2_Init (int counts){TMR2CN = 0x00; // Stop Timer2; Clear TF2;// use SYSCLK/12 as timebase CKCON &= ~0x60; // Timer2 clocked based on T2XCLK;TMR2RL = -counts; // Init reload valuesTMR2 = 0xffff; // set to reload immediatelyET2 = 1; // enable Timer2 interruptsTR2 = 1; // start Timer2}//-----------------------------------------------------------------------------// Interrupt Service Routines//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Timer2_ISR//-----------------------------------------------------------------------------// This routine changes the state of the LED whenever Timer2 overflows.//void Timer2_ISR (void) interrupt 5{TF2H = 0; // clear Timer2 interrupt flagLED = ~LED; // change state of LED}17.KEIL C语言与汇编语言的混合编程方法C语言中加入汇编语言模块的方法:例子:void func(){C语言代码……#pragma asmMOV R6,#23DELAY2: MOV R7,#191DELAY1: DJNZ R7,DELAY1DJNZ R6,DELAY2RET#pragma endasmC语言代码……}汇编部分需要用#pragma asm和#pragma endasm包起来18.KEIL C混合编程中的错误与解决方法1)Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compiling sendata.c...sendata.c(81): error C272: 'asm/endasm' requires src-control to be active sendata.c(87): error C272: 'asm/endasm' requires src-control to be active Target not created解决方法如下:首先project workspace窗口右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。

Keil C51 使用详解

Keil C51 使用详解

Keil C51使用详解V1.0第一章KEIL C51开发系统基本知识 (6)第一节系统概述 (6)第二节KEIL C51单片机软件开发系统的整体结构 (6)第三节KEIL C51工具包的安装 (7)1. C51 for Dos (7)2. C51 for Windows的安装及注意事项: (7)第四节KEIL C51工具包各部分功能及使用简介 (7)1. C51与A51 (7)2. L51和BL51 (8)3. DScope51,Tscope51及Monitor51 (8)4. Ishell及uVision (9)第二章KEIL C51软件使用详解 (10)第一节KEIL C51编译器的控制指令 (10)1.源文件控制类 (10)2.目标文件(Object)控制类: (10)3.列表文件(listing)控制类: (10)第二节DSCOPE51的使用 (11)1. dScope51 for Dos (11)2. dScope for Windows (12)第三节MONITOR51及其使用 (13)1. Monitor51对硬件的要求 (13)2. Mon51的使用 (13)3. MON51的配置 (13)4.串口连接图: (13)5. MON51命令及使用 (14)第四节集成开发环境(IDE)的使用 (14)1. Ishell for Dos的使用 (14)2. uVision for windows的使用 (15)第三章KEIL C51 VS 标准C (15)第一节KEIL C51扩展关键字 (15)第二节内存区域(MEMORY AREAS): (16)1. Pragram Area: (16)2. Internal Data Memory: (16)3. External Data Memory (16)4. Speciac Function Register Memory (16)第三节存储模式 (16)1. Small模式 (16)2. Compact模式 (17)3. large模式 (17)第四节存储类型声明 (17)第五节变量或数据类型 (17)第六节位变量与声明 (17)1. bit型变量 (17)2.可位寻址区说明20H-2FH (18)第七节KEIL C51指针 (18)1.一般指针 (18)2.存储器指针 (18)3.指针转换 (18)第八节KEIL C51函数 (19)1.中断函数声明: (19)2.通用存储工作区 (19)3.选通用存储工作区由using x声明,见上例。

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

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

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

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

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

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

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

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

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

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

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

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

Keil-C51的使用ppt课件

Keil-C51的使用ppt课件
任务2 Keil C51的使用
1
我想知道
• Keil C51是什么? • 我们用它用来做什么? • 怎么用?
2
☺解答问题1
Keil C51是德国Keil 来自oftware公司出品的51系列兼容单片 机C语言软件开发系统。
该软件提供丰富的库函数和功能强大的集成开发调试工具, 全Windows界面。通过该软件可以完成编辑,编译,仿真, 连接,调试等整个开发流程。
参见教材《单片机的C51应用程序设计》第 310 页 14
弹出添加文件对话框,要求寻找源文件。 通过“查找范围”列表栏找到文件所在的文件夹,
再单击“文件类型”中下拉列表框,从中选取合 适的文件类型。 默认的“文件类型”为C Source file(*.c),也 就是以C为扩展名的C51文件。 若需要汇编语言文件,请点击对话框中“文件类 型”后的下拉列表,找到并选中Asm Source file (*.s*; *.src; *.a*)项。 在列表中找到需要的文件,选中文件再单击 “Add”,或双击文件也可添加成功。
要的所有文件都放在这个目录下。
参见教材《单片机的C51应用程序设计》第 308 页 9
3、选择器件
工程建立完毕,uVision2会立即弹出一个对话框, 要求选择单片机的型号。
器件选择的目的是告诉uVision2最终使用的单片机 芯片的型号是哪一个公司的哪一个型号,因为不同 型号的芯片内部资源是不同的;uVision2可根据选 择进行SFR的预定义,在软硬件仿真中提供易于操 作的外设浮动窗口等。
目前常使用的Keil C51开发系统是uVersion IDE版本,开 发人员可以用IDE或其他编辑器编辑汇编或C语言程序,然 后分别由A51或C51编译器编译生成目标代码(.OBJ)。 目标文件可以由LIB51创建生成库文件,也可以与库文件一 起经过L51连接定位生成绝对目标文件(.ABS)。ABS文 件由OH51转换称标准的HEX文件,以供调试器 (dScope51或tScope51)进行代码级调试,也可用仿真 器直接对目标般调试,还可以直接写入程序存储器中。

Keil-C51单片机实验指导.5.4

Keil-C51单片机实验指导.5.4

Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (3)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (4)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (5)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)实验 2 外部中断----故障报警实验 (7)三、单片机的定时器/计数器 (8)实验1 计数器实验 (8)实验2 秒时钟发生器实验 (10)四、单片机的串口特点和编程 (11)实验1 PC机串口通讯实验 (11)实验2 RS485通讯实验 (13)五、存储器 (14)实验1 RAM存储器读写实验 (14)六、PWM发生器 (15)实验1 PWM发生器(模拟)实验 (15)实验2 蜂鸣器实验 (16)七、WDG看门狗 (17)实验1 外扩WDG(MAX705)实验 (17)实验2 WDG(内部)实验 (18)八、SPI总线 (19)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (19)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (20)九、I2C总线 (21)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (21)十、综合实验 (23)实验1 HD7279LED数码管显示实验 (23)实验2 HD7279键盘实验 (23)实验3 电机转速实验 (24)十一、步进电机实验 (26)实验1 步进电机正反转实验 (26)十二、TFT液晶显示实验 (26)实验1 TFT液晶显示彩色条纹实验 (26)十三、16X16LED点阵显示汉字实验 (27)实验1 16X16LED点阵显示汉字实验 (27)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。

内容:编程读取IO引脚状态。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

Keil C51 使用

Keil  C51 使用

Keil 软件的使用一、软件启动在桌面上双击,或在开始→程序→。

二、界面图1、首先建立一个工程点击Project→New Project 如下图所示。

则会出现如下图。

注意工程保存在什么位置(要方便自己查找),输入文件,保存类开会自动生成,不用管,然后点保存,则会出如下图则会出现。

则出现可点是或否,影响不大。

则会出现:这样应建立了一个新的工程。

可在保存的位置找工程文件名。

2、建立一个汇编语言文件。

点击File→New,如下图所示则出现Text1为文件名,先要保存一下。

选为文件保存的位置,文件名要注意一下,用汇编语言编写则后缀(扩展名)为.ASM,如果用C 语言编写则为.C。

设置好后点击保存,则程序文件应建立好了。

在保存的位置可找到该文件。

3、程序录入编辑及编译(1)在程序编辑区录入程序(2)将程序文件添加到工程文件中右键单击Source Group1如下图则出现点击,Add Files to Group Source Group 1 则出现如下图选好文件类型为C Source file (*.C),再在保存位置中找到刚才编辑好的程序文件,然后点Add 即可。

(3)必要的参数设置点击Project→Option for Target则会出现如下图:在Target 选项卡中设置好晶振频率。

再选Output选项卡,如下图:设置好各项后点击确定,必要的参数应设置完毕。

(4) 程序编译检查点击Project→Build target files 如下图所示则在界面的最下面出现指示:如果有错误要改正程序的错误,再进行编译,一直到没有错误为止,要生成HEX文件,我们才能下载到单片机中。

程序下载到单片机的程序应用1、启动软件:在桌面找到图,双击将会出现如下图必须要选择正确的端口及单片机型号,然后调入从KEIL C51编译生成的HEX文件。

2、调入HEX文件:左键单击调入FLASH,如下图所示:将会出现HEX文件选择窗口:选择正确文件后,点打开,则出现如下图3、将HEX文件下载到单片机芯片选择正确后,检查单片机是否连接好,准备好后就点击自动,则会出现如下图,程序下载完成后,就会看到单片机板上LED灯在点亮了。

Keil C51 基本使用方法

Keil C51 基本使用方法

附录:一、Keil C51工程建立与仿真1、建立一个工程项目,选择芯片并确定选项双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。

图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在“我的文档”中先建立一个同名的文件夹),单击保存。

在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。

图2 选择单片机后按确定选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。

单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。

然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。

其它采用默认设置,然后点确定。

图3 选择Target页面图4 选择Output页面2、建立源程序文件单击“文件”菜单,在下拉菜单中选择“新建”,随后在编辑窗口中输入以下的源程序(如图5)。

ORG 0000HLJMP MAINORG 030HMAIN: MOV P0,#00HMOV P1 ,#00HMOV P2 ,#00HMOV P3 ,#00HACALL DELMOV P0 ,#0FFHMOV P1 ,#0FFHMOV P2 ,#0FFHMOV P3 ,#0FFHACALL DELAJMP MAINORG 0200HDEL: MOV R5,#04HF3: MOV R6,#0FFHF2: MOV R7,#0FFHF1: DJNZ R7,F1DJNZ R6,F2DJNZ R5,F3RETEND图5 建立源程序文件程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。

(参考资料)Keil C51 uVision4使用指南

(参考资料)Keil C51 uVision4使用指南

圖 1-6 選取晶片型號
圖 1-7 詢問是否需要加入 8051 啟動碼 STARTUP.a51 的主要工作是把包含 idata、xdata、及 pdata 在內的記憶體區塊清除為 0,並且初始化遞迴指標。STARTUP.a51 的內容在附錄 1 中,用戶可自行參考。注意, 若是編寫組合語言程式,則不需加入此啟動程式。在完成上述的初始化程序之後,8051 的控制權才會交給 main()主程式開始執行用戶的程式。 (3) 首先在專案中建立新的程式檔案或加入舊程式檔案。如果您沒有現成的程式或 是第一次使用,那麼就要新建一個 C 程式檔案。在 C51 中有一些程式的範例,但是在 這裡我們還是以一個 C 程式為例介紹如何新建一個 C 程式,和如何加到您的第一個專 案中吧。點擊圖 1-8 中 1 的新建文件的圖示按鈕,在 2 中出現一個新的文字編輯視窗, 或是也能透過選單 File/New 或是按下快速鍵 Ctrl+n 來實現。接著現在就能編寫程式了。
圖 1-5 選擇舊版或新版的專案檔副檔名 (2) 選擇所要的單晶片型號,這裡選擇常用的 Ateml 公司的 AT89S51。目前 Atmel 已經停產 AT89C51/AT89C52,改由 AT89S51/AT89S52 來取代之。AT89S 系列較 AT89C 系列更為便宜,工作頻率可高達 33 MHz,且重複燒錄次數至少可達一千次以上,非常 適合學校學習或工程師開發產品之用。所以本講義裡的大部分程式都是基於此 AT89S51 晶片的,此時螢幕如圖 1-6 所示。在右邊圖中的“Description”方塊內,會簡單的介紹 AT89S51 有什麼功能及特點。點選 OK 按鈕後,會出現圖 1-7,詢問你是否需要拷貝標 準的 8051 啟動碼程式(STARTUP.a51)到你的專案資料夾,並且將此檔案加入專案“Copy Standard 8051 Startup Code to Project Folder and Add File to Project”,點選“是”後,就可以 進行程式的編寫了。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Keil C51实验项目Keil C51实验项目 (1)一、单片机的IO编程 (3)实验1 IO开关量输入实验 (3)实验2 IO输出驱动继电器(或光电隔离器)实验 (3)实验3 IO输入/输出---半导体温度传感器DS18B20实验 (4)二、单片机的中断系统 (6)实验 1 外部中断----脉冲计数实验 (6)实验 2 外部中断----故障报警实验 (7)三、单片机的定时器/计数器 (8)实验1 计数器实验 (8)实验2 秒时钟发生器实验 (9)四、单片机的串口特点和编程 (11)实验1 PC机串口通讯实验 (11)实验2 RS485通讯实验 (12)五、存储器 (14)实验1 RAM存储器读写实验 (14)六、PWM发生器 (15)实验1 PWM发生器(模拟)实验 (15)实验2 蜂鸣器实验 (16)七、WDG看门狗 (17)实验1 外扩WDG(MAX705)实验 (17)实验2 WDG(内部)实验 (18)八、SPI总线 (18)实验1 SPI(模拟)实验-----TLC2543 AD转换实验 (18)实验2 SPI(模拟)实验-----TLV5616 DA转换实验 (19)九、I2C总线 (21)实验1 I2C(模拟)实验-----IC卡(AT24C01)读写实验 (21)十、综合实验 (22)实验1 HD7279LED数码管显示实验 (22)实验2 HD7279键盘实验 (23)实验3 电机转速实验 (24)十一、步进电机实验 (25)实验1 步进电机正反转实验 (25)十二、TFT液晶显示实验 (26)实验1 TFT液晶显示彩色条纹实验 (26)十三、16X16LED点阵显示汉字实验 (26)实验1 16X16LED点阵显示汉字实验 (26)一、单片机的IO编程实验1 IO开关量输入实验目的:学习单片机读取IO引脚状态的的方法。

内容:编程读取IO引脚状态。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:首先要把相关的引脚设置在IO的输入状态,然后写一个循环,不停地检测引脚的状态。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将试验箱上的的IO1--- IO8分别连接到SWITCH的8个拨码开关的K1---K8的输出端子K1---K8上,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INPUT 下的工程文件IO_INPUT.Uv2编译程序,上电,在程序注释处设置断点,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,改变开关状态,运行程序到断点处,观察窗口的数值与开关的对应关系。

实验2 IO输出驱动继电器(或光电隔离器)实验目的:学习IO输出控制方法。

内容:通过单片机的IO引脚驱动继电器(或光电隔离器)动作。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:首先要把相关的引脚设置在IO的输出状态,然后写一个循环,依次输出高低电平。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的IO1、IO2分别连接到RELAY的输入R_IN和PHOTO的输入P_IN上,R_OUT和P_OUT分别连接到发光二极管LAMP的输入孔L1和L2上。

连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_OUTPUT下的工程文件IO_OUTPUT.Uv2编译程序,上电,进入调试状态,打开窗口Peripherals-->IO-Port-->P0,单步运行程序,观察窗口的数值变化。

4、全速运行程序,观察继电器的发光二极管的亮灭变化,同时确定继电器动作(或光电隔离器导通)与IO输出电平的关系。

实验3 IO输入/输出---半导体温度传感器DS18B20实验目的:学习IO引脚编程实现交替输入、输出的方法。

内容:通过单片机的IO引脚与半导体温度传感器实现单线通讯。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:根据18B20的资料(见备注),将IO引脚设置在输出状态,分别模拟出不同的命令时序,例如复位、读寄存器等;再改变IO引脚的为输入状态,接收传感器输出的数据。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的IO1连接到TEMP SENSOR DS18B20的DQ。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹IO_INOUTPUT下的工程文件IO_INOUTPUT.Uv2编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序到断点处,观察寄存器R7中的数据,用手摸住传感器DS18B20芯片,再运行到断点处,比较R7的变化。

4、备注:DSl8B20数字温度计提供9位(二进制)温度读数指示,器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线),DSl8B20的电源可以由数据线本身提供而不需要外部电源。

因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上,这允许在许多不同的地方放置温度敏感器件。

DSl8B20的测量范围从-55到+125增量值为0.5可在l s(典型值)内把温度变换成数字。

二、单片机的中断系统实验 1 外部中断----脉冲计数实验目的:学习单片机的外部中断使用方法。

内容:对外部中断计数显示。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:首先第一步设置单片机的IO为输入状态,第二步设置引脚的中断触发方式,一般设置为边沿触发,第三步,设置外部中断的优先级,第四步,编写中断服务程序,包括中断入口跳转等,第五步,设置中断使能,允许外部引脚触发中断。

第六步,设置死循环,主程序结束,交给中断服务程序完成计数。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的INT0连接到单脉冲输出孔P-,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹EXT_INT1下的工程文件EXT_INT1.Uv2,编译程序,上电,进入调试状态,按照程序注释说明设置断点,全速运行程序,每按下一次单脉冲开关Paulse,程序运行到断点处一次,观察寄存器R1的变化。

课堂思考题:(1)编写程序(同时接好硬件电路),采用外部中断INT1及低电平触发方式,使8只二极管从左向右依次循环点亮,中断结束后返回,二极管全灭。

实验 2 外部中断----故障报警实验目的:学习单片机的外部中断使用方法。

内容:利用外部中断和IO口,改变二极管和蜂鸣器状态,模拟故障报警。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:首先编写初始化程序,设置单片机IO状态,设置中断触发方式,一般设置为边沿触发,设置外部中断的优先级;第二步,编写主程序,调用初始化程序,对IO口状态写无限循环,使发光二极管处于稳定发光,蜂鸣器无发声状态,第三步,编写中断服务子程序,使二极管闪烁发光,蜂鸣器断续鸣叫,模拟故障报警;第四步,编写延时子程序,控制二极管闪烁和蜂鸣器鸣叫的间隔时间。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的INT0连接到单脉冲输出孔P-,同时将MCU的IO0、IO1分别与发光二极管L1、蜂鸣器BUZZER孔相连,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹EXT_INT2下的工程文件EXT_INT2.Uv2,编译程序,上电,进入调试状态,按照程序注释说明,全速运行程序,发光二极管处于稳定发光状态,蜂鸣器无声音,每按下一次单脉冲开关Paulse,观察二极管L1和蜂鸣器的变化。

课堂思考题:(1)编写程序(同时接好硬件电路),采用外部中断INT0、跳变触发方式,将8支二极管分为2组,使L1、L3、L5、L7与L2、L4、L6、L8交替亮灭闪烁,中断结束后返回,8支二极管全亮。

(2)编写程序(同时接好硬件电路),采用外部中断INT0、跳变触发方式,实现5次中断请求后,进入中断服务子程序,使L1亮灭闪烁,蜂鸣器断续发声,中断结束后返回,二极管发亮。

三、单片机的定时器/计数器实验1 计数器实验目的:学习单片机的定时/计数器的计数功能使用方法。

内容:对外部单脉冲信号进行计数,计数10个后产生计数中断。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:使用定时/计数器的计数功能,将外部时钟信号加在计数器的计数时钟输入引脚上,当计数10次后,计数器溢出,触发标志位,编程控制分频输出引脚电平翻转,产生分频后的时钟信号。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的IO1和T0分别连接到发光二极管L1的输入L1上和单脉冲输出孔P-,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹COUNTER 下的工程文件COUNTER.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。

4、上电全速运行程序,按下5次单脉冲按键后发光二极管点亮,再按5次后发光二极管熄灭,如此重复。

实验2 秒时钟发生器实验目的:学习单片机的定时/计数器的定时功能使用方法。

内容:产生频率为0.5Hz的时钟输出。

设备:EL-EMCU-I试验箱、EXP-89S51/52/53 CPU板。

编程:使用定时/计数器的定时功能,时钟源采用系统时钟,根据时钟源的频率配置初值寄存器,使能定时器中断,在中断服务程序中翻转一个IO引脚输出,产生0.5Hz的时钟输出。

步骤:1、将CPU板正确安放在CPU接口插座上,跳线帽JP2短接在上侧。

2、连线:用导线将MCU的IO1连接到发光二极管L1的输入L1上,连接好仿真器。

3、实验箱上电,在PC机上打开Keil C环境,打开实验程序文件夹TIMER_SECOND下的工程文件TIMER_SECOND.Uv2,编译程序,上电,进入调试状态,单步运行程序观察每条语句执行后相关寄存器的变化。

4、全速运行程序,观察发光二极管的亮灭情况。

5、备注:现在的单片机系统时钟较高,难于产生1秒的定时中断,所以,可以设置定时时间为50毫秒,在中断服务程序中设置程序计数,当累加到1秒后,控制输出IO引脚电平翻转,驱动发光二极管。

相关文档
最新文档