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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3722|回復: 0
打印 上一主題 下一主題
收起左側

MC9S12XS128并口12864液晶顯示程序,包含按鍵中斷,按鍵可翻動的程序源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:242450 發(fā)表于 2017-10-24 15:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序在12864液晶上顯示一首詞,按鍵可翻動詞句。

單片機源程序如下:
  1. /*---------------------------------------------------------*/
  2. /************************************************************
  3. 飛翔科技MC9S12XS128汽車電子開發(fā)板
  4. ************************************************************/
  5. /*---------------------------------------------------------*/
  6. #include <hidef.h>      /* common defines and macros */
  7. #include "derivative.h"      /* derivative-specific definitions */
  8. #include "LCD.h"      

  9. #define LEDCPU PORTK_PK4
  10. #define LEDCPU_dir DDRK_DDRK4

  11. #define KEY1 PTIH_PTIH3
  12. #define KEY2 PTIH_PTIH2
  13. #define KEY1_dir DDRH_DDRH3
  14. #define KEY2_dir DDRH_DDRH2

  15. #define  BUS_CLOCK                   32000000           //總線頻率
  16. #define  OSC_CLOCK                   16000000           //晶振頻率

  17. char *poem[11] = {
  18. "長征",
  19. "毛澤東",
  20. "紅軍不怕遠征難,",
  21. "萬水千山只等閑,",
  22. "五嶺逶迤騰細浪,",
  23. "烏蒙磅礴走泥丸。",
  24. "金沙水拍云崖暖,",
  25. "大渡橋橫鐵索寒,",
  26. "更喜岷山千里雪,",
  27. "三軍過后盡開顏!",
  28. "",
  29. } ;

  30. unsigned char single = 0;    //液晶翻頁的標志符


  31. /*************************************************************/
  32. /*                      初始化鎖相環(huán)                         */
  33. /*************************************************************/
  34. void INIT_PLL(void)
  35. {
  36.     CLKSEL &= 0x7f;       //set OSCCLK as sysclk
  37.     PLLCTL &= 0x8F;       //Disable PLL circuit
  38.     CRGINT &= 0xDF;
  39.    
  40.     #if(BUS_CLOCK == 40000000)
  41.       SYNR = 0x44;
  42.     #elif(BUS_CLOCK == 32000000)
  43.       SYNR = 0x43;     
  44.     #elif(BUS_CLOCK == 24000000)
  45.       SYNR = 0x42;
  46.     #endif

  47.     REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz ,fbus=32M
  48.     PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
  49.     asm NOP;
  50.     asm NOP;
  51.     while(!(CRGFLG&0x08)); //PLLCLK is Locked already
  52.     CLKSEL |= 0x80;        //set PLLCLK as sysclk
  53. }

  54. /************************************************************/
  55. /*                    初始化ECT模塊                         */
  56. /************************************************************/
  57. void initialize_ect(void){
  58.   TSCR1_TFFCA = 1;  // 定時器標志位快速清除
  59.   TSCR1_TEN = 1;    // 定時器使能位. 1=允許定時器正常工作; 0=使主定時器不起作用(包括計數器)
  60.   TIOS  = 0xff;      //指定所有通道為輸出比較方式
  61.   TCTL1 = 0x00;            // 后四個通道設置為定時器與輸出引腳斷開
  62.   TCTL2 = 0x00;     // 前四個通道設置為定時器與輸出引腳斷開
  63.   TIE   = 0x00;     // 禁止所有通道定時中斷
  64.   TSCR2 = 0x07;            // 預分頻系數pr2-pr0:111,,時鐘周期為4us,
  65.   TFLG1 = 0xff;            // 清除各IC/OC中斷標志位
  66.   TFLG2 = 0xff;     // 清除自由定時器中斷標志位
  67. }

  68. /*************************************************************/
  69. /*                       初始化按鍵                          */
  70. /*************************************************************/
  71. void init_key(void)
  72. {
  73.      KEY1_dir =0;       //設置為輸入
  74.      KEY2_dir=0;
  75.      PPSH = 0x00;                      //極性選擇寄存器,選擇下降沿;
  76.      PIFH = 0x0C;                                        //對PIFH的每一位寫1來清除標志位;
  77.      PIEH = 0x0C;                      //中斷使能寄存器;
  78. }


  79. /*************************************************************/
  80. /*                    按鍵中斷函數                           */
  81. /*************************************************************/
  82. #pragma CODE_SEG __NEAR_SEG NON_BANKED
  83. interrupt void PTH_inter(void)
  84. {
  85.    if(PIFH != 0)     //判斷中斷標志
  86.    {
  87.       PIFH = 0xff;     //清除中斷標志
  88.       if(KEY2 == 0)
  89.       {
  90.          delay1ms(5);
  91.          if(KEY2 == 0)
  92.          {
  93.            if(single == 0)
  94.             single = 10;
  95.            else single-=1;
  96.            
  97.          }
  98.       }


  99.       if(KEY1 == 0)
  100.       {
  101.          delay1ms(5);
  102.          if(KEY1 == 0)
  103.          {
  104.            if(single == 10)
  105.             single = 0;
  106.            else single+=1;

  107.          }
  108.       
  109.       }
  110.       
  111.      lcd_clear();
  112.      if(single == 0) {
  113.        lcd_string(0,2,poem[0]);
  114.        lcd_string(1,3,poem[1]);
  115.        lcd_string(2,0,poem[2]);
  116.        lcd_string(3,0,poem[3]);
  117.      }
  118.      else if(single == 1) {
  119.        lcd_string(0,3,poem[1]);
  120.        lcd_string(1,0,poem[2]);
  121.        lcd_string(2,0,poem[3]);
  122.        lcd_string(3,0,poem[4]);
  123.      }
  124.      else if(single == 2) {
  125.        lcd_string(0,0,poem[2]);
  126.        lcd_string(1,0,poem[3]);
  127.        lcd_string(2,0,poem[4]);
  128.        lcd_string(3,0,poem[5]);
  129.      }
  130.      else if(single == 8) {
  131.        lcd_string(0,0,poem[8]);
  132.        lcd_string(1,0,poem[9]);
  133.        lcd_string(2,0,poem[10]);
  134.        lcd_string(3,2,poem[0]);
  135.      }
  136.      else if(single == 9) {
  137.        lcd_string(0,0,poem[9]);
  138.        lcd_string(1,0,poem[10]);
  139.        lcd_string(2,2,poem[0]);
  140.        lcd_string(3,3,poem[1]);
  141.      }
  142.      else if(single == 10) {
  143.        lcd_string(0,0,poem[10]);
  144.        lcd_string(1,2,poem[0]);
  145.        lcd_string(2,3,poem[1]);
  146.        lcd_string(3,0,poem[2]);
  147.      }
  148.      else {
  149.        lcd_string(0,0,poem[single]);
  150.        lcd_string(1,0,poem[single + 1]);
  151.        lcd_string(2,0,poem[single + 2]);
  152.        lcd_string(3,0,poem[single + 3]);
  153.      }
  154.    }
  155. }
  156. #pragma CODE_SEG DEFAULT


  157. /*************************************************************/
  158. /*                         主函數                            */
  159. ……………………

  160. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整代碼下載:
20并口液晶.rar (238.55 KB, 下載次數: 28)


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品1区 | 日韩中文欧美 | 国产精品69毛片高清亚洲 | 日韩中文字幕区 | 香蕉久久av | 精品日韩在线 | 国产精品美女一区二区 | 午夜成人免费视频 | 欧美freesex黑人又粗又大 | 久久久免费精品 | 日韩黄色免费 | 99久久精品一区二区成人 | 亚洲一区二区在线 | 精品人伦一区二区三区蜜桃网站 | 天天插天天搞 | 国产精品美女久久久久久免费 | 日韩精品在线视频免费观看 | 久久久亚洲精品视频 | 欧美电影免费观看高清 | 日韩靠逼 | 国产精品一区二区三区在线 | 激情 婷婷| 国产精品久久久久久久久久不蜜臀 | 中文字幕成人免费视频 | 密桃av | 国产成人亚洲精品自产在线 | 国产色片| 亚洲成人精品国产 | 亚洲精品久久久一区二区三区 | 国产欧美日韩在线播放 | 国产人免费人成免费视频 | 成人一区精品 | 亚洲精品1区 | 欧美激情亚洲激情 | 91免费看片神器 | 久久33| 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 亚洲一区二区久久 | 国产高清自拍视频在线观看 | 日韩欧美国产一区二区三区 | 日韩超碰 |