51单片机定时器计数器汇编实验报告

合集下载

单片机实验报告

单片机实验报告

单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (2)一、内容 (2)二、目的及要求 (3)第二章实验 (3)实验一数字量输入输出实验 (3)实验二定时器/计数器实验 (4)实验三A/D、D/A转换实验 (11)实验四串行通信设计 (20)第三章实验体会 (28)第一章实验内容、目的及要求一、内容实验一数字量输入输出实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。

实验二定时器/计数器实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。

提高部分:定时器控制LED灯由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

编写程序模拟时序控制装置。

开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。

实验三A/D、D/A转换实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。

提高部分:(要求:Proteus环境下完成)小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

实验四串行通讯实验阅读、调试C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。

(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成)利用单片机实验系统,实现与PC机通讯。

功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

单片机定时器计数器实验报告

单片机定时器计数器实验报告

单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。

㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台 MCS—51实验板一台 PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms 中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。

㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。

2. 计数脉冲由信号发生器输入(从T0端接入)。

3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码 ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址 ;设置T1做定时器,T0做计数器,都于方式1工作 ;装入中断次数 ;装入计数值低8位 ;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0 MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时 ;1s到重新开始;显示计数器T0的值;读计数器当前值 ;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中 ;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零 MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。

在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。

计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。

在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。

实验目的:1. 学习定时器和计数器的基本原理及应用。

2. 熟悉定时器和计数器在单片机中的编程方法。

3. 掌握通过定时器和计数器实现延时和计数功能的方法。

实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。

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。

单片机实验报告总结

单片机实验报告总结

单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。

在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。

这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。

将所学知识运用到实践中,在实践中发现问题,强化理论知识。

现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。

第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。

第一次实验体现了一个人对新事物的接受能力和敏感度。

虽然之前做过许多种实验。

但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。

所以第一次试验相对失败。

鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。

在做实验中,第二个问题应该是准备不充分吧。

一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。

后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。

于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。

这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。

发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。

三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。

于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。

但是编程是一件很严肃的事情,容不得半点错误。

于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。

单片机定时器实验报告doc

单片机定时器实验报告doc

单片机定时器实验报告篇一:单片机实验报告——定时器实验四定时器实验自动化121班 36 张礼一.实验目的掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。

二.实验仪器单片机开发板一套,计算机一台。

三.实验任务编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示0~9这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0(或T1)提供。

开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。

两片锁存器的输出使能端OE都恒接地,使得锁存器的内部数据保持器输出端与锁存器的输出端保持接通。

而U2的锁存使能端LE由P2.1控制,所以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。

当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。

汇编语言程序流程如图4-2:四.实验步骤:1.数码管的0~9的字型码表如下:2.参考图4-2所给的程序流程图编写实验程序。

(注:以下程序为两位60秒计数程序)#include sbit wei=P2^0; sbit duan=P2^1;char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int i,j,k,num,shi,ge; void delay(int a) {for(i=0;i void display(int shi,int ge){wei=1;P1=0xfe;wei=0;duan=1;P1=table[shi];duan=0;wei=1; delay(5);P1=0xfd;wei=0; duan=1;P1=table[ge];duan=0; }void main() {TMOD=0x01;TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) {delay(5);display(shi,ge); } }void T0_time() interrupt 1 {TH0=(65536-45872)/256; TL0=(65536-45872)%256; k++; if(k==20) { k=0; num++;if(num==60)num=0; shi=num/10; ge=num%10; } }3.实验接线,如图4-1。

51单片机实验报告

51单片机实验报告

《单片机与接口技术》实验报告信息工程学院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 <reg52.h> //包含特殊功能寄存器定义的头文件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 口,如图所示:然后STC 系列单片的下载软件——STC-ISP,端口为上一步查到的端口,其余选项改成如图所示:打开程序文件下载后当软件显示“已加密”就表示程序下载成功了,如下图所示:三、心得体会通过对单片机的初步学习和认识,我了解到了单片机的工作流程,还有通过自己编写单片机的程序,也让我对单片机的学习有了更大的兴趣,虽然过程中遇到了些许的困难,但这也让自己意识到还有很多不足,通过接下来的学习,希望对单片机的课程有更加深入的了解。

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结单片机定时器/计数器实验总结篇一:单片机实验之定时器计数器应用实验一一、实验目的1、掌握定时器/计数器定时功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Prteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Prteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P1.0口线上接示波器观察波形。

2、用Prteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P1.1口线上接示波器观察波形。

三、电路原理图六、实验总结通过这次实验,对定时器/计数器的查询工作方式有了比较深刻的理解,并能熟练运用。

掌握定时器/计数器的中断、查询使用方法。

对于思考题能够运用三种不同思路进行编程。

七、思考题1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。

答:程序见程序清单。

四、实验程序流程框图和程序清单1、以查询方式工作,在P1.0 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #02H MV TH0, #9CH MV TL0, #9CH SETB TR0 LP: JNB TF0, LP CLR TF0 CPL P1.0 AJMP LP END2、以中断方式工作,在P1.1 RG 0000H START: LJMP MAIN RG 000BH LJMP TTC0 RG 0100H MAIN: MV TMD, #02H MV TH0, #88H MV TL0, #88H SETB EA SETB ET0 SETB TR0 HERE: LJMP HERE RG 0200H TTC0: CPL P1.1 RETI END3、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F6H MV TL0, #14H LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 MV TH0, #0F6H MV TL0, #14H CLR TF0 CLR TR0 CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F0H MV TL0, #0CH SETB TR0 LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 CLR TF0 MV TH0, #0F0H MV TL0, #0CH CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #00H LP1: MV TH1, #0F9H MV TL1, #18H SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CPL P1.0 MV TH1, #0F6H MV TL1, #14H LP3: JNB TF1, LP3 CLR TF1 CPL P1.0 LJMP LP1 END五、实验结果(波形图)篇二:单片机实验-定时器计数器应用实验一定时器/计数器应用实验一一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。

51单片机定时器计数器汇编实验报告

51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

单片机定时器实验报告

单片机定时器实验报告

单片机定时器实验报告单片机定时器实验报告概述:单片机是一种集成电路,具有微处理器核心,用于控制和执行各种任务。

在嵌入式系统中,单片机的定时器是一个重要的组件,用于生成精确的时间延迟和周期性的信号。

本实验旨在通过使用单片机的定时器模块,学习和掌握定时器的基本原理和应用。

实验目的:1. 理解单片机定时器的工作原理;2. 掌握定时器的基本配置和使用方法;3. 实现定时器产生精确的时间延迟和周期性的信号。

实验器材:1. 单片机开发板;2. USB数据线;3. 电脑。

实验步骤:1. 连接单片机开发板和电脑,确保开发板与电脑正常通信;2. 打开开发板的开发环境软件,创建一个新的工程;3. 在工程中选择定时器模块,并进行基本配置,如选择定时器模式、预分频系数等;4. 编写程序代码,实现定时器功能。

可以选择定时产生一个精确的时间延迟,或者产生一个周期性的信号;5. 将程序代码下载到单片机开发板中,并运行程序;6. 观察实验结果,验证定时器的工作是否符合预期。

实验结果:经过实验,我们成功实现了单片机定时器的功能。

通过设置定时器的工作模式和预分频系数,我们可以生成精确的时间延迟和周期性的信号。

实验结果与预期一致,证明了定时器的可靠性和准确性。

实验总结:通过本次实验,我们深入了解了单片机定时器的原理和应用。

定时器作为嵌入式系统中的重要组件,具有广泛的应用前景。

掌握定时器的基本配置和使用方法,对于开发嵌入式系统和实现各种功能非常重要。

通过实验,我们不仅学到了理论知识,还掌握了实际操作的技巧和经验。

然而,单片机定时器的应用不仅仅局限于时间延迟和周期性信号的生成。

在实际工程中,定时器还可以用于测量脉冲宽度、频率计数、PWM波形生成等。

因此,我们在以后的学习和工作中,应该进一步探索和应用定时器的其他功能,以满足不同场景下的需求。

总之,单片机定时器是嵌入式系统中不可或缺的组件之一。

通过本次实验,我们对定时器的原理和应用有了更深入的了解。

51单片机时钟实训报告

51单片机时钟实训报告

时、分、秒计时器设计一、任务及要求用51单片机设计时、分、秒计时器,具体要求如下。

1、具有时、分、秒计时功能和8位数码管显示功能,显示格式为:“时-分-秒”;2、用Proteus设计仿真电路进行结果仿真;3、4人组成设计小组完成,小组成员有明确分工,1人负责总体方案设计及报告撰写,2人负责功能模块函数设计,1人负责仿真电路设计及调试。

4、完成程序设计、仿真电路设计、结果仿真。

5、本实验要求设计一个数字计时器,可以完成0分00秒~23小时59分59秒的计时功能,并在控制电路的作用下有开机清零。

6、指标要求:①.显示时、分、秒。

②采用24小时制,小时计数器按“23翻00”规律计数。

.③为了保证计时准确、稳定,由单片机的定时器来计时。

7、设计要求:①画出电路原理图(或仿真电路图);②元器件及参数选择;③电路仿真与调试;④连接实物图,并调试;⑤写出报告,并做总结;二、设计方案1、总体设计方案(李文负责完成)(说明总体设计方案构思、程序模块构成、仿真电路构成等内容,不少于300字))。

构思:实现时钟的设计,如果采用软件延时的方法来实现时钟,太耗cpu了,因此采用51单片机的内部硬件资源来实现时钟,因此采用定时器来定时,由于单片机的最大定时的时间为65.536ms;但是我们要定时1s,为了方便,我们则选用定时器0工作方式1且定时50ms,然后在中断20次则有了1s,有了1s就好办了,分,时就好办了,只要在1秒的基础上加就可以实现时钟了,有了时,分,秒就要显示了,由于时,分,秒都是两位,因此要把个位与十位分离,然后在分别在数码管上显示,这样就实现时钟的设计。

