请问TOBIT模型用那个常用的软件开发模型好

您好,欢迎来到捷配电子市场网
您现在的位置: &
型号/规格:HS12864品牌/商标:汉NPDF资料:
3000多家会员为您找货报价,SO EASY!
类型:生产企业
联系人:张荇富
地址:广东深圳西丽街道阳光社区新峰工业园2栋5楼
(17)N (17)
型 号:HS12864
LCD类型:COB
点 阵 数:128×64
外形尺寸:93mm×70mm(长宽)
视域尺寸:72*40mm
点 距 离:0.02mm×0.02mm
点 大 小:0.16mm×0.16mm
控 制 器:ST7920/KS0108
玻璃类型:FSTN半透
显示内容:128(例)×64(行)
背光类型:白光(白底黑字,蓝底白字),黄绿光(黄绿底黑字)
数据传输:串、并口兼容
工作电压:VDD=3V可用软件调节对比度
1:图形点阵LCM现有122×32、128×32、128×64、160×32、160×80、160×128、192×64、240×64,240×128、320×240等。
3:字符点阵现有08×02、16×01、16×02、16×04、20×02、20×04、40×02等
类型:生产企业
联系人:张荇富
地址:广东深圳西丽街道阳光社区新峰工业园2栋5楼
你可能感兴趣的产品
电子元器件产品索引: &B&&&&F&&&&J&&&&N&&&&R&&&&V&&&&Z&&&&3&&&&7&&相关软件 /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /英文/ /中文/顶好评:50%踩坏评:50%请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
700KB/中文/2.4
27.3M/多国语言[中文]/6.9
1.21G/英文/7.1
597.0M/中文/6.1
157.2M/中文/4.0
27.6M/中文/5.6
109.4M/中文/6.0
12864液晶图片取模软件说明:1。打开功能是专门用于对C语言文件自动提取显示所需要的汉字,进行点阵码数据转换的,在您的C语言程序中,有一点需要特别留意:您的注解中请不要使用双引号,否则会引起提取错误。软件包中的文件ee.c作为一个简单例程供提取测试用。2。提取以后的点阵码可以随意修改点阵数据,使用鼠标的左键为加一点,右键为擦除一点。修改完毕请按旁边的确认键将数据记录到点阵码中,否则您的修改将自动放弃。3。点阵码可以随意平移,请谨慎使用。平移之前请查看一遍所有的字符点阵图,平移有可能会丢失边界点,移出了边界的点阵将被丢弃,不可恢复。平移前请确认是否有必要进行全体字符一起移动。4。用户自定义特殊字符的建立,首先选定点阵数据,在下面的汉字输入窗口输入几个您不使用的汉字,确认。然后生成了这些汉字的点阵码,再将他们清空(使用平移按钮中间的那块抹布),就可以用鼠标描绘你的图案了,最后别忘了打“确认”键。5。ASCII字符可以自动提取0x20~0x7f的全部,最后一个0x7f一般都没有用,可以手工将它删除,也可以利用它做一个简单的特殊字符。汉字库中也包含有ascii字符,但是经查对与这三个ascii库基本一样,所以就不再重复。6。保存文件:C语言格式的默认为.h类型,汇编格式的默认为.inc类型,只要将他们加入到您的工程中就可以了。7。新增加了自动添加下划线功能。这项功能在做点阵显示和修改的时候并不出现下划线,设置了以后仅仅在最后的输出文件中出现,以免干扰编辑修改。8。扩充对windows汉字的直接提取,从16~96范围内可以任意设定选取。主要用于制作界面的开机封面少量标识性汉字。9。扩充了对ascii小字库5x8以及大字库20*40/24*48的支持,毕竟字库文件比较工整。-----------------更新内容10。增加了字模输出格式的选择,可以将汉字码与点阵数据分开列表;11。增加了对单色.bmp文件的支持,可以从原有的bitmap文件上截取一部分作为点阵码数据输出,点阵图案可以随意修改。12。bitmap用户自建方案,可以先设定好图形的宽度和高度,然后用打开图形文件窗口下选择取消,自动生成一块空白的图板。13。图形区域显示的图形点阵可以用调节拉条进行放大或缩小。
安卓官方手机版
IOS官方手机版
12864液晶图片取模软件 绿色版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。51单片机综合学习系统之 12864点阵型液晶显示篇 《电子制作》2008年2月
51单片机综合学习系统之
12864点阵型液晶显示篇
《电子制作》2008年2月 站长原创,如需引用请注明出处
&&&&大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了1602字符型液晶显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习12864点阵型液晶显示屏的基本原理与使用方法。
点阵LCD的显示原理
&&&&在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。
&&&&那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:
图1 “A”字模图
&&&&而中文的“你”在字模中的记载却如图2所示:
图2 “你”字模图
12864点阵型LCD简介
&&&&12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
管脚功能描述
液晶显示器驱动电压
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
H:选择芯片(右半屏)信号
H:选择芯片(左半屏)信号
复位信号,低电平复位
LCD驱动负电压
LED背光板电源
LED背光板电源
表1:12864LCD的引脚说明
&&&&在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下:
1. 指令寄存器(IR)
&&&&IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
&&&&DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:BF
&&&&BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。
&&&&利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
&&&&此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。
&&&&DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。
5.XY地址计数器
&&&&XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
&&&&X地址计数器是没有记数功能的,只能用指令设置。
&&&&Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6.显示数据RAM(DDRAM)
&&&&DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。
7.Z地址计数器
&&&&Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
&&&&Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
12864LCD的指令系统及时序
&&&&该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表2所示:
显示起始行设置
列地址设置
表2:12864LCD指令表
各功能指令分别介绍如下。
显示开/关指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
当DB0=1时,LCD显示RAM中的内容;DB0=0时,关闭显示。
2、显示起始行(ROW)设置指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
11显示起始行(0~63)
该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。
3、页(PAGE)设置指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
10111页号(0~7)
显示RAM共64行,分8页,每页8行。
4、列地址(Y Address)设置指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
01显示列地址(0~63)
设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以
用读、写指令读出该单元中的内容或向该单元写进一个字节数据。
5、读状态指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
BUSY0ON/OFFREST0000
该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:
BUSY:1-内部在工作0-正常状态
ON/OFF:1-显示关闭0-显示打开
RESET:1-复位状态0-正常状态
在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。
在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。
6、写数据指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
读数据指令
DB7 DB6 DB5 DB4 DB3DB2DB1 DB0
读显示数据
&&&&读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。
12864点阵型LCD软硬件设计实例
&&&&通过以上学习,现在就来实际应用12864LCD的软硬件设计。本实例将在LCD上显示如图3所示内容:
图3 模拟显示效果图
&&&&在调试前先将显示切换开关切换到LCD显示状态。
图4 128*64LCD实验演示图
硬件原理图
图5 硬件原理图
程序流程图
图6 软件流程图
&&&&在编写软件代码之前必须要先掌握汉字取模的方法。要得到上表中的文字,我们可以借助取模软件来完成。目前点阵LCD的取模软件有很多,我们以本开发板配套的取模软件为例来介绍一下汉字的取模方法。
&&&&打开取模软件出现如下显示界面:
&&&&在文字输入区中输入文字,我们以输入一个欢迎的“欢”字为例,了解其取模过程。在文字输入区中输入“欢”后按CTRL+ENTER组合键后就看到“欢”字已经在模拟显示区显示出来了
&&&&在“取模方式”中选择“C51格式”就可以在“点阵生成区”得到你要的汉字“欢”的显示代码。
&&&&经过以上步骤后一个汉字就取模成功了,在程序中只要调用这段代码就可显示出汉字“欢”了,其它汉字也用同样的方法。取完要显示的全部汉字代码后我们就可以编程了。
以上部分内容转载于网上,如有涉及到版权问题,请即通知本人删除 浙ICP备号
联系地址:浙江省杭州市西湖科技园西园七路3号4层
邮政编码:310011&Email:
电话总机:0 &&产品咨询:转分机1 &&技术支持:转分机2 &&传真:转分机3 &&手机:
技术QQ熊工:
技术QQ徐工:
杭州晶控电子有限公司 版权所有
COPYRIGHT2003――2011 HANGZHOU KinCony ELECTRONICS CO.,LTD All
rights reserved查看: 1863|回复: 10
LCD12864的数据手册的指令说明里有些东西看不懂~
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
d7db9e16be_616.jpg (0 Bytes, 下载次数: 0)
22:54 上传
大家看 图中画圆圈的字母是什么意思啊?麻烦了~
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
主题帖子精华
金钱106259
在线时间678 小时
看详细的介绍吧
S/C,应该是set/clear
R/L,是RIGHT/LEFT的意思吧。
其他的不知道了,看数据手册吧。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
唉&&这就是数据手册上截图的呢&啊
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
主题帖子精华
金钱106259
在线时间678 小时
那看看后文。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
后文也没有呢
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
主题帖子精华
在线时间21 小时
手册上有的吧&&&而且你截图中后面不是有中文注释的吗
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
回复【6楼】xouou_53320:
---------------------------------
没有的,中文注释没说那些字母代表什么意思呢
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
主题帖子精华
在线时间21 小时
你到网上多下载几个12864资料
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
回复【8楼】xouou_53320:
---------------------------------
嗯&明白了&&看12864模块的资料不行!要看它的驱动的资料,如:ST7920C17的资料
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
主题帖子精华
在线时间31 小时
X是任意电平,lz数电没学好
简单是多么的快乐,而快乐就因你而简单!微芯动力LTKKS
主题帖子精华
高级会员, 积分 781, 距离下一级还需 219 积分
在线时间0 小时
回复【10楼】LTKKS:
---------------------------------
不小心把X也圈上了,现在都明白是啥意思了
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205
学习嵌入式的同学不要错过啊!
Powered by【TIVA C launchpad 学习笔记一】 LCD12864显示,可显示ASCII,中文,描点绘图 - Linchpin的日志 -
电子工程世界-论坛
【TIVA C launchpad 学习笔记一】 LCD12864显示,可显示ASCII,中文,描点绘图
已有 2896 次阅读 10:32
|个人分类:
/*******************************************
开发坏境:CCSv5
程序功能:LCD12864显示,可描点绘图,显示汉字,ASCII
程序说明:并行模式,PA2,PA3,PA4分别对应RS,RW,E,PB0-PB7对应数据口
& && & PSB接高电平
编程者:Linchpin
********************************************/
#include &stdint.h&
#include &stdbool.h&
#include &math.h&
#include &inc/hw_types.h&
#include &inc/hw_memmap.h&
#include &driverlib/fpu.h&
#include &driverlib/sysctl.h&
#include &driverlib/rom.h&
#include &driverlib/pin_map.h&
#include &grlib/grlib.h&
#include &driverlib/gpio.h&
#include &driverlib/adc.h&
#include &inc/hw_gpio.h&
#define uchar unsigned char
#define uint unsigned int
void delay_Nms(uint n);
uchar LCD12864_Busy(void);
void Ini_Lcd(void);
void write_com(uchar com);
void write_dat(uchar dat);
uchar LCD12864_ReadData(void);
void LCD12864_ClearScreen(void);
void drawPoint(unsigned char x,unsigned char y,unsigned char color);
void drawRowLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char color);
void drawCollumLine(unsigned char x0,unsigned char y0,unsigned char y1,unsigned char color);
void drawLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color);
void drawsin();
void drawxy_0(void);
uchar const disps[]={&波的频率为:&};
void main(void)
& & & & uchar i,j;
& & SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL |
& & SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);//设置系统时钟为50MHz (400/2/4=50)
& & Ini_Lcd();& && && && && && && && && &//初始化液晶
& & LCD12864_ClearScreen();
& & for(i=0;i&127;i++)
& & & & & & for(j=0;j&63;j++)
& & {drawPoint(i,j,1);}& &//满屏描点
& & LCD12864_ClearScreen();
& & drawsin();& && && &&&//画sin函数
& & LCD12864_ClearScreen();
& & write_com(0x80);
& & & & for(aa=0;aa&12;aa++)
& & & & & & & &&&write_dat(disps[aa]);//显示文字
& & while(1);
/*******************************************
函数名称:delay_Nms
功& & 能:延时N个ms的时间
参& & 数:无
返回值&&:无
********************************************/
void delay_Nms(uint n)
& & uint i = 0;
& & for(i =i & 0;i--)
& & & & & & SysCtlDelay(SysCtlClockGet() / 3000);
/******************************************************************************
* 函 数 名&&: LCD12864_Busy
* 函数功能: 检测LCD是否忙
* 输& & 入& &: 无
* 输& & 出& &: 1或01表示不忙0表示忙
*******************************************************************************/
uchar LCD12864_Busy(void)
& & uchar i = 0;
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_3 );//RS=0,RW=1
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, GPIO_PIN_4);& &//E=1
& & delay_Nms(1);
& & while((GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7) & 0x80) == 0x80) //检测读取到的值
& && &&&i++;
& && &&&if(i & 100)
& && && && &GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
& && && && &return 0;& & //超过等待时间返回0表示失败
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
& & return 1;
/*******************************************
函数名称:Ini_Lcd
功& & 能:初始化液晶模块
参& & 数:无
返回值&&:无
********************************************/
void Ini_Lcd(void)
& & & & SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//使能GPIOA
& & & & GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);//PA2,3,4设为输出
& & & & SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能GPIOB
& & GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);//PB设为输出
& & delay_Nms(15);& && && && && && && &//延时等待液晶完成复位
& & & & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
& & & & delay_Nms(5);
& & & & write_com(0x30);&&/*功能设置:一次送8位数据,基本指令集*/
& & & & delay_Nms(1);
& & write_com(0x08);&&/*DDRAM地址归位*/
& & & & delay_Nms(1);
& & & & write_com(0x0c);&&/*显示设定:开显示,不显示光标,不做当前显示位反白闪动*/
& & & & delay_Nms(1);
& & & & write_com(0x01);&&/*清屏,将DDRAM的位址计数器调整为“00H”*/
& & & & delay_Nms(1);
& & & & write_com(0x06);&&/*功能设置,点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
& & & & delay_Nms(5);
/**************************************************
*名称:void write_com(uchar com)
*功能:向1602写指令
*入口参数:com
*出口参数:无
**************************************************/
void write_com(uchar com)
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,~GPIO_PIN_2);
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,~GPIO_PIN_3);//RS=0,RW=0
& & & & GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, com);& & //PB=com
& & & & delay_Nms(1);
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, GPIO_PIN_4);& &//E=1
& & delay_Nms(1);
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
/**************************************************
*名称:void write_dat(uchar dat)
*功能:向1602写数据
*入口参数:dat
*出口参数:无
**************************************************/
void write_dat(uchar dat)
& & & & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_2 );//RS=1,RW=0
& & & & GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& & & & & & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, dat);&&//PB=dat
& & & & delay_Nms(1);
& & & & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4,GPIO_PIN_4);& &//E=1
& & & & delay_Nms(1);
& & & & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
/******************************************************************************
* 函 数 名& &: LCD12864_ReadData
* 函数功能 : 读取数据
* 输& & 入& &&&: 无
* 输& & 出: 读取到的8位数据
*******************************************************************************/
uchar LCD12864_ReadData(void)
& & uchar readV
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,GPIO_PIN_2);
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,GPIO_PIN_3);//RS=1,RW=1
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
& & delay_Nms(1);
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, GPIO_PIN_4);& &//E=1
& & delay_Nms(1);
& & GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& && & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);//PB设为输出
& & readValue =GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
& & GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|
& && & & & & & & & & & & & GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);//PB设为输出
& & GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4, ~GPIO_PIN_4);& &//E=0
& & return readV
/******************************************************************************
* 函 数 名& && &: LCD12864_ClearScreen
* 函数功能& & : 在画图模式下LCD12864的01H命令不能清屏所以要自己写一个清 屏函数
* 输& & 入& && & : 无
* 输& & 出& && & : 无
*******************************************************************************/
void LCD12864_ClearScreen(void)
& & uchar i,j;
& & write_com(0x34);& &//开启拓展指令集
& & for(i=0;i&32;i++)& &&&//因为LCD有纵坐标32格所以写三十二次
& & & & & & write_com(0x80+i);& & //先写入纵坐标Y的值
& && &&&write_com(0x80);& & //再写入横坐标X的值
& && &&&for(j=0;j&32;j++)& & //横坐标有16位每位写入两个字节的的数据也
& && &&&{& && &&&//就写入32次以为当写入两个字节之后横坐标会自
& && && && & write_dat(0x00);& &//动加1所以就不用再次写入地址了。
& & write_com(0x36);&&//0x36扩展指令里面打开绘图显示
& & write_com(0x30);&&//恢复基本指令集
/***********************************************************
函数名:&&drawPoint
函数说明:画点
传入参数:打点位置(x0,y0);color=1,点亮;color=0,擦除
传出参数:无
返回值:&&无
**********************************************************/
void drawPoint(unsigned char x,unsigned char y,unsigned char color)
& & & & unsigned char row,collum,
& & & & unsigned char tempH,tempL;
& & & & write_com(0x34);
& & & & write_com(0x36);
& & & & collum=x&&4;
& & & & cbite=x&0x0f;
& & & & if(y&32)
& & & & {row=y;}
& & & & else
& & & & & & & & row=y-32;
& & & & & & & & collum+=8;
& & & & write_com(0x80+row);
& & & & write_com(0x80+collum);
& & & & LCD12864_ReadData();
& & & & tempH=LCD12864_ReadData();
& & & & tempL=LCD12864_ReadData();
& & & & write_com(0x80+row);
& & & & write_com(0x80+collum);
& & & & if (color)
& & & && &&&if(cbite&8)
& & & && &&&{
& & & & & & & & tempH|=(1&&(7-cbite));
& & & & & & & & //tempL=(1&&(7-cbite));
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & //tempH=(1&&(15-cbite));
& & & & & & & & & & & & tempL|=(1&&(15-cbite));
& & & & & & & & }
& & & & else
& & & & & & & & if(cbite&8)
& & & & & & & & {
& & & & & & & & & & & & tempH&=~(1&&(7-cbite));
& & & & & & & & & & & & //tempL=(1&&(7-cbite));
& & & & & & & & }
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & //tempH=(1&&(15-cbite));
& & & & & & & & & & & & tempL&=~(1&&(15-cbite));
& & & & & & & & }
& & & & write_dat(tempH);
& & & & write_dat(tempL);
& & & & write_com(0x30);
/***********************************************************
函数名:&&drawRowLine
函数说明:画水平线
传入参数:(x0,y0),水平线的起点;(x1,y0)水平线的终点,color=1,点亮;color=0,擦除
传出参数:无
返回值:&&无
**********************************************************/
void drawRowLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char color)
& & & & unsigned char&&
& & & & if(x0&x1) & & & & & & & & & & & & & & & & // 对x0、x1大小进行排列,以便画图
& & & & & & & & temp = x1;
& & & & & & & & x1 = x0;
& & & & & & & & x0 =
& & & & do
& & & & & & & & drawPoint(x0, y0, color);& & & & // 逐点显示,描出垂直线
& & & & & & & & x0++;
& & & & while(x1&=x0);
/***********************************************************
函数名:&&drawCollumLine
函数说明:画竖直线
传入参数:(x0,y0),竖直线的起点;(x1,y0)竖直线的终点;color=1,点亮;color=0,擦除
传出参数:无
返回值:&&无
************************************************************/
void drawCollumLine(unsigned char x0,unsigned char y0,unsigned char y1,unsigned char color)
& & & & if(y0&y1)
& & & & & & & & temp=y0;
& & & & & & & & y0=y1;
& & & & & & & & y1=
& & & & while (y0&=y1)
& & & & & & & & drawPoint(x0,y0,color);
& & & & & & & & y0++;
/*************************************************************
函数名:&&drawLine
函数说明:使用Bresenham法,画任意两点间的直线
传入参数:(x0,y0),竖直线的起点;(x1,y1)竖直线的终点 color=1,点亮;color=0,擦除
传出参数:无
返回值:&&无
************************************************************/
void drawLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
& & & & int& && & & & & & & & // 直线x轴差值变量
& & & & int& && && &&&// 直线y轴差值变量
& & & & int& &dx_& & & & // x轴增长方向,为-1时减值方向,为1时增值方向
& & & & int& &dy_& & & & // y轴增长方向,为-1时减值方向,为1时增值方向
& & & & int& &dx_2;& & & & & & & & // dx*2值变量,用于加快运算速度
& & & & int& &dy_2;& & & & & & & & // dy*2值变量,用于加快运算速度
& & & & int& && & & & & & & & // 决策变量
& & & & dx = x1-x0;& & & & & & & & // 求取两点之间的差值
& & & & dy = y1-y0;
& & & & if(dx&0)& & & & & & & & dx_sym=-1;
& & & & else
& & & & & & & & if(dx&0)& & & & dx_sym=1;
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & drawCollumLine(x0,y0,y1,color);
& & & & & & & & & & & &
& & & & & & & & }
& & & & if(dy&0)& & & & & & & & & & & & dy_sym=1;
& & & & else
& & & & & & & & if(dy&0)& & & & dy_sym=-1;
& & & & & & & & else
& & & & & & & & {
& & & & & & & & & & & & drawRowLine(x0,y0,x1,color);
& & & & & & & & & & & &
& & & & & & & & }
& & & & dx=dx_sym*
& & & & dy=dy_sym*
& & & & dx_2=dx*2;
& & & & dy_2=dy*2;
& & & & if(dx&=dy)
& & & & & & & & di=dy_2-
& & & & & & & & while(x0!=x1)
& & & & & & & & {
& & & & & & & & & & & & drawPoint(x0,y0,color);
& & & & & & & & & & & & x0+=dx_
& & & & & & & & & & & & if(di&0)& & & & di+=dy_2;
& & & & & & & & & & & & else& & & & {di+=dy_2-dx_2;y0+=dy_}
& & & & & & & & }
& & & & & & & & drawPoint(x0,y0,color);
& & & & else
& & & & & & & & di=dx_2-
& & & & & & & & while(y0!=y1)
& & & & & & & & {
& & & & & & & & & & & & drawPoint(x0,y0,color);
& & & & & & & & & & & & y0+=dy_
& & & & & & & & & & & & if(di&0)& & & & di+=dx_2;
& & & & & & & & & & & & else& & & & & & & & {di+=dx_2-dy_2;x0+=dx_}
& & & & & & & & }
& & & & & & & & drawPoint(x0,y0,color);
/*************************************************************
函数名:&&drawsin
函数说明:画sinx函数
传入参数:无
传出参数:无
************************************************************/
void drawsin()
& & & && &&&
& & & && &&&uchar x0,y0;
& & & && &&&
& & & && &&&drawxy_0();
& & & && &&&for(i=1;i&61;i++)
& & & && &&&{
& & & && &&&x0=64+i;
& & & && &&&y=31*sin(i*3.);
& & & && &&&if((y-(int)y)&=0.5) y=(int)y+1;
& & & && &&&else y=(int)y;
& & & && &&&y0=32-y;
& & & && &&&drawPoint(x0,y0,1);
& & & && &&&}
& & & && &&&for(i=1;i&61;i++)
& & & && &&&{
& & & && && && &x0=64-i;
& & & && && && &y=31*sin(i*3.);
& & & && && && &if((y-(int)y)&=0.5) y=(int)y+1;
& & & && && && &else y=(int)y;
& & & && && && &y0=32+y;
& & & && && && &drawPoint(x0,y0,1);
& & & && &&&}
/*************************************************************
函数名:&&drawxy_0
函数说明:画坐标轴,包括两条直线和箭头
传入参数:无
传出参数:无
************************************************************/
void drawxy_0(void)
& & & & drawRowLine(0,32,127,1);
& & drawCollumLine(64,0,63,1);
& & drawPoint(63,0,1);
& & & & drawPoint(62,1,1);
& & & & drawPoint(61,2,1);
& & & & drawPoint(65,0,1);
& & & & drawPoint(66,1,1);
& & & & drawPoint(67,2,1);
& & & & drawPoint(127,31,1);
& & & & drawPoint(126,30,1);
& & & & drawPoint(125,29,1);
& & & & drawPoint(127,33,1);
& & & & drawPoint(126,34,1);
& & & & drawPoint(125,35,1);
作者的其他最新日志
评论 ( 个评论)
EEWORLD 官方微信
Powered by

我要回帖

更多关于 作战舰模型用什么软件 的文章

 

随机推荐