MSP430 HT1621液晶驱动程序

2019-07-19 13:26发布

MSP430的HT1621液晶驱动程序,C源码,IAR开发平台,调试成功。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
dirtwillfly
1楼-- · 2019-07-19 16:45
  1. //-----------------------------------------------------------------------------------------
  2. // msp430g2553 ht1621_lcd test
  3. //-----------------------------------------------------------------------------------------
  4. #include  "msp430g2553.h"
  5. #include <stdio.h>

  6. #define uint  unsigned int
  7. #define uchar unsigned char

  8. #define  BIAS     0x52             //0b1000 0101 0010  1/3duty 4com
  9. #define  SYSDIS   0X00             //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
  10. #define  SYSEN    0X02             //0b1000 0000 0010 打开系统振荡器
  11. #define  LCDOFF   0X04             //0b1000 0000 0100  关LCD偏压
  12. #define  LCDON    0X06             //0b1000 0000 0110  打开LCD偏压
  13. #define  XTAL     0x28             //0b1000 0010 1000 外部接时钟
  14. #define  RC256    0X30             //0b1000 0011 0000  内部时钟
  15. #define  TONEON   0X12             //0b1000 0001 0010  打开声音输出
  16. #define  TONEOFF  0X10             //0b1000 0001 0000 关闭声音输出
  17. #define  WDTDIS1  0X0A            //0b1000 0000 1010  禁止看门狗

  18. ////////////////////////////////////////////////////////////////////////////////

  19. void Ht1621_CS_0() { P2OUT &= ~0x20;}  // define P2.5 ---> CS
  20. void Ht1621_CS_1() { P2OUT |= 0x20;}

  21. void Ht1621_WR_0() { P2OUT &= ~0x10;}  // define P2.4 ---> WR
  22. void Ht1621_WR_1() { P2OUT |= 0x10;}

  23. void Ht1621_DO_0() { P2OUT &= ~0x08;}  // define P2.3 ---> DAT
  24. void Ht1621_DO_1() { P2OUT |= 0x08;}

  25. ////////////////////////////////////////////////////////////////////////////////

  26. //-----------------------------------------------------------------------------------------
  27. //函数名称:Delay()
  28. //功    能:延时子程序
  29. //-----------------------------------------------------------------------------------------
  30. void Delay(uchar us)  //5,7,9
  31. {
  32.   while(--us);  
  33. }

  34. //-----------------------------------------------------------------------------------------
  35. //函数名称:Delayms()
  36. //-----------------------------------------------------------------------------------------
  37. void Delayms(uint ims)
  38. {
  39.   uint i,j;
  40.     for(i=0;i<ims;i++)
  41.       for(j=0;j<65;j++) { Delay(1); }
  42. }

  43. //-----------------------------------------------------------------------------------------
  44. //函数名称:Ht1621Wr_Data()  
  45. //-----------------------------------------------------------------------------------------
  46. void Ht1621Wr_Data(uchar Data,uchar cnt)
  47. {
  48.   uchar i;
  49.   for (i=0;i<cnt;i++)
  50.    {   
  51.     Ht1621_WR_0();
  52.     if((Data & 0x80)==0x80) { Ht1621_DO_1(); }
  53.     else { Ht1621_DO_0(); }
  54.     Ht1621_WR_1();
  55.     Data<<=1;  
  56.    }
  57. }
  58. //-----------------------------------------------------------------------------------------
  59. //函数名称:void Ht1621WrCmd(uchar Cmd)
  60. //-----------------------------------------------------------------------------------------
  61. void Ht1621WrCmd(uchar Cmd)
  62. {
  63.    Ht1621_CS_0();   //CS
  64.    Ht1621Wr_Data(0x80,4);               //写入命令标志100
  65.    Ht1621Wr_Data(Cmd,8);                //写入命令数据
  66.    Ht1621_CS_1();
  67. }
  68. //-----------------------------------------------------------------------------------------
  69. //函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
  70. //-----------------------------------------------------------------------------------------
  71. void Ht1621WrOneData(uchar Addr,uchar Data)
  72. {
  73.    Ht1621_CS_0();
  74.    Ht1621Wr_Data(0xa0,3);              //写入数据标志101
  75.    Ht1621Wr_Data(Addr<<2,6);           //写入地址数据
  76.    Ht1621Wr_Data(Data<<4,4);           //写入数据
  77.    Ht1621_CS_1();   
  78. }
  79. //-----------------------------------------------------------------------------------------
  80. //函数名称:void Ht1621WrAllData()
  81. //-----------------------------------------------------------------------------------------
  82. void Ht1621WrAllData(void)
  83. {
  84.    uchar i;

  85.    Ht1621_CS_0();
  86.    Ht1621Wr_Data(0xa0,3);            //写入数据标志101
  87.    Ht1621Wr_Data(0x00<<2,6);         //写入地址数据
  88.    for (i=0;i<16;i++) { Ht1621Wr_Data(0x00,8); }
  89.    Ht1621_CS_1();   
  90. }
  91. //-----------------------------------------------------------------------------------------
  92. //函数名称:void Ht1621_Init(void)  
  93. //-----------------------------------------------------------------------------------------
  94. void Ht1621_Init(void)
  95. {
  96.    Ht1621_CS_0();
  97.    Ht1621_WR_0();
  98.    Ht1621_DO_0();
  99.   
  100.    Delay(100);                     //延时使LCD工作电压稳定
  101.    Ht1621WrCmd(BIAS);
  102.    Ht1621WrCmd(RC256);              //使用内部振荡器
  103.    Ht1621WrCmd(SYSDIS);
  104.    Ht1621WrCmd(WDTDIS1);
  105.    Ht1621WrCmd(SYSEN);
  106.    Ht1621WrCmd(LCDON);
  107. }
  108. //-----------------------------------------------------------------------------------------
  109. //函数名称:Initial()
  110. //功    能:初始化子程序
  111. //-----------------------------------------------------------------------------------------
  112. void Initial(void)
  113. {
  114.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  115.   P1DIR = 0xFF;                             // All P1.x outputs
  116.   P1OUT = 0;                                // All P1.x reset
  117.   P2DIR = 0xFF;                             // All P2.x outputs
  118.   P2OUT = 0;                                // All P2.x reset
  119. }
  120. void write_num(unsigned char i,unsigned char data)
  121. {
  122.   switch(i)
  123.   {
  124.    case 0:
  125.     {
  126.     switch(data)
  127.     {
  128.       case 0:
  129.       {
  130.         Ht1621WrOneData(0,0x0e);
  131.         Ht1621WrOneData(1,0x0b);
  132.       }break;
  133.       case 1:
  134.       {
  135.         Ht1621WrOneData(0,0x06);
  136.       }break;
  137.       case 2:
  138.       {
  139.         Ht1621WrOneData(0,0x0c);
  140.         Ht1621WrOneData(1,0x07);
  141.       }break;
  142.       case 3:
  143.       {
  144.         Ht1621WrOneData(0,0x0e);
  145.         Ht1621WrOneData(1,0x05);
  146.       }break;
  147.       case 4:
  148.       {
  149.         Ht1621WrOneData(0,0x06);
  150.         Ht1621WrOneData(1,0x0c);
  151.       }break;
  152.       case 5:
  153.       {
  154.         Ht1621WrOneData(0,0x0a);
  155.         Ht1621WrOneData(1,0x0d);
  156.       }break;
  157.       case 6:
  158.       {
  159.         Ht1621WrOneData(0,0x0a);
  160.         Ht1621WrOneData(1,0x0f);
  161.       }break;
  162.       case 7:
  163.       {
  164.         Ht1621WrOneData(0,0x0e);
  165.       }break;
  166.       case 8:
  167.       {
  168.         Ht1621WrOneData(0,0x0e);
  169.         Ht1621WrOneData(1,0x0f);
  170.       }break;
  171.       case 9:
  172.       {
  173.         Ht1621WrOneData(0,0x0e);
  174.         Ht1621WrOneData(1,0x0d);
  175.       }break;
  176.       case 10:
  177.       {
  178.         Ht1621WrOneData(0,0x01);
  179.       }
  180.       defualt:break;
  181.      }
  182.     }break;
  183.   case 1: break;
  184.   }
  185. }

  186. void write_du_shudian(unsigned char j,unsigned char data)
  187. {
  188.   switch(data)
  189.   {
  190.    case 0x01:
  191.    {
  192.     switch(j)
  193.     {
  194.       case 0:
  195.       {
  196.         Ht1621WrOneData(0,0x01);
  197.       }break;
  198.       case 2:
  199.       {
  200.         Ht1621WrOneData(2,0x02);
  201.       }break;
  202.       case 4:
  203.       {
  204.         Ht1621WrOneData(4,0x01);
  205.       }break;
  206.       case 6:
  207.       {
  208.         Ht1621WrOneData(6,0x01);
  209.       }break;
  210.       case 8:
  211.       {
  212.         Ht1621WrOneData(0,0x01);
  213.       }break;
  214.       case 10:
  215.       {
  216.         Ht1621WrOneData(10,0x01);
  217.       } defualt:break;
  218.     }
  219.    }break;
  220. }
  221. }

  222. void clear()
  223. {
  224.   Ht1621_Init();        
  225.   Delay(100);         
  226.   Ht1621WrAllData();  
  227. }
  228. //-----------------------------------------------------------------------------------------
  229. //函数名称:main()
  230. //-----------------------------------------------------------------------------------------
  231. void main(void)
  232. {
  233. // uchar i,j,t;

  234.   Initial();            //初始化子程序
  235.   Ht1621_Init();        //上电初始化LCD
  236.   Delay(100);          //延时一段时间
  237.   Ht1621WrAllData();
  238.    
  239.   while(1)
  240.   {  
  241.     Ht1621WrOneData(10,0x01);
  242. //   write_num(0,0);
  243. //   Delayms(1000);
  244. //   Ht1621_Init();        //上电初始化LCD
  245. //   Delay(100);          //延时一段时间
  246. //   Ht1621WrAllData();
  247. //   write_num(0,1);
  248. //   Delayms(1000);
  249. //   Ht1621_Init();        //上电初始化LCD
  250. //   Delay(100);          //延时一段时间
  251. //   Ht1621WrAllData();
  252. //   write_num(0,2);
  253. //   Delayms(1000);
  254. //   Ht1621_Init();        //上电初始化LCD
  255. //   Delay(100);          //延时一段时间
  256. //   Ht1621WrAllData();
  257. //   write_num(0,3);
  258. //   Delayms(1000);
  259. //   Ht1621_Init();        //上电初始化LCD
  260. //   Delay(100);          //延时一段时间
  261. //   Ht1621WrAllData();
  262. //   write_num(0,4);
  263. //   Delayms(1000);
  264. //   Ht1621_Init();        //上电初始化LCD
  265. //   Delay(100);          //延时一段时间
  266. //   Ht1621WrAllData();
  267. //   write_num(0,5);
  268. //   Delayms(1000);
  269. //   Ht1621_Init();        //上电初始化LCD
  270. //   Delay(100);          //延时一段时间
  271. //   Ht1621WrAllData();
  272. //   write_num(0,6);
  273. //   Delayms(1000);
  274. //   Ht1621_Init();        //上电初始化LCD
  275. //   Delay(100);          //延时一段时间
  276. //   Ht1621WrAllData();
  277. //   write_num(0,7);
  278. //   Delayms(1000);
  279. //   Ht1621_Init();        //上电初始化LCD
  280. //   Delay(100);          //延时一段时间
  281. //   Ht1621WrAllData();
  282. //   write_num(0,8);
  283. //   Delayms(1000);
  284. //   Ht1621_Init();        //上电初始化LCD
  285. //   Delay(100);          //延时一段时间
  286. //   Ht1621WrAllData();
  287. //   write_num(0,9);
  288. //   Delayms(1000);
  289.    
  290. //   Ht1621WrOneData(0,0x02);
  291. //   Ht1621WrOneData(0,0x04);
  292. //   Ht1621WrOneData(0,0x08);
  293. //   Ht1621WrOneData(1,0x01);
  294. //   Ht1621WrOneData(1,0x02);
  295. //   Ht1621WrOneData(1,0x04);
  296. //   Ht1621WrOneData(1,0x08);
  297. //
  298. //   
  299. //   Ht1621WrOneData(2,0x01);
  300. //   Ht1621WrOneData(3,0x01);
  301. // while(1);
  302. //      for(i=0;i<16;i++)        //SEG0-SEG31
  303. //       {
  304. //       t=0x01;
  305. //       for(j=0;j<4;j++)    //COM0 - COM3
  306. //        {
  307. //         Ht1621WrOneData(i,t);
  308. //         t<<=1;
  309. //         t++;         
  310. //         Delayms(10);
  311. //        }
  312. //    }
  313.    }
  314. }











复制代码

一周热门 更多>