文档库 最新最全的文档下载
当前位置:文档库 › C51单片机定时器及数码管控制实验报告

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

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——外部中断 0

1——定时/计数器 T0

2——外部中断 1

3——定时/计数器 T1

4——串行口中断

5——定时/计数器 T2

其它值预留。

89C51 单片机内设置了两个可编程的 16 位定时器 T0 和 T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。

2.定时器 T0 由特殊功能寄存器 TL0 和 TH0 构成,定时器 T1 由 TH1 和TL1 构成,特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器 IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1 的中断入口地址为 001BH。

定时器的编程包括:

1)置工作方式。

2)置计数初值。

3)中断设置。

4)启动定时器。

定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。

3.单片机的拉电流比较小(100~200uA),灌电流比较大(最大是 25mA,一般不能超过 10mA),不能直接驱动数码管,需要扩流电路。可以用三级管来驱动,但是 51 单片机只有 32 个 I/O 口,可能需要外接多种器件, I/O 口是不够用的。故可选用 74HC573 锁存器来解决这个问题,开发板上数码管的硬件设计电路图,如图 1 所示。

TX-1C 实验开发板用两个 74HC573 锁存器(输出电流较大,接口简单),通过 P0 口控制六个数码管的段选及位选,其中 P2.6 控制锁存器 U1(DULA),P2.7 控制锁存器 U2(WELA)。单片机控制锁存器的锁存端,进而控制锁存器的输出,这种分时控制的方法可方便地控制任意数码管显示任意数字。

图 1 LED 数码管电路原理图

三、实验内容

利用动态扫描和定时器 1 在数码管上显示出从 765432 开始以 1/10 秒的速度往下递减直至 765398 并保持显示此数,与此同时利用定时器 0 以 500MS 速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3 秒后(用 T0 定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。

计算初值公式

定时模式 1 th0=(216-定时时间) / 256 tl0=(216-定时时间) % 256

四、实验步骤

1、按实验要求在 KeilC 中创建项目,编辑、编译程序。

2、将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。

3、在实验板中运行程序,观察实验运行结果并记录。

五、实验结果

开始时数码管的数字是765432,随后是765429,流水灯显示的是第一个灯,实验结果如下图所示:

当数码管显示765406时,流水灯显示是第六个灯,实现现象如下图所示:

当数码管显示765398时,流水灯显示的是第七个灯,由于LED灯变化快,难以捕捉到此时刻,以下图片是随后LED闪烁,数码管保持765398的现象:

最后流水灯全部关闭,数码管显示HELLO字样的现象:

六、心得体会

通过这次实验,巩固了流水灯的操作,在此之上,加深了八段数码管的动态显示的理解,对定时器中断的理解和运用,虽然在实验的的过程中遇到了各种各样的问题,但是在老师和同学们的帮助下,我失算顺利的完成了这次实验,为后续的学习打下了坚实的基础。

七、思考

1.若用定时器 1 方式 2,程序如何修?

答:对定时器/计数器的工作方式进行修改,

即:TMOD = 0x21;//0010’0001

2.若显示从“99”开始递减,程序如何修改?

答:只需选择第一个和第二个数码管即可,当递减到0时停止,或者继改回数字99,程序的其他部分基本不变。

八、源代码

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit led1 = P1^0;

sbit dula = P2^6;

sbit wela = P2^7;

uchar code table[]={ //建一张table数组,元素是0~F字样

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

uchar code Hello[]={ //建一张HELLO数组,元素是H,E,L,L,O字样

0x76,0x79,0x38,0x38,0x3f};

void init();//main()函数初始化的函数的声名

void delayms(uint); //延时函数声名

void display(uchar,uchar,uchar);//数码管显示函数声名

void disHello(); //HELLO显示函数声名

uchar num1,num2,bai,shi,ge; //定义全局变量

int count,temp;

void main()

{

init();

while(1)

{

if(num1==10)//定时器每次计时50ms,当计满500ms时,LED灯流动

{

num1=0;

P1 = _crol_(P1,1); //循环左移

}

if(num2==2)//当计满0.1s时,数码管的值减1

{

num2 = 0;

count--;

if(count==398)//当数码管减到765398时,保持该数,8个LED灯闪//烁

{

TR1 = 0;

TR0 = 0;

bai = count/100;//获得398的个、十、百位

shi = count/10%10;

ge = count%10;

display(bai,shi,ge); //显示数码管的六位数

P1 = 0x00; //8个LED闪烁的初始状态

num1 = 0; //重新启动定时器T0时,num1重新初始化为0

TR0 = 1;

while(1)

{

if(num1%10==0) //8个LED每隔500ms闪烁

P1 = ~P1; //LED灯取反

if(num1 == 60) //当计满3s时,关闭LED灯,在数码管上显//示HELLO

{

TR0 = 0; //关闭定时器T0

P1 = 0xff; //关闭LED灯

disHello(); //显示HELLO

}

else

display(bai,shi,ge); //当没计满3s时,继续显示之前的6位数

}

}

bai = count/100;

shi = count/10%10;

ge = count%10;

}

display(bai,shi,ge);

}

}

void init() //main()函数的初始化

{

TMOD = 0x11; //定时器T0,T1的工作方式都是1

TH0 = (65536-45872)/256; //T0计数寄存器的初始化

TL0 = (65536-45872)%256;

TH1 = (65536-45872)/256;//T1计数寄存器的初始化

TL1 = (65536-45872)%256;

P1 = 0xfe; //LED的初始化

count = 432; //计数器的初始化,因为只有后三位变化

EA = 1; //打开总中断

ET0 = 1; //打开计时器T0

TR0 = 1; //打开计时器T1

ET1 = 1; //开启计时器T0

TR1 = 1; //开启计时器T1 }

void disHello()//HELLO显示程序{

wela = 1;

P0 = 0xfe;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = Hello[0];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xfd;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = Hello[1];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xfb;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = Hello[2];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xf7;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = Hello[3];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xef;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = Hello[4];

dula = 0;

delayms(5);

}

void display(uchar bai,uchar shi,uchar ge) //数码管显示程序{

wela = 1;

P0 = 0xfe;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[7];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xfd;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[6];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xfb;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[5];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xf7;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[bai];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xef;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[shi];

dula = 0;

delayms(5);

wela = 1;

P0 = 0xdf;

wela = 0;

P0 = 0xff;

dula = 1;

P0 = table[ge];

dula = 0;

delayms(5);

}

void delayms(uint xms)

{

uint i,j;

for(i=0;i

for(j=0;j<110;j++);

}

void T0_time() interrupt 1 //定时器T0程序{

TH0 = (65536-45872)/256;

TL0 = (65536-45872)%256;

num1++;

}

void T1_time() interrupt 3 //定时器T1程序{

TH1 = (65536-45872)/256;

TL1 = (65536-45872)%256;

num2++;

}

