液晶点阵显示屏课程设计报告 通信09235-宗慧(2)

2019-04-14 13:27

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

// EEPROM spec.) }

unsigned char Count1ms; void Timer0_Init (void) {

CKCON|=0x8; //定时器按系统时钟频率计数 TMOD|=0x1; //方式一 16Bit Count1ms=10;

TR0=0; // 禁止T0计数 STOP Timer0

TH0=(-SYSCLK/1000) >> 8; // 定时器赋初值 65536-1000us overflow in 1ms

TL0=-SYSCLK/1000;

TR0=1; // 开始计数 START Timer0 IE|=0x2; //IE置1 }

void Timer0_ISR(void)interrupt 1 //产生1ms的中断服务程序 {

TH0=(-SYSCLK/1000)>>8; //f=1000,T=1ms TL0=-SYSCLK/1000; if (Count1ms) Count1ms--; }

void Delay1ms(unsigned char T) {

Count1ms=T;

while (Count1ms); }

void Delay1s(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 DispLCD(char *DispBuf,char num); void InitLCD(void);//初始化LCD

5

set Timer0 to 《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

void ShowWenDu(void); void ShowDianYa(void); void ShowYaLi(void); void showniu(); void showfu();

void showdsheshidu(); void main (void) {

unsigned int w; char No,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: TestLCD(); InitLCD(); No=0;

//w = GetADCValue(1); for (;;) {

i=GetKeyValue(); if((i>=1)&&(i<=4)) {

No=i;

switch(No) {

case 1:

ShowWenDu();break; case 2:

ShowDianYa();break; case 3:

ShowYaLi();break; case 4:goto loop;break; default:

6

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

break; } }

w = GetADCValue(No); Delay1ms(30); switch(No) {

case 1:

buf[0]=(w000)/1000; buf[1]=(w00)/100; buf[2]=' ';

buf[3]=(w0)/10; buf[4]=(w); DispLCD(buf,1); showsheshidu(); break; case 2:

//ShowDianYa();

buf[0]=(w000)/1000; buf[1]=' ';

buf[2]=(w00)/100; buf[3]=(w0)/10; buf[4]=(w); DispLCD(buf,2); showfu(); break; case 3: //ShowYaLi();

buf[0]=(w000)/1000; buf[1]=(w00)/100; buf[2]=(w0)/10; buf[3]=' ';

buf[4]=(w); DispLCD(buf,3); showniu(); break;

default: break; } } }

㈡液晶显示模块KS0108.c

#include \

7

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

#include /*

液晶点阵显示试验 -128*64,控制器KS0108 试验准备:将拨码开关S1和S2置于ON位置. */

#define LCD_DATA P2 #define LCD_RS P30 #define LCD_RW P31 #define LCD_E P32 #define LCD_CS1 P34 #define LCD_CS2 P33 #define LCD_RST P35

void Delay1ms(unsigned char);

char code screen[]={}; //江苏大学计算机学院 /*-- 宽度x高度=128x64 --*/

char code screen1[]={}; //2010单片机课程设计 /*-- 宽度x高度=128x64 --*/

char code screen2[]={}; //液晶点阵显示屏程序设计

char code screen3[]={}; //作者姓名:宗慧 ;班级:通信0902;学号:3090601035; #define SELECTCS 0

void LCD_WaitReady1(void) //判断LCD控制芯片KS0108是否忙 {

LCD_DATA=0xff; _nop_();

LCD_CS1=SELECTCS; //前64列 LCD_RW=1; //读 LCD_RS=0;

LCD_E=1; //读写使能有效 while (LCD_DATA&0x80); LCD_CS1=!SELECTCS; }

void LCD_WaitReady2(void) //判断LCD控制芯片KS0108是否忙 {

LCD_DATA=0xff; _nop_();

LCD_CS2=SELECTCS; //后64列 LCD_RW=1; //读 LCD_RS=0;

LCD_E=1; //读写使能有效 while (LCD_DATA&0x80); LCD_CS2=!SELECTCS; }

void LCD_WriteCommand1(char ch) //向LCD控制芯片KS0108发送控制命令 {

8

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

LCD_WaitReady1(); LCD_CS1=SELECTCS; LCD_RW=0; LCD_RS=0; LCD_DATA=ch; LCD_E=1; LCD_E=0;

LCD_CS1=!SELECTCS; }

void LCD_WriteCommand2(char ch) //向LCD控制芯片KS0108发送控制命令 {

LCD_WaitReady2(); LCD_CS2=SELECTCS; LCD_RW=0; LCD_RS=0; LCD_DATA=ch; LCD_E=1; LCD_E=0;

LCD_CS2=!SELECTCS; }

void LCD_WriteData1(char ch) //向LCD控制芯片KS0108发送数据命令 {

LCD_WaitReady1(); LCD_CS1=SELECTCS; LCD_RW=0; LCD_RS=1; LCD_DATA=ch; LCD_E=1; LCD_E=0;

LCD_CS1=!SELECTCS; }

void LCD_WriteData2(char ch) //向LCD控制芯片KS0108发送数据命令 {

LCD_WaitReady2(); LCD_CS2=SELECTCS; LCD_RW=0; LCD_RS=1; LCD_DATA=ch; LCD_E=1; LCD_E=0;

LCD_CS2=!SELECTCS; }

void LCD_WriteHZ(char x,char y,char *Dat) //显示16*16点阵汉字 {

9


液晶点阵显示屏课程设计报告 通信09235-宗慧(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:老庄小学学校体育与健康课程实施计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: