完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
怎么把12864F-1改成12864B的显示程序#ifndef _LCD_12864
#define _LCD_12864 /*****************************预定义**************************************/ #define uchar unsigned char #define uint unsigned int ***it LCD_RST=P0^1; ***it LCD_SC =P0^4; ***it LCD_SI =P0^3; ***it LCD_CS =P0^0; ***it LCD_A0 =P0^2; uchar code dis_col=128,dis_page=8; uchar Simulation=1; //实物制作时请设置0,仿真测试时请设置1 /***************************12864管脚配置****************************/ /******************************************************************************************** * 函数名称:delayx() * 功 能:延迟时间=a*1ms * 入口参数: * 出口参数:无 *********************************************************************************************/ void delayx(unsigned int ms) { unsigned char j; while(ms--) { for(j = 0; j < 120; j++); } } void LCD_Reset(void) { //delayx(50);//delay_ms(10); LCD_RST=0; //复位 delayx(50);//delay_ms(10); //延时 1ms LCD_RST=1; delayx(50);//delay_ms(10); } //******************************************************************* //送一个字节程序 //******************************************************************* void SendBit(uchar dat,uchar bitcnt) { uchar i; for(i=0;i LCD_SC=0; if(( dat & 0x80 ) == 0) LCD_SI=0; else LCD_SI=1; LCD_SC=1; dat=dat<<1; } } /******************************************************************************************** * 函数名称:Lcd_Write_Command() * 功 能:写指令代码 * 入口参数:无 * 出口参数:无 *********************************************************************************************/ void Lcd_Write_Command(uchar ctrlcode) { LCD_CS=0; LCD_A0=0; SendBit(ctrlcode,8); LCD_CS=1; } /******************************************************************************************** * 函数名称:Lcd_Write_Byte() * 功 能:写数据 * 入口参数:无 * 出口参数:无 *********************************************************************************************/ void Lcd_Write_Byte(uchar dispdata) { LCD_CS=0; LCD_A0=1; SendBit(dispdata,8); LCD_CS=1; } /******************************************************************************************** * 函数名称:Lcd_Set_X_Y(uchar x, uchar y ) * 功 能:LCD设置x y坐标 * 入口参数:x y * 出口参数:无 *********************************************************************************************/ void Lcd_Set_X_Y(uchar x, uchar y) { Lcd_Write_Command(x|0xB0); // row address LSB Lcd_Write_Command(y>>4|0x10); // column address MSB Lcd_Write_Command(y&0x0F|0x00); // column address LSB } /**************************************************************************** *名称:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point ) *功能:显示16X8字符(字母) *入口参数: *出口参数: *说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示 ****************************************************************************/ void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point ) { uchar i , j,temp; temp=y; if( bit_flag ) { for( i=0; i<2; i++ ) { x+=i; y=temp; for( j=0;j<8;j++ ) { Lcd_Set_X_Y( x, y ); y++; Lcd_Write_Byte( point[ i*8 + j] ); } } } else { for( i = 0; i < 2; i++ ) { x += i; y = temp; for( j = 0; j < 8; j++ ) { Lcd_Set_X_Y( x, y ); y++; Lcd_Write_Byte( ~point[ i * 8 + j ] ); } } } } /**************************************************************************** * 名称:Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point ) * 功能:显示16*16字符(汉字) * 入口参数:x y data * 出口参数:无 *说明:bit_flag = 1 正常显示 bit_flag = 0 黑白反相显示 ****************************************************************************/ void Lcd_Character_16X16( bit bit_flag, uchar x, uchar y, uchar code *point ) { uchar i,j,temp ; temp=y; if( bit_flag ) { for( i=0; i<2; i++ ) { x+=i; y=temp; for( j=0;j<16;j++ ) { Lcd_Set_X_Y( x, y ); y++; Lcd_Write_Byte( point[ i*16 + j] ); } } } else { for( i = 0; i<2; i++ ) { x += i; y = temp; for( j = 0; j < 16; j++ ) { Lcd_Set_X_Y( x, y ); y++; Lcd_Write_Byte( ~ point[ i * 16 + j ] ); } } } } /**************************************************************************** * 名称:Lcd_Clear(void) * 功能:清屏 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void Lcd_Clear() { uchar x,y; for(x=0;x Lcd_Set_X_Y(x,0); for(y=0;y<132;y++) //写132列显示数据 Lcd_Write_Byte(0x00); //写显示数据0x00 } } /******************************************************************************************* * 函数名称:Lcd_Initial() * 功 能:初始化LCD * 入口参数:无 * 出口参数:无 *********************************************************************************************/ void Lcd_Initial() { delayx(50);//delay_ms(50); Lcd_Write_Command(0xE2); delayx(50);//delay_ms(50); Lcd_Write_Command(0xAE); // set display OFF Lcd_Write_Command(0xA2); // set 1/9 Bias if(Simulation==0) { Lcd_Write_Command(0xA0); // set ADC=1, SEG output normal direction Lcd_Write_Command(0xC8); // set SHL=1, COM output reverse direction } else { { Lcd_Write_Command(0xA1); // set ADC=1, SEG output normal direction Lcd_Write_Command(0xC0); // set SHL=1, COM output reverse direction } } Lcd_Write_Command(0xF8); // set booster ratio Lcd_Write_Command(0x00); // set 00: 2x,3x,4x, 01:5x Lcd_Write_Command(0x25); // set 1+Rb/Ra(101),5.5 Lcd_Write_Command(0x81); // Electronic volume mode set Lcd_Write_Command(0x13);/////////////////CH12864F液晶的电源设置//Lcd_Write_Command(0x24); Lcd_Write_Command(0x2C); // set voltage converter(VC) on Lcd_Write_Command(0x2E); // set voltage converter(VC&CR) on Lcd_Write_Command(0x2F); // set VC & VR & voltage follower on Lcd_Write_Command(0xAF); // set display ON Lcd_Write_Command(0x40); //set Start Line Lcd_Clear(); } /**************************************************************************** * 名称:Lcd_Time(uchar * clock_time ) * 功能:显示时间 * 入口参数:无 * 出口参数:无 * 说明 : 时间数组 BCD 码形式 ****************************************************************************/ void Lcd_Time(uchar * clock_time ) { uchar i=0; //显示 "hour时min分sec秒" i= * clock_time >> 4; Lcd_Character_16X8( 1, 2, 80, letter_logo[i]); //显示 sec的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 2, 88, letter_logo[i]); //显示 sec的低位 Lcd_Character_16X16( 1, 2, 96 , time_logo[2]); //显示 秒 clock_time ++; i= * clock_time >> 4; Lcd_Character_16X8( 1, 2, 48, letter_logo[i]); //显示 min的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 2, 56, letter_logo[i]); //显示 min的低位 Lcd_Character_16X16( 1, 2, 64 , time_logo[1]); //显示 分 clock_time ++; i= * clock_time >> 4; Lcd_Character_16X8( 1, 2, 16 , letter_logo[i]); //显示 hour的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 2, 24 , letter_logo[i]); //显示 hour的低位 Lcd_Character_16X16( 1, 2, 32 , time_logo[0]); //显示 分 } /**************************************************************************** * 名称:Lcd_Data(uchar * clock_time ) * 功能:显示日期 * 入口参数:无 * 出口参数:无 * 说明 : 时间数组 BCD 码形式 ****************************************************************************/ void Lcd_Data(uchar * clock_time ) { uchar i=0; clock_time += 3; //显示 "year 年 month 月 day 日" i= * clock_time >> 4; Lcd_Character_16X8( 1, 0, 80, letter_logo[i]); //显示 day的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 0, 88, letter_logo[i]); //显示 day的低位 Lcd_Character_16X16( 1, 0, 96, data_logo[2]); //显示 日 clock_time ++; i= * clock_time >> 4 ; Lcd_Character_16X8( 1, 0, 48, letter_logo[i]); //显示 month的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 0, 56, letter_logo[i]); //显示 month的低位 Lcd_Character_16X16( 1, 0, 64, data_logo[1]); //显示 月 clock_time ++ ; i= * clock_time >> 4; Lcd_Character_16X8( 1, 0, 16 , letter_logo[i]); //显示 year的高位 i= * clock_time & 0x0f; Lcd_Character_16X8( 1, 0, 24 , letter_logo[i]); //显示 year的低位 Lcd_Character_16X16( 1, 0, 32, data_logo[0]); //显示 年 } /**************************************************************************** * 名称:Lcd_Data(uchar * clock_time ) * 功能:显示日期 * 入口参数:无 * 出口参数:无 * 说明 : 时间数组 BCD 码形式 ****************************************************************************/ void Lcd_Week( uchar week ) { Lcd_Character_16X16( 1, 6, 16-8, week_logo[7] ); //星 Lcd_Character_16X16( 1, 6, 32-8, week_logo[8] ); //期 Lcd_Character_16X16( 1, 6, 48-8, week_logo[ week & 0x0f ] ); } /****************************************************************************** * 函数名称: Lcd_Clock( uchar *clock_time ) * 功能: 显示时钟 * 入口参数: 时钟地址 * 出口参数: 无 ********************************************************************************/ void Lcd_Clock( uchar * clock_time ) { Lcd_Data( clock_time ); //显示日期 Lcd_Time( clock_time ); //显示时间 } /****************************************************************************** * 名称: void Lcd_Lunar_Calendar( uchar * lunch_calendar ) * 功能: 显示农历 * 入口参数: 农力指针 * 出口参数: 无 *******************************************************************************/ void Lcd_Lunar_Calendar( uchar * lunar_canlendar ) { uchar i; //农历 Lcd_Character_16X16( 1, 4, 16, lunar_calendar_logo[0] ); Lcd_Character_16X16( 1, 4, 32, lunar_calendar_logo[1] ); //year-mongth-day i= * lunar_canlendar >> 4; Lcd_Character_16X8( 1, 4, 96, letter_logo[i] ); //农历天的高位 i= * lunar_canlendar & 0x0f; Lcd_Character_16X8( 1, 4, 104, letter_logo[i] ); //农历天的低位 Lcd_Character_16X8( 1, 4, 88, letter_logo[11] ); //- lunar_canlendar ++; i= * lunar_canlendar >> 4; Lcd_Character_16X8( 1, 4, 72, letter_logo[i] ); //农历月的高位 i= * lunar_canlendar & 0x0f; Lcd_Character_16X8( 1, 4, 80, letter_logo[i] ); //农历月的低位 Lcd_Character_16X8( 1, 4, 64, letter_logo[11] ); //- lunar_canlendar ++; i= * lunar_canlendar >> 4; Lcd_Character_16X8( 1, 4, 48, letter_logo[i] ); //农历年的高位 i= * lunar_canlendar & 0x0f; Lcd_Character_16X8( 1, 4, 56, letter_logo[i] ); //农历年的地位 } /******************************************************************************* * 名称: Lcd_Temperature( uchar * temperture ) * 功能: 显示温度 * 入口参数: 温度 * 出口参数: 无 *********************************************************************************/ void Lcd_RH( uchar * RH_Data ) { uchar i1,i2,i3,i4; i1=RH_Data[0]/10+0x30;//百位数 i2=RH_Data[0]%10+0x30;//十位数 i3=RH_Data[1]/10+0x30;//百位数 i4=RH_Data[1]%10+0x30;//十位数 Lcd_Character_16X8( 1, 6, 64, letter_logo[ i1 ] ); //负温度显示负号:- Lcd_Character_16X8( 1, 6, 72, letter_logo[i2] ); // 小数位 Lcd_Character_16X8( 1, 6, 80, RH_logo[1] ); // % Lcd_Character_16X8( 1, 6, 96, letter_logo[ i3 ] ); //个位 Lcd_Character_16X8( 1, 6, 104, letter_logo[ i4 ] ); //十位 Lcd_Character_16X8( 1, 6, 112, RH_logo[2] ); // C } /*************************************************************************** *名称 :Lcd_Set_Clock( uchar bit_flag, uchar *point ) *功能 :显示调整的时间 *入口参数:指针 *出口参数:无 *说明 : ****************************************************************************/ void Lcd_Set_Clock( uchar temp, uchar *point ) { bit year_flag = 1; bit month_flag = 1; bit day_flag = 1; bit hour_flag =1; bit minute_flag = 1; bit second_flag = 1; uchar i; if( temp == 1 ) //滚动到 second second_flag = 0; if( temp == 2 ) //滚动到 minute minute_flag = 0; if( temp == 3 ) //滚动到 hour hour_flag = 0; if( temp == 4 ) //滚动到 day day_flag = 0; if( temp == 5 ) //滚动到 month month_flag = 0; if( temp == 6 ) //滚动到 year year_flag = 0; //日期 Lcd_Character_16X16( 1, 2, 0 , data_time_logo[0] ); Lcd_Character_16X16( 1, 2, 16, data_time_logo[1] ); point += 5; //指向年 //year i = *point >> 4; Lcd_Character_16X8( year_flag, 2, 40, letter_logo[i] ); i = *point & 0x0f; Lcd_Character_16X8( year_flag, 2, 48, letter_logo[i] ); //- Lcd_Character_16X8( 1, 2, 56, letter_logo[11] ); point --; //指向月 //month i = *point >>4; Lcd_Character_16X8( month_flag, 2, 64, letter_logo[i] ); i = *point & 0x0f; Lcd_Character_16X8( month_flag, 2, 72, letter_logo[i] ); //- Lcd_Character_16X8( 1, 2, 80, letter_logo[11] ); point --; //指向日 //day i = *point >>4; Lcd_Character_16X8( day_flag, 2, 88, letter_logo[i] ); i = *point & 0x0f; Lcd_Character_16X8( day_flag, 2, 96, letter_logo[i] ); //时间 Lcd_Character_16X16( 1, 4, 0, data_time_logo[2] ); Lcd_Character_16X16( 1, 4, 16, data_time_logo[3] ); point -- ; //指向时 //hour i = *point >>4; Lcd_Character_16X8( hour_flag, 4, 40, letter_logo[i] ); i = *point & 0x0f; Lcd_Character_16X8( hour_flag, 4, 48, letter_logo[i] ); //: Lcd_Character_16X8( 1, 4, 56, letter_logo[10] ); point -- ; //指向分 //minnute i = *point >>4; Lcd_Character_16X8( minute_flag, 4, 64, letter_logo[i] ); i = *point & 0xff; Lcd_Character_16X8( minute_flag, 4, 72, letter_logo[i] ); //: Lcd_Character_16X8( 1, 4, 80, letter_logo[10] ); point --; //指向秒 //second i = *point >> 4; Lcd_Character_16X8( second_flag, 4, 88, letter_logo[i] ); i = * point & 0x0f; Lcd_Character_16X8( second_flag, 4, 96, letter_logo[i] ); } /************************************************************************************** * 名称: Lcd_Function( uchar temp ) * 功能: 滚动显示 时间设置 * 入口参数: 滚动位置 * 出口参数: 无 **************************************************************************************/ void Lcd_Function( uchar temp ) { bit time_flag = 1; if( temp == 2 ) //滚动到 时间设置 time_flag = 0; //时间设置 Lcd_Character_16X16( time_flag, 0, 0, function_logo[0] ); Lcd_Character_16X16( time_flag, 0, 16, function_logo[1] ); Lcd_Character_16X16( time_flag, 0, 32, function_logo[2] ); Lcd_Character_16X16( time_flag, 0, 48, function_logo[3] ); } /********************************************************************************/ #endif |
|
相关推荐
2个回答
|
|
|
|
|
|
支持!!!!!!!!!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 02:05 , Processed in 0.625598 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号