程序模块:1、主函数:(调用初始化函数,调用显示函数)2、显示函数:(延时函数,数码管显示代码)3、中断服务函数:(时,分,秒的实现)仿真电路构成:数字钟的结构组成:1)晶体振荡器电路2)复位电路3)数码管使用非门驱动及数码管具体:52单片机的最小系统(52单片机,晶振电路(12MHz晶振,和30pF的无极性电容),复位电路(10k电阻,10uf极性电容,开关)),外加八位一体的数码管,数码管驱动电路;2、显示模块程序流程图(赵宝龙负责完成):(程序流程图及简单文字说明)(见附录);3、中断服务函数模块程序流程图(肖广负责完成):(程序流程图及简单文字说明)(见附录);4、主函数模块的设计(李文负责)(见附录);5、仿真电路设计(黄涛负责完成)(仿真电路图)三、程序代码:/*功能:用共阴的八位一体的数码管显示时间“小时-分钟-秒”位码接P2口;段码接P0口;使用定时器0定时1s,*/#include <reg51.h>//头文件#define uchar unsigned char //宏定义#define uint unsigned int //uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴七段编码uchar sec,min,hour,count;// 定义变量void delay (uchar x)//延时1ms的函数{uchar z ,y;for (y=x;y>0;y--)for (z=124;z>0;z--);}void init (void)//初始化函数{TMOD=0X01;//定时器0工作在方式1TH0=0X3C;//装初值TL0=0XB0;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0sec=0; //秒设初值min=0; //分设初值hour=0;//时设初值count=0; //计数设初值P0=0xff; //P2=0xff; //}void display ()//显示函数{uchar sec1,sec2,min1,min2,hour1,hour2;//定义变量sec1= sec/10; //秒的十位sec2= sec%10; //秒的个位min1= min/10; //分的十位min2= min%10; //分的个位hour1= hour/10;//时的十位hour2= hour%10;//时的个位P2= 0x80; //秒个位的位码P0= table[sec2]; //秒个位的段码delay(5);P2= 0x40; //秒十位的位码P0= table[sec1]; //秒十位的段码delay(5);P2= 0x20; //“-”的位码P0= 0x40; //“-”的段码delay(5);P2= 0x10; //分十位的位码P0= table[min1];//分十位的段码delay(5);P2= 0x08; //分个位的位码P0= table[min2];//分个位的段码delay(5);P2= 0x04; //“-”的位码P0= 0x40; //“-”的段码delay(5);P2= 0x02; //时个位的位码P0= table[hour2];//时个位的段码delay(5);P2= 0x01; //时的十位的段码P0= table[hour1];//时的十位的段码delay(5);}void main(){init(); //初始化函数while(1){display(); //时间显示函数}}void time() interrupt 1 //中断服务函数{TH0=0X3C; //重装初值TL0=0XB0;if(count==20) //定时一秒{count=0; //计数清零if(sec==59) //秒计时到60秒{sec=0; //秒清零if(min==59) //分计时到60秒{min=0; //分清零if(hour==23) //小时计数到24{hour=0;//小时清零}else hour++; //小时加一}else min++; //分加一}else sec++; //秒加一}count++; //计数加一}五、设计总结单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。

单片机汇编程序51电子时钟.doc

单片机汇编程序51电子时钟.doc

单片机汇编程序 51电子时钟电子钟设计实验报告一)实验目的:1、进一步掌握定时器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

3、进一步掌握数码显示电路的驱动方法。

4、进一步掌握键盘电路的驱动方法。

5、进一步掌握软件数据处理的方法。

二)内容要求:1、利用CPU的定时器和数码显示电路,设计一个电子时钟。

格式如下:XX XX XX 由左向右分别为:时、分、秒。

2、电子时钟有秒表功能。

3、并能用键盘调整时钟时间。

4、电子时钟能整点报时、整点对时功能。

5、能设定电子时钟的闹铃。

三)主要元件:电阻4.7K 10个 2K 1个四位共阳数码管1个二位共阳数码管1个按钮开关4个万用板(中板)1个 9012PNP 7个排线排阵若干电线一捆蜂鸣器1个最小系统一个四)系统说明:按P1.0键,如果按下的时间小于1秒进入省电模式(数码管不显示,开T0计时器),如果按下的时间大于1秒则进入时间调整.。

在时间调整状态:再按P1.0,如果按下时间大于0.5秒转调小时状态,按下时间小于0.5秒加1分钟操作。

在小时调整状态再按P1.0键,如果按下时间大于0.5秒退出时间调整,如果按下时间小于0.5秒加1小时操作。

按P1.1键,进入闹铃调分状态,按P1.2分加1,按P1.0分减1。

若再按P1.3,则进入调整状态,按P1.2时加1,按P1.0分时。

按P1.1键,闹铃有效,显示式样变为00:00:—0;再按P1.1键,闹铃无效,显示式样变为00:00:—。

按P1.3键,调整闹钟时间结束。

按P1.2键,进入秒表计时功能,按P1.2键暂停或清零,按P1.1键退出秒表回到时钟状态。

而且本系统还有整点报时功能,以及按键伴有声音提示。

