广东工业大学单片机课程设计何教授文档格式.docx

上传人:b****4 文档编号:18420387 上传时间:2022-12-16 格式:DOCX 页数:14 大小:24.88KB
下载 相关 举报
广东工业大学单片机课程设计何教授文档格式.docx_第1页
第1页 / 共14页
广东工业大学单片机课程设计何教授文档格式.docx_第2页
第2页 / 共14页
广东工业大学单片机课程设计何教授文档格式.docx_第3页
第3页 / 共14页
广东工业大学单片机课程设计何教授文档格式.docx_第4页
第4页 / 共14页
广东工业大学单片机课程设计何教授文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

广东工业大学单片机课程设计何教授文档格式.docx

《广东工业大学单片机课程设计何教授文档格式.docx》由会员分享,可在线阅读,更多相关《广东工业大学单片机课程设计何教授文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

广东工业大学单片机课程设计何教授文档格式.docx

JMPDISPLAY2

DISPLAY1:

MOVR2,#00H

JMPA1

DISPLAY2:

MOVR2,#04H

A1:

MOVA,R3

MOVDPTR,#7F01H

MOVDPTR,#1000H

MOVA,R2

MOVCA,@A+DPTR

MOVDPTR,#7F02H

CALLDLIMS

INCR2

RLA

MOVR3,A

JNBACC.4,BEGIN

DLIMS:

MOVR7,#05H

DL0:

MOVR6,#0FFH

DL1:

DJNZR6,DL1

DJNZR7,DL0

RET

END

5

4

7

9

E

B

A

(2)编程实现键盘并能左移显示:

ACALLDIS

ACALLCLEAR

ACALLCCSCAN

JNZINK1

AJMPBEGIN

INK1:

ACALLDLIMS

JNZINK2

AJMPBEGIN

INK2:

MOVR2,#0FEH

MOVR4,#00H

COLUM:

MOVDPTR,#7F01H

INCDPTR

MOVXA,@DPTR

JBACC.3,LONE

MOVA,#00H

AJMPKCODE

LONE:

JB.ACC.2,NEXT

MOVA,#04H

KCODE:

ADDA,R4

ACALLPUTBUF

PUSHACC

KON:

ACALLCCSCAN

JNZKON

POPACC

NEXT:

INCR4

JNBACC.4,KEER

MOVR2,A

AJMPCOLUM

KERR:

CCSCAN:

MOV@DPTR,A

MOVXA,@DPTR

CPLA

ANLA,#0CH

RET

CLEAR:

DIS:

PUSHACC

PUSH00H

PUSH03H

MOVR0,#05H

MOVR3,#0F7H

AGAIN:

MOVA,@R0

MOVDPTR,#DDEG

INCR0

JNBACC.0,OUT

RRA

AJMPAGAIN

OUT:

POP03H

POP00H

POPACC

DDEG:

DB0EE,3EH,9EH,7AH

DB0E6H,0E0H,66H,0B6H

MOVR7,#01H

PUTBUF:

PUSH00H

MOVR7,A

MOVA,51H

MOV50H,A

MOVA,52H

MOV51H,A

MOVA,53H

MOV52H,A

MOVA,R7

(3)程序实现单片机售票机,以下要求:

a)当k0=1时,键入地址、价钱、SET,设置某个地址的票价,该机至少可连续设置三个不同地址的价钱:

上海864元、北京756元、广州819元。

b)当k0=0时,键入一个地址,购买的张数,按SET得到总价,再键入另一个地址、购买的张数,按SET即得总价,可计得至少三个地址的合总价。

#include<

reg51.h>

absacc.h>

#defineucharunsignedchar

#definepconXBYTE[0X7F00]

#definepaXBYTE[0X7F01]

#definepbXBYTE[0X7F02]

#definepcXBYTE[0X7F03]

#defineled0DBYTE[0x50]

#defineled1DBYTE[0x51]

#defineled2DBYTE[0x52]

#defineled3DBYTE[0x53]

#definekeynumDBYTE[0x54]

ucharbdatada;

sbitpc2=da^2;

sbitpc3=da^3;

sbitk0=da^1;

sbitp26=P2^6;

ucharcodetable[]={0XFC,0X60,0XBA,0XF2,0X66,0XB6,0XBE,0XE0,0XFE,0XE6};

ucharcodectrl[4]={0XFE,0XFD,0XFB,0XF7};

voidInit()

{

p26=1;

pa=0x00;

pcon=0x03;

}

VoidDelay(intsec)

inti,j;

for(i=0;

i<

sec;

i++)

{

for(j=0;

j<

10;

j++){;

}

voidDisplay()

pa=ctrl[0];

pb=led0;

Delay(10);

pa=ctrl[1];

pb=led1;

pa=ctrl[2];

pb=led2;

pa=ctrl[3];

pb=led3;

voidmain()

inttemp;

intstatus=0;

intsadd=0;

intcount[3]={0,0,0};

intprice[3]{0,0,0};

intnumbuff[4]={0,0,0,0};

unsignedinttotalprice=0;

Init();

led0=table[0];

led1=table[0];

led2=table[0];

led3=table[0];

while

(1)

{//1

pa=0x00;

da=pc;

if(pc2==0||pc3==0)

{//2

Delay(30);

///////////键盘扫描//////////

pa=ctrl[0];

da=pc;

if(pc2==0)keynum=7;

elseif(pc3==0)keynum=8;

else

{//3

pa=ctrl[1];

da=pc;

if(pc2==0)keynum=6;

elseif(pc3==0)keynum=1;

else

{//4

pa=ctrl[2];

da=pc;

if(pc2==0)keynum=5;

elseif(pc3==0)keynum=2;

else

{//5

pa=ctrl[3];

da=pc;

if(pc2==0)keynum=4;

elseif(pc3==0)keynum=3;

}//5

}//4

}//3

///////////以上键盘扫描////////////

while

(1)

pa=0x00;

if(pc3==0||pc2==0)

{//4

led0=table[numbuff[0]];

led1=table[numbuff[1]];

led2=table[numbuff[2]];

led3=table[numbuff[3]];

Display();

elsebreak;

///////////////数据处理///////////////////

if(k0==1)

/////////////address///////////////

if(status==0)

if(keynum>

=3&

&

keynum<

=5)

sadd=keynum;

status=1;

numbuff[3]=numbuff[2]=numbuff[1]=numbuff[0]=0;

////////////////address///////////////

///////////////price///////////////////

elseif(status==1)

switch(keynum)

case7:

{//6

if(numbuff[3]==9)numbuff[3]=0;

elsenumbuff[3]++;

break;

}//6

case8:

{

if(numbuff[2]==9)numbuff[2]=0;

elsenumbuff[2]++;

break;

}

case1:

if(numbuff[1]==9)numbuff[1]=0;

elsenumbuff[1]++;

case2:

if(numbuff[0]==9)numbuff[0]=0;

elsenumbuff[0]++;

case6:

//set

if(sadd>

sadd<

{//7

price[sadd-3]=numbuff[0]*1000+numbuff[1]*100+numbuff[2]*10+numbuff[3];

sadd=0;

numbuff[3]=numbuff[2]=numbuff[1]=numbuff[0]=0;

status=0;

}//7

////////////////////以上price////////////////////

}//3

elseif(k0==0)

{//3

/////////////address///////////////

if(status==0)

{//4

if(keynum>

{//5

sadd=keynum;

status=2;

numbuff[3]=numbuff[2]=numbuff[1]=numbuff[0]=0;

}//5

}//4

////////////////address///////////////

elseif(status==2)//count

switch(keynum)

case7:

{//6

if(numbuff[3]==9)numbuff[3]=0;

elsenumbuff[3]++;

break;

}//6

case8:

{

if(numbuff[2]==9)numbuff[2]=0;

elsenumbuff[2]++;

}

case1:

if(numbuff[1]==9)numbuff[1]=0;

elsenumbuff[1]++;

case2:

if(numbuff[0]==9)numbuff[0]=0;

elsenumbuff[0]++;

case6:

if(sadd>

{//7

count[sadd-3]=numbuff[0]*1000+numbuff[1]*100+numbuff[2]*10+numbuff[3];

totalprice+=count[sadd-3]*price[sadd-3];

numbuff[0]=totalprice/1000;

temp=totalprice-numbuff[0]*1000;

numbuff[1]=temp/100;

temp=temp-numbuff[1]*100;

numbuff[2]=temp/10;

temp=temp-numbuff[2]*10;

numbuff[3]=temp;

sadd=0;

status=0;

}//7

/////////////////////switch///////

/////elseifstatus=2//////

}//3

/////k0==0////////

///////////////数据处理/////////////////

}//2

led0=table[numbuff[0]];

led1=table[numbuff[1]];

led2=table[numbuff[2]];

led3=table[numbuff[3]];

Display();

Delay(10);

}//1

}//0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1