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

QQ登錄

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

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

怎么用單片機(jī)定時(shí)器給adc0809提供時(shí)鐘?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
我用51單片機(jī)定時(shí)器的模式1給adc0809提供時(shí)鐘,因?yàn)閍dc0809需要500kHZ,所以2us中斷一次,我寫(xiě)的是一個(gè)用adc0809采集電壓后送給51,然后用lcd1602顯示的程序,但寫(xiě)了時(shí)鐘的中斷后lcd就不正常顯示了

是不是因?yàn)橹袛嗵l繁所以程序難以往下進(jìn)行?那給adc0809提供時(shí)鐘的程序該怎么寫(xiě)?
  1. #include"reg52.h"
  2. #include"intrins.h"

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit rs=P3^0;
  6. sbit wr=P3^1;
  7. sbit lcde=P3^2;


  8. sbit st=P2^0;
  9. sbit eoc=P2^1;
  10. sbit oe=P2^2;
  11. sbit clock=P2^3;

  12. uchar dat=0;
  13. *************************************
  14. 延時(shí)函數(shù)
  15. ******************************
  16. void delay2ms(void)  
  17. {
  18.     unsigned char a,b;
  19.     for(b=4;b>0;b--)
  20.         for(a=248;a>0;a--);
  21.     _nop_();  
  22. }
  23. ***************************************
  24. lcd寫(xiě)命令函數(shù)
  25. ****************************************
  26. void lcd_write_com(uchar a)
  27. {
  28.       
  29.       
  30.         rs=0;
  31.         wr=0;
  32.         P1=a;
  33.         delay2ms();
  34.         lcde=0;
  35.         lcde=1;
  36. }
  37. ************************************
  38. lcd寫(xiě)數(shù)據(jù)函數(shù)
  39. *************************************
  40. void lcd_write_dat(uchar a)
  41. {
  42.         rs=1;
  43.         wr=0;
  44.         P1=a;
  45.         delay2ms();
  46.         lcde=0;
  47.         lcde=1;
  48. }
  49. **************************************
  50. lcd寫(xiě)字符串函數(shù)
  51. *****************************************

  52. void lcd_write_str(char *s)
  53. {
  54.         while(*s!='\0')
  55.         {
  56.                 lcd_write_dat(*s);
  57.                 delay2ms();
  58.                 s++;
  59.         }
  60. }
  61. *******************************
  62. 初始化定時(shí)器和lcd
  63. *********************************
  64. void init()
  65. {
  66.         lcd_write_com(0x38);
  67.         lcd_write_com(0x0c);
  68.         lcd_write_com(0x06);
  69.         lcd_write_com(0x01);
  70.       

  71.     TMOD = 0x02;
  72.     TH0 = 0x14;
  73.     TL0 = 0x00;
  74.     EA = 1;
  75.     ET0 = 1;
  76.     TR0 = 1;

  77.       
  78. }
  79. *********************************************
  80. 定時(shí)器中斷
  81. *******************************************
  82. void Timer0Interrupt(void) interrupt 1
  83. {

  84.           clock=~clock;

  85. }
  86. ********************************************
  87. 顯示函數(shù)
  88. ***********************************************
  89. void display(uchar dat)
  90. {
  91.         uchar voltage;
  92.       
  93.         voltage=dat;
  94.         voltage=voltage/51;
  95.       
  96.         lcd_write_com(0x01);
  97.   lcd_write_str("voltage:");
  98.         lcd_write_dat(voltage+0x30);
  99. }
  100. **************************************
  101. 主函數(shù)
  102. *****************************
  103. void main()
  104. {
  105.         init();
  106.       
  107.         P3=0x3f;//í¨μà1
  108.       
  109.         while(1)
  110.         {
  111.           st=0;
  112.                 st=1;
  113.                 st=0;
  114.                 while(eoc==0);
  115.                 oe=1;
  116.                 dat=P1;
  117.                 display(dat);
  118.                 oe=0;
  119.         }
  120. }
復(fù)制代碼



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

使用道具 舉報(bào)

沙發(fā)
ID:347721 發(fā)表于 2018-9-15 19:44 | 只看該作者
寫(xiě)錯(cuò)了,定時(shí)器用的是模式2
回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2018-9-15 21:39 | 只看該作者
本帖最后由 zl2168 于 2018-9-18 22:24 編輯

實(shí)例81  ADC0808中斷方式A-D(ALE輸出CLK)
Proteus仿真一下,確認(rèn)有效。
實(shí)例81 ADC0808A-D( ALE輸出CLK,中斷方式).rar (54.32 KB, 下載次數(shù): 28)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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