找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5421|回复: 1
收起左侧

用msp430单片机控制TCS3200颜色传感器LCD12864液晶显示

[复制链接]
ID:51337 发表于 2013-7-14 16:20 | 显示全部楼层 |阅读模式
  1. #include "io430.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define p4in    P4DIR=0x00    //数据口方向设置为输入
  5. #define p4out   P4DIR=0xff    //数据口方向设置为输出
  6. #define rsh      P3OUT|=BIT0      //P3.0
  7. #define rsl      P3OUT&=~BIT0     //P3.0
  8. #define rwh      P3OUT|=BIT1      //P3.1
  9. #define rwl      P3OUT&=~BIT1     //P3.1
  10. #define enh      P3OUT|=BIT2      //P3.2
  11. #define enl      P3OUT&=~BIT2     //P3.2
  12. uchar flag=0,a[6],flag1=0,flag2=0,flag3=0,flag4=0;
  13. unsigned long f=0;
  14. uint shuzi,ag=0;
  15. void delay(unsigned int ms)   //延时1ms
  16. {                                
  17.      unsigned int i,j;
  18.      for( i=0;i<ms;i++)
  19.      for(j=0;j<1565;j++);                  //8MHz晶振时
  20. }
  21. void delay0(unsigned int ms)   //延时0.1ms
  22. {                                
  23.      unsigned int i,j;
  24.      for( i=0;i<ms;i++)
  25.      for(j=0;j<156;j++);                  //8MHz晶振时
  26. }
  27. void clk()
  28. {
  29. BCSCTL1&=~XT2OFF;
  30. do
  31. {IFG1&=~OFIFG;
  32. _NOP();
  33. _NOP();
  34. _NOP();
  35. }
  36. while((IFG1&OFIFG)!=0);
  37. BCSCTL2|=SELM_2+SELS;
  38. BCSCTL2|=DIVS_0+DIVM_0;//注意=与位操作的区别,多注意
  39. }
  40. //读忙
  41. void BF()
  42. {uchar temp=0x80;
  43. P4DIR=0x00;
  44.   rsl;
  45. rwh;
  46. do
  47. {
  48. enh;
  49. _NOP();
  50. temp=P4IN;
  51. _NOP();
  52. enl;}
  53. while(temp&BIT7);
  54. P4DIR=0xff;
  55. }
  56. //写数据
  57. void writedate(uchar date)
  58. {BF();
  59. rsh;
  60. rwl;
  61. P4OUT=date;
  62. enh;
  63. _NOP();
  64. _NOP();
  65. enl;
  66. }
  67. //写命令
  68. void writecmd(uchar cmd)
  69. {BF();
  70. rsl;
  71. rwl;
  72. P4OUT=cmd;
  73. enh;
  74. _NOP();
  75. _NOP();
  76. enl;
  77. }
  78. //读数据
  79. uint readdate()
  80. {uint a;
  81.   BF();
  82. rsh;
  83. rwh;
  84. P4DIR=0x00;
  85. enh;
  86. _NOP();
  87. a=P4DIR=0x00;
  88. _NOP();
  89. enl;
  90. P4DIR=0xff;
  91. return a;
  92. }
  93. void dingshi()
  94. {TACTL=TASSEL_2+TACLR;
  95. CCR0=7999;
  96. CCTL0=CCIE;
  97. TACTL|=MC_1;
  98. P1IE=BIT5;
  99. _EINT();
  100. }

  101. void lcd12864()
  102. {P4DIR=0xff;
  103. delay(5);
  104. writecmd(0x30);
  105. writecmd(0x0f);
  106. writecmd(0x01);
  107. writecmd(0x06);
  108. writecmd(0x80);

  109. }
  110. void main()
  111. {long F;
  112. WDTCTL = WDTPW+WDTHOLD;
  113. clk();
  114. P3OUT=0x00;
  115. P3DIR=BIT0+BIT1+BIT2;
  116. lcd12864();
  117. P1OUT=0x07;
  118. delay(1);
  119. P1DIR=0x1f;
  120. dingshi();
  121. while(1)
  122. if(flag==1)
  123. {_DINT();
  124. _NOP();
  125. TACTL=TASSEL_2+TACLR;
  126. F=f;
  127. f=0;
  128. ag=0;
  129. flag=0;
  130. if(flag1==0)flag2=0;
  131. if(flag1==3)
  132. {flag1=0;
  133. writecmd(0x98);
  134. P1OUT=0x07;
  135. }
  136. if(flag1==2)
  137. {flag1=3;
  138. writecmd(0x88);
  139. P1OUT=0x0f;
  140. }
  141. if(flag1==1)
  142. {flag1=2;
  143. writecmd(0x90);
  144. P1OUT=0x0b;
  145. }
  146. if((flag1==0)&&(flag2==0))
  147. {flag1=1;
  148. flag2=1;
  149. writecmd(0x80);
  150. P1OUT=0x03;
  151. }
  152. a[0]=F%10;
  153. a[1]=F/10%10;
  154. a[2]=F/100%10;
  155. a[3]=F/1000%10;
  156. a[4]=F/10000%10;
  157. writedate(a[4]+48);
  158. writedate(a[3]+48);
  159. writedate(a[2]+48);
  160. writedate(a[1]+48);
  161. writedate(a[0]+48);
  162. TACTL|=MC_1;
  163. _EINT();
  164. }

  165. }
  166. #pragma vector=PORT1_VECTOR
  167. __interrupt void port()
  168. {f++;
  169. P1IFG=0x00;
  170. }
  171. #pragma vector=TIMERA0_VECTOR
  172. __interrupt void timer0()
  173. {ag++;
  174. if(ag==20)flag=1;
  175. }
复制代码
回复

使用道具 举报

ID:398545 发表于 2018-9-28 19:13 | 显示全部楼层
求问 我的CCS运行的时候显示IO430.h头文件打不开。怎么回事啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表