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

QQ登錄

只需一步,快速開始

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

STC12C5A60S2片內(nèi)AD4路模擬輸入循環(huán)顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:79544 發(fā)表于 2015-11-16 14:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
效果圖詳見(jiàn):http://www.torrancerestoration.com/bbs/dpj-40455-1.html

  1. /**********************************************************
  2.         功能  :STC12C5A60S2片內(nèi)4路AD循環(huán)檢測(cè)并數(shù)碼管顯示
  3.                         大數(shù)碼管實(shí)驗(yàn)板 約2秒循環(huán)顯示一次。P1^0-P1^3口
  4.                         模擬輸入的值
  5.         單片機(jī):STC12C5A60S2
  6.         晶振  :11.0592M
  7.         作者  :蘇義江
  8.         時(shí)間  ;2015-11-16
  9.         
  10. ********************************************************/
  11. #include<stc12c5a60s2.h>
  12. #include<intrins.h>
  13. #define uint8 unsigned char
  14. #define uint16 unsigned int
  15. //帶小數(shù)點(diǎn)的共陽(yáng)段碼
  16. uint8 code tab_d[]={0x40,0x79,0x24,0x30,0x19,0x12,
  17. 0x02,0x78,0x00,0x10}; //帶點(diǎn)共陽(yáng)段驅(qū)動(dòng)
  18. //不帶小數(shù)點(diǎn)的共陽(yáng)段碼
  19. uint8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,               
  20.                                 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  21. //sfr P1ASF=0x9d;           
  22. //sfr ADC_CONTR=0xbc;
  23. //sfr ADC_RES  =0xbd;
  24. //sfr ADC_RESL =0xbe;
  25. sbit wei=P0^6;
  26. sbit duan=P0^7;
  27. uint8 datah0=0;
  28. uint8 datah1=0;
  29. uint8 datah2=0;
  30. uint8 datah3=0;
  31. uint8 tab[4];

  32. void delayms(uint16 z)
  33. {
  34.         uint16 x,y;
  35.         for(x=z;x>0;x--)
  36.         for(y=620;y>0;y--);
  37. }
  38. void ADC_Init0(void)
  39. {
  40.         P1ASF=0x0F;//P1.0,P1.1,P1.2,P1.3口作為模擬功能AD使用。
  41.         ADC_CONTR=0X80;//打開ADC轉(zhuǎn)換電源,540個(gè)周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD轉(zhuǎn)換控制位初始化為0,選擇P1.0作為AD輸入來(lái)用。

  42.         ADC_RES =0;
  43.         ADC_RESL =0;
  44. }
  45. void ADC_Init1(void)
  46. {
  47.         ADC_CONTR=0X81;//打開ADC轉(zhuǎn)換電源,540個(gè)周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD轉(zhuǎn)換控制位初始化為0,選擇P1.1作為AD輸入來(lái)用。
  48. }
  49. void ADC_Init2(void)
  50. {
  51.         ADC_CONTR=0X82;
  52. }
  53. void ADC_Init3(void)
  54. {
  55.         ADC_CONTR=0X83;
  56. }
  57. void display(uint8 num)
  58. {
  59.         uint8 hundred,ten,one;
  60.         float a;
  61.         int        b;
  62.         a=ADC_RES;
  63.         a=(ADC_RES+0.05)/55; //調(diào)節(jié)/后面的數(shù)值調(diào)節(jié)精度
  64. //        a=(num+0.005)/51;
  65.         a=a*100;
  66.         b=a;
  67.         hundred=b/100;
  68.         ten=b%100/10;
  69.         one=b%10;
  70.         wei=1;
  71.         P2=0XFE;
  72.         wei=0;
  73.         duan=1;
  74.         P2=tab_d[hundred];
  75.         duan=0;
  76.         delayms(10);
  77.         P2=0xff;

  78.         wei=1;
  79.         P2=0XFd;
  80.         wei=0;
  81.         duan=1;
  82.         P2=table[ten];
  83.         duan=0;
  84.         delayms(10);
  85.         P2=0xff;

  86.         wei=1;
  87.         P2=0XFb;
  88.         wei=0;
  89.         duan=1;
  90.         P2=table[one];
  91.         duan=0;
  92.         delayms(10);
  93.         P2=0xff;
  94.         
  95. }
  96. void main()
  97. {        
  98.         uint8 i;
  99.     ADC_Init0();
  100.     ADC_Init1();
  101.         ADC_Init2();
  102.     ADC_Init3();
  103.         while(1)
  104.         {
  105.                 ADC_CONTR=0X80;
  106.                 _nop_();
  107.                 _nop_();
  108.                 _nop_();
  109.                 _nop_();
  110.                 datah0=ADC_RES;
  111.         
  112.         /***************************/
  113.                 ADC_CONTR=0X81;
  114.                 _nop_();
  115.                 _nop_();
  116.                 _nop_();
  117.                 _nop_();
  118.                 datah1=ADC_RES;
  119.                 ADC_CONTR=0X82;
  120.                 _nop_();
  121.                 _nop_();
  122.                 _nop_();
  123.                 _nop_();
  124.                 datah2=ADC_RES;
  125.                 ADC_CONTR=0X83;
  126.                 _nop_();
  127.                 _nop_();
  128.                 _nop_();
  129.                 _nop_();
  130.                 datah3=ADC_RES;
  131.                 ADC_CONTR=0X88;//打開ADC轉(zhuǎn)換電源,540個(gè)周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD開始轉(zhuǎn)換,選擇P1.0作為AD輸入來(lái)用。
  132.                 _nop_();
  133.                 _nop_();
  134.                 _nop_();
  135.                 _nop_();/*以上是四個(gè)時(shí)鐘延時(shí)*/
  136.                 for(i=0;i<50;i++)
  137.                 {
  138.                         display(table[datah0]);
  139.                         delayms(5);        
  140.                 }
  141.                 delayms(2000);
  142.                 //          R_S_Byte(datah0);
  143.                 tab[0]=datah0;
  144.                 ADC_CONTR=0X89;//打開ADC轉(zhuǎn)換電源,540個(gè)周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD開始轉(zhuǎn)換,選擇P1.1作為AD輸入來(lái)用。
  145.                 _nop_();
  146.                 _nop_();
  147.                 _nop_();
  148.                 _nop_();
  149.                 /*以上是四個(gè)時(shí)鐘延時(shí)*/
  150.                 for(i=0;i<50;i++)
  151.                 {
  152.                         display(table[datah1]);
  153.                         delayms(5);        
  154.                 }
  155.                 delayms(2000);
  156.         
  157.                 //           R_S_Byte(datah1);
  158.                 tab[1]=datah1;
  159.                 ADC_CONTR=0X8A;
  160.                 _nop_();
  161.                 _nop_();
  162.                 _nop_();
  163.                 _nop_();
  164.                 for(i=0;i<50;i++)
  165.                 {
  166.                         display(table[datah2]);
  167.                         delayms(5);        
  168.                 }
  169.                 delayms(2000);
  170.         
  171.                 //          R_S_Byte(datah2);
  172.                 tab[2]=datah2;
  173.                 ADC_CONTR=0X8B;
  174.                 _nop_();
  175.                 _nop_();
  176.                 _nop_();
  177.                 _nop_();
  178.                 for(i=0;i<50;i++)
  179.                 {
  180.                         display(table[datah3]);
  181.                         delayms(5);        
  182.                 }
  183.                 delayms(2000);
  184.         
  185.                 //          R_S_Byte(datah3);
  186.                 tab[3]=datah3;         
  187.         }
  188. }

復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:279399 發(fā)表于 2018-1-24 18:34 | 只看該作者
#include<stc12c5a60s2.h> 這個(gè)文件在哪里找到?怎么添加?
回復(fù)

使用道具 舉報(bào)

板凳
ID:108715 發(fā)表于 2018-1-25 16:36 來(lái)自觸屏版 | 只看該作者
22131 發(fā)表于 2018-1-24 18:34
#include 這個(gè)文件在哪里找到?怎么添加?

去STC官網(wǎng),下載新版isp軟件,里面有頭文件的,輸出.h文件后放入stc安裝文件放頭文件的文件夾里。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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