找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5895|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)驅(qū)動(dòng)ASD7843觸摸屏控制芯片C語(yǔ)言程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51773 發(fā)表于 2013-7-19 02:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
8051單片機(jī)驅(qū)動(dòng)ADS7846/ADS7843芯片,ADS7846/7843芯片 適合用在4線制觸摸屏,它通過(guò)標(biāo)準(zhǔn)SPI協(xié)議和CPU通信,操作簡(jiǎn)單,精度高,當(dāng)觸摸屏被按下時(shí)(即有觸摸事件發(fā)生)則ADS7846向CPU發(fā)中斷請(qǐng)求,CPU接到請(qǐng)求后,應(yīng)延時(shí)一下再響應(yīng)其請(qǐng)求,目的是為了消除抖動(dòng)使得采樣更準(zhǔn)確。如果一次采樣不準(zhǔn)確。
  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開(kāi)始
  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 用來(lái)接受鍵盤發(fā)來(lái)的數(shù)據(jù)
  46. {
  47. unsigned int X=0,Y=0;
  48. delay(10000); //中斷后延時(shí)以消除抖動(dòng),使得采樣數(shù)據(jù)更準(zhǔn)確
  49. start(); //啟動(dòng)SPI
  50. // while(BUSY); //如果BUSY信號(hào)不好使可以刪除不用
  51. delay(2);
  52. WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式讀X坐標(biāo) 詳細(xì)請(qǐng)見(jiàn)有關(guān)資料
  53. // while(BUSY); //如果BUSY信號(hào)不好使可以刪除不用
  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坐標(biāo) 詳細(xì)請(qǐng)見(jiàn)有關(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 計(jì)數(shù)器1 都以 16 位 記數(shù)
  67. TCON=0x00;
  68. IE=0x83; //1000 0001 EA=1中斷允許,
  69. IP=0x01;
  70. while(1);
  71. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:29434 發(fā)表于 2015-6-6 10:35 | 只看該作者
回復(fù)

使用道具 舉報(bào)

板凳
ID:29434 發(fā)表于 2015-6-6 10:41 | 只看該作者
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表