MDeath-Kid

- M I T & Y
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数码管跑灯

Posted on 2011-10-30 16:24  MDeath-Kid  阅读(165)  评论(0)    收藏  举报

最近打算做一个硬件触摸板的控制系统,所以开始学硬件。

开一周的小差,加油!

AT89S52
 1 /*=============================程序说明===============================
2 项目名称: 数码管跑灯
3 作 者: Rain
4 创建日期: 2011-10-30
5 修改说明:
6 程序说明:
7 (1)CPU 型号: AT89S52
8 (2)时钟频率: 12
9 (3)实现功能:
10 (4)程序概述:
11 ===================================================================*/
12 //==========================头文件加载===============================
13 #include <reg52.h>
14 //===========================端口声明================================
15
16 //=========================全局常量声明==============================
17
18 //=========================全局变量声明==============================
19 unsigned char i=0,flag = 0;
20 //unsigned char Data[]={1,9,8,8,0,3,1,9};
21 //===========================函数声明================================
22 void delay(unsigned int Time);
23 void display(unsigned int i,unsigned char a);
24 void main() {
25 P1 = 0xf5;
26
27
28 while(1) {
29 switch (i) {
30 case 0:
31 display(i,0xf7);
32 display(0,0xfb);
33 display(0,0xfd);
34 display(0,0xfe);
35 break;
36 case 7:
37 display(7,0xfe);
38 display(7,0xdf);
39 display(7,0xef);
40 display(i,0xf7);
41 break;
42 default:
43 if(flag==0) {
44 display(i,0xfe);
45 } else {
46 display(i,0xf7);
47 }
48 break;
49
50 }
51 if(flag == 0) {
52 ++i;
53 if(i == 8) {
54 i = 6;
55 flag = 1;
56 }
57 } else {
58 --i;
59 if(i == -1) {
60 i = 1;
61 flag = 0;
62 }
63 }
64 }
65 }
66
67 void display(unsigned int i,unsigned char a) {
68 P2 = 0xf9;
69 P0 = a;
70 WR = 0; WR = 1;
71 //delay(50000);
72
73 P2 = 0xf8;
74 P0 = ~(1<<(i));
75 WR = 0;WR = 1;
76 delay(10000);
77
78 P2 = 0xf8;
79 P0 = 0xff;
80 WR = 0;WR = 1;
81 delay(10000);
82 }
83
84 void delay(unsigned int Time)
85 {
86 while(Time--);
87 }