本例程使用的是2.8寸的TFT屏,本例程是正點(diǎn)原子例程的精簡(jiǎn)版,刪去其他TFT屏驅(qū)動(dòng),刪去SD卡的相關(guān)文件、刪去文件管理的相關(guān)文件,如果開(kāi)發(fā)板W25內(nèi)沒(méi)有字庫(kù),可以先下載正點(diǎn)原子例程(正點(diǎn)原子例程是 如果檢測(cè)不到w25內(nèi)有字庫(kù)的話(huà),會(huì)檢測(cè)SD卡內(nèi)的字庫(kù),然后將SD卡內(nèi)的字庫(kù)寫(xiě)入W25),本例程默認(rèn)W25里有字庫(kù),上電后直接去W25中尋找字庫(kù),如果沒(méi)有找到則無(wú)法顯示。
單片機(jī)源程序如下:
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "lcd.h"
- #include "touch.h"
- #include "w25qxx.h"
- #include "text.h"
- //清空屏幕并在右上角顯示"RST"
- void Load_Drow_Dialog(void)
- {
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=BLUE; //設(shè)置字體為藍(lán)色
- LCD_ShowString(lcddev.width-24,0,200,16,16,"RST");//顯示清屏區(qū)域
- POINT_COLOR=RED; //設(shè)置畫(huà)筆藍(lán)色
- }
- //電阻觸摸屏測(cè)試函數(shù)
- void rtp_test(void)
- {
- while(1)
- {
- tp_dev.scan(0);
- if(tp_dev.sta&TP_PRES_DOWN) //觸摸屏被按下
- {
- if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
- {
- if(tp_dev.x[0]>(lcddev.width-24)&&tp_dev.y[0]<16)Load_Drow_Dialog();//清除
- else TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED); //畫(huà)圖
- }
- }
- }
- }
- int main(void)
- {
- u8 fontx[2];//gbk碼
- u32 fontcnt;
- u8 i,j;
- Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置
- delay_init(72); //延時(shí)初始化
- uart_init(72,115200); //串口初始化為115200
- LCD_Init();
- W25QXX_Init(); //初始化W25Q128 和SPI2
- POINT_COLOR=RED;
- tp_dev.init(); //觸摸屏初始化
- while(font_init()) //檢查字庫(kù)
- {
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=RED; //設(shè)置字體為紅色
- LCD_ShowString(30,50,200,16,16,"WarShip STM32");
- LCD_ShowString(30,90,200,16,16,"Font Updating...");
- LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
- delay_ms(1500);
- LCD_Clear(WHITE);//清屏
- }
- POINT_COLOR=RED;
- Show_Str(30,50,200,16,"戰(zhàn)艦STM32F103開(kāi)發(fā)板",16,0);
- Show_Str(30,70,200,16,"GBK字庫(kù)測(cè)試程序",16,0);
- Show_Str(30,90,200,16,"正點(diǎn)原子@ALIENTEK",16,0);
- Show_Str(30,110,200,16,"2015年1月20日",16,0);
- Show_Str(30,130,200,16,"按KEY0,更新字庫(kù)",16,0);
- POINT_COLOR=BLUE;
- Show_Str(30,150,200,16,"內(nèi)碼高字節(jié):",16,0);
- Show_Str(30,170,200,16,"內(nèi)碼低字節(jié):",16,0);
- Show_Str(30,190,200,16,"漢字計(jì)數(shù)器:",16,0);
- Show_Str(30,220,200,24,"對(duì)應(yīng)漢字為:",24,0);
- Show_Str(30,244,200,16,"對(duì)應(yīng)漢字(16*16)為:",16,0);
- Show_Str(30,260,200,12,"對(duì)應(yīng)漢字(12*12)為:",12,0);
- while(1)
- {
- fontcnt=0;
- for(i=0x81;i<0xff;i++)
- {
- fontx[0]=i;
- LCD_ShowNum(118,150,i,3,16); //顯示內(nèi)碼高字節(jié)
- for(j=0x40;j<0xfe;j++)
- {
- if(j==0x7f)continue;
- fontcnt++;
- LCD_ShowNum(118,170,j,3,16); //顯示內(nèi)碼低字節(jié)
- LCD_ShowNum(118,190,fontcnt,5,16);//漢字計(jì)數(shù)顯示
- fontx[1]=j;
- Show_Font(30+132,220,fontx,24,0);
- Show_Font(30+144,244,fontx,16,0);
- Show_Font(30+108,260,fontx,12,0);
- }
- }
- }
- }
- // printf("t:%d\r\n",t);
復(fù)制代碼
- #include "sys.h"
- #include "usart.h"
- #include "delay.h"
- #include "lcd.h"
- #include "touch.h"
- //清空屏幕并在右上角顯示"RST"
- void Load_Drow_Dialog(void)
- {
- LCD_Clear(WHITE); //清屏
- POINT_COLOR=BLUE; //設(shè)置字體為藍(lán)色
- LCD_ShowString(lcddev.width-24,0,200,16,16,"RST");//顯示清屏區(qū)域
- POINT_COLOR=RED; //設(shè)置畫(huà)筆藍(lán)色
- }
- //電阻觸摸屏測(cè)試函數(shù)
- void rtp_test(void)
- {
- while(1)
- {
- tp_dev.scan(0);
- if(tp_dev.sta&TP_PRES_DOWN) //觸摸屏被按下
- {
- if(tp_dev.x[0]<lcddev.width&&tp_dev.y[0]<lcddev.height)
- {
- if(tp_dev.x[0]>(lcddev.width-24)&&tp_dev.y[0]<16)Load_Drow_Dialog();//清除
- else TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED); //畫(huà)圖
- }
- }
- }
- }
- int main(void)
- {
- Stm32_Clock_Init(9); //系統(tǒng)時(shí)鐘設(shè)置
- delay_init(72); //延時(shí)初始化
- uart_init(72,115200); //串口初始化為115200
- LCD_Init();
- POINT_COLOR=RED;
- tp_dev.init(); //觸摸屏初始化
- while(1)
- {
- POINT_COLOR=RED;//設(shè)置字體為紅色
- LCD_ShowString(30,50,200,16,16,"WarShip STM32");
- LCD_ShowString(30,70,200,16,16,"TOUCH TEST");
- LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
- LCD_ShowString(30,110,200,16,16,"2015/1/15");
- if(tp_dev.touchtype!=0XFF)LCD_ShowString(30,130,200,16,16,"Press KEY0 to Adjust");//電阻屏才顯示
- delay_ms(1500);
- while(1)
- {
- Load_Drow_Dialog();
- rtp_test(); //電阻屏測(cè)試
- }
- }
- }
- // printf("t:%d\r\n",t);
復(fù)制代碼
所有資料51hei提供下載:
ZE_TFT觸摸顯示.rar
(282.99 KB, 下載次數(shù): 179)
2018-5-23 03:18 上傳
點(diǎn)擊文件名下載附件
內(nèi)含2個(gè)例程,漢字顯示越過(guò)SD卡,聲明:本例程只是將正點(diǎn)原子的例程進(jìn)行精簡(jiǎn),本流程是用的是2.8寸的ALIENT ...
|