普通51单片机驱动35寸TFT的应用实例与源代码.doc

上传人:豆**** 文档编号:17613676 上传时间:2022-05-25 格式:DOC 页数:15 大小:235KB
返回 下载 相关 举报
普通51单片机驱动35寸TFT的应用实例与源代码.doc_第1页
第1页 / 共15页
普通51单片机驱动35寸TFT的应用实例与源代码.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《普通51单片机驱动35寸TFT的应用实例与源代码.doc》由会员分享,可在线阅读,更多相关《普通51单片机驱动35寸TFT的应用实例与源代码.doc(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流普通51单片机驱动35寸TFT的应用实例与源代码.精品文档.普通51单片机驱动3.5寸TFT的应用实例与源代码!发布: 2010-1-15 16:59|作者: pcb_dz| 来源: 网络| 查看: 675次前市场流行的3.5寸屏基本上都是只内置了驱动器,而不带控制器,这样给用户的使用造成了一些难度。基本上很多朋友在用彩屏时选择一些带LCD控制器的ARM7或ARM9去开发,对于不会ARM开发的朋友来说,只使用普通MCU,这样可以选择的3.5寸TFT模块,就很难找到了。电子爱好者社区2Ng d_pN%A+n 本文就是基于市场上一款比较使用的3.

2、5寸TFT模块编写的,用户只需要帮该TFT模块当作普通的单色液晶的开发思路来使用,就可以很容易去编程。W+o|+p y*j;S u1y0电子爱好者社区Z)c:C9F4P$w$k/K 一、硬件选择电子爱好者社区X6Vr1X?1Ci电子爱好者社区e p0rv!ns 1、MCU:AT89S51r-m2x|&O)|4O B b0电子爱好者社区2gYeRw:A-C0Q 2、开发编译环境:Keil C51o3dZt p$Q-P0电子爱好者社区!_6B0n#r 3、3.5寸TFT模块型号:MzT35C1;oB+tz4D E?$g|0电子爱好者社区(R)z|6J xF 二、TFT模块基本性能:电子爱好者社区6

3、|PE%z&S9bvqc1t4h68u6kQj9rM01、基本参数电子爱好者社区y3I-FO?X.#?!A电子爱好者社区0wH)Xn0VA3K 模块结构:内置控制器电子爱好者社区7Rxy/uC-oEFZ+mQ T%Y8NM0屏幕大小:3.5英寸电子爱好者社区 _sP5T2q:VE电子爱好者社区,Me89h&L 屏幕分辩率:320*240电子爱好者社区5M8C:t9j电子爱好者社区+h g-U)tG 屏幕颜色数:65536色(16位真彩色)电子爱好者社区4F g/_NtQ B?N!nB*g s x R0工作电压:3.3V/5V可选电子爱好者社区g$q kMIV2)X(_M#o W h w b0总

4、线结构:Intel8080电子爱好者社区+Fz#Ix$a0M%Gh5PZJ%sEP0总线宽度:8Bit0Z-Q/UT4UxK0电子爱好者社区1QT*g+Q 背光形式:LED;可指令控制,0-127可调电子爱好者社区6c pqHd电子爱好者社区3n Q?#6z O/(f$F 连接方式:排针插座电子爱好者社区 u(m U.uYE .U电子爱好者社区 G hsgZ,k/ylr7x Z 触摸屏:标准配置不带触摸屏;模组留有触摸屏芯片焊盘和触摸屏接口电子爱好者社区je/F6C7t H)ue)P(K)O02、接口引脚说明h7q b4_;5t0 nG (_g5GI(X0接口引脚_m98Xc OJ5Ca0电子

5、爱好者社区x+Og!KGG&k.m 说明 U6L#P_4c1q0电子爱好者社区 WCV$d wtO VCCL&Gj;G6eO1yv0电子爱好者社区-Wrl7S&v b(Pi 模块供电电源输入(一般无特殊要求为5V)XoGDeg03Sz a$v,H e*lqi)d8X0D0D7L(EnN5|Nos(t0电子爱好者社区,g _SO6c/K 8位数据总线8z/EME3W0+?-APJX/Om5jk0CS电子爱好者社区kWy,wxM i%wL0片选(低电平有效)s-Q4M:Q/hd$p0电子爱好者社区;Y N9_EMES RST电子爱好者社区!w/y% I#x$!eG电子爱好者社区O.D#g:Y t+

6、KL Reset复位(低电平复位)电子爱好者社区!YMt.W6vpp2s |,D*Xn0A0QG+J5nU4il0.x)? q+wFDa F0控制寄存器/数据寄存器选择(低电平选择控制寄存器)f,uP;oX90电子爱好者社区c5UpT1d5Y hO WE电子爱好者社区FN+iZ(TWEa| D0Z G-Q)y)CtW$xy0写信号(低电平有效)电子爱好者社区L8UXK6DK*B2v/M3bgIr$qCN9xr0RD电子爱好者社区u9|8X6v1 R;m m iJ3F Gs%wm/ LA(X S0读信号(低电平有效)电子爱好者社区)Y-c;t+t1C9Rz(td3C$hOM8h EwN0GND)

7、5upb,)_0电子爱好者社区%E2V7cI7fT9 接地电子爱好者社区dn(D)mxm U电子爱好者社区 w:O-y$jp S_CS;p:J3Nmvp)l60t Av-ODRW-e0预留有ADS7846的片选P8hx)V0%j J -H0f7Q(C-Z0S_SCK:c e BT)C#l70电子爱好者社区BkGWcf 预留有ADS7846的SPI时钟输入电子爱好者社区G V)Ox!K-v电子爱好者社区I1 8G(y+R;R S_SDO电子爱好者社区3MX*z&b:rf1bB;p(XLd t.f0预留有ADS7846的SPI数据输出q:g6yx&HiP3s3r0n9i)i5| N/0S_SDIE

8、ZK:D+yIeg+N0电子爱好者社区TD6a_0Gn 预留有ADS7846的SPI数据输入电子爱好者社区S_khvN0U%|;ia电子爱好者社区.rN;N:dJ2lv S_INT电子爱好者社区I_kxVAx电子爱好者社区 XxcV7K 预留有ADS7846的INT信号Keydm*e06S#eEz*2nS0S_BUSYF7w5mK!N4fCT7J0电子爱好者社区oE/&g_at 预留有ADS7846的BUSY信号电子爱好者社区Oi LXFX n-Zi电子爱好者社区h0Oyxqal 3、操作时序(8位并行Intel 8080总线)电子爱好者社区o?U NA(GM)W2Ht8c3a4q:R0MzT

9、35C1模块支持intel8080总线,总线的最高速度可达20MHz(当然总线的速度能否达到最高接口速度,还与用户的总线布线、线长等有关),也就是说,如果控制MCU速度足够快的话,是可以支持视频的显示的。gcIa,W|0电子爱好者社区r;Q;Xh;,J!lEVW 电子爱好者社区 T+l%Xc%v m0nQy/dxh |,A0注意:MzT35C1模块的总线接口是8位的,也就意味着对显存的数据操作时,需要连续进行两次操作方可完成,先传高字节再传低字节;但对于寄存器的操作(写入寄存器地址,即A0为低时的写入操作)8位的操作方可。电子爱好者社区?EI&e?IA_ _:rf0三、MzT35C1与51硬件

10、接口连接图QK r D90电子爱好者社区bqUxvV(|8BG 本例程使用GPIO来模拟总线时序。上图的模块供电为5V的模块,而模块的端口电平为3.3V的,所以在所有的51端口与模块间的连接串入了一个100欧的电阻,有关MCS51的其它电路不在图中画出,请用户具体参考其它的开发板文档进行了解。而图中的MzT35C1模块的相关引脚请以实物为准,图中仅示意对应的名称的端口,请用户在参考使用时注意。电子爱好者社区N-C8C q R电子爱好者社区 a5STrN w2V 电子爱好者社区sS)CC z nJd2p电子爱好者社区lC mS+zgG 三、底层驱动代码编写方法电子爱好者社区*J6gO6*Q)M?

11、E;vHt电子爱好者社区:Q$d:CZ5oYcu 1、端口配置+fFCK Z/s!z0电子爱好者社区;w$u0POe Pl!L e2m6k i nclude REG52.hc G_ACN0电子爱好者社区CcVzI i nclude intrins.h/包含此头文件可直接操作内核的寄存器以及一些定义好的宏电子爱好者社区N#m0H#v1v+电子爱好者社区U9VI._x #define LCD_Ctrl_GPIO()/无定义电子爱好者社区#D v9i Ou9j8W/x Y#L xG0#define LCD_Ctrl_Out()LCD_CS_SET();LCD_RD_SET();LCD_RW_SET(

