找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4714|回复: 0
打印 上一主题 下一主题
收起左侧

单片机电压表程序 数码管显示

[复制链接]
跳转到指定楼层
楼主
最近才学的电压表


数字电压表的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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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