msp430串口通信带12864头文件.doc_第1页
msp430串口通信带12864头文件.doc_第2页
msp430串口通信带12864头文件.doc_第3页
msp430串口通信带12864头文件.doc_第4页
msp430串口通信带12864头文件.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*程序功能:PC通过串口调试精灵向MCU发送数据,MCU将其在1602 液晶上显示-通信格式:N.8.1, 9600-测试说明:打开串口调试助手,正确设置通信格式,向从PC机上 向学习板发送数据,观察液晶上显示的字符。*/#include #include 12864.h#includedelay.hvoid InitUART(void);void PutString(uchar *ptr);uchar table1=波特率:9600;uchar table2=接收到的数据为:;uchar table=0123456789;uchar buffer100=0;uchar i=0,K=0;/*主函数*/void main( void ) /*下面六行程序关闭所有的IO口*/ uchar *tishi = sennd data to MCU, and they will be displayed on 12864!; WDTCTL = WDTPW + WDTHOLD; /关狗 InitUART(); /初始化UART init(); /初始化LCD PutString(tishi); _EINT(); Disp_HZ(0x80,table1,6); Disp_HZ(0x90,table2,8); /* while(1) / LPM1; Disp_HZ(0x80,table1,6); Disp_HZ(0x90,table2,8); */ /*函数名称:PutSting功 能:向PC机发送字符串参 数:ptr-指向发送字符串的指针返回值 :无*/void PutString(uchar *ptr) while(*ptr != 0) while (!(IFG1 & UTXIFG0); / TX缓存空闲?发送完毕UTXIFG0置1,IFG1=0X80 TXBUF0 = *ptr+; / 发送数据 while (!(IFG1 & UTXIFG0); TXBUF0 = n;/*函数名称:InitUART功 能:初始化UART端口参 数:无返回值 :无*/void InitUART(void) UCTL0 |= SWRST; P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXD P3DIR|=BIT4; ME1 |= URXE0 + UTXE0; / Enable USART0 T/RXD UCTL0 |= CHAR; / 8-bit character UTCTL0 |= SSEL0; / UCLK = ACLK U0BR0 = 0x03; / 32k/9600 - 3.41 U0BR1 = 0x00; / UMCTL0 = 0x4A; / Modulation UCTL0 &= SWRST; / Initialize USART state machine IE1 |= URXIE0; / 使能USART0的接收中断/*函数名称:UART0_RXISR功 能:UART0的接收中断服务函数,在这里唤醒 CPU,使它退出低功耗模式参 数:无返回值 :无*/#pragma vector = UART0RX_VECTOR_interrupt void UART0_RXISR(void) i+; if(i=32) i=0; write_cmd(0x01); /清除显示 Disp_HZ(0x80,table1,6); Disp_HZ(0x90,table2,8); /退出低功耗模式 bufferi=RXBUF0; if(i=15) write_cmd(0x88); for(K=0;K=i;K+) write_data(bufferK); else write_cmd(0x88); for(K=0;K=15;K+) write_data(bufferK); write_cmd(0x98); for(K=16;K 9) /发送键值116对应的ASCII码 TXBUF0 = 0x30 + zifu/10; while (!(IFG1 & UTXIFG0); TXBUF0 = 0x30 + zifu%10; else TXBUF0 = 0x30 + zifu; while (!(IFG1 & UTXIFG0); TXBUF0 = n; /发送回车字符12864头文件#ifndef _CRY12864_H_#define _CRY12864_H_#includedelay.hextern const unsigned char shuzi_table;#define Busy 0x80#define Lcd_dataIn P6DIR=0x00 /数据口方向设置为输入#define lcd_dataout P6DIR=0XFF#define mcu2lcd_data P6OUT#define lcd2mcu_data P6IN#define lcd_cmdout P3DIR|=0X07#define rs_h P3OUT|=BIT0#define rs_l P3OUT&=BIT0#define rw_h P3OUT|=BIT1#define rw_l P3OUT&=BIT1#define en_h P3OUT|=BIT2#define en_l P3OUT&=BIT2/*void ifbusy() /读忙状态uchar lCdtemp = 0; while(1) LCD_DataIn; rs_l; rw_h; en_h; _NOP(); lcdtemp = LCD2MCU_Data; en_l; if(lCdtemp&Busy)=0) break; */void write_cmd(uchar cmd)/ifbusy(); rs_l; rw_l; /lcd_dataout; mcu2lcd_data=cmd; delayms(5); en_h; delayms(5); en_l;void write_data(uchar dat) /ifbusy(); rs_h; mcu2lcd_data=dat; delayms(5); en_h; delayms(5); 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); /设定显示的起始地址*/void init()lcd_dataout;lcd_cmdout; en_l; write_cmd(0x30); write_cmd(0x0c); write_cmd(0x01); void initina2(void) /LcD显示图片(扩展)初始化程序 write_cmd(0x36); /Extended Function Set RE=1: extended instruction delayms(1); /大于100uS的延时程序 write_cmd(0x36); /Extended Function Set:RE=1: extended instruction set delayms(1); /大于37uS的延时程序 write_cmd(0x3E); /EXFUNcTION(DL=8BITS,RE=1,G=1) delayms(1); /大于100uS的延时程序 write_cmd(0x01); /cLEAR ScREEN delayms(1); /大于100uS的延时程序 /*函数名称: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); /回到基本指令集 /*函数名称: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+); delayms(1); /*函数名称:Draw_TX功 能:显示一个16*16大小的图形参 数:Yaddr-Y地址 Xaddr-X地址 dp-指向图形数据存放地址的指针返回值 :无*/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;j16;j+) write_cmd(Yaddr+); /Y地址 write_cmd(Xaddr); /X地址 write_data(dpk+); write_data(dpk+); write_cmd(0x36); /打开绘图显示 / write_cmd(0x30); /回到基本指令集模式/*函数名称:DisplayGraphic功 能:在整个液晶屏幕上画图参 数:无返回值 :无*/void DisplayGraphic(const uchar *adder) int i,j;/*显示上半屏内容设置 for(i=0;i32;i+) / write_cmd(0x80 + i); /SET 垂直地址 VERTIcAL ADD write_cmd(0x80); /SET 水平地址 HORIZONTAL ADD for(j=0;j16;j+) write_data(*adder); adder+; /*显示下半屏内容设置 for(i=0;i32;i+) / write_cmd(0x80 + i); /SET 垂直地址 VERTIcAL ADD write_cmd(0x88); /SET 水平地址 HORIZONTAL ADD for(j=0;j16;j+) write_data(*adder); adder+; write_cmd(0x36); /打开绘图显示/*在显示时DDAM和GDRAM是同时显示的,也就是它们的显示结果是叠加在一起的 /SM12864液晶基本指令集控制命令测试/ /1.设定DDRAM地址命令 write_cmd(0x90); /设定DDRAM地址,因为此时DDRAM地址已经溢出 /2.显示状态命令 write_cmd(0x08); /整体显示关,游标关,游标位置关 write_cmd(0x0c); /整体显示开,游标关,游标位置关 write_cmd(0x0e); /整体显示开,游标开,游标位置关 write_cmd(0x0f); /整体显示开,游标开,游标位置开 /3.位址归位 write_cmd(0x02); /位址归位,游标回到原点 write_cmd(0x84); /将DDRAM地址设为0x88,游标在此闪烁 /4.点设定指令 /(以下四个命令是控制写入字符以后光标及整屏显示的移动) write_cmd(0x07); /光标右移整体显示左移 write_Data(0x20); /写入两个空格 write_Data(0x20); write_cmd(0x05); /光标左移整体显示右移 write_Data(0x20); /写入两个空格 write_Data(0x20); write_cmd(0x06); /光标右移整体显示不移动 write_Data(0x20); /写入两个空格 write_Data(0x20); write_cmd(0x04); /光标左移整体显示不移动 write_Data(0x20); /写入两个空格 write_Data(0x20); /5.游标和显示移位控制 /(以下四个命令无需写入显示数据,直接控制光标和整屏显示的移动) write_cmd(0x10); /光标左移 write_cmd(0x14); /光标右移 write_cmd(0x18); /整体显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论