五)程序流程图:开始 TO中断初始化保护现场进入功能调用显示定时初值校正程序子程序N Y键按下, 1S到,Y N加1S处理整点到NY恢复现场,中断返回按时间鸣叫次数主程序流程图 T0中断计时程序流程图T1中断保护现场T1中断服务程序流程图秒表/闪烁,时钟调时闪烁加10MS处理闪烁处理恢复现场,中断返回六)电路图七)程序清单:中断入口程序 ;; DISPFIRST EQU 30H BELL EQU P1.4CONBS EQU 2FHOUTPX EQU P2 ;P2位选OUTPY EQU P0 ;P0段选INP0 BIT P1.0INP1 BIT P1.1INP2 BIT P1.2ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口RETI ;外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址RETI ;串行中断程序返回;QQQQ:MOV A,#10HMOV B,79HMUL ABADD A,78HMOV CONBS,ABSLOOP:LCALL DS20MSLCALL DL1SLCALL DL1SLCALL DL1SDJNZ CONBS,BSLOOPCLR 08HAJMP START;; 主程序 ;;START:MOV R0,#00H ;清70H-7AH共11个内存单元MOV R7,#80H ;CLEARDISP: MOV @R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50MS×20)MOV DISPFIRST ,#70HSTART1: LCALL DISPLAY ;调用显示子程序JNB INP0,SETMM1 ;P1.0口为0时转时间调整程序JNB INP1,FUNSS ; 秒表功能,P1.1按键调时时作减1加能JNB INP2,FUNPT ;STOP,PUSE,CLRJNB P1.3,TSFUNSJMP START1 ;P1.0口为1时跳回START1SETMM1: LJMP SETMM ;转到时间调整程序SETMM FUNSS: LCALL DS20MSJB INP1,START1WAIT11: JNB INP1,WAIT11CPL 03HMOV DISPFIRST,#00H :显示秒表数据单元MOV 70H,#00HMOV 71H,#00HMOV 76H,#00HMOV 77H,#00HMOV 78H,#00HMOV 79H,#00HAJMP START1FUNPT: LCALL DS20MSJB INP2,START1WAIT22: JNB INP2,WAIT21CLR ET0CLR TR0WAIT33: JB INP2,WAIT31 LCALL DS20MSJB INP2,WAIT33WAIT66: JNB INP2,WAIT61 MOV R0,#70H ;清70H-79H共10 个内存单元MOV R7,#0AH ;CLEARP: MOV @R0,#00H ;INC R0 ;DJNZ R7,CLEARP ;WAIT44: JB INP2,WAIT41 LCALL DS20MSJB INP2,WAIT44WAIT55: JNB INP2,WAIT51 SETB ET0SETB TR0AJMP START1WAIT21: LCALL DISPLAY AJMP WAIT22WAIT31: LCALL DISPLAY AJMP WAIT33WAIT41: LCALL DISPLAYAJMP WAIT44WAIT51: LCALL DISPLAYAJMP WAIT55WAIT61: LCALL DISPLAYAJMP WAIT66 TSFUN:LCALL DS20MSWAIT113:JNB P1.3,WAIT113JB 05H,CLOSESPMOV DISPFIRST,#50HMOV 50H,#0CHMOV 51H,#0AHDSWAIT:SETB EALCALL DISPLAYJNB P1.2,DSFINCJNB P1.0,DSDECJNB P1.3,DSSFU AJMP DSWAITCLOSESP:CLR 05HCLR BELLAJMP START1 DSSFU:LCALL DS20MS JB P1.3,DSWAIT LJMP DSSFUNN DSFINC:LCALL DS20MS JB P1.2,DSWAIT DSWAIT12:LCALL DISPLAY JNB P1.2,DSWAIT12 CLR EAMOV R0,#53H LCALL ADD1MOV A,R3CLR CCJNE A,#60H,ADDHH22ADDHH22:JC DSWAITACALL CLR0AJMP DSWAITDSDEC:LCALL DS20MSLCALL DISPLAYDSWAITEE:LCALL DISPLAYJNB P1.0,DSWAITEECLR EAMOV R0,#53HLCALL SUB1LJMP DSWAIT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0JB 03H,FSSMOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0MOV R0,#79H ;指向小时计时单元(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志JB 03H,OUTT0 ;秒表时最大数为99CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;LCALL BAOJPOP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回 ;秒表计时程序(10MS加1),低2位为0.1、0.01秒,中间2位为秒,最高位为分。

51单片机实验报告总结

51单片机实验报告总结

51单片机实验报告总结51单片机实验是必修课程之一,目的是让学生了解和掌握嵌入式系统开发的基本原理和方法。

本次实验涵盖了单片机的基本操作、输入输出控制、时序控制、通信技术、中断处理、PWM技术等内容,让我们一步步进入嵌入式系统的世界。

通过这些实验,我们深刻体会到嵌入式系统开发的艰辛和复杂程度。

在每个实验中,我们需要认真思考实验目的,设计符合要求的电路,编写精确并且有效的程序。

我们还要学会阅读芯片数据手册,并对不同的芯片进行适配,合理利用芯片的资源。

这些实战经验对我们今后从事嵌入式系统开发会有很大帮助。

在这些实验中,我们学会了使用单片机进行输入输出控制。

通过外部电路(比如数码管、LED灯、按键等),让单片机可以感知外界的状态变化,并根据程序控制输出对应的信号。

我们实现了按键控制LED灯亮灭、数码管显示数字和摆动等功能。

在实验中我们还学习了流水灯和矩阵键盘控制的实现方法,这给我们后续实验和项目提供了很好的思路和解决方案。

在时序控制实验中,我们掌握了计时器和定时器的基本原理和使用方法。

它们可以精确地生成特定频率和宽度的高低电平,也能间歇性地输出脉冲信号,这为摆线电机的控制和PWM驱动电机等实际应用打下了基础。

通过这些实验,我们更加深入地了解到计时器、定时器和中断的运作原理和使用方法。

在串口通信和I2C通信实验中,我们还学习了如何使用串口和I2C通信实现数据传输,可以将单片机与其他设备进行沟通和交流。

