标题: PIC16F877A的AD转换,PWM输出,lcd1602显示仿真例子 [打印本页]

作者: zjjhtony    时间: 2013-12-11 15:20
标题: PIC16F877A的AD转换,PWM输出,lcd1602显示仿真例子
1、AD转换
2、PWM输出
3、AD输入的比例控制PWM的占空比。
4、lcd1602显示AD测试值,PWM输出占空比
5、全文注释
6、proteus仿真图。
顶一下,谢谢

图.jpg (168.02 KB, 下载次数: 752)

图.jpg

picad.7z

209.59 KB, 下载次数: 1019, 下载积分: 黑币 -5


作者: zjjhtony    时间: 2013-12-12 09:47
有具体要求吗?使用什么芯片,DS1302吗?
作者: admin    时间: 2013-12-14 15:32
好程序
作者: zjjhtony    时间: 2013-12-14 15:44
{:soso_e113:},谢谢!
作者: 3lian    时间: 2014-3-7 15:45
好东西啊 帮了我的大忙
作者: 新手兜兜    时间: 2014-3-7 18:50
楼主 好东西啊
作者: ronghaibin    时间: 2014-4-2 11:45
太好了,学习一下
作者: yx_d    时间: 2014-6-14 18:14
学习了,支持楼主!
作者: lq3698    时间: 2014-9-6 20:45
没M了,可怜了,下不了
作者: daqiche    时间: 2014-9-23 05:45
下载了,谢谢分享!
作者: lising    时间: 2014-10-10 15:49
不错,下来学习。
作者: ronghongmcu    时间: 2014-10-27 23:27
好东西
作者: wujianguo    时间: 2014-11-25 16:06
楼主,能帮我写个AD程序吗?是交流电压采集的
作者: zjjhtony    时间: 2014-11-25 19:10
可以QQ联系。
作者: wujianguo123    时间: 2014-12-1 13:53
zjjhtony 发表于 2014-11-25 19:10
可以QQ联系。

你QQ是多少
作者: wujianguo123    时间: 2014-12-1 13:57
你的这个程序挺好,我试着在你的基础上改了改,但有地方不是很清楚,希望能赐教下
作者: 月关    时间: 2014-12-4 15:55
不错  楼主辛苦
作者: lu2013    时间: 2014-12-23 08:37
学习学习
作者: showmeeh    时间: 2014-12-30 16:29
太好了,学习一下
作者: dege    时间: 2015-1-20 14:18
学习一下
作者: YANFEIYUN    时间: 2015-1-23 22:22
下了 ,先学习下
作者: khuohuo    时间: 2015-3-25 10:58
下了 ,先学习下
作者: bg6iim    时间: 2015-4-27 22:18
下了 ,先学习下
作者: 一样123    时间: 2015-5-7 19:48
黑币哪里看
作者: skyxunlinfu    时间: 2015-6-6 16:27
仿真和发表的图片不符,不知道怎么还有这么多人说好。
作者: standgo    时间: 2015-6-8 18:31
楼主,你好。我看了你的程序,里面A/D转换时钟选择的是二分频,而外部晶振是4M,可以得出A/D转换一位所需时间TAD=2M,即0.5us,已经超出了A/D转换一位所必需的最低时间1.6us。所以本人觉得您的程序设计的不是很合理。谢谢!
作者: 戴风海    时间: 2015-7-5 21:11
standgo 发表于 2015-6-8 18:31
楼主,你好。我看了你的程序,里面A/D转换时钟选择的是二分频,而外部晶振是4M,可以得出A/D转换一位所需时 ...

谢谢分享!!!!!
作者: ldfd25    时间: 2015-8-14 20:02
这个必须顶,…………………………
作者: waerdeng    时间: 2015-9-22 08:19
感谢楼主分享,这对刚入门的人帮助会很大啊!
作者: 花海里n    时间: 2015-9-23 17:02
这是神马东西,lcd在哪都看不见,差评
作者: wangwo    时间: 2015-12-29 12:19
楼主发帖辛苦了,谢谢分享!!!!!!!!
作者: lsx435372    时间: 2016-1-22 16:15
感谢楼主分享!!!!!!!!!!
作者: f763    时间: 2016-2-10 23:42
学习了!!!谢谢!!
作者: 落花轻舞    时间: 2016-8-2 11:50
学习了!非常感谢
作者: 低调的lst    时间: 2016-9-13 17:11
仿真还得重新加东西?
作者: benben913    时间: 2016-9-19 17:36
学习学习。。。
作者: bg7nr    时间: 2017-1-1 22:48
刚刚试了下,1602LCD没有显示,不知啥问题
作者: bg7nr    时间: 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    时间: 2017-1-1 22:57
编译出现这样的故障代码,菜鸟请教
作者: zjjhtony    时间: 2017-1-2 18:10
这个估计是你的编译器的问题,我使用的是mplab V8.7版本的。

作者: bg7nr    时间: 2017-1-2 22:23
zjjhtony 发表于 2017-1-2 18:10
这个估计是你的编译器的问题,我使用的是mplab V8.7版本的。

版主:我用的是mplab IDE V8.91版本,PICC V8.05版,编译其它程序可以的
作者: 1877684916    时间: 2017-1-3 14:38
很实用啊啊啊啊
作者: baishifanzon    时间: 2017-1-10 14:14
真的是一个不错的学习例子,支持楼主
作者: 吹吹风    时间: 2017-2-5 16:49
谢谢楼主
作者: wym3515400    时间: 2017-3-18 09:49
楼主这个真是我需要学习的资料啊
作者: wym3515400    时间: 2017-3-18 09:50
楼主的资料真的是帮我了大忙
作者: 2916245357    时间: 2017-3-19 09:51
好东西,值得学习。
作者: wuyaning1211    时间: 2017-4-27 16:06
好东西,参考一下
作者: qxh    时间: 2017-7-1 14:15
东西值得去认真看
作者: pinkama    时间: 2017-11-10 13:16
感谢分享!!!
作者: jms208    时间: 2017-11-25 17:53

不错  楼主辛苦
作者: CSHJJY    时间: 2018-1-1 11:43
没有lcd1602
作者: JLennon    时间: 2018-1-12 13:30
急需看1602的代码,我的就是不显示,只有背光。
作者: Tony1996    时间: 2018-5-4 16:29
学习学习,感谢分享
作者: slim443    时间: 2018-6-1 03:18
有个例程参考,好多了
作者: 务真求实    时间: 2018-11-12 20:25
感谢分享
作者: 夜话港乐_    时间: 2019-1-22 09:57
仿真没有找到lcd1602啊

作者: adccadcc    时间: 2019-9-3 16:08
不错,下来学习。
作者: 125844584    时间: 2020-4-8 15:12
我下载出来的电路图和上面的电路图不一样啊,只有我这样吗
作者: hq0573    时间: 2021-9-1 15:53
谢谢分享!!!可以很好的学习下AD!
作者: xjj850205    时间: 2021-9-5 21:45
好程序,学习了。
作者: ZLKJeng    时间: 2021-9-13 16:43
求教楼主,我想同时检测电压 电流该怎么改进程序?
作者: seaup2011    时间: 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位转换次数完成标志位清零;
  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;//将数按照 2进制像右移动.每向右移动一位,相当于 除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. }
复制代码

能帮我看看这个程序问题出在哪里吗
作者: zjjhtony    时间: 2022-2-12 09:04
请讲述你的问题,你的功能要求。
作者: a2458424    时间: 2022-7-11 11:10
非常不错 值得学习。
作者: gejun    时间: 2025-4-6 14:22
OK,很有用!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1