电气自动化毕业论文论文(5)

2019-01-12 11:52

图5-5为进入中断和清零图,程序中通过扫描来判断按键是否按下进行执行相应的中断来事实现相应的功能。

图5-5 中断和清零程序流程图 判断秒表miaobiao1 是否按下按下,P1.0=0 进入秒表中断,执行秒表中断程序 返回上级主程序 判断分加键tminute是否按下,P1.1=0 判断清零键miaobiao2是否按下,P1.3=0 清零所有的计数器,各个显示的字码。

5.3控制电路的C语言源程序

根据流程图,经过认真分析得出控制电路的源程序如下: #include #define uchar unsigned char #define uint unsigned int #define delay_time 3/*宏定义*/ uchar k,dat[]={0,0,0,0,0,0,0,0}; uint tcount,t,u;

uchar dat1[]={0,0,0,0,0,0,2,1}; uchar dat2[]={0,0,0,0,0,0,0,0}; uchar alarms[]={0,0,0,0,0,0,0,0}; uchar

dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned

char

code

SEG7[11]={0xC0,/*0*/ 0xF9,/*1*/

0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/

0xBF,/*-*/

};/*数字显示数组*/ sbit miaobiao1=P1^0; sbit tminute=P1^1; sbit thour=P1^2; sbit miaobiao2=P1^3; sbit alarm=P1^4; sbit P0_0=P0^0;

sbit P1_5=P1^5; sbit P1_6=P1^6;

sbit P1_7=P1^7;/*端口定义*/ uchar ms=0; uchar flag=0; uchar sec=0; uchar minit=0; struct

time{uchar

second;uchar

minute;uchar hour;}time1; uchar n,i; void delay(n) {while(n--)

{

for(i=120;i>0;i--); }

} /*延时子程序*/ void modify(void)

{ EA=0; if(thour==0) { if(flag==0)

{

dat1[6]++;delay(280); if(dat1[6]>9)

{

dat1[6]=0; dat1[7]++; }

else

if((dat1[7]>1)&&(dat1[6]>3)) {dat1[7]=0;

dat1[6]=0;

} }

if(flag==1) {

alarms[6]++;delay(300);

if(alarms[6]>9) { alarms[6]=0;alarms[7]++;

if(alarms[7]>2) { alarms[7]=0;

}

}

dat[6]=alarms[6];

dat[7]=alarms[7]; }

}

if(tminute==0) { if(flag==0) {

dat1[3]++;delay(280); if(dat[3]>=9) { dat1[4]++;dat1[3]=0; if(dat1[4]>5) {

dat1[4]=0; }

}

}

if(flag==1)

{

alarms[3]++; delay(300); if(alarms[3]>9) { alarms[4]++;alarms[3]=0;

if(alarms[4]>5) { alarms[4]=0;

}

}

dat[3]=alarms[3]; dat[4]=alarms[4]; }

}

if(miaobiao1==0)

{TR0=0;ET0=0;TR1=1;ET1=1; }

if(miaobiao2==0) {

TR0=1;ET0=1;TR1=0;ET1=0;

dat2[0]=0; dat2[1]=0; dat2[3]=0; dat2[4]=0; dat2[6]=0; dat2[7]=0; ms=0; sec=0; minit=0; }

if(P1_5==0) {

TR0=0;ET0=0;TR1=0;ET1=0;

}

if(alarm==0) {

TR0=0;ET0=0;TR1=0;ET1=0;flag=

{

P3=dis_bit[k];

P2=SEG7[dat[k]]; delay(1); 1;

dat[0]=0; dat[1]=0; dat[2]=10; dat[3]=0;

dat[4]=0; dat[5]=10; dat[6]=0; dat[7]=0;

} EA=1; }/*按键扫描*/ void init(void) {

TMOD = 0x11; TH0 = 0xDB; TL0 =0xFF; TH1=0xDB; TL1=0xFF;

ET0 = 1;

ET1=1; //

TR1=1; TR0=1; tcount=0; ms=0; sec=0; minit=0;

EA = 1;

}/*初始化*/ void test(void){ for(k=0;k<8;k++)

//10ms

P3=0X00;

}

}/*数字显示*/ void main() {init(); delay(10); while(1) {

modify();

test(); } }/*主函数*/

Void diplay() interrupt 1 { ET0=0; TR0=0; TH0 = 0xDB; TL0 = 0xff; TR0=1;

tcount++; if(tcount==100) {

time1.second++; tcount=0; dat1[0]=(time1.second); dat1[1]=(time1.second)/10;

}

if(time1.second==60) { dat1[0]=0; dat1[1]=0; time1.second=0; time1.minute++;

dat1[3]=(time1.minute); dat1[4]=(time1.minute)/10;

}

if(time1.minute==60) {

time1.minute=0; time1.hour++; dat1[6]=time1.hour; dat1[7]=time1.hour/10; }

if(time1.hour>23) {

time1.hour=0; } dat[5]=10; dat[2]=10; dat[0]=dat1[0]; dat[1]=dat1[1]; dat[3]=dat1[3]; dat[4]=dat1[4]; dat[6]=dat1[6]; dat[7]=dat1[7]; flag=0; P0=0x01;

if((alarms[7]==dat1[7])&&(alarms[6]==dat1[6])&&(alarms[4]==dat1[4])&&(alarms[3]==dat1[3])&&(dat1[1]<1)) {

P0=0x00; } ET0=1;

}

void time_2(void)interrupt 3 {

EA=0; TR0=0; TH1=0xDB; TL1=0xFF; TR1=1; ms++;

dat2[0]=ms; dat2[1]=ms/10; if(ms>=100) { ms=0; sec++;

dat2[3]=sec; dat2[4]=sec/10; if(sec>=60) {

sec=0;

minit++; dat2[6]=minit; dat2[7]=minit/10; } } dat[5]=10; dat[2]=10; dat[0]=dat2[0]; dat[1]=dat2[1]; dat[3]=dat2[3]; dat[4]=dat2[4]; dat[6]=dat2[6]; dat[7]=dat2[7]; EA=1


电气自动化毕业论文论文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学一至六年级《体育与健康》健康课教案

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

马上注册会员

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