点阵式液晶显示屏的显示程序设计单片机课程设计报告文档格式.docx
《点阵式液晶显示屏的显示程序设计单片机课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《点阵式液晶显示屏的显示程序设计单片机课程设计报告文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
![点阵式液晶显示屏的显示程序设计单片机课程设计报告文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/10/ba590727-d60d-4db8-89f9-172a8c37db33/ba590727-d60d-4db8-89f9-172a8c37db331.gif)
intrins.h>
voidDelay1us(unsignedcharus)
{
while(us)
{
_nop_();
--us;
}
}
voidSYSCLK_Init(void)
inti;
//delaycounter
OSCXCN=0x67;
//startexternaloscillatorwith
//18.432MHzcrystal
for(i=0;
i<
256;
i++);
//Waitforosc.tostartup
while(!
(OSCXCN&
0x80));
//Waitforcrystalosc.tosettle
OSCICN=0x88;
//selectexternaloscillatorasSYSCLK
//sourceandenablemissingclock
//detector
//OSCICN=0x07;
file:
//interal16MHZ
#definePRT0CFP0MDOUT
#definePRT1CFP1MDOUT
#definePRT2CFP2MDOUT
voidPORT_Init(void)
XBR0=0x07;
//EnableSMBus,SPI0,andUART0
XBR1=0x00;
XBR2=0x44;
//Enablecrossbarandweakpull-ups
EMI0CF=0x27;
EMI0TC=0x21;
P74OUT=0xFF;
P0MDOUT=0x15;
P1MDOUT|=0x3C;
//P1.2-P1.5推挽输出
P1&
=0xc3;
//P1.2-P1.5=0
voidSPI0_Init(void)
SPI0CFG=0x07;
//datasampledon1stSCKrisingedge
//8-bitdatawords
SPI0CFG|=0xC0;
//CKPOL=1;
SPI0CN=0x03;
//Mastermode;
SPIenabled;
flags
//cleared
SPI0CKR=SYSCLK/2/8000000-1;
//SPIclock<
=8MHz(limitedby
//EEPROMspec.)
unsignedcharCount1ms;
voidTimer0_Init(void)
CKCON|=0x8;
TMOD|=0x1;
//16Bit
Count1ms=10;
TR0=0;
//STOPTimer0
TH0=(-SYSCLK/1000)>
>
8;
//setTimer0tooverflowin1ms
TL0=-SYSCLK/1000;
TR0=1;
//STARTTimer0
IE|=0x2;
voidTimer0_ISR(void)interrupt1//1ms
if(Count1ms)Count1ms--;
voidDelay1ms(unsignedcharT)
Count1ms=T;
while(Count1ms);
voidDelay1s(unsignedcharT)
while(T)
Delay1ms(200);
T--;
charGetKeyValue(void);
voidinit_adc(void);
unsignedintGetADCValue(charNo);
voidTestLCD(void);
voidDispLCD(char*DispBuf,charnum);
voidInitLCD(void);
//初始化¯
LCD
voidShowWenDu(void);
voidTest7279(bitLoopFlag);
voidmain(void)
unsignedintw;
charNo,i,buf[5];
No=1;
WDTCN=0xde;
WDTCN=0xad;
//关看门狗
SYSCLK_Init();
//初始化时钟
Timer0_Init();
//初始化定时器
PORT_Init();
//初始化IO口
SPI0_Init();
//初始化SPI0
init_adc();
CPT1CN|=0x80;
//使能比较器1
REF0CN=0x07;
//使能片内参考电压
DAC0CN|=0x80;
//使能DAC0
DAC0H=0;
DAC0L=0;
EA=1;
//开中断
//Test7279(0);
loop:
Test7279(0);
//关闭数码关显示
TestLCD();
InitLCD();
No=0;
//w=GetADCValue
(1);
for(;
;
)
i=GetKeyValue();
if((i>
=0)&
&
(i<
=3))
No=i;
switch(No)
case1:
ShowWenDu();
break;
case2:
ShowDianYa();
case3:
ShowYaLi();
case0:
gotoloop;
default:
break;
w=GetADCValue(No);
Delay1ms(30);
buf[0]=(w%10000)/1000;
buf[1]=(w%1000)/100;
buf[2]='
'
buf[3]=(w%100)/10;
buf[4]=(w%10);
DispLCD(buf,1);
showdu();
DispLCD(buf,2);
showfu();
DispLCD(buf,3);
showniu();
}}}
模数转换
c8051F020.h"
/*
压力应变片ADC实验
*/
#defineMUX_TEMP0x08
#defineMUX_VOLT0x01
#defineMUX_PRESS0x02
unsignedintidataTemp,Press,Volt;
unsignedcharidatamux_select;
sfr16ADC0=0xbe;
//ADC0data
voidinit_adc(void)
ADC0CN=0x81;
//ADC0enabled;
normaltracking
//mode;
ADC0conversionsareinitiated
//onwritetoAD0BUSY;
ADC0datais
//left-justified
//enabletempsensor,on-chipVREF,
//andVREFoutputbuffer
mux_select=MUX_TEMP;
//CPUon-chiptempsensor
AMX0SL=MUX_TEMP;
ADC0CF=(SYSCLK/2500000)<
<
3;
//ADCconversionclock=2.5MHz
//ADC0CF|=0x01;
//PGAgain=2
EIE2&
=~0x02;
//disableADC0EOCinterrupt
EIE1&
=~0x04;
//disableADC0windowcompareinterrupt
//On-chiptemperature
//AN1.电位片
//AN2.应变片
voidread_analog_inputs(void)
longtemp_long;
AD0INT=0;
//clearconversioncompleteindicator
AD0BUSY=1;
//initiateconversion
while(AD0INT==0);
//waitforconversioncomplete
switch(mux_select)
caseMUX_TEMP:
temp_long=ADC0-42380/2;
temp_long=(temp_long*200L)/156;
Temp=temp_long;
AMX0SL=MUX_VOLT;
//SelectAIN1fornextread
mux_select=MUX_VOLT;
caseMUX_VOLT:
temp_long=ADC0;
Volt=24*temp_long/655;
AMX0SL=MUX_PRESS;
//Selecton-chiptempsensor
mux_select=MUX_PRESS;
caseMUX_PRESS:
temp_long=24*temp_long/655;
Press=temp_long;
unsignedintGetADCValue(charNo)
read_analog_inputs();
switch(No)
returnTemp;
returnVolt;
if(Press<
10)Press=0;
returnPress;
C8051F020.h"
液晶点阵显示实验-128*64,控制器KS0108
实验准备:
将拨码开关S1和S2置ON
运行此程序将上下左右滚动显示“姓名,马彩霞学号,3100601033班级,通信1002”
出现菜单,按键选择。
#defineLCD_DATAP2
#defineLCD_RSP30
#defineLCD_RWP31
#defineLCD_EP32
#defineLCD_CS1P34
#defineLCD_CS2P33
#defineLCD_RSTP35
voidDelay1ms(unsignedchar);
#defineSELECTCS0
charcodezero[]={//0//
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
};
charcodeone[]={//1//
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
charcodetwo[]={//2//
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
charcodethree[]={//3//
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
charcodefour[]={//4//
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
charcodefive[]={//5//
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
charcodesix[]={//6//
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
charcodeseven[]={//7//
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
charcodeeight[]={//8//
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
charcodenine[]={//9//
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
charcodemao[]={//:
//
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
charcodedot[]={//.//
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
charcodewen[]={//温//
0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,
charcodedu[]={//度//
0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,
0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,
charcodedian[]={//电//
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,
charcodeya[]={//压//
0x00,0x00,0xFE,0x02,0x42,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x62,0x42,0x02,0x00,
0x20,0x18,0x27,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x21,0x2E,0x24,0x20,0x20,0x00,
charcodeli[]={//力//
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,
0x00,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,
charcodeC[]={//C//
0xC7,0x35,0x0F,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
charcodeN[]={//牛顿//
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,
charcodem[]={//m//
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,};
charcodeV[]={//V//
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,};
charcodescreen1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,
0xC0,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x80,0x80,0x00,0x80,0xC0,0x80,0x80,0x80,
0x00,0x00,0x00,0xC0,0x00,0x00,0x80,0x80,0x80,0xC0,0x80,0x00,0x00,0x00,0x00,0x40,
0x80,0x40,0x80,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x40,0x40,0xC0,0x80,0x80,0x80,
0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x000x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0x80,0x40,0x04,0x04,0x040xFF,0x04,0x04,0x04,0x00,0x82,0x81,0xBE,0xEB,0xAA,0xAB,0xAA,0xEA,0xBF,0x80,0x80,
0x00,0x61,0x19,0xFF,0x09,0x91,0x7F,0x00,0