单片机课设数码管计时器

第1章设计方案 (1) 1.1 设计目的 (1) 1.2 设计要求 (1) 1.3 设计原理 (1) 第2章硬件设计 (2) 2.1 器件说明 (2) 2.1.1 51单片机简述 (2) 2.1.2 DS12C887实时时钟芯片简介 (4) 2.1.3 MAX7219共阴极数码管显示驱动芯片简介 (6) 2.2 硬件构造说明 (7) 2.2.1复位及震荡电路 (8) 2.2.2 时间获取电路 (8) 2.2.3 显示驱动电路 (9) 第3章软件设计 (10) 3.1 软件设计简要思路 (10) 3.2 时间获取及定时计数器程序 (11) 3.2.1定时/计数器初值计算 (11) 3.2.2 计数运算程序 (11) 3.3 显示驱动程序 (12) 3.4利用数码管显示的倒计时装置设计程序 (14) 3.5 软件调试仿真 (18) 3.5.1 系统调试工具keil C51 (18) 3.5.2 系统调试工具PROTEUS (19) 第4章课程设计总结 (20) 致谢 (21) 参考文献: (22)

1.1 设计目的 本次课程设计的主要概况是了解单片机控制15秒倒计时的过程与MAX7219基本工作原理及软件设计方法,是利用时钟芯片和定时计数器的原理将倒计时过程显示在MAX7219芯片驱动的八位共阴LED数码管上;最后应用Profassional软件设计,仿真基于AT89c51单片机的倒计时实验。以到达进一步熟悉和掌握单片机的结构及工作原理;掌握单片机的接口技术及相关外围芯片的外特性与控制方法;掌握以单片机核心的电路设计的基本方法和技术;通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术以及通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础的目的。 1.2 设计要求 STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计利用数码管显示的倒计时时间装置。一是扩展DS12C887时钟电路设计;二是利用MAX7219驱动LG3641AH(或同型号共阴极)数码管,显示倒计时剩余时间;三是在倒计时时间减为零以后,进行加1时间显示。 1.3 设计原理 在单片机获取DS12C887时钟芯片中的秒时间后,进行数据处理和驱动MAX7219芯片驱动数码管完成显示倒计时功能。

