[经验]
【我与TI的结缘】+Launchpad学习之路
在11年左右接触到TI家的单片机,一切都源于论坛的TI活动,很幸运的获得了launchpad开发板,由此走入了TI的大家庭,由于没有利用其做过实际产品,也没体会到其强大之处,不过在学习过程中,还是感受到了TI产品的很多特质。我们来看看launchpad的实物图片
虽然小巧,不过还是很精致。
由于有段时间对lcd的打点画线比较感兴趣,就采用了launchpad作为主控模块,来玩了玩这个。。
画点方法在之前的帖子里已经介绍过一点点,主要还是采用了ZLG的程序模版
- /*-------------------------------------------------------------------
- 增加画点子程序
- -------------------------------------------------------------------*/
- void DrawPoint(unsigned char X,unsigned char Y,unsigned char Color)
- {
- unsigned char Row,Tier,Tier_bit;
- unsigned char ReadOldH=0x00;
- unsigned char ReadOldL=0x00 ;
- LCD_Com(0x34);
- LCD_Com(0x36);
- Tier = X >> 4 ; //算出它在哪一个字节(地址)// x/16 // 右移4位,即除16并取整,得对应要写入12864的横坐标DX
- Tier_bit = X&0x0f ;//
- if(Y<32)
- {
- Row=Y ;
- }
- else // //y坐标大于31,要上屏显示,DX也相应加8
- {
- Row=Y-32 ;
- Tier+=8 ;
- }
-
- LCD_Com(0x80+Row);
- LCD_Com(0x80+Tier);
- ReadByte();
-
- ReadOldH=ReadByte();
- ReadOldL=ReadByte();
- LCD_Com(0x80+Row);
- LCD_Com(0x80+Tier);
- if(Tier_bit<8) //x在DX中处于低8位(按预想坐标看),但在LCD内坐标系中属于高8位,对应ReadOldH
- {
- ReadOldH|= (0x80>> Tier_bit); //写高字节。因为坐标是从左向右的//而GDRAM高位在左,底位在
- }
- else
- {
- ReadOldL |= (0x80 >>(Tier_bit -8));
- }
-
- LCD_Dat(ReadOldH);
- LCD_Dat(ReadOldL);
-
- LCD_Com(0x30);
- }
显示
画线
在画点出来之后,画线就简单了
画任意直线采用了Bresenham画线算法,这个网上资料比较多简单的步骤
1.画起点(x1,y1).
2.准备画下个点。x坐标增1,判断如果达到终点,则完成。否则,由图中可知,下个要画的点要么为当前点的右邻接点,要么是当前点的右上邻接点.
2.1.如果线段ax+by+c=0与x=x1+1的交点的y坐标大于M点的y坐标的话,下个点为U(x1+1,y1+1)
2.2.否则,下个点为B(x1+1,y1)
3.画点(U或者B).
4.跳回第2步.
5.结束.
画线画出来之后的图像:
本帖最后由 常见泽1 于 2015-1-18 15:42 编辑
楼主玩儿的开心,俺看的也痛快.