单片机课设代码.docx

上传人:b****2 文档编号:2976971 上传时间:2023-05-05 格式:DOCX 页数:28 大小:17.56KB
下载 相关 举报
单片机课设代码.docx_第1页
第1页 / 共28页
单片机课设代码.docx_第2页
第2页 / 共28页
单片机课设代码.docx_第3页
第3页 / 共28页
单片机课设代码.docx_第4页
第4页 / 共28页
单片机课设代码.docx_第5页
第5页 / 共28页
单片机课设代码.docx_第6页
第6页 / 共28页
单片机课设代码.docx_第7页
第7页 / 共28页
单片机课设代码.docx_第8页
第8页 / 共28页
单片机课设代码.docx_第9页
第9页 / 共28页
单片机课设代码.docx_第10页
第10页 / 共28页
单片机课设代码.docx_第11页
第11页 / 共28页
单片机课设代码.docx_第12页
第12页 / 共28页
单片机课设代码.docx_第13页
第13页 / 共28页
单片机课设代码.docx_第14页
第14页 / 共28页
单片机课设代码.docx_第15页
第15页 / 共28页
单片机课设代码.docx_第16页
第16页 / 共28页
单片机课设代码.docx_第17页
第17页 / 共28页
单片机课设代码.docx_第18页
第18页 / 共28页
单片机课设代码.docx_第19页
第19页 / 共28页
单片机课设代码.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课设代码.docx

《单片机课设代码.docx》由会员分享,可在线阅读,更多相关《单片机课设代码.docx(28页珍藏版)》请在冰点文库上搜索。

单片机课设代码.docx

单片机课设代码

点阵显示:

#include"sst89x5x4.h"

#include"Absacc.h"

#include"hzdot1.h"

#defineRow1XBYTE[0xef00]

#defineRow2XBYTE[0xdf00]

#defineCol1XBYTE[0xbf00]

#defineCol2XBYTE[0x7f00]

voidDelay(void)

{

unsignedchari;

for(i=0;i<60;i++);

}

voidclear(void)

{

Row1=0x00;

Row2=0x00;

Col1=0xff;

Col2=0xff;

}

voidmain(void)

{

unsignedcharScan=0x01,i,j;

unsignedintcount=0;

clear();

while

(1)

{

for(i=0;i<50;i++)

{

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

{

Row1=0x00;

Col1=~hzdot[count];//0--7列

Col2=~hzdot[count+1];//8--15列

count+=2;

Row1=Scan;//0--7行

Scan=(Scan<<1)|(Scan>>7);//行扫

Delay();

}

Row1=0x00;

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

{

Row2=0x00;

Col1=~hzdot[count];

Col2=~hzdot[count+1];

count+=2;

Row2=Scan;//8--15行

Scan=(Scan<<1)|(Scan>>7);

Delay();

}

Row2=0x00;

count-=32;

}

count+=2;

if(count==(320-32))count=0;

}

}

LCD程序:

#include

#include

sbitRSPIN=P1^5;

sbitRWPIN=P1^6;

sbitEPIN=P1^7;

sbitP10=P1^0;

sbitP11=P1^1;

sbitP12=P1^2;

unsignedcharXPOS,YPOS;

unsignedcharDisTab1[]="HappyNewYear";

unsignedcharDisTab2[]="LandofFreedom";

unsignedcharDisTab3[]="SingshipMicrocomputer";

voiddelay(unsignedintt)