单片机控制数码管显示

单片机实训 项目:用单片机控制数码管显示及其应用班级: 应用电子技术二班 姓名:赵林旺 学号: 2008061532 时间:2010. 5. 21

用单片机控制数码管显示及其应用 一、实训目的 1. 通过用单片机控制数码管的静态显示,学会用单片机编程进行控制和8段共阳极数码管的使用方法,学会编写与调更复杂的程序,进一步熟悉单片机串行接口的使用,为以后打下基础。 2.在用可能的情况下制作数码管的使用电路,本次通过密码锁的制作,进一步熟悉单片机键盘接口和显示器接口技术,掌握独立式键盘结构下的程序设计思路和步骤。 3.通过本次实训提高汇编语言编程能力、识别元器件能力、单片机外围电路连接。同时加强理论联系实际的能力,提高学生的动手能力,培养学生之间团结协作能力和刻苦耐劳精神。 4.在日常生活中,可以看到采用八段LED数码管构成的显示屏。这里主要完成利用单片机控制数码管,实现静态显示与动态扫描移动显示。 二、实训器材 1. 面包板一片 2.AT89S52 三片 3. 共阳极8段LED数码管三个 4.40引脚的IC插座三个

5. 74LS164芯片 一片 6..+5V 电源 一个 7.510Ω、220Ω、1K Ω、10K Ω电阻 若干 8.晶体振荡器 若干 9.复位开关 若干 10电解电容22uF 、瓷片电容30pF 若干 11.发光二极管 若干 三 、实训原理图 1. 用单片机控制一个数码管依次显示数字0~9的硬件电路如A 图所示: p 1.01p 1.12p 1.23p 1.34p 1.45p 1.56p 1.67p 1.78R ST/VPD 9R X D/p 3.0 10TX D/p 3.111INT 0/p 3.212INT 1/p 3.313T0/p 3.414T1/p 3.515WR /p3.616R D /p3.717XT AL 218 XT AL 119Vss 20 p 2.0 21 p 2.122p 2.223p 2.324p 2.425p 2.526p 2.627p 2.728PSEN 29AL E/PR OG 30EA /Vp p 31p 0.732p 0.633p 0.534p 0.435p 0.336p 0.237p 0.138p 0.039Vcc 4089C 51 R 1R 2R 3R 4R 5R 6R 7R 8 a b f c g d e DP Y 1234567a b c d e f g 8 dp dp DPY_7-SE G_DP co m 510*8 89C51 +5 C 3 22u f C 230p f C 130p f Y1 12MH Z K1 R 910K + GN D +5+5 因为只控制一个数码管,选择采取一直点亮各段的静态显示方式,这种显示可以在较小的电流驱动下获得较高的显示亮度,且占用CPU 时间少,编程简单,便于显示和控制。 汇编语言的程序如下:

单片机c语言版数码管动态显示实验报告

数码管动态显示实验 一、实验要求 1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路 2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号 3.在Keil软件中编写程序,采用动态显示法,实现数码管显示变量unsigned int show_value的值(show_value的值范围为0000~9999),即把show_value的千百 十个位的值用数码管显示出来。 二、实验目的 1.巩固Proteus软件和Keil软件的使用方法 2.学习端口输入输出的高级应用 3.掌握7段数码管的连接方式和动态显示法 4.掌握查表程序和延时等子程序的设计 三.实验说明 (条理清晰,含程序的一些功能分析计算) 如下图(五)所示,由P1口将要显示的数字输给七段数码管;再由P2第四位输给数码管的公共端,作为扫描输入信号;用外部中断P3.2和P3.3分别接PB1与PB2,实现数字的增减。所要实现的功能是,开始运行电路功能图时,四个数码管分别显示0000,按下PB1增1,直到9999回到0000,相反按下PB2减1,直到0000回到9999。 在算相关数据时,由于要显示个十百千的不同数字,要调用disp函数, disp[0]=show/1000; //显示千位的值 disp[1]=show%1000/100; //显示百位的值 disp[2]=show%100/10; //显示十位的值 disp[3]=show%10; //显示个位的值 本实验需要用到IE寄存器与TCON寄存器。 四、硬件原理图及程序设计 (一)硬件原理图设计

