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)
