《点阵式液晶显示屏的显示程序设计》由会员分享,可在线阅读,更多相关《点阵式液晶显示屏的显示程序设计(27页珍藏版)》请在金锄头文库上搜索。
1、J I A N G S U U N I V E R S I T Y单片机原理及应用课程设计课程设计专业班级: 计算机 1001学生姓名: 卫刚学生学号: 3100602021指导教师姓名:赵念强 2013 年 7 月点阵式液晶显示屏的显示程序设计点阵式液晶显示屏的显示程序设计一、设计目的一、设计目的1熟练掌握C51系统仿真开发系统的应用。 2加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和 开发工作打下良好基础。 3掌握的液晶的工作原理以及应用设计。 4掌握小系统开发设计的流程以及设计思路。二、设计要求二、设计要求1)字符方式:从下到上滚动显示:“江苏大学计算机学院”然
2、后交替显示:“年单片机课程设计”“液晶点阵显示屏程序设计” “作者姓名、班级、学号”2) 图片方式:显示相应图片(有左、右移,上下卷等多种动态方式 )3) 模拟量采样值显示(温度、压力、电位)4)其它功能不限,可自由发挥(时钟、秒表、计算器、菜单等) ,拓展要求三、设计思路:三、设计思路:由于实验指导书中做过液晶显示和模数转换得实验,根据两个实验的功能实现和流程原理进行设计将程序分成三个模块:主函数模块 main.c模数转换模块 ADC.c液晶显示模块 KS0108.c其中让主函数模块做一些初始化和函数调用工作,模数转换模块主要是将温度,压力,点位的值转化为数字量供液晶显示用,液晶显示模块得到
3、模数转换模块传递过来的数字量显示到液晶面板上。程序流程图: 1 系统主流程图如下开始主函数模块显示模块模数转换模块2 主函数流程图开始使能比较器 1开中断 初始化系统时钟钟初始化定时器 0初始化 IO 端口初始化 SPI0使能片内参考电压使能 DAC3 显示模块流程图开始初始化 LCD滚屏显示江苏大学计算机学院读取数字量并显示调用模数转换得到值显示课程设计题目、班级、姓名健值是否 1.2.34 模数转换模块流程图开始读取 No 和模拟量返回温度返回点位结束返回压力No=2?No=3?No=1?主要的源程序及注释四、主函数:四、主函数:#include “c8051f020.h“ #includ
4、e void Delay1us(unsigned char us) while (us) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); -us; /初始化系统时钟,使用 22.1184MHZ 晶体作为时钟源void SYSCLK_Init (void) int i; OSCXCN = 0x67; Wait for osc. to start up while (!(OSCXCN OSCICN = 0x88; OSCICN = 0x07; /interal 16MHZ #define PRT0CF P0MDOUT #define PRT1CF P1MD
5、OUT #define PRT2CF P2MDOUT void PORT_Init (void) XBR0=0x07; XBR1=0x00; XBR2=0x44; EMI0CF=0x27; EMI0TC=0x21; P74OUT=0xFF; P0MDOUT=0x15; P1MDOUT|=0x3C; /P1.2-P1.5 推挽输出 P /P1.2-P1.5=0 void SPI0_Init(void) SPI0CFG=0x07; SPI0CFG|=0xC0; /CKPOL =1; SPI0CN=0x03; SPI0CKR=SYSCLK/2/8000000-1; unsigned char Cou
6、nt1ms; void Timer0_Init (void) CKCON|=0x8; TMOD|=0x1; Count1ms=10; TR0=0; TH0=(-SYSCLK/1000) 8; TL0=-SYSCLK/1000; TR0=1; IE|=0x2; void Timer0_ISR(void)interrupt 1 TH0=(-SYSCLK/1000)8; TL0=-SYSCLK/1000; if (Count1ms) Count1ms-; void Delay1ms(unsigned char T) Count1ms=T; while (Count1ms); void Delay1s
7、(unsigned char T) while (T) Delay1ms(200); Delay1ms(200); Delay1ms(200); Delay1ms(200); Delay1ms(200); T-; char GetKeyValue(void); void init_adc(void); unsigned int GetADCValue(char No); void TestLCD(void); void DispLED(char *buf);void TestI2C (void);void DispLCD(char *DispBuf,char num); void InitLC
8、D(void);/初始化 LCD void ShowWenDu(void); void ShowDianYa(void); void ShowYaLi(void); void showniu(); void showfu(); void showdsheshidu(); void Test7279(bit LoopFlag);void LCD_WriteHZ(char x,char y,char *Dot);void LCD_DispChar(char x,char y,char ch); void Delay1ms(unsigned char T);void main (void) unsi
9、gned int w; char No,i,buf5; 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); No=0; /w =
10、 GetADCValue(1); for (;) i=GetKeyValue(); if(i=0)char code screen=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,0x00,0x00,0x00,0x00
11、,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
12、,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
13、,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
14、,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,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,