📄 nbctft.lst
字号:
C51 COMPILER V7.06 NBCTFT 12/13/2012 09:58:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE NBCTFT
OBJECT MODULE PLACED IN NBCTFT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE NBCTFT.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //公司:北方蓝芯科技开发有限公司
2 //网址:www.hrbnbc.com
3 /*===================================================================================================
4 文件功能描述:320x240TFT驱动程序,控制TFT实现汉字,字符显示,画点功能。
5 ====================================================================================================*/
6 //******************包含头文件***************************
7 #include"NBCTFT.h"
8 #include"reg52.h"
9
10 //**************控制端口定义********************
11 #define DataPort P0 //数据口使用DataPort
12
13 sbit RS =P2^5; //数据/命令选择
14 sbit RW =P2^4; //写数据/命令
15 sbit nRD =P2^3; //读控制
16 sbit CS =P2^2; //片选
17 sbit RES =P2^1; //复位
18
19 sbit LE =P2^0; //74HC573锁存控制
20 //**************声明外部函数和变量**************
21
22 extern unsigned int Device_code;
23
24 //================================================================================================
25 // 实现功能: 延时
26 // 输入参数: count 设置延时时间
27 //================================================================================================
28 void delayms(unsigned int count)
29 {
30 1 int i,j;
31 1 for(i=0;i<count;i++)
32 1 {
33 2 for(j=0;j<255;j++);
34 2 }
35 1 }
36
37 //================================================================================================
38 // 实现功能: 写命令
39 // 输入参数: DH 需要输入16bits命令的高8位
40 // DL 需要输入16bits命令的低8位
41 //================================================================================================
42 void Write_Cmd(unsigned char DH,unsigned char DL)
43 {
44 1 CS=0;
45 1 RS=0;
46 1 nRD=1;
47 1 RW=0;
48 1
49 1 //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
50 1 DataPort=DL; //送低8位命令给573待锁存
51 1 LE=1; //锁存位
52 1 LE=0; //断开锁存,位选573的Q7~Q0仍保持
53 1
54 1 DataPort=DH; //送高8位命令给TFT
55 1
C51 COMPILER V7.06 NBCTFT 12/13/2012 09:58:43 PAGE 2
56 1 /*
57 1 //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
58 1 DataPort_L=DL;
59 1 DataPort_H=DH;
60 1 */
61 1
62 1 RW=1;
63 1 CS=1;
64 1 }
65
66 //================================================================================================
67 // 实现功能: 写数据(2*8bits)
68 // 输入参数: DH 需要输入16bits数据的高8位
69 // DL 需要输入16bits数据的低8位
70 //================================================================================================
71 void Write_Data(unsigned char DH,unsigned char DL)
72 {
73 1
74 1 CS=0;
75 1 RS=1;
76 1
77 1 //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
78 1 DataPort=DL; //送低8位数据给573待锁存
79 1 LE=1; //锁存位
80 1 LE=0; //断开锁存,位选573的Q7~Q0仍保持
81 1
82 1 DataPort=DH; //送高8位数据给TFT
83 1
84 1 /*
85 1 //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
86 1 DataPort_L=DL;
87 1 DataPort_H=DH;
88 1 */
89 1
90 1 RW=0;
91 1 RW=1;
92 1 CS=1;
93 1 }
94
95 //================================================================================================
96 // 实现功能: 写数据(16位)
97 // 输入参数: y 需要输入16bits数据
98 //================================================================================================
99 void Write_Data_U16(unsigned int y)
100 {
101 1 unsigned char m,n;
102 1 m=y>>8;
103 1 n=y;
104 1 Write_Data(m,n);
105 1 }
106
107 //================================================================================================
108 // 实现功能: 向x寄存器写入y数据
109 // 输入参数: x 需要输入的命令 16位
110 // y 需要输入的数据 16位
111 //================================================================================================
112 void Write_Cmd_Data (unsigned char x,unsigned int y)
113 {
114 1 unsigned char m,n;
115 1 m=y>>8;
116 1 n=y;
117 1 Write_Cmd(0x00,x);
C51 COMPILER V7.06 NBCTFT 12/13/2012 09:58:43 PAGE 3
118 1 Write_Data(m,n);
119 1 }
120
121 //================================================================================================
122 // 实现功能: TFT清屏
123 // 输入参数: bColor 清屏所使用的背景色
124 //================================================================================================
125 void CLR_Screen(unsigned int bColor)
126 {
127 1 unsigned int i,j;
128 1 LCD_SetPos(0,240,0,320);//320x240
129 1 for (i=0;i<320;i++)
130 1 {
131 2 for (j=0;j<240;j++)
132 2 Write_Data_U16(bColor);
133 2 }
134 1 }
135
136 //================================================================================================
137 // 实现功能: 显示Ascii字符
138 // 输入参数: x 横坐标
139 // y 纵坐标
140 // c 需要显示的字符
141 // fColor 字符颜色
142 // bColor 字符背景颜色
143 //================================================================================================
144 #include "Ascii_8x16.h"
145 void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor)
146 {
147 1 unsigned int i,j;
148 1 LCD_SetPos(x,x+8-1,y,y+16-1); //设置字符显示位置
149 1 for(i=0; i<16;i++) { //循环写入16字节,一个字符为16字节
150 2 unsigned char m=Font8x16[(c-0x20)*16+i]; //提取c字符的第i个字节以,c减去0x20是由于Ascii码库中的0~1f被去
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -