找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: zjjhtony
打印 上一主题 下一主题
收起左侧

PIC16F877A的AD转换,PWM输出,lcd1602显示仿真例子

  [复制链接]
41#
ID:159270 发表于 2017-1-2 22:23 | 只看该作者
zjjhtony 发表于 2017-1-2 18:10
这个估计是你的编译器的问题,我使用的是mplab V8.7版本的。

版主:我用的是mplab IDE V8.91版本,PICC V8.05版,编译其它程序可以的
回复

使用道具 举报

42#
ID:159601 发表于 2017-1-3 14:38 | 只看该作者
很实用啊啊啊啊
回复

使用道具 举报

43#
ID:161115 发表于 2017-1-10 14:14 | 只看该作者
真的是一个不错的学习例子,支持楼主
回复

使用道具 举报

44#
ID:162067 发表于 2017-2-5 16:49 | 只看该作者
谢谢楼主
回复

使用道具 举报

45#
ID:170103 发表于 2017-3-18 09:49 | 只看该作者
楼主这个真是我需要学习的资料啊
回复

使用道具 举报

46#
ID:170103 发表于 2017-3-18 09:50 | 只看该作者
楼主的资料真的是帮我了大忙
回复

使用道具 举报

47#
ID:159112 发表于 2017-3-19 09:51 | 只看该作者
好东西,值得学习。
回复

使用道具 举报

48#
ID:186630 发表于 2017-4-27 16:06 | 只看该作者
好东西,参考一下
回复

使用道具 举报

49#
ID:183735 发表于 2017-7-1 14:15 | 只看该作者
东西值得去认真看
回复

使用道具 举报

50#
ID:94088 发表于 2017-11-10 13:16 | 只看该作者
感谢分享!!!
回复

使用道具 举报

51#
ID:71549 发表于 2017-11-25 17:53 | 只看该作者

不错  楼主辛苦
回复

使用道具 举报

52#
ID:269685 发表于 2018-1-1 11:43 | 只看该作者
没有lcd1602
回复

使用道具 举报

53#
ID:209855 发表于 2018-1-12 13:30 | 只看该作者
急需看1602的代码,我的就是不显示,只有背光。
回复

使用道具 举报

54#
ID:322187 发表于 2018-5-4 16:29 | 只看该作者
学习学习,感谢分享
回复

使用道具 举报

55#
ID:302666 发表于 2018-6-1 03:18 | 只看该作者
有个例程参考,好多了
回复

使用道具 举报

56#
ID:213175 发表于 2018-11-12 20:25 | 只看该作者
感谢分享
回复

使用道具 举报

57#
ID:154187 发表于 2019-1-22 09:57 | 只看该作者
仿真没有找到lcd1602啊
回复

使用道具 举报

58#
ID:103421 发表于 2019-9-3 16:08 | 只看该作者
不错,下来学习。
回复

使用道具 举报

59#
ID:713781 发表于 2020-4-8 15:12 | 只看该作者
我下载出来的电路图和上面的电路图不一样啊,只有我这样吗
回复

使用道具 举报

60#
ID:625711 发表于 2021-9-1 15:53 | 只看该作者
谢谢分享!!!可以很好的学习下AD!
回复

使用道具 举报

61#
ID:387687 发表于 2021-9-5 21:45 | 只看该作者
好程序,学习了。
回复

使用道具 举报

62#
ID:960452 发表于 2021-9-13 16:43 | 只看该作者
求教楼主,我想同时检测电压 电流该怎么改进程序?
回复

使用道具 举报

63#
ID:61632 发表于 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. }
复制代码

能帮我看看这个程序问题出在哪里吗
回复

使用道具 举报

64#
ID:18297 发表于 2022-2-12 09:04 | 只看该作者
请讲述你的问题,你的功能要求。
回复

使用道具 举报

65#
ID:609145 发表于 2022-7-11 11:10 | 只看该作者
非常不错 值得学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表