欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機驅(qū)動ASD7843觸摸屏控制芯片C語言程序 [打印本頁]

作者: xueren    時間: 2013-7-19 02:16
標題: 51單片機驅(qū)動ASD7843觸摸屏控制芯片C語言程序
8051單片機驅(qū)動ADS7846/ADS7843芯片,ADS7846/7843芯片 適合用在4線制觸摸屏,它通過標準SPI協(xié)議和CPU通信,操作簡單,精度高,當觸摸屏被按下時(即有觸摸事件發(fā)生)則ADS7846向CPU發(fā)中斷請求,CPU接到請求后,應(yīng)延時一下再響應(yīng)其請求,目的是為了消除抖動使得采樣更準確。如果一次采樣不準確。
  1. #include "reg51.h"
  2. #include "intrins.h"


  3. sbit DCLK=P1^6;
  4. sbit CS=P2^2;
  5. sbit DIN=P2^3;
  6. sbit DOUT=P2^4;
  7. sbit BUSY=P2^5;

  8. delay(unsigned char i--)
  9. {
  10. while(i--);
  11. }


  12. void start() //SPI開始
  13. {
  14. DCLK=0;
  15. CS=1;
  16. DIN=1;
  17. DCLK=1;
  18. CS=0;
  19. }

  20. WriteCharTo7843(unsigned char num) //SPI寫數(shù)據(jù)
  21. {
  22. unsigned char count=0;
  23. DCLK=0;
  24. for(count=0;count<8;count++)
  25. {
  26. num<<=1;
  27. DIN=CY;
  28. DCLK=0; _nop_();_nop_();_nop_(); //上升沿有效
  29. DCLK=1; _nop_();_nop_();_nop_();
  30. }
  31. }


  32. ReadFromCharFrom7843() //SPI 讀數(shù)據(jù)
  33. {
  34. unsigned char count=0;
  35. unsigned int Num=0;
  36. for(count=0;count<12;count++)
  37. {
  38. Num<<=1;
  39. DCLK=1; _nop_();_nop_();_nop_(); //下降沿有效
  40. DCLK=0; _nop_();_nop_();_nop_();
  41. if(DOUT) Num++;
  42. }
  43. return(Num);
  44. }

  45. void ZhongDuan() interrupt 0 //外部中斷0 用來接受鍵盤發(fā)來的數(shù)據(jù)
  46. {
  47. unsigned int X=0,Y=0;
  48. delay(10000); //中斷后延時以消除抖動,使得采樣數(shù)據(jù)更準確
  49. start(); //啟動SPI
  50. // while(BUSY); //如果BUSY信號不好使可以刪除不用
  51. delay(2);
  52. WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式讀X坐標 詳細請見有關(guān)資料
  53. // while(BUSY); //如果BUSY信號不好使可以刪除不用
  54. delay(2);
  55. DCLK=1; _nop_();_nop_();_nop_();_nop_();
  56. DCLK=0; _nop_();_nop_();_nop_();_nop_();
  57. X=ReadFromCharFrom7843();
  58. WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式讀Y坐標 詳細請見有關(guān)資料
  59. DCLK=1; _nop_();_nop_();_nop_();_nop_();
  60. DCLK=0; _nop_();_nop_();_nop_();_nop_();
  61. Y=ReadFromCharFrom7843();
  62. CS=1;
  63. }


  64. main()
  65. {
  66. TMOD=0x11; // 記數(shù)器0 計數(shù)器1 都以 16 位 記數(shù)
  67. TCON=0x00;
  68. IE=0x83; //1000 0001 EA=1中斷允許,
  69. IP=0x01;
  70. while(1);
  71. }
復(fù)制代碼

作者: 心吧2012    時間: 2015-6-6 10:35

作者: 心吧2012    時間: 2015-6-6 10:41





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1