在日常工程开发中,这样的应用场景非常广泛,例如单片机与PC的数据传输、I2C总线上多个设备之间的通信等。

在PWM技术实验中,我们学习了如何使用定时器和PWM输出控制电机转速,这些技术可以实现高精度的电机控制和驱动,这是在机器人控制、智能家居等应用中必不可少的技术。

在这些实验中,我们不仅学会了单片机的基本原理和使用方法,而且也经历了从理论到实践的探索和体验。

这些实验的收获在于训练我们的动手实践能力,增强我们的团队合作精神,提高我们的问题解决能力,也让我们更加深入地了解嵌入式系统的精髓。

单片机实验报告

单片机实验报告

目录一、实验一 (1)二、实验二 (7)三、实验三 (11)四、实验四 (15)实验一定时/计数器验证实验一、实验目的熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时;二、实验设备及器件IBMPC机一台PROTEUS硬件仿真软件KeilC51;三、实验内容用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始;四、实验要求要求采用Proteus软件实现上述实验;五、实验步骤1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件;元件全部添加后,在ProteusISIS的编辑区域中按图1-1所示的原理图连接硬件电路;图1-1电路原理图2.根据参考程序绘出流程图,并辅以适当的说明;流程图如图1-2所示:图1-2程序流程图3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考程序导入到“SourceGroup1”中;在“OptionsforTarget”对话窗口中,选中“Output”选项卡中的“CreateHEXFile”选项和“Debug”选项卡中的“Use:ProteusVSMSimulator”选项;编译汇编源程序,改正程序中的错误;4.在ProteusISIS中,选中AT89C51并单击鼠标左键,打开“EditComponent”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件;在ProteusISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“UseRemoteDebugMonitor”选项,以支持与Keil的联合调试;5.在Keil的菜单栏中选择“Debug”→“Start/StopDebugSession“选项,或者直接单击工具栏中的“Debug”→“Start/StopDebugSession”图标,进入程序调试环境;按“F5”键,顺序运行程序;调出“ProteusISIS”界面可以看到7段数码管显示从0~59s的计数值,每个数值显示1s,如图1-3所示;图1-3程序运行结果六、实验程序SECOND EQU 30HCOUNT EQU 31HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,00HMOV COUNT,00HMOV DPTR,TABLECLR AMOV P0,AMOV P2,AMOV TMOD,00HMOV TH0,65536-50000/256MOV TL0,65536-50000MOD256SETB TR0SETB ET0SETB EAMOVIE,82HLJMP $INT_T0:MOV TH0,65536-50000/256MOV TL0,65536-50000MOD256INC COUNTMOV A,COUNTCJNE A,20,I2MOV COUNT,00HINC SECONDMOV A,SECONDCJNE A,60,I1MOV SECOND,00HI1: MOV A,SECONDMOV B,10HDIV ABMOVC A,A+DPTRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AI2: RETITABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND七、思考题1.罗列一下Proteus软件的能带给我们的好处,指出一点最能帮助你的地方;使用Proteus软件能使我们方便的搭建电路,同时在没有元器件的情况下进行便于仿真,方便我们在将程序写入单片机前确认运行是否正确,同时可在采购器件之前即可开始开发产品,而不必等到器件采购完后搭建电路才进行程序调试;2.用Proteus界面中的播放键运行仿真与KeilμVision4的环境中联调运行它们两者的区别在什么地方3.用Proteus界面中的播放键运行仿真仅可以观察运行结果,即程序运行在硬件表面上的表现;而联调的时候可以再Keil软件里查看各寄存器和存储器的状况,即硬件的内部情况;4.Keil软件软件仿真与Proteus的仿真对比;使用Proteus仿真可从硬件的角度观察仿真结果,使仿真结果更加形象直观,使我们可从硬件运行状态清楚的判断运行结果是否正确;而在Keil环境中则是从程序的角度通过观察程序中数据的变化来观察仿真结果,需要对程序运行结果充分了解;八、实验总结及相关问题通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil的使用方法下,学会了Proteus与Keil软件联调的方法;在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,最后通过观察发现数码管引脚电平无变化发现此问题,放置网络标号后运行仿真时数码管引脚电平发生变化可是数码管却没有变亮,经过多次检查接线,未发现接线错误后,觉得可能是软件本身错误,故将总线及数码管周围硬件线路重新绘制一遍后再次运行仿真及可得到图1-3的结果;实验二单片机I/O口控制实验一、实验目的利用单片机的P1口作IO口,使同学学会利用P1口作为输入和输出口;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮;2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭P1.7接按键,按下时LED亮,不按时LED灭;四、实验要求学会使用单片机的P1口作IO口,如果有时间同学也可以利用P3口作IO口来做该实验;五、实验步骤1.用导线把A2区的J61接口与D1区的J52接口相连;原理如图2-1所示;图2-1实验二原理图2.先编写一个延时程序;延时程序见程序1子程序DELAY;3.将LED轮流亮的程序编写完整并使用TKStudyICE调试运行;LED轮流亮程序见程序1;调试运行结果:D1区LED轮流亮;4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连;5.编写P1.7控制LED的程序,并调试运行;按下K1看是否全亮;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全灭;6.A2区J61接口的P1.7与D1区的J54的SW1相连;然后再使用TKStudyICE运行程序,查看结果;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全亮;六、实验参考程序程序1:ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,0FFHCLR CMAINLOOP:CALL DELAYRLC AMOV P1,ASJMP MAINLOOPDELAY: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPRETEND程序2:ORG 000HLJMP MAINORG 0100HMAIN: JB P1.7,SETLEDCLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP MAINSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6SJMP MAINEND七、实验思考题1.请同学思考一下,想出几个实现以上功能的编程方法;程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位后输出至P1口;程序2可在判断P1.7高低电平后根据判断结果直接将80H或7F直接送P1口而不必逐位进行位操作;2.请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,程序应如何修改;此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触发方式,通过中断服务子程序控制LED亮灭;程序如下所示:ORG 000HLJMP MAINORG 0003H ;中断服务程序LJMP SETLEDMAIN: MOV SP,40HSETB ET0 ;开外部中断CLR IT0 ;设置为电平触发SETB EACLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP CLRLEDSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6RETIEND八、实验总结及相关问题通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,在设置仿真器驱动程序声明时对C:\Keil目录下的Tools.ini文件添加描述时,由于添加的路径错误导致无法进行硬件仿真调试,修改为正确路径后方可在DEBUG窗口中的Use选项中找到对应的选项;使用TKStudyICE进行硬件仿真调试相比本学期的电子系统设计中用到的调试方法更快捷,使用更方便;与此同时,通过本次实验对单片机的I/O控制有了更深入的了接,同时加深入对单片机I/O编程的理解;实验三串转并I/O口实验一、实验目的熟悉并掌握串转并的I/O口扩展方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.写程序,通过单片机的P1口控制74HC164的串行输入端口,实现串并转换;2.验证串并转换数据的正确性;四、实验要求熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机的I/O口资源;表3-174HC164真值表五、实验步骤1.短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相连CLK对P10等等;如图3-1所示;图3-1实验三原理图2.运行编写好的软件程序,完成一次串并转换;实验程序见实验参考程序;2.使用C2区的逻辑笔或D1区的J52接口LED指示灯测试并行输出数据Q0~Q7数据的正确性;调试运行结果:通过观察LED的亮灭情况可判断完成一次串并转换,且转换结果正确无误;六、实验参考程序CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV R4,08HSLCHG: RLC AMOV DINA,CSETB CLKNOPCLR CLKNOPDJNZ R4,SLCHGSJMP$END七、实验思考题参考图3-2电路图,尝试编写软件程序,实现8位LED流水灯的控制;图3.2实验原理图可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位;程序如下所示:CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 000BH ;定时器0中断服务程序LJMP SLCHGMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV TMOD,01H ;定时器0工作方式1MOV TH0,18H ;送2ms时间常数MOV TL0,0FCHSETB TR0 ;开中断SETB ET0SETB EASJMP $SLCHG: MOV TH0,18HMOV TL0,0FCHRLC AMOV DINA,CSETB CLKNOPCLR CLKRETIEND八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验对串并转化程序的编写有了一定了解,通过编写流水灯程序加深了对单片机串并口的了解;实验四继电器控制实验一、实验目的加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继电器的一般方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.利用D1区的拨动开关和LED,学习继电器的工作原理和特点;2.编写一段程序,用P1.0口控制继电器,继电器控制LED的亮和灭,COM与CLOSE连通时,一盏LED亮;不连通时该LED灭;COM与OPEN连通时,另一盏LED亮,不通时该LED灭;四、实验要求学会继电器的使用和利用单片机的IO口控制继电器的方法;五、实验步骤图4-1继电器驱动控制电路图1.用短路帽短接JP7,使用导线把D1区J54接口的SW1与C7区J9接口的KJ任意一根针相连接;2.使用导线把D1区J52接口的LED1、LED2与C7区J103接口的OPEN1,CLOSE1分别相连,另外C7区J103接口的COM1接地GND;3.接好线后,同学可以拨动D1区的SW1拨动开关,观察现象拨到1时LED2亮,拨到0时LED1亮,并得出结论;运行结果:拨到1时LED2亮,拨到0时LED1亮,说明每拨动一次开关改变一次继电器的状态;4.然后把C7区J9接口的KJ改接到A2区的J61接口的P10;再编写一个程序程序参考实验二,使P1.0口延时一段时间后改变电平值,来控制继电器的开关;实验程序见实验参考程序;调试运行结果:两个LED交替变亮,继电器状态不断改变;六、实验参考程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPCPL P1.0SJMP MAINEND七、实验思考题1.请同学思考一下,改由OPEN2、COM2、CLOSE2时本实验如何进行;同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的LED1、LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103接口的COM2接地GND即可;2.请同学再思考一下,继电器的用途,并举例说明;继电器是一种电控制,是当输入量激励量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器;它具有又称输入回路和被控制系统又称输出回路之间的互动关系;通常应用于自动化的控制中,它实际上是用小电流去控制大电流运作的一种“自动开关”;故在电路中起着自动调节、安全保护、转换电路等作用;按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器舌簧继电器时间继电器高频继电器极化继电器其他类型的继电器八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验了解了继电器的控制方法;对继电器这一器件有了一定了解;。

