《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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库液晶点阵显示屏课程设计报告 通信09235-宗慧(2)在线全文阅读。
相关推荐: