標(biāo)題: PIC16F877A的AD轉(zhuǎn)換,PWM輸出,lcd1602顯示仿真例子 [打印本頁]

作者: zjjhtony    時(shí)間: 2013-12-11 15:20
標(biāo)題: PIC16F877A的AD轉(zhuǎn)換,PWM輸出,lcd1602顯示仿真例子
1、AD轉(zhuǎn)換
2、PWM輸出
3、AD輸入的比例控制PWM的占空比。
4、lcd1602顯示AD測試值,PWM輸出占空比
5、全文注釋
6、proteus仿真圖。
頂一下,謝謝

圖.jpg (168.02 KB, 下載次數(shù): 752)

圖.jpg

picad.7z

209.59 KB, 下載次數(shù): 1019, 下載積分: 黑幣 -5


作者: zjjhtony    時(shí)間: 2013-12-12 09:47
有具體要求嗎?使用什么芯片,DS1302嗎?
作者: admin    時(shí)間: 2013-12-14 15:32
好程序
作者: zjjhtony    時(shí)間: 2013-12-14 15:44
{:soso_e113:},謝謝!
作者: 3lian    時(shí)間: 2014-3-7 15:45
好東西啊 幫了我的大忙
作者: 新手兜兜    時(shí)間: 2014-3-7 18:50
樓主 好東西啊
作者: ronghaibin    時(shí)間: 2014-4-2 11:45
太好了,學(xué)習(xí)一下
作者: yx_d    時(shí)間: 2014-6-14 18:14
學(xué)習(xí)了,支持樓主!
作者: lq3698    時(shí)間: 2014-9-6 20:45
沒M了,可憐了,下不了
作者: daqiche    時(shí)間: 2014-9-23 05:45
下載了,謝謝分享!
作者: lising    時(shí)間: 2014-10-10 15:49
不錯(cuò),下來學(xué)習(xí)。
作者: ronghongmcu    時(shí)間: 2014-10-27 23:27
好東西
作者: wujianguo    時(shí)間: 2014-11-25 16:06
樓主,能幫我寫個(gè)AD程序嗎?是交流電壓采集的
作者: zjjhtony    時(shí)間: 2014-11-25 19:10
可以QQ聯(lián)系。
作者: wujianguo123    時(shí)間: 2014-12-1 13:53
zjjhtony 發(fā)表于 2014-11-25 19:10
可以QQ聯(lián)系。

你QQ是多少
作者: wujianguo123    時(shí)間: 2014-12-1 13:57
你的這個(gè)程序挺好,我試著在你的基礎(chǔ)上改了改,但有地方不是很清楚,希望能賜教下
作者: 月關(guān)    時(shí)間: 2014-12-4 15:55
不錯(cuò)  樓主辛苦
作者: lu2013    時(shí)間: 2014-12-23 08:37
學(xué)習(xí)學(xué)習(xí)
作者: showmeeh    時(shí)間: 2014-12-30 16:29
太好了,學(xué)習(xí)一下
作者: dege    時(shí)間: 2015-1-20 14:18
學(xué)習(xí)一下
作者: YANFEIYUN    時(shí)間: 2015-1-23 22:22
下了 ,先學(xué)習(xí)下
作者: khuohuo    時(shí)間: 2015-3-25 10:58
下了 ,先學(xué)習(xí)下
作者: bg6iim    時(shí)間: 2015-4-27 22:18
下了 ,先學(xué)習(xí)下
作者: 一樣123    時(shí)間: 2015-5-7 19:48
黑幣哪里看
作者: skyxunlinfu    時(shí)間: 2015-6-6 16:27
仿真和發(fā)表的圖片不符,不知道怎么還有這么多人說好。
作者: standgo    時(shí)間: 2015-6-8 18:31
樓主,你好。我看了你的程序,里面A/D轉(zhuǎn)換時(shí)鐘選擇的是二分頻,而外部晶振是4M,可以得出A/D轉(zhuǎn)換一位所需時(shí)間TAD=2M,即0.5us,已經(jīng)超出了A/D轉(zhuǎn)換一位所必需的最低時(shí)間1.6us。所以本人覺得您的程序設(shè)計(jì)的不是很合理。謝謝!
作者: 戴風(fēng)海    時(shí)間: 2015-7-5 21:11
standgo 發(fā)表于 2015-6-8 18:31
樓主,你好。我看了你的程序,里面A/D轉(zhuǎn)換時(shí)鐘選擇的是二分頻,而外部晶振是4M,可以得出A/D轉(zhuǎn)換一位所需時(shí) ...