C51单片机定时器及数码管控制实验报告

C51单片机定时器及数码管控制实验报告

昆明理工大学信息工程与自动化学院学生实验报告( 201 —201学年第1 学期)课程名称:单片机技术开课实验室: 年月日一、实验目的1. 掌握定时器 T0、T1 的方式选择与编程方法,了解中断服务程序的设计方法, 学会实时程序的调试技巧。

2. 掌握 LED 数码管动态显示程序设计方法。

二、实验原理1.89C51 单片机有五个中断源(89C52 有六个),分别就是外部中断请求 0、外部中断请求 1、定时器/计数器 0 溢出中断请求、定时器/计数器 0 溢出中断请求及串行口中断请求。

每个中断源都对应一个中断请求位,它们设置在特殊功能寄存器 TCON 与 SCON 中。

当中断源请求中断时,相应标志分别由 TCON 与SCON 的相应位来锁寄。

五个中断源有二个中断优先级,每个中断源可以编程为高优先级或低优先级中断,可以实现二级中断服务程序嵌套。

在同一优先级别中,靠内部的查询逻辑来确定响应顺序。

不同的中断源有不同的中断矢量地址。

中断的控制用四个特殊功能寄存器 IE、IP、TCON (用六位)与 SCON(用二位), 分别用于控制中断的类型、中断的开/关与各种中断源的优先级别。

