久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7500|回復: 14
打印 上一主題 下一主題
收起左側(cè)

一款實用性極強的STC32G單片機開發(fā)板

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:61140 發(fā)表于 2022-7-1 18:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 xiaoyuxinke 于 2022-7-4 00:30 編輯

最近要用STC32G12K128的單片機,但由于沒用過51核的32位單片機,所以自己照官方手冊做了一款STC32G的開發(fā)板,本板功能實用性極強,可測試的功能有:
1.雙串口功能.這個大家都懂就不要細述
2.3.5寸TFT屏和LCD12864的顯示,這兩種屏做為中高端應(yīng)用是必不可少的.
3.單獨按鍵功能,這個很多開發(fā)板都有,大家也經(jīng)常用到
4.兩組CAN總線用排針引出,CAN總線在一些汽車檢測設(shè)備中常用到
5.兩組對稱帶死區(qū)PWM排針引出(P6.0-P6.3),相信大家對于這個不陌生,對于一些MOS管驅(qū)動,比如半橋和全橋驅(qū)動這個是必不可少的.
6.板載8M三星的FLASH閃存芯片,可用于存儲開機圖片和LOGO圖片及一些不常用到的大容量代碼.因為這些開機只運行一次.
7.仿編碼器旋鈕,這個在做一些電子設(shè)備類的經(jīng)常用到,比如電子負載和T12焊臺等.8.DS1302時鐘芯片的仿真本板不需要,因為單片機內(nèi)部集成了高精度和低精度的兩種RTC時鐘模塊,直接設(shè)置好調(diào)用就可以了.
9.本板所支持所有I/O中斷,也就是說任意引出的I/O都可用作中斷功能,在很多工業(yè)控制以及設(shè)備和家電控制上面都很方便.
10.本板支持高速SPI功能,這塊在SPI高速數(shù)據(jù)傳輸和SPI類的TFT顯示屏上面很好用,普通51單片機刷SPI的TFT彩屏,速度慢的讓人頭痛.
11.本板支持在電路實時仿真功能,STC32G既是單片機,又可實時在電路仿真,這塊對于單片機愛好者是一大助力.
12.本板支持32位/16位/8位 單時鐘數(shù)據(jù)讀寫,內(nèi)部集成FPMU單精度浮點運算模塊(可進行基本算術(shù)運算和三角函數(shù)運算)

下面是本開發(fā)板的PCB圖片
這個是正面圖:


這個是板背面圖


這個是嘉立創(chuàng)打樣的效果圖


        本開發(fā)板必需使用STC LINK下載器或USB下載才能下載程序,其它下載器不通用(STC LINK可向STC官方申請)
        下面是測試視頻地址,大家可以自行觀看:
        https://v.youku.com/v_show/id_XN ... o_XNTg4MjM3OTgyNA==
        由于本板兼容兩種顯示屏,所以必需用排母來插,如果焊接就只能用一種屏顯示,我在某寶上買的排母還沒到,所以屏的測試后面再上圖了,多謝大家支持,
也感謝STC長期以來對我這的支持和照顧,謝謝!
       另附上開發(fā)板簡單測試程序:
環(huán)宇之光開發(fā)板簡單測試程序.rar (50.24 KB, 下載次數(shù): 42)

//***************************************************************
//【程序版權(quán)所有 中山環(huán)宇之光】
//【此程序為環(huán)宇之光STC開發(fā)板專用程序,其它芯片不適用本程序 】               

//************************  功能說明    **************************

//本例程基于STC32G為主控芯片的環(huán)宇之光NO;STC32G12K128開發(fā)板進行編寫測試.
//使用Keil C251編譯器,Memory Model推薦設(shè)置XSmall模式,默認定義變量在edata,單時鐘存取訪問速度快。
//edata建議保留1K給堆棧使用,空間不夠時可將大數(shù)組、不常用變量加xdata關(guān)鍵字定義到xdata空間。
//下載時,根據(jù)自己所用晶振選擇時鐘(用戶可自行修改頻率).環(huán)宇之光STC32G12K128開發(fā)板有外部晶振
//****************************************************************
//【程序宏定義部分】
//****************************************************************
#include <STC32G.h>
#include <stdio.h>
#include <intrins.h>
typedef         unsigned char        u8;
typedef         unsigned int        u16;
typedef         unsigned long        u32;
#define MAIN_Fosc        22118400UL
//****************************************************************
//【本地常量聲明】
//****************************************************************
bit   flag0=0;                              //按鍵(key1)標志位

