Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630770
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:30:41

原文地址:LED--8051驱动测试程序 作者:luozhiyong131

  1. /************************************************
  2. 功能:LED--8051驱动测试程序(共阴极)
  3. 使用:调用函数 LEDn_display(*****)
  4.         n表示用几个数码管显示n<=4
  5.         参数传递跟据具体情况确定
  6. 时间:2011年1月7日
  7. ************************************************/
  8. #include<reg51.h>
  9. #include <intrins.h>
  10. #define uint unsigned int
  11. #define uchar unsigned char

  12. sbit dula=P2^6;        //段码控制

  13. sbit wela=P2^7;        //位码控制


  14. /*共阴(CC)极显示段码*/
  15. uchar code LED_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  16. void LED_delay(unsigned char LED_i)        //1ms延时程序

  17. {
  18.     unsigned char LED_j,LED_k;
  19.   for(LED_j=LED_i;LED_j>0;LED_j--)
  20.     for(LED_k=125;LED_k>0;LED_k--);
  21. }

  22. void LED1_display(uchar sh_c,uchar g_c)            //1位显示程序

  23. {
  24.     //显示个位

  25.    P0=0xfb; wela=1; wela=0;        //第一个数码码管当前显示

  26.    P0=LED_table[g_c]; dula=1; dula=0;    //显示的数字

  27.    LED_delay(5);
  28. }

  29. void LED2_display(uchar sh_c,uchar g_c)            //2位显示程序

  30. {
  31.     //显示十位

  32.    wela=0; P0=0xfd; wela=1; wela=0;
  33.    dula=0; P0=LED_table[sh_c]; dula=1; dula=0;
  34.    LED_delay(5);
  35.    
  36.     //显示个位

  37.    P0=0xfb; wela=1; wela=0;
  38.    P0=LED_table[g_c]; dula=1; dula=0;
  39.    LED_delay(5);
  40. }

  41. void LED3_display(uchar bai_c,uchar sh_c,uchar g_c)            //3位显示程序

  42. {
  43.   
  44.     //显示百位

  45.     P0=0xfe; wela=1; wela=0;
  46.     P0=LED_table[bai_c]; dula=1; dula=0;
  47.     LED_delay(5);    

  48.     //显示十位

  49.    wela=0; P0=0xfd; wela=1; wela=0;
  50.    dula=0; P0=LED_table[sh_c]; dula=1; dula=0;
  51.    LED_delay(5);
  52.    
  53.     //显示个位

  54.    P0=0xfb; wela=1; wela=0;
  55.    P0=LED_table[g_c]; dula=1; dula=0;
  56.    LED_delay(5);
  57. }

  58. void LED4_display(uchar qian_c,uchar bai_c,uchar sh_c,uchar g_c)            //4位显示程序

  59. {     
  60.     //显示千位

  61.     P0=0xfe; wela=1; wela=0;
  62.     P0=LED_table[bai_c]; dula=1; dula=0;
  63.     
  64.     //显示百位

  65.     P0=0xfe; wela=1; wela=0;
  66.     P0=LED_table[bai_c]; dula=1; dula=0;
  67.     LED_delay(5);    

  68.     //显示十位

  69.    wela=0; P0=0xfd; wela=1; wela=0;
  70.    dula=0; P0=LED_table[sh_c]; dula=1; dula=0;
  71.    LED_delay(5);
  72.    
  73.     //显示个位

  74.    P0=0xfb; wela=1; wela=0;
  75.    P0=LED_table[g_c]; dula=1; dula=0;
  76.    LED_delay(5);
  77. }
阅读(147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~