中断程序由中断控制程序(主程序)与中断服务程序两部分组成:1)中断控制程序用于实现对中断的控制;2)中断服务程序用于完成中断源所要求的中断处理的各种操作。

C51 的中断函数必须通过 interrupt m 进行修饰。

在 C51 程序设计中,当函数定义时用了 interrupt m 修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段与尾段,并按 MCS-51 系统中断的处理方式自动把它安排在程序存储器中的相应位置。

在该修饰符中,m 的取值为 0~31,对应的中断情况如下:0——外部中断 01——定时/计数器 T02——外部中断 13——定时/计数器 T14——串行口中断5——定时/计数器 T2其它值预留。

89C51 单片机内设置了两个可编程的 16 位定时器 T0 与 T1,通过编程,可以设定为定时器与外部计数方式。

实验三 定时器实验 实验报告

实验三 定时器实验 实验报告

课程名称:单片机实验题目:实验三定时实验学生姓名:专业:电子信息科学与技术班级:学号:指导教师:张涛实验三 定时器实验一、实验目的1、掌握单片机系统定时器断的原理及使用方法。

二、实验原理 (一)、单片机定时器/计数器的结构 1.定时器/计数器组成框图8051单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。

此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图所示。

_____INT1(P3.3)_____INT0(P3.2)T1(P3.5)T0(P3.4)图 8051定时器/计数器逻辑结构图由图可知,8051定时器/计数器由定时器 T0、定时器T1、定时器方式寄存器TMOD 和定时器控制寄存器TCON 组成。

2.定时/计数器的方式寄存器和控制寄存器定时/计数器的初始化通过定时/计数器的方式寄存器TMOD 和控制寄存器TCON 完成。

1)定时/计数器方式寄存器TMODTMOD 为T1、T2的工作方式寄存器,其格式如下:TMOD D7 D6 D5 D4 D3 D2 D1 D0(89H) TMOD 的低 (1(2)T /C :功能选择位。

0/C =时,设置为定时器工作方式;1/C =时,设置为计数器工作方式。

(3)GATE :门控位。

当GA TE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须0INT (P3.2)或1INT (P3.3)为高电平方可启动定时器,即允许外中断0INT 、1INT 启动定时器。

TMOD 不能位寻址,只能用字节指令设置定时器工作方式,高4位定义T1,低4位定义T0。

复位时,TMOD 所有位均置0。

2)定时器/计数器控制寄存器TCONTCON 的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。

定时器控制字TCON 的格式如下:TCON (88H ) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(1) TCON.7 TF1:定时器1溢出标志位。

51单片机定时器计数器汇编实验

51单片机定时器计数器汇编实验

实验三、定时器/计数器实验报告一、实验内容1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。

(计算机仿真)2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。

(实验台验证)3、设计一个60秒计时器,秒计时结果用两位LED数码管显示。

(计算机仿真)二、实验仿真图(1)脉冲计数实验程序ORG 0000HBEGIN:MOV TMOD,#51H MOV TL0,#0F0HMOV TH0,#0DBHMOV TH1,#00HMOV TL1,#00HMOV P1,#00HMOV P0,#00HMOV P2,#00HMOV R3,#00HMOV R4,#00HSETB TR0SETB TR1S1: MOV R1,#33HMOV A,R4MOV R5,TL1ADD A,R5MOV P1,AMOV R2,TL1CJNE R2,#10,S2MOV TH1,#00HMOV TL1,#00HINC R3MOV A,R3MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P2,AMOV P0,#3FHMOV A,R3MOV B,#0AHMUL ABMOV R4,AMOV P1,R4AJMP NEXTS2: MOV R1,#33HMOV DPTR,#TAB1MOV A,TL1MOVC A,@A+DPTRMOV P0,AAJMP NEXT LOOP: JBC TF0,NEXT AJMP LOOPNEXT: MOV TL0,#0F0HMOV TH0,#0DBHDJNZ R1,LOOPCPL P3.6CPL P3.7AJMP S1TAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(SW3,SW4为:00) END(2)60秒定时器实验程序ORG 0000HBEGIN:MOV TMOD,#51HTL0,#0F0HMOVMOVTH0,#0DBHTH1,#00HMOVTL1,#00HMOVR3,#00HMOVP0,#00HMOVP2,#00HMOVSETBTR0TR1SETBS1: MOV R1,#33HR2,TL1MOVR2,#10,S2CJNETH1,#00HMOVTL1,#00HMOVR3INCR3,#06H,S4CJNER3,#00HMOVS4: MOV A,R3DPTR,#TAB1MOVA,@A+DPTRMOVCP2,AMOVMOVP0,#3FHNEXTAJMPS2: MOV R1,#33HDPTR,#TAB1MOVA,TL1MOVA,@A+DPTRMOVCMOVP0,ANEXTAJMPLOOP: JBC TF0,NEXTLOOPAJMPNEXT: MOV TL0,#0F0HTH0,#0DBHMOVR1,LOOPDJNZP3.6CPLCPLP3.7S1AJMPTAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END。

