基于单片机的多功能定时器设计与实现 - 图文(6)

2019-08-29 22:14

杭州电子科技大学本科毕业论文

12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。

(3)RST/VPD(9脚):复位/备用电源。 ① RST(Reset)功能:复位信号输入端; ② VPD功能:在Vcc掉电情况下,接备用电源。

(4)EA/Vpp(31脚):内外ROM选择/片内EPROM编程电源。 ① EA功能:内外ROM选择端。

80C51单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外(80C31芯片无内ROM,全部在片外)。当EA保持高电平时,先访问内ROM,但当PC(程序计数器)值超过4KB(0FFFH)时,将自动转向执行外ROM中的程序。当EA保持低电平时,则只访问外ROM,不管芯片内有否内ROM。对80C31芯片,片内无ROM,因此EA必须接地。

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 4.I/O线:80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

其中P3口的功能如下:

P3.0 (10脚)—— RXD:串行口输入端; P3.1 (11脚)—— TXD:串行口输出端;

P3.2 (12脚)—— INT0:外部中断0请求输入端; P3.3 (13脚)—— INT1:外部中断1请求输入端; P3.4 (14脚)—— T0:定时/计数器0外部信号输入端; P3.5 (15脚)—— T1:定时/计数器1外部信号输入端; P3.6 (16脚)—— WR:外RAM写选通信号输出端; P3.7 (17脚)—— RD:外RAM读选通信号输出端。 5. 4个8位的I/0口

① P0.0—P0.7(39脚—32脚),双向I/O(内置场效应管上拉)。寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用;

② P1口:P1.0—P1.7(1脚—8脚),通用I/O口(准双向口); ③ P2.0—P2.7(26脚—21脚):输出高8位地址(用于寻址时是输出口;不寻址时是准双向口);

④ P3.0—P3.7(10脚—17脚):具有特定的第二功能(准双向口)。

25

杭州电子科技大学本科毕业论文

附录2 硬件电路实物图

26

杭州电子科技大学本科毕业论文

附录3 时间显示及定时主程序

#include #include #include

/*****************端口定义**************************/ sbit mode_button=P1^4; //模式控制 sbit operation_button=P1^5;//操作控制 sbit inc_button=P3^6;//执行加键 sbit dec_button=P3^7;//执行减键 sbit s3 = P1^3; sbit s2 = P1^1; sbit s1 = P1^2; sbit s0 = P1^0;

sbit bell= P2^7; //蜂鸣器控制 sbit power_ctrl = P1^7;//继电器控制 sbit Clock = P2^2; //时钟口线 sbit DataOut = P2^1; //数据输出口线 sbit ChipSelect = P2^0; //片选口线

/******************************************************/ /******************延时定义****************************/ #define Wait1us {_nop_();} #define Wait2us {Wait1us;Wait1us;} #define Wait4us {Wait2us;Wait2us;} #define Wait8us {Wait4us;Wait4us;}

#define Wait30us {Wait8us;Wait8us;Wait8us;Wait4us;Wait2us;} /*********************************************************/ /******************共阳数码管代码**********************/ code unsigned char table[10]

={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char led[4];

unsigned char timer2_tick,mode,operation;

unsigned char flag=0,timer=0,timer_second=0,timer_minute;s=0;//跑表时间 int ring_hour=0,ring_minute=0;//闹铃时间 unsigned char keys;

27

杭州电子科技大学本科毕业论文

unsigned char temp;

/*****************当前时间************************************/ typedef struct {

char hour;

char minute; char second;

} time;

time now={10,30,30};

/****************************************************************/ /*******************100MS延时**********************************/ void delay100ms(void) { }

/*******************************************************************/ /*****************延时程序******************************************/ void delay_ms1() //延时程序1 {

unsigned int i; for(i=0;i<100;i++); }

void delay_ms2() //延时程序2 {

unsigned int i,j; for(i=0;i<100;i++) for(j=0;j<50;j++) ; }

/*****************************************************************/ /*******************AD转换程序*********************************/ unsigned char adc_conv(void) {

28

unsigned int i = 1 , j ; while(i--) { };

j=9086;

while(j--);

杭州电子科技大学本科毕业论文

unsigned char i; unsigned char value; Clock=0; ChipSelect=1; Wait30us; ChipSelect=0; for(i=0;i<8;i++) {

value<<=1; Clock=1; if(DataOut==1)

value|=0x01;//value+=1; Clock=0; }

ChipSelect=1; return(value); }

/***************************************************************/ /*****************LED动态扫描程序********************************/ void display(void) {

P1|=0x0f; //lit off all led P0=0xff; s0=0;

P0=table[led[0]]; delay_ms1();

P1|=0x0f; //lit off all led P0=0xff; s1=0;

P0=table[led[1]]; delay_ms1();

P1|=0x0f; //lit off all led P0=0xff; s2=0;

P0=table[led[2]];

29


基于单片机的多功能定时器设计与实现 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:医院科室院感监控自查记录表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: