单片机课设代码.docx
《单片机课设代码.docx》由会员分享,可在线阅读,更多相关《单片机课设代码.docx(28页珍藏版)》请在冰点文库上搜索。
单片机课设代码
点阵显示:
#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;ifor(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