标题: 单片机电压表程序 数码管显示 [打印本页]

作者: zxc123qaz    时间: 2016-12-22 15:15
标题: 单片机电压表程序 数码管显示
最近才学的电压表


数字电压表的c语言单片机程序:
  1. #include<reg52.h>
  2. #include"intrins.h"                /*头文件*/
  3. #define uchar unsigned char
  4. #define uint unsigned int           
  5. sbit OE=P2^7;
  6. sbit EOC=P2^6;
  7. sbit START=P2^5;
  8. sbit CLK=P2^4;
  9. sbit CS0=P2^0;
  10. sbit CS1=P2^1;
  11. sbit CS2=P2^2;
  12. sbit CS3=P2^3;                      /*定义变量名*/
  13. uint adval,volt;
  14. uchar tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,     
  15.                            0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  16. void delayms(uint ms)      /*延迟函数*/
  17. {
  18. uchar j;
  19. while(ms--)
  20.   {
  21.     for(j=0;j<120;j++);
  22.   }
  23. }
  24. void ADC_read()       /* adc初始程序 */
  25. {
  26.    START=0;                                 
  27. START=1;
  28. START=0;
  29.    while(EOC==0);                           
  30.    OE=1;
  31.    adval=P1;                                    
  32.    OE=0;
  33. }
  34. void volt_result()
  35. {
  36.     volt=adval*1.96;                  
  37. }
  38. void disp_volt(uint date)            /*led显示程序*/  
  39. {
  40.     CS0=1;CS1=0;CS2=0;CS3=0;            
  41.         P0=~((~tab[date/100])|0x80);            
  42.         delayms(1);
  43.         P0=0xFF;                                       
  44.         CS0=0;CS1=1;CS2=0;CS3=0;            
  45.         P0=tab[date%100/10];
  46.         delayms(1);
  47.         P0=0xFF;                                       
  48.         CS0=0;CS1=0;CS2=1;CS3=0;            
  49.         P0=tab[date%10];
  50.         delayms(1);
  51.         P0=0xFF;                                       
  52.         CS0=0;CS1=0;CS2=0;CS3=1;            
  53.         P0=tab[date%100];
  54.         delayms(1);
  55.         P0=0xFF;
  56. }
  57. void t0()interrupt 1    /*定时中断开启*/  
  58. {
  59.     CLK=~CLK;
  60. }
  61. void t0_init()    /*定时中断初始程序*/
  62. {
  63. TMOD=0x02;                           
  64.         TH0=0x14;
  65.         TL0=0x00;
  66.         TR0=1;                                    
  67.         ET0=1;                                 
  68.         EA=1;                                       
  69. }
  70. void main(void)
  71. {
  72.   t0_init();
  73.   while(1)
  74.    {
  75.     ADC_read();
  76.         volt_result();
  77.         disp_volt(volt);
  78.    }
  79. }
复制代码


数码管.zip (65.63 KB, 下载次数: 48)







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