定时器实验报告

定时器实验报告 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

电子信息工程学系实验报告课程名称:单片机原理及接口应用 实验项目名称:51定时器实验 实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。 MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP)

2 、51单片机的相关寄存器设置 方式控制寄存器TMOD: D7D6D5D4D3D2D1D0 GATE C/T M1 M0GATE C/T M1M0 TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。 TMOD各位的含义如下: 1. 工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式: M1M0功能说明 0 0 1 10 1 1 方式0,为13位的定时/计数器 方式1,为16位的定时/计数器 方式2,为常数自动重装入的8位定时/计数器 方式3,T0分为两个8位定时/计数器, T1在该方式时停止 3、51单片机定时器的工作过程(逻辑)方式一方式1:当M1M0=01时,定时器工作于方式1。

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——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 89C51 单片机设置了两个可编程的16 位定时器T0 和T1,通过编程,可以设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。

单片机控制步进电机和数码管显示

一、设计任务书 设计内容:用80C51单片机设计一个步进电机控制器 设计要求: 1.用8015设计一个四相步进电机。 2.可控制步进电机的启动与停止,正转与反转。 3.10档速度调节。 4.点动控制。 5.可显示电机运行参数。 二、设计总体方案 (一)控制方式的选择 控制主要用于电机速度和方向的转换。控制方式有按键控制和开关控制两种。按键较开关而言,操作更加简便,故选按键控制。 方案一:独立按键。独立按键可自由连接,线路简单。 方案二:编码式键盘。编码式键盘的按键接触点接于74LS148芯片。当键盘上没有闭合时,所有按键都断开,当某一键闭合时,该键对应的编码由74LS148输出。 本次设计所需按键不多,不需要采用复杂编码,考虑硬件条件、线路连接和经济性等方面,选择方案一。 (二)电机电路设计方案的选择 由于条件的限制,对于电机的选择只能是实验台上最小步距角18°的电机,其中已包含了驱动电路。 (三)单片机的选择 方案一:AT89C51高性能8位单片机,内部集成CPU、存储器、寄存器、I/O接口,从而构成较为完整的计算机,价格便宜。 方案二:C8051F005单片机,该单片机是完全集成的混合信号系统及芯片,具有8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还继承了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,执行速度快,但价格较贵。 本次课程设计是在仿真环境下进行,没有太过考虑单片机选择的问题,但就设计本身来讲,从物美价廉的角度考虑,选择方案一较合适。 (四)显示方案的选择 方案一:采用LED数码管。LED数码管是轮流现实的,其利用人烟的视觉暂留特性,使人感觉不到数码管闪动,看到每只数码管都常亮。利用其显示必须不停给数码管数据输入口循环赋值,显示内容较多,编程和接线较为复杂。 方案二:采用LCD1602液晶显示器。LCD1602具有功率小,效果明显,变成容易等优点,且它最多能显示2×16个字符,可以轻松满足设计要求。 由上可知,LCD1602液晶显示器的优点突出,故选择方案二。 (五)软件部分的选择 软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福软件。编程语言主要有以下两种方案。

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

单片机定时器实验

单片机定时器实验

实验三单片机内部定时器应用 实验目的 1、理解单片机内部定时器的工作原理及使用方法 2、了解单片机定时中断程序的编写和调试方法 3、掌握定时器的基本使用方法 实验仪器 单片机开发板、万利仿真机、稳压电源、计算机 实验原理 1、单片机定时器的工原理 MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。 工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为

图4-8 定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。 单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。 2、用定时器编写一个秒计时器 假设系统使用的晶振频率为12MH Z,即每个机器周期为1us。如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。

单片机实验——数码管显示

单片机实验——数码管显示

数码管显示 一、数码管静态显示 1、电路图 图1 2、电路分析 该电路采用串行口工作方式进行串行显示实验,串行传输数据为8位,只能从RXD端输

入输出,TXD端用于输出同步移位脉冲。当CPU 执行一条写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始将发送缓冲器SBUF 中的8位数据按照从低位到高位依次发送出去,8位数据发送完毕,发送结束标志TI置1,必须由软件对它清0后才能启动发送下一帧数据。 因此,当输完8个脉冲后,再一次来8个脉冲时,第一帧的8位数据就移到了与之相连的第二个74LS164中,其他数据依此类推。 3、流程图