12、);电子爱好者社区/GA ea!ozg电子爱好者社区,R3p #define LCD_Ctrl_Set(n)/无定义电子爱好者社区lV8W*y2bcH电子爱好者社区z.q5UyU #define LCD_Ctrl_Clr(n)/无定义电子爱好者社区j;g4G VV U B0g.OHr*3V*Ar&O0sbit LCD_CS = P26;电子爱好者社区7d;Ft62e;N&dN1BC:y7d&Gy g0#define LCD_CS_SET()LCD_CS = 1电子爱好者社区%G6S |mbb*Y0u;ys0#define LCD_CS_CLR()LCD_CS = 0M S L+CC0电子爱好者

13、社区mt(5e8 sbit LCD_RE = P35;电子爱好者社区d*w;ak#m+1Xh*hp.ARd5L)X1q0#define LCD_RE_SET()LCD_RE = 1Q U;RJ$W0hL0 9Mt;C/b81u0#define LCD_RE_CLR()LCD_RE = 0电子爱好者社区Hl M#n3My,VHz电子爱好者社区A8e&O-q-P,J,v Q sbit LCD_A0 = P25;电子爱好者社区r5Q +nu Y电子爱好者社区Qe8P8lsVJq #define LCD_A0_SET()LCD_A0 = 1电子爱好者社区f3od()Fy yAeA4t4zU0#defi

14、ne LCD_A0_CLR()LCD_A0 = 0q0A WA|10电子爱好者社区HJl;HPZ2 sbit LCD_RW = P36;电子爱好者社区 u(Dbq6P电子爱好者社区 k-I)p%Nu8m(r #define LCD_RW_SET()LCD_RW = 1/u5evA6r)/f:p$T0 M,AlYQl0#define LCD_RW_CLR()LCD_RW = 0电子爱好者社区-_-ZQ;XjP v+pIb%?A#u0sbit LCD_RD = P37;G!gs*X!G4z7|&o0电子爱好者社区K9A? zNs #define LCD_RD_SET()LCD_RD = 1电子爱好

15、者社区Pq.o0X8MA;R&v,Z d,WW#a0#define LCD_RD_CLR()LCD_RD = 0电子爱好者社区MT c3p!6i0c3wV q0#define LCD_Data_GPIO()/51的端口是双向的,无需特意规定方向,故无定义电子爱好者社区.UU,Nre9x电子爱好者社区 Zw G#E #define LCD_Data_Out()/51的端口是双向的,无需特意规定方向,故无定义NmaV4b Q.u0 1t_7s n3t0#define LCD_Data_In()P0 = 0xff/51的端口要读数据前需要先输出0xff电子爱好者社区_7DP|Q电子爱好者社区v z:

16、O4Xg #define LCD_Data_BUS_Clr()/无定义1bJ)ObY_0电子爱好者社区#a8QQnJ*T #define LCD_Data_BUS_Set(n)P0 = nKY4|*N,u g0 ZT ?Z_/l _;wT0#define LCD_Data_Read()P01e%q_6Hx)0 U +wljM02、写数据和指令操作电子爱好者社区yL c*? I电子爱好者社区H#U;M V#M 9T*F2kb)b3cd#uF C#NAY0 F Cf)A0/函数: void LCD_DataWrite(unsigned int Data)Tf#J2V&ws0电子爱好者社区/HM H

17、q#L /描述:写一个字(16bit)的显示数据至LCD中的显示缓冲RAM当中NnHj0 P+Vy:h-D|3q5o0/参数: Data写入的数据电子爱好者社区h&I(|;o dI:s&H(y9I-yDp0/=5r CnW;VO!b)?&c_0电子爱好者社区J$d3cqfU:q GA #defineLCD_DataWrite(n) LCD_A0_SET();LCD_CS_CLR();LCD_Data_BUS_Clr();LCD_Data_BUS_Set(unsigned char)(n8);电子爱好者社区,p;P H&v T电子爱好者社区1JDc#Mg3z LCD_RW_CLR();LCD_R

18、W_SET();LCD_Data_BUS_Clr();LCD_Data_BUS_Set(unsigned char)n);LCD_RW_CLR(); LCD_RW_SET();LCD_CS_SET()电子爱好者社区!U2vXJv8E电子爱好者社区f%KC.U8Ce.l /=电子爱好者社区?4Z DT2W hB电子爱好者社区G9Kk%h4Ke;n /函数: void LCD_RegWrite(unsigned char Addr,unsigned int Command)eF O vvB&o$s0电子爱好者社区1KuDe TN:_7BI /描述:写一个字节的数据至LCD中的控制寄存器当中电子爱好

19、者社区 lL3J:y+T4i k+q-r#e TxW cK0/参数: Addr要写入的寄存器的地址,低八位有效(byte)电子爱好者社区n6Dw:|i!x3aX6g电子爱好者社区wqs$UY6 /Command写入的数据电子爱好者社区A,Ac|v Z1Ty电子爱好者社区Z K(_#EbF_lv /=电子爱好者社区8v&_5l E电子爱好者社区1a k _?Md:z #define LCD_RegWrite(n)n h4F!I$F-x r0 m9ca 0LCD_A0_CLR();LCD_CS_CLR();LCD_Data_BUS_Clr();LCD_Data_BUS_Set(n);电子爱好者社区

20、Y0ja9W6Bc/R#e/t%l$s/m0LCD_RW_CLR();LCD_RW_SET();LCD_CS_SET()电子爱好者社区6L3J;x!KO5N电子爱好者社区fA4s |;h1i9A 2、读数据操作电子爱好者社区U:To z *B Y电子爱好者社区d)H|*bPi U /=电子爱好者社区%#G/mXDxy电子爱好者社区 VC r*Y|F /函数: LCDBYTE LCD_DataRead(void)D/NY5rd|h0 &OmsDZ1B:p0/描述:从LCD中的显示缓冲RAM当中读一个字节的显示数据电子爱好者社区j|:J&p7c#tmuSyO8tk1vX0/参数:无电子爱好者社区1

21、EwJ%X?2l%m电子爱好者社区 owin l M /返回:读出的数据,V q7A6Ko;W0电子爱好者社区 C.W.Gk;c /备注: Mz通用版LCD驱动程序标准子函数bV L;k-OD0 4fX#YUp0/=电子爱好者社区zuiCM电子爱好者社区IWI!ZV LCDBYTE LCD_DataRead(void)电子爱好者社区 &W7TdA 1)wz+M电子爱好者社区Y l1C$2t# 电子爱好者社区o8s7t.4YiT/zVZN5y+ds(wxF/X0LCDBYTE Read_Data;电子爱好者社区x7VxY*V:v 2vR+*A0S电子爱好者社区w&Gga L v0mp LCD_D

22、ata_In();电子爱好者社区T*xI!ozl电子爱好者社区h1w/L LCD_A0_SET();电子爱好者社区.F$E? TOXmMPS H C$T4 _0LCD_CS_CLR();电子爱好者社区J3p_n)V0u,G5M0c;Q4M 5d0LCD_RD_CLR();电子爱好者社区np%B0Y&?8g电子爱好者社区zA PI 3H!M.Ad LCD_RD_SET();/E7M WR W0电子爱好者社区R;r:Dtg f LCD_RD_CLR();电子爱好者社区cA%YDh;-D%Y电子爱好者社区4b7q-z0X/X SX%M LCD_RD_SET();/前面的操作是要完成一次完整的空读操作