謝謝分享。。。!
作者: ldfd25    時(shí)間: 2015-8-14 20:02
這個(gè)必須頂,…………………………
作者: waerdeng    時(shí)間: 2015-9-22 08:19
感謝樓主分享,這對剛?cè)腴T的人幫助會很大!
作者: 花海里n    時(shí)間: 2015-9-23 17:02
這是神馬東西,lcd在哪都看不見,差評
作者: wangwo    時(shí)間: 2015-12-29 12:19
樓主發(fā)帖辛苦了,謝謝分享。。。。。。!
作者: lsx435372    時(shí)間: 2016-1-22 16:15
感謝樓主分享!。。。。。。。。
作者: f763    時(shí)間: 2016-2-10 23:42
學(xué)習(xí)了。!謝謝。
作者: 落花輕舞    時(shí)間: 2016-8-2 11:50
學(xué)習(xí)了!非常感謝
作者: 低調(diào)的lst    時(shí)間: 2016-9-13 17:11
仿真還得重新加?xùn)|西?
作者: benben913    時(shí)間: 2016-9-19 17:36
學(xué)習(xí)學(xué)習(xí)。。。
作者: bg7nr    時(shí)間: 2017-1-1 22:48
剛剛試了下,1602LCD沒有顯示,不知啥問題
作者: bg7nr    時(shí)間: 2017-1-1 22:56
Clean: Deleting intermediary and output files.
Clean: Deleted file "E:\pic\picad\main.cce".
Clean: Done.
Executing: "C:\HT-PIC\BIN\PICC.EXE" -C -E"main.cce" "main.c" -O"main.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A

This compiler will expire in 19 days
Compiler operating in demo mode.
Some command line options are disabled and compilation is delayed.
Register this compiler to enable these options.

Warning[000] E:\pic\picad\sys.h 9 : Missing newline
Warning[000] E:\pic\picad\main.c 125 : Missing newline
Error[000] E:\pic\picad\main.c 17 : undefined identifier: GO
Warning[000] E:\pic\picad\main.c 124 : line does not have a newline on the end
Halting build on first failure as requested.
BUILD FAILED: Sun Jan 01 22:46:01 2017
作者: bg7nr    時(shí)間: 2017-1-1 22:57
編譯出現(xiàn)這樣的故障代碼,菜鳥請教
作者: zjjhtony    時(shí)間: 2017-1-2 18:10
這個(gè)估計(jì)是你的編譯器的問題,我使用的是mplab V8.7版本的。

作者: bg7nr    時(shí)間: 2017-1-2 22:23
zjjhtony 發(fā)表于 2017-1-2 18:10
這個(gè)估計(jì)是你的編譯器的問題,我使用的是mplab V8.7版本的。

版主:我用的是mplab IDE V8.91版本,PICC V8.05版,編譯其它程序可以的
作者: 1877684916    時(shí)間: 2017-1-3 14:38
很實(shí)用啊啊啊啊
作者: baishifanzon    時(shí)間: 2017-1-10 14:14
真的是一個(gè)不錯(cuò)的學(xué)習(xí)例子,支持樓主
作者: 吹吹風(fēng)    時(shí)間: 2017-2-5 16:49
謝謝樓主
作者: wym3515400    時(shí)間: 2017-3-18 09:49
樓主這個(gè)真是我需要學(xué)習(xí)的資料啊
作者: wym3515400    時(shí)間: 2017-3-18 09:50
樓主的資料真的是幫我了大忙
作者: 2916245357    時(shí)間: 2017-3-19 09:51
好東西,值得學(xué)習(xí)。
作者: wuyaning1211    時(shí)間: 2017-4-27 16:06
好東西,參考一下
作者: qxh    時(shí)間: 2017-7-1 14:15
東西值得去認(rèn)真看
作者: pinkama    時(shí)間: 2017-11-10 13:16
感謝分享。!
作者: jms208    時(shí)間: 2017-11-25 17:53

不錯(cuò)  樓主辛苦
作者: CSHJJY    時(shí)間: 2018-1-1 11:43
沒有l(wèi)cd1602
作者: JLennon    時(shí)間: 2018-1-12 13:30
急需看1602的代碼,我的就是不顯示,只有背光。
作者: Tony1996    時(shí)間: 2018-5-4 16:29
學(xué)習(xí)學(xué)習(xí),感謝分享
作者: slim443    時(shí)間: 2018-6-1 03:18
有個(gè)例程參考,好多了
作者: 務(wù)真求實(shí)    時(shí)間: 2018-11-12 20:25
感謝分享
作者: 夜話港樂_    時(shí)間: 2019-1-22 09:57
仿真沒有找到lcd1602啊

