51单片机的中断方法以及对LED显示器的控制设计

51单片机的中断方法以及对LED显示器的控制设计,第1张

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

锁存器电路

51单片机的中断方法以及对LED显示器的控制设计,51单片机的中断方法以及对LED显示器的控制设计,第2张

LED显示器连接电路

51单片机的中断方法以及对LED显示器的控制设计,51单片机的中断方法以及对LED显示器的控制设计,第3张

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

51单片机的中断方法以及对LED显示器的控制设计,51单片机的中断方法以及对LED显示器的控制设计,第4张

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 }
来源;21ic

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2542528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存