久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4946|回復: 1
收起左側

運用51單片機ALE引腳時鐘的ADC0809模數轉換系統Proteus仿真+代碼

[復制鏈接]
ID:524443 發表于 2019-6-5 19:49 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

Proteus仿真圖

Proteus仿真圖


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>

  4. #define uint  unsigned int
  5. #define uchar unsigned char
  6. #define ADC_PORT   P0
  7. #define DATA_PORT  P1

  8. sbit START=P3^6;
  9. sbit OE=P3^7;
  10. sbit AD_ALE=P2^0;
  11. sbit EOC=P3^3;

  12. sbit  LCDRW =  P2^2; //定義LCD引腳
  13. sbit  LCDRS =  P2^3;
  14. sbit  LCDEN  =  P2^1;

  15. sbit CLK = P3^5;

  16. uint dat;

  17. //--------------------------------------------  
  18. //             延時函數
  19. //--------------------------------------------  
  20. void delay_ms(uint t)
  21. {  
  22.     int j;  
  23.     for(;t!=0;t--)  
  24.        for (j=0;j<110;j++);     
  25. }
  26. //--------------------------------------------  
  27. //              寫數據函數  _可用于顯示一個字符
  28. //--------------------------------------------  
  29. void write_data(uint dat)
  30. {  
  31.     LCDRS=1;       //數據  
  32.     DATA_PORT=dat; //把數據總到P口
  33.     delay_ms(1);   //當晶振較高時加延時  
  34.     LCDEN=1;  
  35.     delay_ms(1);   //當晶振較高時加延時  
  36.     LCDEN=0;       //關使能  
  37. }

  38. //--------------------------------------------  
  39. //             寫命令函數 ——可用于定位顯示地址
  40. //--------------------------------------------  
  41. void write_com(uint com)
  42. {  
  43.     LCDRS=0;        //命令
  44.     DATA_PORT=com;  
  45.     delay_ms(1);    //當晶振較高時加延時  
  46.     LCDEN=1;  
  47.     delay_ms(1);    //當晶振較高時加延時
  48.     LCDEN=0;  
  49. }
  50. //--------------------------------------------  
  51. //        1602初始化
  52. //--------------------------------------------  
  53. void lcd_init()
  54. {  
  55.                 LCDEN=0;
  56.     LCDRW=0;  
  57.     LCDRS=0;  
  58.     write_com(0x36);            //set text home address  
  59.     write_com(0x38);
  60.     write_com(0x0c);                   //開顯示,不顯示光標 0x0f為開顯示,開光標   
  61.     write_com(0x06);            //寫一個字符后地址加一  
  62.     write_com(0x01);            //顯示清零,數據指針清零
  63.     write_com(0x80+0);            //定位到,第一行開頭
  64. }
  65. //--------------------------------------------  
  66. //        打印函數——字符串
  67. //--------------------------------------------  
  68. void print_string(uchar* str)
  69. {  
  70.     int i;  
  71.     for(i=0;str[i]!=0;i++)  
  72.     {         
  73.         write_data(str[i]);  
  74.     }  
  75. }
  76. //--------------------------------------------------------------  
  77. //字符串——打印函數,自行定位 x:列  y:行(y=1:第1行:y=2:第2行)
  78. //--------------------------------------------------------------
  79. void print_string_location(uint x,uint y,uchar* str)
  80. {
  81.         int i;          
  82.         if(y==1)                                                          //第1行
  83.         {
  84.                 for(i=0;str[i]!=0;i++)  
  85.             {
  86.                         write_com(0x80+(x++));                  //定位到,第1行 +x        處顯示
  87.                         write_data(str[i]);
  88.                 }
  89.         }
  90.         else if(y==2)                                                  //第2行
  91.         {
  92.                 for(i=0;str[i]!=0;i++)  
  93.             {
  94.                         write_com(0x80+0x40+(x++));   //定位到,第2行 +x 處顯示
  95.                         write_data(str[i]);
  96.                 }
  97.         }           
  98. }
  99. //--------------------------------------------  
  100. //          AD0809初始化-端口3
  101. //--------------------------------------------  
  102. void  Ad0809Init3(void)
  103. {
  104.        
  105.         AD_ALE=0;
  106.         START=1;
  107.         OE=1;
  108.         START=0;delay_ms(5);START=1;
  109.        
  110.         while(EOC==1);
  111.         OE=0;
  112.         dat=ADC_PORT;
  113.         OE=1;
  114. }
  115. void print_data0()
  116. {
  117.   char z[18];
  118.         print_string_location(0,1,"DATA:");         //顯示DATA:字符串
  119.         sprintf((char*)z,"%d ",dat);//合并參數字符串
  120.         print_string_location(0,2,z);             //顯示電阻值
  121. }
  122. void main()
  123. {
  124.         lcd_init();
  125.         while(1)
  126.         {               
  127.                         P0=0xf3;
  128.                         Ad0809Init3();
  129.                         dat=dat*19.60784;
  130.                         print_data0();
  131.         }
  132. }
復制代碼
0.png
所有資料51hei提供下載:
ADC0809.rar (75.01 KB, 下載次數: 96)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:772654 發表于 2020-6-8 11:43 來自觸屏版 | 顯示全部樓層
這個算不算數據采集
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品在线观看 | wwwsihu| 岛国av免费在线观看 | 精品国产区| 欧美精品乱码99久久影院 | 日韩美av| 国产视频福利在线观看 | 国产美女精品视频 | 成年人在线播放 | 草草视频在线免费观看 | 五月天天色 | 黄色精品| 国产a区| 中文字幕一区二区三区不卡 | 成年男女免费视频网站 | www日日日 | 国产1区 | 人人艹人人爽 | 伦理二区 | 一区二区av | 国产九九av | 亚洲欧洲成人av每日更新 | 免费看a | 欧美综合网 | 爱高潮www亚洲精品 中文字幕免费视频 | 久久久成 | 精品国产乱码久久久久久久久 | 久久高清国产视频 | 中文字幕在线一区二区三区 | 超碰欧美 | 一级毛片免费 | 欧美色综合一区二区三区 | 欧美伊人| 久久国产精品无码网站 | 国产欧美在线视频 | 337p日本欧洲亚洲大胆鲁鲁 | 中文字幕精品一区久久久久 | 91九色视频在线 | 欧美久久一区二区三区 | 一级黄色片免费在线观看 | 看一级黄色毛片 |