单片机实验报告(完整版)

单片机实验报告(完整版)

单片机原理与应用实验报告学院(部):专业:学生姓名:班级:学号:最终评定成绩:实验一存储器读写一、实验目的:1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作。

二、实验仪器设备1.PC机,1台2.WAVE软件开发系统三、实验内容及步骤:1、将下面的汇编程序输入到W A VE集成开发软件中ORG 0000HSJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08HMOV R1,#70HMOV DPTR,#2000HLOOP:MOVX A,@R1MOVX A,@DPTRINC R1INC ADJNZ R7,LOOPSJMP $END2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。

3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。

四、源程序源程序:ORG 0000H ;定义起始地址SJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08H ;给内部RAM的70H单元赋初值MOV R1,#70H ;使R1指向内部70H单元MOV DPTR,#2000H ;定义外部存储器开始单元LOOP:MOVX A,@R1 ;将R1所指向的70H的内容赋给AMOVX @DPTR,A;将A的内容赋给外部存储器单元INC R1 ;内部RAM地址加1INC DPTR ;外部存储器地址加1DJNZ R7,LOOP ;循环,直到RAM中70H~7FH;单元的内容全部相应赋给;外部2000H~2007H单元SJMP $END3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。

五、仿真效果图实验二I/O端口操作一、实验目的:1、掌握I/O端口读写等基本汇编指令;2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。

单片机实验报告

单片机实验报告
MOV TMOD,#20H
MOV TL1,#0F4H
MOV TH1,#0F4H
SETB TR1
DLAL:MOV SBUF,#99H
CHECK_99:JBC TI,WAIT_RSPS
JMP CHECK_99
WAIT_RSPS:JBC RI,CHECK_01
JMP WAIT_RSPS
CHECK_01:MOV A,SBUF
二.实验目的
(1)掌握中断系统的工作原理
(2)掌握中断向量的概念。
(3)学习外部中断的基本使用方法。
(4)学习外部中断的基本使用方法。
(5)学习中断处理程序的处理方法。
(6)掌握规范的程序设计方法。
三.实验元件
(1)AT89C51,LED-RED,RED-GREEN,BUTTON,RES
(2)AT89C51,LED-RED,BUTTON1,BUTTON2,RES
MOV TL0,#9CH
MOV TCON,#50H
MOV IE,#9AH
AJMP $
PINT0:MOV TL0,#9CH
CPL P1.0
RETI
PINT1:MOV TH0,#38H
CPL P1.1
RETI
END
(4)T0方式3 定时300us 输出占空比1/3矩形波查询方式
ORG 0000H
LJMP MAIN
D1:MOV R4,#255
D2:MOV R5,#255
D3:DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
SETB P0.1
RETI
END
(2)INT0、INT1中断控制LED
ORG 0000H
LJMP MAIN

定时计数器实验-单片机

定时计数器实验-单片机

单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。

二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。

它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。

T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。

作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。

计数的最高频率一般为振荡频率的1/24。

定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。

TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。

因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。

TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:GATE:门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

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



长沙理工大学
实验报告
年级光电班号姓名同组姓名实验日期月日
指导教师签字:批阅老师签字:
内容
一、实验目的四、实验方法及步骤
二、实验原理五、实验记录及数据处理
三、实验仪器六、误差分析及问题讨论
单片机定时器/计数器实验
一、实验目的
1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器
1、装有keil软件的电脑
2、单片机开发板
三、实验原理
51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容
1、计算计数初值
单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:
(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器
TMOD设置为xxxx0001B
3、程序设计
ORG 0000H
AJMP MAIN
ORG 30H
MAIN: MOV P1,#0FFH ;关闭所有灯
ANL TMOD,#0F0H ;置定时器0工作方式1
ORL TMOD,#01H ;不影响T1的工作
MOV TH0,#15H ;设置计数初始值
MOV TL0,#0A0H
SETB EA ;CPU开中断
SETB ET0 ;定时器0开中断
SETB TR0 ;定时器开始运行
LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTP
AJMP LOOP ;然跳转到LOOP处运行
INTP: MOV TH0,#15H ;重新设置计数初值
MOV TL0,#0A0H
CPL P1.0 ;输出取反
AJMP LOOP
END AJMP LOOP
END
4、实验仿真
新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

编辑源程序,建立.asm源文件,将源文件添加到工程项目组中。

将生成的.hex文件下载到单片机开发板,观察P1.0连接的LED灯闪烁。

相关文档
最新文档