为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

嘎嘎嘎

2018-04-03 13页 doc 30KB 61阅读

用户头像

is_212655

暂无简介

举报
嘎嘎嘎嘎嘎嘎 #include #include "LCD12864P.h" #include "hohai.h" unsigned char title[]="河海大学"; unsigned char flag; int main( void ) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P...
嘎嘎嘎
嘎嘎嘎 #include #include "LCD12864P.h" #include "hohai.h" unsigned char title[]="河海大学"; unsigned char flag; int main( void ) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 TACTL = TASSEL_1 + MC_1; //计数时钟ACLK, 增计数模式 CCR0 = 32768 - 1; CCTL0 |= CCIE; //使能CCR0比较中断 _EINT(); Ini_Lcd(); //显示文字 Draw_PM(hohai); Draw_TX(0x81,0x81,speaker); flag = 0; while(flag < 5); //等待5秒钟 Clear_LCD(); //清屏 flag = 0; Disp_XY(3,0,title); while(flag < 5); //等待5秒钟 Clear_LCD(); //清屏 while(1); } /******************************************* 函数名称:TimerA_ISR 功 能:定时器A的中断服务函数 参 数:无 返回值 :无 ********************************************/ #pragma vector=TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { flag++; } #include typedef unsigned char uchar; typedef unsigned int uint; extern const unsigned char shuzi_table[]; #define LCD_DataIn P4DIR=0x00 //数据口方向设置为输入 #define LCD_DataOut P4DIR=0xff //数据口方向设置为输出 #define LCD2MCU_Data P4IN #define MCU2LCD_Data P4OUT #define LCD_CMDOut P3DIR|=0x07 //P3口的低三位设置为输出 #define LCD_RS_H P3OUT|=BIT0 //P3.0 #define LCD_RS_L P3OUT&=~BIT0 //P3.0 #define LCD_RW_H P3OUT|=BIT1 //P3.1 #define LCD_RW_L P3OUT&=~BIT1 //P3.1 #define LCD_EN_H P3OUT|=BIT2 //P3.2 #define LCD_EN_L P3OUT&=~BIT2 //P3.2 /******************************************* 函数名称:Delay_1ms 功 能:延时约1ms的时间 参 数:无 返回值 :无 ********************************************/ void Delay_1ms(void) { uchar i; for(i = 150;i > 0;i--) _NOP(); } /******************************************* 函数名称:Delay_Nms 功 能:延时N个1ms的时间 参 数:n--延时长度 返回值 :无 ********************************************/ void Delay_Nms(uint n) { uint i; for(i = n;i > 0;i--) Delay_1ms(); } /******************************************* 函数名称:Write_Cmd 功 能:向液晶中写控制命令 参 数:cmd--控制命令 返回值 :无 ********************************************/ void Write_Cmd(uchar cmd) { uchar lcdtemp = 0; LCD_RS_L; LCD_RW_H; LCD_DataIn; do //判忙 { LCD_EN_H; _NOP(); lcdtemp = LCD2MCU_Data; LCD_EN_L; } while(lcdtemp & 0x80); LCD_DataOut; LCD_RW_L; MCU2LCD_Data = cmd; LCD_EN_H; _NOP(); LCD_EN_L; } /******************************************* 函数名称:Write_Data 功 能:向液晶中写显示数据 参 数:dat--显示数据 返回值 :无 ********************************************/ void Write_Data(uchar dat) { uchar lcdtemp = 0; LCD_RS_L; LCD_RW_H; LCD_DataIn; do //判忙 { LCD_EN_H; _NOP(); lcdtemp = LCD2MCU_Data; LCD_EN_L; } while(lcdtemp & 0x80); LCD_DataOut; LCD_RS_H; LCD_RW_L; MCU2LCD_Data = dat; LCD_EN_H; _NOP(); LCD_EN_L; } /******************************************* 函数名称:Ini_Lcd 功 能:初始化液晶模块 参 数:无 返回值 :无 ********************************************/ void Ini_Lcd(void) { LCD_CMDOut; //液晶控制端口设置为输出 Delay_Nms(500); Write_Cmd(0x30); //基本指令集 Delay_1ms(); Write_Cmd(0x02); // 地址归位 Delay_1ms(); Write_Cmd(0x0c); //整体显示打开,游标关闭 Delay_1ms(); Write_Cmd(0x01); //清除显示 Delay_1ms(); Write_Cmd(0x06); //游标右移 Delay_1ms(); Write_Cmd(0x80); //设定显示的起始地址 } /******************************************* 函数名称:Clear_LCD 功 能:清屏 参 数:无 返回值 :无 ********************************************/ void Clear_LCD(void) { Write_Cmd(0x01); } /******************************************* 函数名称:Set_XY 功 能:设置显示的位置 参 数:x--行 y--列 返回值 :无 ********************************************/ void Set_XY( uchar x, uchar y ) { uchar address; switch (x) { case 0 : address=0x80+y; break; case 1 : address=0x90+y; break; case 2 : address=0x88+y; break; case 3 : address=0x98+y; break; default: address=0x80+y; break; } Write_Cmd(address); } /******************************************* 函数名称:Disp_HZ 功 能:控制液晶显示汉字 参 数:addr--显示位置的首地址 pt--指向显示数据的指针 num--显示字符个数 返回值 :无 ********************************************/ void Disp_HZ(uchar addr,const uchar * pt,uchar num) { uchar i; Write_Cmd(addr); for(i = 0;i < (num*2);i++) Write_Data(*(pt++)); } /******************************************* 函数名称:Disp_XY 功 能:控制液晶显示汉字 参 数:addr--显示位置的首地址 pt--指向显示数据的指针 num--显示字符个数 返回值 :无 ********************************************/ void Disp_XY(uchar x,uchar y,const uchar *pt) { Set_XY(x,y); while (*pt) { Write_Data(*pt); pt++; } } /******************************************* 函数名称:Clear_GDRAM 功 能:清除液晶GDRAM中的随机数据 参 数:无 返回值 :无 ********************************************/ void Clear_GDRAM(void) { uchar i,j,k; Write_Cmd(0x34); //打开扩展指令集 i = 0x80; for(j = 0;j < 32;j++) { Write_Cmd(i++); Write_Cmd(0x80); for(k = 0;k < 16;k++) { Write_Data(0x00); } } i = 0x80; for(j = 0;j < 32;j++) { Write_Cmd(i++); Write_Cmd(0x88); for(k = 0;k < 16;k++) { Write_Data(0x00); } } Write_Cmd(0x30); //回到基本指令集 } /******************************************* 函数名称:Draw_PM 功 能:在整个液晶屏幕上画图 参 数:无 返回值 :无 ********************************************/ void Draw_PM(const uchar *ptr) { uchar i,j,k; Write_Cmd(0x34); //打开扩展指令集 i = 0x80; for(j = 0;j < 32;j++) { Write_Cmd(i++); Write_Cmd(0x80); for(k = 0;k < 16;k++) { Write_Data(*ptr++); } } i = 0x80; for(j = 0;j < 32;j++) { Write_Cmd(i++); Write_Cmd(0x88); for(k = 0;k < 16;k++) { Write_Data(*ptr++); } } Write_Cmd(0x36); //打开绘图显示 Write_Cmd(0x30); //回到基本指令集 } /******************************************* 函数名称:Draw_TX 功 能:显示一个16*16大小的图形 参 数:Yaddr--Y地址 Xaddr--X地址 dp--指向图形数据存放地址的指针 绘图的坐标X以字节为单位,Y以位为单位 初始坐标 0x80,0x80 绘图时需要将YX的坐标连续写入RAM,写入期间绘图必须关闭 返回值 :无 ********************************************/ void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp) { uchar j; uchar k=0; Write_Cmd(0x01); //清屏,只能清除DDRAM Write_Cmd(0x34); //使用扩展指令集,关闭绘图显示 for(j=0;j<16;j++) { Write_Cmd(Yaddr++); //Y地址 Write_Cmd(Xaddr); //X地址 Write_Data(dp[k++]); Write_Data(dp[k++]); } Write_Cmd(0x36); //打开绘图显示 Write_Cmd(0x30); //回到基本指令集模式 }
/
本文档为【嘎嘎嘎】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索