发送数据 二、数码管动态显示 1、电路图

图2 2、电路分析 R1-R7电阻值计算:一个7-seg 数码管内部由8段LED 组成,因此导通电压和电流与LED 灯相同,LED 导通压降大概在 1.5V-2.2V ,电流3mA-30mA ,单片机的工作电压是5V , 所以 一般取Rmin 和Rmax 中间值,330Ω、470Ω、510Ω。 由于P0口内部没有上拉电阻,所以在P0 口接1003025Im min 1325Im max =-===-==mA V V an U R K mA V V in U R

排阻,上拉电压。如果没有排阻的话,接上拉电阻时需要考虑数码管的电流,如果太小的话,是驱动不了数码管的。如图3: 发现电流大于5mA时,数码管才能亮,与前面电流最小3mA不符,因此计算数码管电流时使其在10mA-20mA之间,确保能驱动数码管亮。 两个74HC573实现对六位数码管的段选和位选,控制端为LE(第11脚)。 3、思路分析 先使第一个573输出同步,把数据送入573中,然后锁存,第二个573输出同步,打开第一个数

单片机实验报告

单片机原理及接口技术 学院:光电信息科学与技术学院班级:——实验报告册 083-1 实验一系统认识实验 1.1 实验目的 1. 学习keil c51集成开发环境的操作。 2. 熟悉td-51系统板的结构和使用。 1.2实验仪器 pc 机一台,td-nmc+教学实验系统。 1.3实验内容 1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。 2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。 1.4 源程序 https://www.wendangku.net/doc/cf4761411.html, 0000h mov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end 2. org 0000h mov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ end loop: loop: 1.5 实验步骤 1.创建 keil c51 应用程序 (1)运行 keil c51 软件,进入 keil c51 集成开发环境。 - 3 -(2)选择工具栏的 project 选项,弹出下拉菜单,选择 newproject 命令,建立一个新的μvision2 工程。选择工程目录并输入文件名 asm1 后,单击保存。 (3)工程建立完毕后,弹出器件选择窗口,选择 sst 公司的 sst89e554rc。(4)为工程添加程序文件。选择工具栏的 file 选项,在弹出的下拉菜单中选择 new 目录。 (5)输入程序,将 text1 保存成asm1.asm。 (6)将asm1.asm源程序添加到 asm1.uv2 工程中,构成一个完整的工程项目。 2.编译、链接程序文件(1)设置编译、链接环境 (2)点击编译、链接程序命令,此时会在 output window 信息输出窗口输出相关信息。 3.调试仿真程序 (1)将光标移到 sjmp $语句行,在此行设置断点。 (2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。 1.6 实验结果. 2. 4 实验二查表程序设计实验 2.1实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.2实验设备 pc 机一台,td-nmc+教学实验系统 2.3实验内容 1.通过查表的方法将 16 进制数转换为 ascii 码; 2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

实验六 使用单片机定时器的数码管动态显示驱动实验

实验六使用单片机定时器的数码管动态显示驱动实验 一、实验目的 ●掌握数码管动态驱动方式的工作原理; ●掌握单片机定时器中断服务程序的编写方法; ●掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。二、实验要求 ●单片机通过P1 端口连接数码管组的字型码(段码)控制端; ●单片机通过P0 端口连接数码管组的位置码(位码)控制端; ●根据电路连接方式和数码管驱动方式,设计显示0~9,A~F 的字型码; ●设置8 个字节的显示缓冲区,通过数码管动态显示驱动的方法,将显示缓冲区内容 显示在8 位数码管上。 三、实验设备 ●硬件:PC 机,nKDE-51 单片机实验教学系统; ●软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。 四、实验原理 1. MCS-51 定时器/计数器的结构及功能 MCS-51 单片机内部提供两个16 位定时器/计数器,分别是定时器/计数器0(T0)和定时器/计数器1(T1)。虽然它们被称为定时器/计数器,但本质上它们都计数器。当选择单片机的机器周期作为计数对象时,由于机器周期出现的频率和晶振频率之间的关系是固定的,对固定频率的信号进行计数实际上就是定时器;当对通过T0 引脚(P3.4)或T1 引脚(P3.5)引入的外部脉冲作为计数对象时,它们是计数器。 图6-1 MCS-51 单片机定时器/计数器0、1 结构框图 定时器/计数器的基本结构如图6-1 所示。它是由6 个特殊功能寄存器组成的。其中,定时器T0 由TH0 和TL0 两个8 位计数器组成;定时器T1 由TH1 和TL1 两个8 位计数器组成。 当它们用做定时器时,其计数脉冲来源于晶振时钟输出信号的12 分频,即每个机器周期使计数器加1,所以说定时器本质上是针对机器周期的计数器,一旦单片机的晶振频率选定,机器周期也就随之确定,从而使对机器周期的计数转换为对确定时间的计数。例如,当单片机晶振频率选择为12MHz 时,一个机器周期就是1μs,即计数器对机器周期每计数一次,就是1μs,具体的定时时长可通过简单的换算变换成相应的计数值。 当它们用做计数器时,只要T0 或T1 的引脚上有一个从1 到0 的负跳变,相应的计数器就加1。由于单片机在每个机器周期的S5P2状态对T0 及T1 引脚的电平进行一次采样,因此单片机需要用两个机器周期来识别一次负跳变,所以单片机计数器的最高计数频率为晶

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 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 //包含特殊功能寄存器定义的头文件 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 口,如图所示:

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

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——外部中断 0 1——定时/计数器 T0 2——外部中断 1 3——定时/计数器 T1 4——串行口中断 5——定时/计数器 T2 其它值预留。 89C51 单片机内设置了两个可编程的 16 位定时器 T0 与 T1,通过编程,可以设定为定时器与外部计数方式。T1 还可以作为其串行口的波特率发生器。 2. 定时器 T0 由特殊功能寄存器 TL0 与 TH0 构成,定时器 T1 由 TH1 与TL1 构成, 特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器 IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1 的中断入口地址为 001BH。 定时器的编程包括: 1) 置工作方式。 2) 置计数初值。

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

51单片机控制4个数码管显示

. //使用AT89c51单片机控制四个数码管动态显示0-9999 ,12MHz #include void jiayi();//加1函数 void chufa();//除法函数 void xianshi();//显示函数 void delay();//延时函数 sbit P2_0=P2^0;//个位位码 sbit P2_1=P2^1;//十位位码 sbit P2_2=P2^2;//百位位码 sbit P2_3=P2^3;//千位位码 unsigned char qianwei,baiwei,shiwei,gewei; unsigned int count=0; unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极0-9 void main() { while(1) { jiayi(); chufa(); xianshi(); } } void chufa()//将数字的各个位拆开 { qianwei=count/1000;//千位数 baiwei=count%1000/100; //百位数 shiwei=count%100/10; //十位数 gewei=count%10; //个位数 } void jiayi() { count=count+1; if(count==10000) count=0; } void delay()//延时 { unsigned int i,j; for(i=0;i<10;i++) { for(j=0;j<200;j++); } }

数码管实验报告

篇一:实验八数码管led实验报告 苏州大学实验报告 院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期 实验名称:数码管led实验 一.实验目的 理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管lg5641ah与mcu的接线图。二.实验内容 理解8段数码管原理,运行与理解各子程序,编制一个4连排8段数码管程序,mcu的排8段数码管显示mcu复位后的开始到现在的运行时间。由于只有四个数码管,所以只显示mcu 运行到目前为止的分钟和秒,当计时达到一个小时,就重新从00:00开始计时。另外,也可以通过pc方的串口通信程序,指定计时的开始值。三.实验过程(一)原理图 图8-2数码管外形 dp a b c e f g dp 图8-1 数码管(二)接线图 图8-3 mcu与4连排8段数码管的连接第1页 (三)基本原理 8段数码管一般由8个发光二极管(llight-emitting diode,led)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。有时数码管不需要小数点,只有7个位段,称7段数码管。共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使a段发光,则在发光。 四.编程 (一)流程图 图8-4 数码管led显示流程图(及其中断子程序) (二)所用寄存器名称及其各个位 程序中没有使用与led显示相关的控制和状态寄存器,仅仅使用了通用i/o口a口和b口。(三)主要代码段 1第2页第3页 2.c 第4页 第5页 篇二:数码管实验报告 单片机实验报告 一、实验名称 数码管动态扫描显示01234567(实验五) 二、实验目的 (1)掌握数码管显示数字的原理。 (2)通过不同的编程实现灵活运用数码管。 三、实验原理 四、相关原理图 五、实验内容

单片机中断实验报告

实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer1_init() 开始 设置显示初值启动定时器 判断是否到59 继续 是 否

{ TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int

相关文档
相关文档 最新文档