×
单片机 > 单片机程序设计 > 详情

基于tx-1c 51单片机中断使用及数码管显示的使用方法

发布时间:2020-06-05 发布时间:
|

初学51单片机,中断快把我弄晕了,终于明白点了,怕忘了,贴在这里需要时方便自己找

锁存器电路

LED显示器连接电路

数码表编制方式:共8位从低4位到高4位,显示送高电平,如数字2二进制是0101 1011即16进制为:0x5B

C语言程序代码如下:

 1 #include

 2  #define uint unsigned int

 3  #define uchar unsigned char

 4 

 5 sbit dula = P2^6;     //段选

 6 sbit wela = P2^7;     //位选

 7 uchar time,num;        //定时器0计数次数,数码管显示字符

 8 

 9 void init();        //初始函数化定义

10 void desplay();        //显示函数定义

11 void delay(uint);    //延时函数定义

12 

13 //数字字码表 0-F

14 uchar code table[]={

15 0x3f,0x06,0x5b,0x4f,

16 0x66,0x6d,0x7d,0x07,

17 0x7f,0x6f,0x77,0x7c,

18 0x39,0x5e,0x79,0x71};

19 

20 //主函数

21 void main()

22 {

23     init();        //初始化

24     desplay();    //显示

25 }

26 

27 //初始化

28 void init()

29 {

30     TMOD = 1;  //工作方式

31     TH0  = 0xEE;

32     TL0  = 0x00;

33     ET0  = 1;  //打开定时器0中断

34     EA   = 1;  //打开总中断

35     TR0  = 1;  //开始计时(数)

36     num  = 1;

37 }

38 //数码管显示

39 void desplay()

40 {

41     wela = 1;

42     P0   = 0xFE;

43     wela = 0;

44     P0   = 0xff;

45     dula = 1;

46     P0   = 0x3F;

47     dula = 0;

48     while (1)

49     {

50         if (time==200)

51         {

52             time=0;

53             dula=1;

54             P0=table[num];

55             dula=0;

56             num++;

57             if(num==16)

58                 num=0;

59             delay(10);

60         }

61     }

62 }

63 //定时器0中断

64 void time0() interrupt 1

65 {

66     TH0 = 0xEE;

67     TL0 = 0x00;

68     time++;

69 }

70 //显示延时

71 void delay(uint x)

72 {

73     uchar i;

74     while (x--)

75         for (i=0;i<110;i++);

76 }





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项