毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx

上传人:b****2 文档编号:11765609 上传时间:2023-06-02 格式:DOCX 页数:46 大小:85.22KB
下载 相关 举报
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第1页
第1页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第2页
第2页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第3页
第3页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第4页
第4页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第5页
第5页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第6页
第6页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第7页
第7页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第8页
第8页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第9页
第9页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第10页
第10页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第11页
第11页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第12页
第12页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第13页
第13页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第14页
第14页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第15页
第15页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第16页
第16页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第17页
第17页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第18页
第18页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第19页
第19页 / 共46页
毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx

《毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx(46页珍藏版)》请在冰点文库上搜索。

毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告.docx

毕业设计点阵式液晶显示屏的显示程序设计单片机课程设计报告

JIANGSUUNIVERSITY

单片机原理及应用

课程设计

 

学院名称:

计算机科学与通信工程

专业班级:

通信1002

学生姓名:

马彩霞

学生学号:

3100601033

指导教师姓名:

赵念强

2013年1月

点阵式液晶显示屏的显示程序设计

一、设计目的

1.熟练掌握C51系统仿真开发系统的应用。

2.加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和开发工作打下良好基础。

3.掌握的液晶的工作原理以及应用设计。

4.掌握小系统开发设计的流程以及设计思路。

二、设计方案

实验要求:

1)从下到上左到右滚动显示:

自己设计的图片

2)能进行正常的模拟量采样值显示(温度、压力、电位)。

3)未按键时菜单要可以停下来

设计思路:

由于实验指导书中做过液晶显示和模数转换得实验,根据两个实验的功能实现和流程原理进行设计

将程序分成四个模块:

主函数模块main.c

模数转换模块ADC.c

液晶显示模块KS0108.c

按键调试模块Test7179.c

其中让主函数模块做一些初始化和函数调用工作,模数转换模块主要是将温度,压力,点位的值转化为数字量供液晶显示用,液晶显示模块得到模数转换模块传递过来的数字量显示到液晶面板上,按键调试模块是输入按键显示温度,电压,压力等。

程序流程图:

1系统主流程图如下

2主函数流程图

3显示模块流程图

4模数转换模块流程图

主要的源程序及注释

主函数:

#include"c8051f020.h"

#include

voidDelay1us(unsignedcharus)

{

while(us)

{

_nop_();_nop_();_nop_();_nop_();_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

{

TH0=(-SYSCLK/1000)>>8;

TL0=-SYSCLK/1000;

if(Count1ms)Count1ms--;

}

voidDelay1ms(unsignedcharT)

{

Count1ms=T;

while(Count1ms);

}

voidDelay1s(unsignedcharT)

{

while(T)

{

Delay1ms(200);

Delay1ms(200);

Delay1ms(200);

Delay1ms(200);

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();break;

case3:

ShowYaLi();break;

case0:

gotoloop;break;

default:

break;

}

}

w=GetADCValue(No);

Delay1ms(30);

switch(No)

{

case1:

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();

break;

case2:

buf[0]=(w%10000)/1000;

buf[1]=(w%1000)/100;

buf[2]='';

buf[3]=(w%100)/10;

buf[4]=(w%10);

DispLCD(buf,2);

showfu();

break;

case3:

buf[0]=(w%10000)/1000;

buf[1]=(w%1000)/100;

buf[2]='';

buf[3]=(w%100)/10;

buf[4]=(w%10);

DispLCD(buf,3);

showniu();

break;

default:

break;

}}}

模数转换

#include"c8051F020.h"

#include

/*

压力应变片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

REF0CN=0x07;//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;

break;

caseMUX_VOLT:

temp_long=ADC0;

Volt=24*temp_long/655;

AMX0SL=MUX_PRESS;//Selecton-chiptempsensor

mux_select=MUX_PRESS;

break;

caseMUX_PRESS:

temp_long=ADC0;

temp_long=24*temp_long/655;

Press=temp_long;

AMX0SL=MUX_TEMP;

mux_select=MUX_TEMP;

break;

default:

AMX0SL=MUX_TEMP;

mux_select=MUX_TEMP;

break;

}

}

unsignedintGetADCValue(charNo)

{

read_analog_inputs();

read_analog_inputs();

read_analog_inputs();

switch(No)

{

case1:

returnTemp;

case2:

returnVolt;

case3:

if(Press<10)Press=0;

returnPress;

}

}

液晶显示模块KS0108.c

#include"C8051F020.h"

#include

/*

液晶点阵显示实验-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,0xB

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

当前位置:首页 > 解决方案 > 学习计划

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

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