//****************************************************************
//【I/O定義部分】
//****************************************************************
sbit  beep=P0^7;                            //蜂鳴器I/O定義
sbit  key1=P0^0;                            //按鍵1(key1)I/O定義
sbit  key2=P0^1;                            //按鍵2(key2)I/O定義
sbit  key3=P0^2;                            //按鍵3(key3)I/O定義
sbit  key4=P0^3;                            //按鍵4(key4)I/O定義
//****************************************************************
//【本地變量聲明】
//****************************************************************

u8 ledIndex;
u8 code ledNum[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//****************************************************************
//【本地函數(shù)聲明】
//****************************************************************

void  delay_ms(u8 ms);                      //全局定義毫秒級延時
void  ledflash(void);                       //LED閃爍程序聲明
//void  key(void);                          //由于按鍵采用了中斷功能,此句暫時注釋掉
void  main(void);                           //KEIL C251中,MAIN函數(shù)也必需聲明,不然無法編譯
//****************************************************************

//****************************************************************
//【發(fā)光二極管閃爍程序】
//****************************************************************

void ledflash(void)
{
        if(flag0==1)                              //如果標志位0等于1,執(zhí)行下列程序
                {
        P1 = ~ledNum[ledIndex];                    //輸出低驅(qū)動
        ledIndex++;                         //LED變量加1
        if(ledIndex > 1)                    //如果變量數(shù)大于1,執(zhí)行下列程序(此處可修改,按您的實際LED個數(shù))
        {
            ledIndex = 0;                   //強制把此變量置0
        }
        delay_ms(125);                      //延時125毫秒
        delay_ms(125);                      //延時125毫秒
                                beep=0;                             //蜂鳴器響
                                P30=1;                              //P3^0所接LED滅
                                P31=1;                              //P3^1所接LED滅
                                delay_ms(125);                      //延時125毫秒
                                P30=0;                              //P3^0所接LED亮
                    P31=0;                              //P3^0所接LED亮
                                beep=1;                                    //蜂鳴器禁聲
                        }
}
今天晚上寫了一下這個開發(fā)板的LCD12864顯示部分程序,顯示很正常,用32位芯片比8位強多了,不是一個檔次的東西.
下面是顯示圖片




夜深了,TFT彩屏的程序今晚就不寫了,改天有空了再寫一下,各位有什么要交流的可以回貼,看到一定會及時回復各位.



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:61140 發(fā)表于 2022-7-2 01:10 | 只看該作者
此程序按鍵使用端口中斷的哦,任意端口都可用作中斷端口.
回復

使用道具 舉報

板凳
ID:161979 發(fā)表于 2022-7-8 14:39 | 只看該作者
期待你的TFT彩屏的程序
回復

使用道具 舉報

地板
ID:61140 發(fā)表于 2022-7-8 18:17 | 只看該作者
jin8882008 發(fā)表于 2022-7-8 14:39
期待你的TFT彩屏的程序

彩屏程序已經(jīng)出來了,改天有空發(fā)照片
回復

使用道具 舉報

5#
ID:824490 發(fā)表于 2022-7-12 08:52 | 只看該作者
共享一下PCB文件不?
回復

使用道具 舉報

6#
ID:61140 發(fā)表于 2022-7-13 13:03 | 只看該作者

某魚上有我做好的PCB賣
回復

使用道具 舉報

7#
ID:491577 發(fā)表于 2022-7-13 15:16 | 只看該作者
除了將全部IO口引出之外,看不出有什么特別之處,與其他開發(fā)板有什么區(qū)別?
回復

使用道具 舉報

8#
ID:61140 發(fā)表于 2022-7-13 21:09 | 只看該作者
沒有區(qū)別,但比STC官方提供的開發(fā)板要好用些。
回復

使用道具 舉報

9#
ID:61140 發(fā)表于 2022-7-26 16:49 | 只看該作者

這個實在報歉……。
回復

使用道具 舉報

10#
ID:272119 發(fā)表于 2022-7-31 13:23 | 只看該作者
Layout 風格很喜歡,VIA過孔排列平直,所有走線轉(zhuǎn)彎都是大平直走線,我平時會走45'大彎,看來還是平直線路漂亮,不過平時很多雜散性走線也很難統(tǒng)一.
STC32問過他們客服,說還是建議先用STC8A或8H系列先,STC32現(xiàn)在的產(chǎn)能和成熟度還沒有完成面對大批量.
看這個家伙很牛的樣子,編程也可以直接8位轉(zhuǎn)32位,過渡貌似很容易,我也是心癢癢.
回復

使用道具 舉報

11#
ID:1034262 發(fā)表于 2022-8-1 22:50 | 只看該作者
STC官方出了一個用STC32G做的建議示波器,測試很不錯,雖然帶寬不高(最高采樣500K,帶寬50~100K,10V/DIV~50mV/DIV),但是很實用,非常穩(wěn)定,顯示時跟暫停一樣靜止的感覺。
回復

使用道具 舉報

12#
ID:61140 發(fā)表于 2022-8-10 12:32 | 只看該作者
coody_sz 發(fā)表于 2022-8-1 22:50
STC官方出了一個用STC32G做的建議示波器,測試很不錯,雖然帶寬不高(最高采樣500K,帶寬50~100K,10V/DIV~ ...

此板硬件部分都正常,但是SPI的彩屏程序不好搞,我的板用的SPI硬件顯示,但程序?qū)嵲诓惶酶?br />
回復

使用道具 舉報

13#
ID:1089682 發(fā)表于 2023-7-26 13:40 | 只看該作者
我想用洞洞板搭一個STC32與LCD12864,怎么接線,可以提供一下源程序嗎
回復

使用道具 舉報

14#
ID:155507 發(fā)表于 2023-7-27 17:27 | 只看該作者
啥也不會! 發(fā)表于 2023-7-26 13:40
我想用洞洞板搭一個STC32與LCD12864,怎么接線,可以提供一下源程序嗎




  1. /*************  功能說明    **************

  2. 本例程基于STC32G為主控芯片的實驗箱9.6版本進行編寫測試。

  3. 使用Keil C251編譯器,Memory Model推薦設(shè)置XSmall模式,默認定義變量在edata,單時鐘存取訪問速度快。

  4. edata建議保留1K給堆棧使用,空間不夠時可將大數(shù)組、不常用變量加xdata關(guān)鍵字定義到xdata空間。

  5. 128*64的LCD顯示程序

  6. 顯示圖形,漢字,英文,數(shù)字

  7. 下載時, 選擇時鐘 24MHz (用戶可自行修改頻率).

  8. ******************************************/

  9. #include "..\comm\STC32G.h"

  10. #include "stdio.h"
  11. #include "intrins.h"

  12. typedef         unsigned char        u8;
  13. typedef         unsigned int        u16;
  14. typedef         unsigned long        u32;

  15. #define MAIN_Fosc        24000000UL

  16. /****************************** 用戶定義宏 ***********************************/
  17. sbit    LCD_RS = P4^1;  //定義引腳
  18. sbit    LCD_RW = P4^2;  //9.5版本之前實驗箱需要將P42與P44對調(diào)才能正常使用
  19. sbit    LCD_E  = P4^4;
  20. //sbit    PSB    = P3^5;      //PSB腳為12864的串、并通訊功能切換,我們使用8位并行接口,PSB=1
  21. sbit    LCD_RESET   =   P3^4;   //  17---RESET  L-->Enable
  22. #define LCD_Data P0

  23. #define Busy    0x80 //用于檢測LCD狀態(tài)字中的Busy標識
  24. /*****************************************************************************/

  25. /*************  本地常量聲明    **************/
  26. u8  code uctech[] = {"微電子  "};
  27. u8  code net[]    = {" stcmcu "};
  28. u8  code mcu[]    = {"51單片機"};
  29. u8  code qq[]     = {" 123456  "};

  30.     //128*64點陣圖形數(shù)據(jù)
  31. u8 code gImage_gxw[1024] = { /* 0X10,0X01,0X00,0X80,0X00,0X40, */
  32. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  33. 0X00,0X3F,0X03,0XF0,0X3F,0X03,0XF0,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0XC0,0X00,
  34. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X0C,0X00,0X18,0XFF,0XE0,0X00,
  35. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X08,0X1C,0X1C,0X1B,0X00,0X00,
  36. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X1F,0XFF,0XFE,0X0C,0X0E,0X00,0X00,
  37. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X00,0X0C,0X00,0X00,0X8C,0X60,0X00,
  38. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X04,0X0C,0X10,0X00,0XFF,0XF0,0X00,
  39. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X07,0XFF,0XF8,0X0C,0XCC,0X60,0X00,
  40. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X00,0X06,0X63,0X18,0X7E,0XCC,0X60,0X00,
  41. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X06,0X33,0X98,0X0C,0XFF,0XE0,0X00,
  42. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X06,0X32,0X18,0X0C,0XCC,0X60,0X00,
  43. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X05,0XD8,0X0C,0XCC,0X60,0X00,
  44. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0XFF,0X78,0X0C,0XFF,0XE0,0X00,
  45. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X08,0XD8,0X0C,0XCC,0X60,0X00,
  46. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XF8,0X0C,0XCC,0X60,0X00,
  47. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X0C,0XCF,0XE0,0X00,
  48. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X3E,0X80,0X40,0X00,
  49. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X73,0XC0,0X00,0X00,
  50. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X0D,0XF0,0X20,0X7F,0XF8,0X00,
  51. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X30,0X00,0X00,0X00,0X00,
  52. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  53. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  54. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X18,0X01,0X84,0X00,0X00,
  55. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XFC,0X01,0XC6,0X00,0X00,
  56. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X06,0X00,0X58,0X01,0X86,0X30,0X00,
  57. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X07,0XFF,0XD8,0X7F,0XFF,0XF8,0X00,
  58. 0X60,0X00,0XFD,0X1F,0XF0,0X7A,0X00,0X18,0X00,0X06,0X0C,0X18,0X01,0X86,0X00,0X00,
  59. 0X60,0X01,0X87,0X13,0X30,0XC6,0X00,0X18,0X00,0X06,0X0C,0X18,0X01,0X86,0X00,0X00,
  60. 0X60,0X03,0X03,0X33,0X11,0X83,0X00,0X18,0X00,0X06,0X0C,0X18,0X00,0X40,0X00,0X00,
  61. 0X60,0X03,0X03,0X03,0X01,0X83,0X00,0X18,0X00,0X06,0X0C,0XD8,0X00,0X30,0X00,0X00,
  62. 0X60,0X03,0X80,0X03,0X03,0X80,0X00,0X18,0X00,0X06,0XFF,0XF8,0X03,0X38,0X00,0X00,
  63. 0X60,0X01,0XC0,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0F,0X18,0X0B,0X98,0X80,0X00,
  64. 0X60,0X00,0X78,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0D,0X98,0X0B,0X18,0XC0,0X00,
  65. 0X60,0X00,0X1E,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0C,0XD8,0X1B,0X00,0X70,0X00,
  66. 0X60,0X00,0X07,0X03,0X03,0X00,0X00,0X18,0X00,0X06,0X0C,0X18,0X1B,0X01,0X30,0X00,
  67. 0X60,0X00,0X03,0X03,0X03,0X80,0X00,0X18,0X00,0X06,0X0C,0XD8,0X3B,0X01,0X30,0X00,
  68. 0X60,0X03,0X03,0X03,0X03,0X83,0X00,0X18,0X00,0X07,0XF7,0XB8,0X33,0X01,0X80,0X00,
  69. 0X60,0X03,0X03,0X03,0X01,0X82,0X00,0X18,0X00,0X06,0X00,0X18,0X03,0X01,0X80,0X00,
  70. 0X60,0X01,0XC6,0X03,0X01,0XC6,0X00,0X18,0X00,0X07,0XFF,0XF8,0X01,0XFF,0X80,0X00,
  71. 0X60,0X01,0X7C,0X07,0XC0,0X7C,0X00,0X18,0X00,0X06,0X00,0X18,0X00,0X00,0X00,0X00,
  72. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X04,0X00,0X00,0X00,0X00,0X00,0X00,
  73. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  74. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  75. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  76. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X21,0X86,0X00,0X07,0X00,0X00,0X00,0X10,
  77. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X31,0X86,0X00,0X07,0X00,0X03,0XFF,0XF8,
  78. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X65,0X66,0X00,0X02,0X00,0X00,0X00,0X68,
  79. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0XC7,0X7C,0X00,0X02,0X08,0X00,0X00,0XC0,
  80. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X95,0X6C,0X41,0XFF,0XFC,0X00,0X03,0X80,
  81. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X19,0X3D,0X6F,0XE1,0X82,0X0C,0X00,0X0E,0X00,
  82. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X3E,0XE9,0XA1,0X82,0X0C,0X00,0X0E,0X00,
  83. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X60,0X59,0X81,0X82,0X0C,0X00,0X0C,0X0C,
  84. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X6F,0XFD,0X81,0XFF,0XFC,0X1F,0XFF,0XFE,
  85. 0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0XE0,0X15,0X81,0X82,0X0C,0X00,0X0C,0X02,
  86. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XA6,0X45,0X81,0X82,0X0C,0X00,0X0C,0X00,
  87. 0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0X27,0XC7,0X01,0X82,0X0C,0X00,0X0C,0X00,
  88. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X47,0X01,0XFF,0XFC,0X00,0X0C,0X00,
  89. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X5F,0X01,0X82,0X0B,0X00,0X0C,0X00,
  90. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0X77,0X01,0X02,0X03,0X00,0X0C,0X00,
  91. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X26,0XEF,0X80,0X02,0X03,0X00,0X0C,0X00,
  92. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X24,0X59,0XC0,0X02,0X03,0X00,0X0C,0X00,
  93. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X38,0X30,0XE0,0X03,0XFF,0X80,0X7C,0X00,
  94. 0X00,0X21,0X02,0X10,0X21,0X02,0X10,0X00,0X38,0XE0,0X00,0X00,0X00,0X00,0X18,0X00,
  95. 0X00,0X3F,0X03,0XF0,0X3F,0X03,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  96. };


  97. /*************  本地變量聲明    **************/


  98. /*************  本地函數(shù)聲明    **************/
  99. void    delay_ms(u16 ms);
  100. void    WriteDataLCD(u8 WDLCD);
  101. void    WriteCommandLCD(u8 WCLCD,u8 BuysC);
  102. u8      ReadDataLCD(void);
  103. u8      ReadStatusLCD(void);
  104. void    LCDInit(void);
  105. void    LCDClear(void);
  106. void    LCDFlash(void);
  107. void    DisplayOneChar(u8 X, u8 Y, u8 DData);
  108. void    DisplayListChar(u8 X, u8 Y, u8 code *DData);
  109. void    DisplayImage (u8 code *DData);

  110. /********************* 主函數(shù) *************************/
  111. void main(void)
  112. {
  113.     WTST = 0;  //設(shè)置程序指令延時參數(shù),賦值為0可將CPU執(zhí)行指令的速度設(shè)置為最快
  114.     EAXFR = 1; //擴展寄存器(XFR)訪問使能
  115.     CKCON = 0; //提高訪問XRAM速度

  116.     P0M1 = 0x30;   P0M0 = 0x30;   //設(shè)置P0.4、P0.5為漏極開路(實驗箱加了上拉電阻到3.3V)
  117.     P1M1 = 0x3a;   P1M0 = 0x32;   //設(shè)置P1.1、P1.4、P1.5為漏極開路(實驗箱加了上拉電阻到3.3V), P1.1在PWM當DAC電路通過電阻串聯(lián)到P2.3,  P1.3 為 ADC 高阻輸入
  118.     P2M1 = 0x3c;   P2M0 = 0x3c;   //設(shè)置P2.2~P2.5為漏極開路(實驗箱加了上拉電阻到3.3V)
  119.     P3M1 = 0x50;   P3M0 = 0x50;   //設(shè)置P3.4、P3.6為漏極開路(實驗箱加了上拉電阻到3.3V)
  120.     P4M1 = 0x3c;   P4M0 = 0x3c;   //設(shè)置P4.2~P4.5為漏極開路(實驗箱加了上拉電阻到3.3V)
  121.     P5M1 = 0x0c;   P5M0 = 0x0c;   //設(shè)置P5.2、P5.3為漏極開路(實驗箱加了上拉電阻到3.3V)
  122.     P6M1 = 0xff;   P6M0 = 0xff;   //設(shè)置為漏極開路(實驗箱加了上拉電阻到3.3V)
  123.     P7M1 = 0x00;   P7M0 = 0x00;   //設(shè)置為準雙向口

  124.     delay_ms(100); //啟動等待,等LCD講入工作狀態(tài)
  125.     LCDInit(); //LCM初始化
  126.     delay_ms(5); //延時片刻(可不要)

  127.     while(1)
  128.     {
  129.         LCDClear();
  130.         DisplayImage(gImage_gxw);//顯示圖形
  131.         delay_ms(3000);
  132.         LCDClear();
  133.         DisplayListChar(0,1,uctech);    //顯示字庫中的中文數(shù)字
  134.         DisplayListChar(0,2,net);       //顯示字庫中的中文數(shù)字
  135.         DisplayListChar(0,3,mcu);       //顯示字庫中的中文
  136.         DisplayListChar(0,4,qq);        //顯示字庫中的中文數(shù)字
  137.         delay_ms(3000);
  138.     }
  139. }


  140. //========================================================================
  141. // 函數(shù): void delay_ms(u8 ms)
  142. // 描述: 延時函數(shù)。
  143. // 參數(shù): ms,要延時的ms數(shù), 這里只支持1~255ms. 自動適應(yīng)主時鐘.
  144. // 返回: none.
  145. // 版本: VER1.0
  146. // 日期: 2013-4-1
  147. // 備注:
  148. //========================================================================
  149. void delay_ms(u16 ms)
  150. {
  151.     u16 i;
  152.     do{
  153.         i = MAIN_Fosc / 6000;
  154.         while(--i);
  155.     }while(--ms);
  156. }


  157. //******************************************
  158. void LCD_delay(void)
  159. {
  160.     NOP(30);    //電壓降低,IO口翻轉(zhuǎn)速度變慢,驅(qū)動信號需要增加延時時間
  161.     NOP(30);
  162. }


  163. //寫數(shù)據(jù)
  164. void WriteDataLCD(u8 WDLCD)
  165. {
  166.     ReadStatusLCD(); //檢測忙
  167.     LCD_RS = 1;
  168.     LCD_delay();
  169.     LCD_RW = 0;
  170.     LCD_Data = WDLCD;
  171.     LCD_delay();
  172.     LCD_E = 1;
  173.     LCD_delay();
  174.     LCD_E = 0;
  175. }

  176. //寫指令
  177. void WriteCommandLCD(u8 WCLCD,u8 BuysC) //BuysC為0時忽略忙檢測
  178. {
  179.     if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測忙
  180.     LCD_RS = 0;
  181.     LCD_delay();
  182.     LCD_RW = 0;
  183.     LCD_Data = WCLCD;
  184.     LCD_delay();
  185.     LCD_E = 1;
  186.     LCD_delay();
  187.     LCD_E = 0;  
  188. }

  189. //讀狀態(tài)
  190. u8 ReadStatusLCD(void)
  191. {
  192.     LCD_Data = 0xFF;

  193.     LCD_RS = 0;
  194.     LCD_delay();
  195.     LCD_RW = 1;
  196.     LCD_delay();
  197.     LCD_E = 1;
  198.     LCD_delay();
  199.     while (LCD_Data & Busy); //檢測忙信號
  200.     LCD_E = 0;

  201.     return(LCD_Data);
  202. }

  203. void LCDInit(void) //LCM初始化
  204. {
  205. //  PSB = 1;    //并口
  206. //  PSB = 0;    //SPI口
  207.     delay_ms(10);
  208.     LCD_RESET = 0;
  209.     delay_ms(10);
  210.     LCD_RESET = 1;
  211.     delay_ms(100);
  212.    
  213.     WriteCommandLCD(0x30,1); //顯示模式設(shè)置,開始要求每次檢測忙信號
  214.     WriteCommandLCD(0x01,1); //顯示清屏
  215.     WriteCommandLCD(0x06,1); // 顯示光標移動設(shè)置
  216.     WriteCommandLCD(0x0C,1); // 顯示開及光標設(shè)置
  217. }

  218. void LCDClear(void) //清屏
  219. {
  220.     WriteCommandLCD(0x01,1); //顯示清屏
  221.     WriteCommandLCD(0x34,1); // 顯示光標移動設(shè)置
  222.     WriteCommandLCD(0x30,1); // 顯示開及光標設(shè)置
  223. }


  224. //按指定位置顯示一串字符
  225. void DisplayListChar(u8 X, u8 Y, u8 code *DData)
  226. {
  227.     u8 ListLength,X2;
  228.     ListLength = 0;
  229.     X2 = X;
  230.     if(Y < 1)   Y=1;
  231.     if(Y > 4)   Y=4;
  232.     X &= 0x0F; //限制X不能大于16,Y在1-4之內(nèi)
  233.     switch(Y)
  234.     {
  235.         case 1: X2 |= 0X80; break;  //根據(jù)行數(shù)來選擇相應(yīng)地址
  236.         case 2: X2 |= 0X90; break;
  237.         case 3: X2 |= 0X88; break;
  238.         case 4: X2 |= 0X98; break;
  239.     }
  240.     WriteCommandLCD(X2, 1); //發(fā)送地址碼
  241.     while (DData[ListLength] >= 0x20) //若到達字串尾則退出
  242.     {
  243.         if (X <= 0x0F) //X坐標應(yīng)小于0xF
  244.         {
  245.             WriteDataLCD(DData[ListLength]); //
  246.             ListLength++;
  247.             X++;
  248.         }
  249.     }
  250. }

  251. //圖形顯示122*32
  252. void DisplayImage (u8 code *DData)
  253. {
  254.     u8 x,y,i;
  255.     unsigned int tmp=0;
  256.     for(i=0;i<9;)       //分兩屏,上半屏和下半屏,因為起始地址不同,需要分開
  257.     {
  258.         for(x=0;x<32;x++)   //32行
  259.         {
  260.             WriteCommandLCD(0x34,1);
  261.             WriteCommandLCD((u8)(0x80+x),1);//列地址
  262.             WriteCommandLCD((u8)(0x80+i),1);    //行地址,下半屏,即第三行地址0X88
  263.             WriteCommandLCD(0x30,1);        
  264.             for(y=0;y<16;y++)   
  265.                 WriteDataLCD(DData[tmp+y]);//讀取數(shù)據(jù)寫入LCD
  266.             tmp+=16;        
  267.         }
  268.         i+=8;
  269.     }
  270.     WriteCommandLCD(0x36,1);    //擴充功能設(shè)定
  271.     WriteCommandLCD(0x30,1);
  272. }

復制代碼

回復

使用道具 舉報

15#
ID:61140 發(fā)表于 2023-10-21 20:18 | 只看該作者
hhh402 發(fā)表于 2022-7-13 15:16
除了將全部IO口引出之外,看不出有什么特別之處,與其他開發(fā)板有什么區(qū)別?

此板的布線和鋪銅遠優(yōu)于官方的開發(fā)板。搞干擾性能極好
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久国产 | 欧美成人精品 | 国产一级黄色网 | 草久久免费视频 | 狠狠色综合欧美激情 | 精品久久久久久 | 久久亚洲一区二区三区四区 | 中文字幕在线不卡 | 中文av在线播放 | 无人区国产成人久久三区 | 香蕉视频一区二区 | 午夜在线免费观看视频 | 一区二区日本 | 久久久久国产一区二区三区四区 | 成人在线视频一区 | 亚洲国产欧美在线 | 欧美黑人巨大videos精品 | 久久精品二区 | 欧美高清视频在线观看 | 欧洲精品码一区二区三区免费看 | 国产欧美一区二区三区久久手机版 | 日日碰狠狠躁久久躁96avv | 国产成人jvid在线播放 | 欧美国产日韩一区 | 蜜桃av一区二区三区 | 99热热 | 久久久久久亚洲 | 久久免费精品视频 | 性欧美hd| 欧美亚洲国产精品 | 一级免费黄色 | 99国产精品99久久久久久 | 久久精品国产v日韩v亚洲 | 亚洲精品二区 | 超碰免费在线 | 99热视| 欧美精产国品一二三区 | 日韩午夜 | 在线成人 | 成人在线精品视频 | 日韩成年人视频在线 |