23、后方能读取到数据J3a Y0电子爱好者社区dBpz8H%Yw+Qe;X /如果用户需要连续读取显存,侧仅需要在第一次读数据时作一+LE j CS.zHeR0电子爱好者社区4Ui-A# u D-w9j T6 /次空读操作即可3?h o+s+Tx0 ?|%fSUC0LCD_RD_CLR();电子爱好者社区*Ti| y b电子爱好者社区Lq6Kg 8KM_8h Read_Data = LCD_Data_Read();电子爱好者社区.u5a3V3O.wa6f JmDY:oI#0Read_Data = Read_Data8;电子爱好者社区_S!t &dE c9L电子爱好者社区1K a8xD4n3OP2y

24、&h LCD_RD_SET();2s3O:V/4N-b9El#Kjo0 0glnLf o K0LCD_RD_CLR();电子爱好者社区:YL A5o0 u)tU.D电子爱好者社区 Tc+oXos5TH Read_Data |= LCD_Data_Read();5XvX0Q;xt, k0电子爱好者社区$dsQ4?f4sb3v LCD_RD_SET();电子爱好者社区G q5t$Y)D电子爱好者社区vbY VB$AT*c LCD_CS_SET();:E.i%UevO0 %L O/t0tqHUO;J0LCD_Data_Out();b2cMrY0 kb4I|U4e#0return Read_Data;

