ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:82.43KB ,
资源ID:26333770      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26333770.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(msp430的lcd12864显示画圆程序.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

msp430的lcd12864显示画圆程序.docx

1、msp430的lcd12864显示画圆程序基于 msp430g2553 的 Lcd12864的显示画圆程序注:只用将 msp430g2553.h改为其他 msp430 系列即可使用 包含 12864.h 和 main.c 两个文件12864.h /* / 12864 画图、打点/ 数据口方向设置为输入/ 数据口方向设置为输出typedef unsigned char uchar; typedef unsigned int uint;#define LCD_DataIn P1DIR=0x00#define LCD_DataOut P1DIR=0xff#define LCD2MCU_Data P1

2、IN#define MCU2LCD_Data P1OUT/*函数名称: 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-控制命令返回值 :无

3、*/ 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;Delay_1ms();LCD_EN_L; /* 函数名称: Write_Data功 能:向液晶中写显示数据参 数: dat-显示数据返回值 :无*/ void Write_Data(uch

4、ar 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;Delay_1ms();LCD_EN_L;/*/ 读数据*uchar read_data()uint readvalue;LCD_DataOut;MCU2LCD_Data |=0xff;LCD_RS_H;LCD_RW_H

5、;LCD_DataIn;LCD_EN_L;LCD_EN_H; readvalue=LCD2MCU_Data;Delay_1ms();LCD_EN_L;return readvalue;void LCD_SetXY(uchar X, uchar Y) switch(Y) case 1: Write_Cmd(0x7F + X);break;case 2: Write_Cmd(0x8F + X);break;case 3: Write_Cmd(0x87 + X);break;case 4: Write_Cmd(0x97 + X);break; default:break;在指定的位置显示某个字符 *

6、/void disp_char(uchar X, uchar Y, uchar wdata) LCD_SetXY(X, Y);Write_Data(wdata);/* 函数功能:在指定的位置显示字符串 */ void disp_str(uchar X, uchar Y, uchar *Str)uchar temp;LCD_SetXY(X, Y);temp = *Str;while(temp != 0)Write_Data(temp);temp = *(+Str);/*/ 打点函数/ 参数: color=1,该点填充 1;color=0,该点填充白色 0; void GUI_Point(unsi

7、gned char x,unsigned char y,unsigned char color)unsigned char x_Dyte,x_byte; /定义列地址的字节位,及在字节中的哪 1 位unsigned char y_Dyte,y_byte; /定义为上下两个屏 (取值为 0, 1),行地址 (取值 为 031)unsigned char GDRAM_hbit,GDRAM_lbit;Write_Cmd(0x36); /扩展指令命令/*X,Y 坐标互换,即普通的 X,Y 坐标*/ x_Dyte=x/16; / 计算在 16 个字节中的哪一个 x_byte=x&0x0f; / 计算在该

8、字节中的哪一位 y_Dyte=y/32; /0 为上半屏, 1 为下半屏 y_byte=y&0x1f; / 计算在 031 当中的哪一行 Write_Cmd(0x80+y_byte); /设定行地址 (y 坐标 ),即是垂直地址 Write_Cmd(0x80+x_Dyte+8*y_Dyte); /设定列地址 (x 坐标 ),并通过 8*y_Dyte 选定上下屏,即是水平地址read_data(); /预读取数据GDRAM_hbit=read_data(); /读取当前显示高 8 位数据GDRAM_lbit=read_data(); /读取当前显示低 8 位数据 Delay_Nms(1);Wri

9、te_Cmd(0x80+y_byte); /设定行地址 (y 坐标 )Write_Cmd(0x80+x_Dyte+8*y_Dyte); /设定列地址 (x 坐标 ),并通过 8*y_Dyte 选定上下屏Delay_Nms(1);if(x_byte8) / 判断其在高 8 位,还是在低 8 位 if(color=1)Write_Data(GDRAM_hbit|(0x01(7-x_byte); /置位 GDRAM 区高 8 位数据中 相应的点elseWrite_Data(GDRAM_hbit&(0x01(7-x_byte); /清除 GDRAM 区高 8 位数 据中相应的点Write_Data(G

10、DRAM_lbit); /显示 GDRAM 区低 8 位数据elseWrite_Data(GDRAM_hbit); / 写高 8 位数据 if(color=1)Write_Data(GDRAM_lbit|(0x01(15-x_byte); /置位 GDRAM 区高 8 位数据 中相应的点elseWrite_Data(GDRAM_lbit&(0x01(15-x_byte);/清除 GDRAM区高 8 位数据 中相应的点Write_Cmd(0x30); /恢复到基本指令集/*/ 填充 GDRAM 数据:/ 参数: dat 为填充的数据 /* void GUI_Fill_GDRAM(unsigned

11、 char dat)uchar i,j,k;uchar bGDRAMAddrX = 0x80; /GDRAM水 平地址uchar bGDRAMAddrY = 0x80; /GDRAM垂 直地址 for(i=0;i2;i+) for(j=0;j32;j+) for(k=0;k Y1 )Temp = Y1 ;Y1 = Y0 ;Y0 = Temp ;for(; Y0 0 )incx = 1;else if( delta_x = 0 )incx = 0; elseincx = -1 ;if( delta_y 0 )incy = 1 ;else if(delta_y = 0 )incy = 0 ; el

12、seincy = -1 ;delta_x = incx * delta_x ;delta_y = incy * delta_y ;if( delta_x delta_y )distance = delta_x ;StartX+=incx;StartY+=incy;elsedistance = delta_y;StartX+=incx;StartY+=incy;GUI_Point( StartX, StartY, Color );while(distance!=0); /* / sin 函数* void fsin2()float x,y;uchar x1,y1;for(x=0;x(4*3.141

13、59);x+=0.1)y=1*sin(3*x);x1=10*x;y1=31-(10*y+0.5); / 对 y 值进行四舍五入GUI_Point(x1,y1,1);/*函数名称: 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(0x

14、01);/ 清除显示Delay_Nms(10);Write_Cmd(0x06);/ 游标右移Delay_1ms();Write_Cmd(0x80);/ 设定显示的起始地址Main.c #include #include #include #include 12864.h/*/ 画圆*/void GUI_Circle(uchar x0,uchar y0,uchar r,uchar color)char a,b;char di;31if(r31 |r=0) return; / 参数过滤,次液晶显示的最大圆半径为 a=0;b=r;di=3-2*r; / 判断下个点位置的标志while(a=b)GUI

15、_Point(x0-b,y0-a,color); /3GUI_Point(x0+b,y0-a,color); /0GUI_Point(x0-a,y0+b,color); /1GUI_Point(x0-b,y0-a,color); /7GUI_Point(x0-a,y0-b,color); /2GUI_Point(x0+b,y0+a,color); /4/GUI_Point(x0+a,y0-b,color); /5GUI_Point(x0+a,y0+b,color); /6/ GUI_Point(x0-b,y0+a,color);a+;/* 使用 Bresenham 算法画圆 */if(di0)

16、di +=4*a+6;elsedi +=10+4*(a-b);b-;GUI_Point(x0+a,y0+b,color);/ 主函数void main( void )uint i,j;uchar op=Its the LCD! ;WDTCTL = WDTPW + WDTHOLD; / 关狗Ini_Lcd(); / 初始化液晶/Write_Cmd(0x80);/ 写第一行的显示地址/for(i = 0; i 10; i+)/Write_Data(0x30 + i); / 显示 0x300x3f 对应的字符Write_Cmd(0x90);/ 写第二行的显示地址for(i = 0; i 16; i+

17、)Write_Data(0x60 + i);/ 显示 0x600x6f 对应的字符/Write_Cmd(0x88);/ 写第三行的显示地址/for(i = 0; i 16; i+)/Write_Data(tishii);/Write_Cmd(0x98);/ 写第四行的显示地址for(i = 0; i 0; i-) / 延时一会for(j =200; j 0; j-) _NOP();Write_Cmd(0x01); /clear Delay_Nms(10);GUI_Fill_GDRAM(0x00); Delay_Nms(10);fsin2(); / 画 sin 函数for(i = 1000; i 0; i-) / 延时一会for(j =400; j 0; j-) _NOP();Write_Cmd(0x01); /clear Delay_Nms(10);GUI_Fill_GDRAM(0x00); Delay_Nms(5);GUI_Circle(33,31,20,1); / 画圆LPM0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1