作者: adccadcc    時(shí)間: 2019-9-3 16:08
不錯(cuò),下來學(xué)習(xí)。
作者: 125844584    時(shí)間: 2020-4-8 15:12
我下載出來的電路圖和上面的電路圖不一樣啊,只有我這樣嗎
作者: hq0573    時(shí)間: 2021-9-1 15:53
謝謝分享。。】梢院芎玫膶W(xué)習(xí)下AD!
作者: xjj850205    時(shí)間: 2021-9-5 21:45
好程序,學(xué)習(xí)了。
作者: ZLKJeng    時(shí)間: 2021-9-13 16:43
求教樓主,我想同時(shí)檢測電壓 電流該怎么改進(jìn)程序?
作者: seaup2011    時(shí)間: 2021-12-2 16:06
  1. #include <pic.h>
  2. #include <math.h>
  3. //#include <myfuncs1.h>
  4. //#include <seg74.h>
  5. #include <htc.h>
  6. #define SEG_BITSEL_PORT PORTD                   //位選端口
  7. #define SEG_BITSEL_PORT_DIR TRISD               //位選端口的方向寄存器
  8. #define SEG_FONT_PORT PORTC                     //字形輸出端口
  9. #define SEG_FONT_PORT_DIR TRISC                 //字形輸出端口的方向寄存器
  10. #define DLY_MS 67
  11. const char Seg7TableN[]={0b11000000,0b11111001,0b10100100,0b10110000,0b10011001,0b10010010,0b10000010,0b11111000,0b10000000,0b10010000};

  12. //__CONFIG(FOSC_HS & WDTE_ON & PWRTE_OFF & BOREN_ON & LVP_ON & CPD_OFF & WRT_OFF & CP_OFF);
  13. //__CONFIG (XT & WDTDIS & LVPDIS);
  14. unsigned int g_ADRTable[12] = {0,0,0,0,0,0,0,0,0,0,0 };
  15. unsigned char g_Count=0;
  16. bit OverFlag = 0;//12位轉(zhuǎn)換次數(shù)完成標(biāo)志位清零;
  17. void delayms (int ms);
  18. void DisplayData (unsigned int iData);
  19. void interrupt ISR (void)
  20. {
  21.     if ( ADIE && ADIF  )
  22.     {
  23.        ADIF = 0;
  24.        g_ADRTable[g_Count]=(((unsigned int)ADRESH)<<8)+ADRESL;
  25.        g_Count++;
  26.        if(g_Count==12)
  27.        {
  28.            g_Count =0;
  29.            OverFlag=1;//
  30.        }
  31.        else
  32.        {
  33.            GO_DONE = 1;//啟動AD
  34.        }      
  35.     }
  36.     else
  37.        {
  38.            while(1);
  39.        }
  40. }
  41. void main(void)
  42. {
  43.     //void  DisplayData();
  44.     char i=0,j=0;
  45.     int tmp = 0;//
  46.     int adc_v = 0;
  47.     TRISA0 = 1;
  48.     SEG_BITSEL_PORT_DIR = 0;//位選端口的方向寄存器,確定輸出端口
  49.     SEG_FONT_PORT_DIR = 0;//字形輸出端口的方向寄存器,確定輸出端口
  50.     ADFM = 1;
  51.     PCFG3:PCFG0 = 0000;
  52.     ADCON0 = 0B11000001;
  53.     ADIE = 1;
  54.     ADIF = 0;
  55.     PEIE = 1;
  56.     GIE = 1;
  57.     for(i=0;i<15;i++)
  58.     {
  59.         ;
  60.     }
  61.     GO_DONE = 1;
  62.     while(GO_DONE)
  63.     {
  64.         if(OverFlag==1)
  65.         {
  66.             for(i=0;i<12;i++)//冒泡法排序
  67.             {
  68.                 for(j=i+1;j<12;j++)
  69.                 {
  70.                     if(g_ADRTable[i] > g_ADRTable[j])
  71.                     {
  72.                         tmp = g_ADRTable[i];
  73.                         g_ADRTable[i] = g_ADRTable[j];
  74.                         g_ADRTable[j] = tmp;
  75.                     }
  76.                 }   
  77.             }
  78.         tmp = 0;
  79.         for(i=2;i<10;i++)
  80.         {
  81.             tmp = tmp + g_ADRTable[i];            
  82.         }
  83.         tmp = tmp >>3;//將數(shù)按照 2進(jìn)制像右移動.每向右移動一位,相當(dāng)于 除2的n次冪
  84.         adc_v = tmp;
  85.         adc_v = ((long)adc_v*5000/1023);
  86.         OverFlag = 0;
  87.         GO_DONE = 1;
  88.         }
  89.         DisplayData(adc_v);
  90.     }
  91. }
  92. void DisplayData (unsigned int iData )
  93. {
  94.     char i=0,j=0;//
  95.     char k = 0,NumStr[ 5 ]={0,0,0,0,0};
  96.     NumStr[1]=iData / 1000;//取整
  97.     NumStr[2]=iData % 1000/100;
  98.     NumStr[3]=iData % 100/10;
  99.     NumStr[4]=iData % 10;
  100.     for(i=0;i<10;i++)
  101.     {
  102.         SEG_BITSEL_PORT = k =0X01;
  103.         for(j=0;j<=4;j++)
  104.         {
  105.             SEG_BITSEL_PORT = k;
  106.             if(j==1)
  107.             {
  108.                 SEG_FONT_PORT = Seg7TableN[NumStr[j]]&0b01111111;         
  109.             }
  110.             else
  111.             {
  112.                 SEG_FONT_PORT = Seg7TableN[NumStr[j]];
  113.                
  114.             }
  115.             delayms(5);
  116.             k = k <<1;//把1向左移1為顯示
  117.         }
  118.     }
  119. }
  120. void delayms (int ms)
  121. {
  122.     int i=0,j =0;
  123.     for(i=0;i < ms;i++)
  124.         for(j =0; j < DLY_MS;j++)
  125.         {;}
  126. }
復(fù)制代碼

能幫我看看這個(gè)程序問題出在哪里嗎
作者: zjjhtony    時(shí)間: 2022-2-12 09:04
請講述你的問題,你的功能要求。
作者: a2458424    時(shí)間: 2022-7-11 11:10
非常不錯(cuò) 值得學(xué)習(xí)。
作者: gejun    時(shí)間: 2025-4-6 14:22
OK,很有用!




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