25、电子爱好者社区zq+PTXZ3_5p!U5m8|?)S1j#h+DH ?6E0电子爱好者社区A8h,&NunN电子爱好者社区 X.j Ne A*|/P 3、初始化TFT操作电子爱好者社区 i PfN$e*|3g$QJ7 o9c%?t,r0void LCD_Init(void)&I9L+bBPo0sWW6F0 !Z$ iF+m?0B,1XhC-(M0电子爱好者社区4q#o%3fkdL&M /FLASH *Init_String;电子爱好者社区 S+B*XGa7I |电子爱好者社区 KM5uwk*O%3n%_ /LCD驱动所使用到的端口的初始化电子爱好者社区9n%w5aZ7RF;A ? A*电子爱

26、好者社区1f JaO LCD_PortInit();电子爱好者社区.ebK6|:d6R Z:yg01,X-D(K C_0/根据LCD显示的配置,设置LCD的数据地址指针自动增加特性mmx9j/F0 iOe8e&PP5j8H0/end电子爱好者社区eMv8o(vPb uieXZ_0LCD_RE_CLR();%M3Li1i0电子爱好者社区LY;i9ogG2 TimeDelay(5);4Kp*vjw0 Y$S$Jfk#W%| u)V-D0LCD_RE_SET();电子爱好者社区l oihZ-H(TB电子爱好者社区vS:u%r*V2l4ImWt LCD_RegWrite(0x03);$hYq fx&x

27、,t m0电子爱好者社区0hC q;D P LCD_DataWrite(17)|(0x600);/设置背光控制使能、背光亮度等级为60(0127)电子爱好者社区 r!6Sk9l# )H_$E QJn tUc8k6er0LCD_RegWrite(0x04);/写系统寄存器pCC;s5V2i8Jt;N0 &cb#F5j4h0/LCD_DataWrite(07)|/当前显示页电子爱好者社区1lU/Ll电子爱好者社区t !lJ0R+tz /(06)|/当前读写页设置电子爱好者社区G Y .HXd电子爱好者社区6Yn0K e9WC /(10);/显示开关Glvs#P4O.b0 a*QdTDF0LCD_D

28、ataWrite(MzT35_Ctrl_Reg);&jO!HYu Z0 2#f5x4U Y,C4h0/*Init_String = Initial_Tab;/s)jN0Z3P:Q3A|PR0电子爱好者社区y5N,n+c2O9LUv1Mg while(Init_String!=0xffff)lq8y%M%Ih)c0s0电子爱好者社区(dX9E6i2s6JV1l.Q 电子爱好者社区(Utq%S e4i(dB电子爱好者社区7HI;Zq%P LCD_RegWrite(0x05);LCD_DataWrite(*Init_String+);1l?Z-UA0电子爱好者社区$WSQDc6Y%a/J LCD_R

29、egWrite(0x06);LCD_DataWrite(*Init_String+);电子爱好者社区.IV.CT电子爱好者社区zT2X0vl 9C o+k7p y;0电子爱好者社区- U(WM#v7h LCD_Fill(LCD_INITIAL_COLOR);.a$Q.wq;3WL p0 *VA4x NBZ g0g lB5M8*Iv,0 T%m _kn-i*C0电子爱好者社区8cp7kapa2Qt电子爱好者社区*gG+Vg;A!v 本站统一解压缩密码:wang1jin4 yu(O BP;bk1TK0 y/o2q*VxZ)x;F K7c0MzT35_Keil_MCS51_Base.rar(576 KB)(s*A)B:V%ym0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com