stm32 驱动 TFT LCD
时间:11-26
来源:互联网
点击:
752 | x++; |
753 | } |
754 | x=x0; |
755 | y++; |
756 | } |
757 | }else{//叠加方式 |
758 | for(pos=0;pos |
759 | { |
760 | if(size==12) |
761 | temp=asc2_1206[num][pos];//调用1206字体 |
762 | else |
763 | temp=asc2_1608[num][pos];//调用1608字体 |
764 |
765 | for(t=0;t |
766 | { |
767 | if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点 |
768 | temp>>=1; |
769 | } |
770 | } |
771 | } |
772 | POINT_COLOR=colortemp; |
773 |
774 | #else |
775 | #define MAX_CHAR_POSX 232 |
776 | #define MAX_CHAR_POSY 304 |
777 |
778 | u8 temp; |
779 | u8 pos,t; |
780 |
781 | if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return; |
782 | //设置窗口 |
783 |
784 | LCD_WriteReg(R80,x);//水平方向GRAM起始地址 |
785 | LCD_WriteReg(R81,x+(size/2-1));//水平方向GRAM结束地址 |
786 | LCD_WriteReg(R82,y);//垂直方向GRAM起始地址 |
787 | LCD_WriteReg(R83,y+size-1);//垂直方向GRAM结束地址 |
788 | LCD_SetCursor(x,y);//设置光标位置 |
789 | LCD_WriteRAM_Prepare();//开始写入GRAM |
790 | num=num- ;//得到偏移后的值 |
791 | if(!mode)//非叠加方式 |
792 | { |
793 | for(pos=0;pos |
794 | { |
795 | if(size==12) |
796 | temp=asc2_1206[num][pos];//调用1206字体 |
797 | else |
798 | temp=asc2_1608[num][pos];//调用1608字体 |
799 |
800 | for(t=0;t |
801 | { |
802 | if(temp&0x01){ |
803 | LCD_WR_DATA(POINT_COLOR); |
804 | }else{ |
805 | LCD_WR_DATA(BACK_COLOR); |
806 | } |
807 |
808 | temp>>=1; |
809 | } |
810 | } |
811 | }else{//叠加方式 |
812 |
813 | for(pos=0;pos |
814 | { |
815 | if(size==12) |
816 | temp=asc2_1206[num][pos];//调用1206字体 |
817 | else |
818 | temp=asc2_1608[num][pos];//调用1608字体 |
819 | for(t=0;t |
820 | { |
821 | if(temp&0x01) |
822 | LCD_DrawPoint(x+t,y+pos);//画一个点 |
823 | temp>>=1; |
824 | } |
825 | } |
826 | } |
827 | //恢复窗体大小 |
828 | LCD_WriteReg(R80, 0x0000);//水平方向GRAM起始地址 |
829 | LCD_WriteReg(R81, (LCD_WIDTH-1));//水平方向GRAM结束地址 |
830 | LCD_WriteReg(R82, 0x0000);//垂直方向GRAM起始地址 |
831 | LCD_WriteReg(R83, (LCD_HEIGHT-1));//垂直方向GRAM结束地址 |
832 |
833 | #endif |
834 |
835 | } |
836 |
837 | //m^n函数 |
838 | u32 mypow(u8 m,u8 n) |
839 | { |
840 | u32 result=1; |
841 | while(n--)result*=m; |
842 | returnresult; |
843 | } |
844 |
845 | //显示数字 |
846 | //x,y :起点坐标 |
847 | //len :数字的位数 |
848 | //size:字体大小 |
849 | //color:颜色 |
850 | //num:数值(0~4294967295); |
851 | voidLCD_ShowNum(u8 x,u16 y,u32 num,u8 len,u8 size) |
852 | { |
853 | u8 t,temp; |
854 | u8 enshow=0; |
855 | for(t=0;t |
856 | { |
857 | temp=(num/mypow(10,len-t-1))%10; |
858 | if(enshow==0&&t<(len-1)) |
859 | { |
860 | if(temp==0) |
861 | { |
862 | LCD_ShowChar(x+(size/2)*t,y, ,size,0); |
863 | continue; |
864 | }else{ |
865 | enshow=1; |
866 | } |
867 | } |
868 | LCD_ShowChar(x+(size/2)*t,y,temp+0,size,0); |
869 | } |
870 | } |
871 |
872 |
873 | //显示字符串 |
874 | //x,y:起点坐标 |
875 | //*p:字符串起始地址 |
876 | //用16字体 |
877 | voidLCD_ShowString(u8 x,u16 y,constu8 *p) |
878 | { |
879 | while(*p!=)//字符串到达结束 |
880 | { |
881 | if(x>MAX_CHAR_POSX){x=0;y+=16;}//换行 |
882 | if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}//超出屏幕显示范围 |
883 | LCD_ShowChar(x,y,*p,16,0); |
884 | x+=8; |
885 | p++; |
886 | } |
887 | } |
LCD/ili93xx.h (相关I/O操作在此文件中以宏定义的方式实现)
001 | #include "stm32f10x.h" |
002 |
003 | //TFTLCD部分外要调用的函数 |
004 | externu16 POINT_COLOR;//默认红色 |
005 | externu16 BACK_COLOR;//背景颜色.默认为白色 |
006 |
007 | //定义LCD的尺寸 |
008 | #define LCD_WIDTH 240 |
009 | #define LCD_HEIGHT 320 |
010 |
011 | //9320/9325 LCD寄存器 |
012 | #define R0 0x00 |
013 | #define R1 0x01 |
014 | #define R2 0x02 |
015 | #define R3 0x03 |
016 | #define R4 0x04 |
017 | #define R5 0x05 |
018 | #define R6 0x06 |
019 | #define R7 0x07 |
020 | #define R8 0x08 |
021 | #define R9 0x09 |
022 | #define R10 0x0A |
023 | #define R12 0x0C |
024 | #define R13 0x0D |
025 | #define R14 0x0E |
026 | #define R15 0x0F |
027 | #define R16 0x10 |
028 | #define R17 0x11 |
029 | #define R18 0x12 |
030 | #define R19 0x13 |
031 | #define R20 0x14 |
032 | #define R21 0x15 |
033 | #define R22 0x16 |
034 | #define R23 0x17 |
035 | #define R24 0x18 |
036 | #define R25 0x19 |
037 | #define R26 0x1A |
038 | #define R27 0x1B |
039 | #define R28 0x1C |
040 | #define R29 0x1D |
041 | #define R30 0x1E |
042 | #define R31 0x1F |
043 | #define R32 0x20 |
044 | #define R33 0x21 |
045 | #define R34 0x22 |
046 | #define R36 0x24 |
047 | #define R37 0x25 |
048 | #define R40 0x28 |
049 | #define R41 0x29 |
050 | #define R43 0x2B |
051 | #define R45 0x2D |
052 | #define R48 0x30 |
053 | #define R49 0x31 |
054 | #define R50 0x32 |
055 | #define R51 0x33 |
056 | #define R52 0x34 |
057 | #define R53 0x35 |
058 | #define R54 0x36 |
059 | #define R55 0x37 |
060 | #define R56 0x38 |
061 | #define R57 0x39 |
stm32TFTLC 相关文章:
- Stm32的TFT LCD显示器控制学习笔记(12-01)
- STM32之TFT-LCD液晶(11-13)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)