{unsignedinti,j;

for(i=0;i

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

}

voidlcdwaitidle(void)

{P0=0xff;

RSPIN=0;

RWPIN=1;

EPIN=1;

while((P0&0x80)==0x80);

EPIN=0;

}

voidlcdwcn(unsignedcharc)

{RSPIN=0;

RWPIN=0;

P0=c;

EPIN=1;

_nop_();

EPIN=0;

}

voidlcdwc(unsignedcharc)

{lcdwaitidle();

lcdwcn(c);

}

voidlcdwd(unsignedchard)

{lcdwaitidle();

RSPIN=1;

RWPIN=0;

P0=d;

EPIN=1;

_nop_();

EPIN=0;

}

voidlcdpos(void)

{

XPOS&=0x3f;

YPOS&=0x03;

if(YPOS==0x00)

lcdwc(XPOS|0x80);

elseif(YPOS==0x01)

lcdwc((XPOS+0x40)|0x80);

}

voidlcdinit(void)

{delay(50);lcdwcn(0x38);

delay(20);lcdwcn(0x38);

delay(20);lcdwcn(0x38);

lcdwc(0x38);

lcdwc(0x08);

lcdwc(0x01);

lcdwc(0x06);

lcdwc(0x0e);

lcdwc(0x18);

}

voidDisplay(unsignedcharwords1[],unsignedcharwords2[])

{

for(XPOS=0;XPOS<30;XPOS++)

{

YPOS=0;lcdpos();lcdwd(words1[XPOS]);

YPOS=1;lcdpos();lcdwd(words2[XPOS]);

delay(1000);

}

for(XPOS=30;XPOS<50;XPOS++)

{

lcdwc(0x18);

YPOS=0;lcdpos();lcdwd(words1[XPOS]);

YPOS=1;lcdpos();lcdwd(words2[XPOS]);

delay(2000);

}

}

voidmain(void)

{

EPIN=0;

lcdinit();

while

(1)

{

lcdwc(0x01);

lcdwc(0x02);

if(P10==1)Display(DisTab2,DisTab3);

elseif(P11==1)Display(DisTab3,DisTab1);

elseif(P12==1)Display(DisTab1,DisTab1);

elseDisplay(DisTab2,DisTab1);

delay(1000);

}

}

A/D转换程序:

#include"sst89x5x4.h"

#include"absacc.h"

#defineSTARTADXBYTE[0x7f00]

#defineADRESULTXBYTE[0x7f08]

sbitADBUSY=P3^3;

sbitP32=P3^2;

sbitP34=P3^4;

voiddelay()

{

unsignedchari;

for(i=0;i<100;i++){;}

}

unsignedcharAD0809(void)

{

unsignedcharresult;

STARTAD=0;

while(ADBUSY==1);

delay();

result=ADRESULT;

returnresult;

}

voidmain()

{

unsignedcharm;

unsignedinti;

while

(1)

{

m=AD0809();

if(m<30)

{

P32=1;

for(i=0;i<5000;i++){;}

P32=0;

for(i=0;i<5000;i++){;}

}

if(m>=230)

{

P34=1;

for(i=0;i<5000;i++){;}

P34=0;

for(i=0;i<5000;i++){;}

}

if((m>=30)&&(m<80))P1=0x03;

elseif((m>=80)&&(m<130))P1=0x0f;

elseif((m>=130)&&(m<180))P1=0x3f;

elseif((m>=180)&&(m<230))P1=0xff;

delay();

}

}

直流PWM:

#include"sst89x5x4.h"

sbitP1_7=P1^7;

voiddelay(unsignedinttime)

{

unsignedinti;

for(i=0;i

{

TH1=0xd8;

TL1=0xf0;

while(!

TF1);

TF1=0;

}

}

voidmain(void)

{

TMOD=0x10;

TR1=1;

while

(1)

{

P1_7=1;

delay(15);

P1_7=0;

delay

(2);

}

}

数码管显示:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

voiddelay(uint);

voiddisplay(void);

uchardisbuffer[6]={5,2,0,5,2,0};

voidmain(void)

{

XBYTE[0x7f03]=0x80;

while

(1)

{display();}

}

voiddelay(uinti)

{

uintj;

for(j=0;j

}

voiddisplay(void)

{

ucharcodevalue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharchocode[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

uchari,p,temp;

for(i=0;i<6;i++)

{

p=disbuffer[i];

temp=codevalue[p];

XBYTE[0x7F01]=temp;

temp=chocode[i];

XBYTE[0x7f00]=temp;

delay(20);

}

}

步进电机正反转:

#include

unsignedcharl_value[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x08,0x07,0x06};

voiddelay()

{

unsignedinti;

for(i=0;i<10000;i++){;}

}

voidmain()

{

unsignedcharm,n;

P0=0x00;

while

(1)

{

for(n=0;n<12;n++)

for(m=0;m<8;m++)

{

P0=l_value[m];

delay();

}

for(n=0;n<12;n++)

for(m=8;m>0;m--)

{

P0=l_value[m-1];

delay();

}

}

}

交通灯:

#include"sst89x5x4.h"

#definegreen0x22

#defineyellow0x44

#definered0x88

voiddelay(unsignedinttime)

{

unsignedinti;

for(i=0;i

{

TH1=0x3c;

TL1=0xb0;

while(!

TF1);

TF1=0;

}

}

voidmain(void)

{

unsignedinti;

P1=0;

P0=0;

TMOD=0x10;

TR1=1;

while

(1)

{

P1=green;

P0=red;

delay(100);

for(i=0;i<5;i++)

{

P1=yellow;

delay(10);

P1=0;

delay(10);

}

P1=red;

P0=green;

delay(80);

for(i=0;i<5;i++)

{

P0=yellow;

delay(10);

P0=0;

delay(10);

}

}

}

流水线:

#include"sst89x5x4.h"

#include"intrins.h"

#include"absacc.h"

sbitP3_2=P3^2;

sbitP3_3=P3^3;

sbitP3_4=P3^4;

unsignedchardisbuffer[6]={0,0,0,0,0,0};

voiddelay(unsignedinttime)

{

unsignedinti;

for(i=0;i

{

TH1=0x3c;

TL1=0xb0;

while(!

TF1);

TF1=0;

}

}

voiddelay2(unsignedinti)

{

unsignedintj;

for(j=0;j

}

voiddisplay(unsignedcharp)

{

unsignedcharcodevalue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedcharchocode[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

unsignedchartemp;

temp=codevalue[p];

XBYTE[0x7F01]=temp;

temp=chocode[0];

XBYTE[0x7f00]=temp;

delay2(20);

}

voidmain(void)

{

unsignedintflag;

TMOD=0x10;

TR1=1;

flag=1;

P1=0;

P3_4=0;

XBYTE[0x7f03]=0x80;

while

(1)

{

if((flag>8)||(P1==0))flag=1;

if(flag==1)P1=0x01;

display(flag);

while(!

P3_2);

delay(20);

while(P3_3)

{

P3_4=1;

delay(10);

P3_4=0;

delay(10);

display(flag);

}

P1=_crol_(P1,1);

flag++;

}

}

篮球记分牌:

#include"sst89x5x4.h"

#include"intrins.h"

#include"absacc.h"

unsignedchardisbuffer[6]={0,0,0,0,0,0};

voiddelay(unsignedinttime)

{

unsignedinti;

for(i=0;i

{

TH1=0x3c;

TL1=0xb0;

while(!

TF1);

TF1=0;

}

}

voiddelay2(unsignedinti)

{

unsignedintj;

for(j=0;j

}

voiddisplay(unsignedcharp)

{

unsignedcharcodevalue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedcharchocode[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

unsignedcharone,ten,hud,temp;

one=p%10;

ten=p/10%10;

hud=p/100;

XBYTE[0x7F01]=codevalue[one];

temp=chocode[5];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[ten];

temp=chocode[4];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[hud];

temp=chocode[3];

XBYTE[0x7f00]=temp;

delay2(20);

}

voidmain(void)

{

unsignedintkey;

TMOD=0x10;

TR1=1;

XBYTE[0x7f03]=0x80;

key=0;

while

(1)

{

display(key);

if(P1==1)

{

key+=1;

display(key);

delay(10);

}

elseif(P1==2)

{

key+=2;

display(key);

delay(10);

}

elseif(P1==4)

{

key+=3;

display(key);

delay(10);

}

elseif(P1==8)

{

key-=1;

display(key);

delay(10);

}

}

}

秒表计时:

#include"sst89x5x4.h"

#include"intrins.h"

#include"absacc.h"

sbitP10=P1^0;

sbitP11=P1^1;

voiddelay(unsignedint);

voiddisplay(unsignedint);

unsignedinttime,flag;

voiddelay2(unsignedinti)

{

unsignedintj;

for(j=0;j

}

voiddisplay(unsignedintp)

{

unsignedcharcodevalue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsignedcharchocode[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

unsignedchartemp;

unsignedintone,two,three,four,five;

one=p%10;

if(p==0)one=two=three=four=five=0;

if(p>=10)two=p/10%10;

if(p>=100)three=p/100%10;

if(p>=1000)four=p/1000%10;

if(p>=10000)five=p/10000%10;

XBYTE[0x7F01]=codevalue[one];

temp=chocode[5];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[two];

temp=chocode[4];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[three];

temp=chocode[3];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[four];

temp=chocode[2];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[five];

temp=chocode[1];

XBYTE[0x7f00]=temp;

delay2(20);

XBYTE[0x7F01]=codevalue[0];

temp=chocode[0];

XBYTE[0x7f00]=temp;

delay2(20);

}

voiddelay(unsignedintp)

{

unsignedinti;

for(i=0;i

{

TH1=0xfe;

TL1=0x0c;

while(!

TF1);

TF1=0;

display(time);

}

}

voidmain(void)

{

TMOD=0x10;

TR1=1;

XBYTE[0x7f03]=0x80;

time=0;

while

(1)

{

display(time);

if(P10==1)

{

delay(2000);

time++;

}

if(P11==1)time=0;

}

}

步进电机正反转:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitzheng=P1^4;

sbitfan=P1^5;

sbitspeed=P1^6;

sbitstop=P1^7;

ucharnum1[8]={0x0E,0x0C,0x0D,0x09,0x0B,0x03,0x07,0x06};

ucharnum2[8]={0x06,0x07,0x03,0x0B,0x09,0x0D,0x0C,0x0E};

uinti,p,m;

voiddelay(uintk)

{

uintj;

for(j=0;j

}

voiddianji(void)

{

if(zheng==0){i=1;p=0;m=30000;}

if(fan==0){i=2;p=0;m

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2