📄 wannianli.lst
字号:
C51 COMPILER V7.50 WANNIANLI 01/09/2006 22:13:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE WANNIANLI
OBJECT MODULE PLACED IN wannianli.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wannianli.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*-------------------------------------------
2 项目名: 2006年毕业设计项目
3 程序名: 32*8点阵屏电子钟
4 编写人: 杜洋
5 初写时间: 2005-12-15~2005-12-20
6 CPU说明: MCS-51(AT89S52) 12MHZ
7 接口说明: DS1302、DS18B20
8 修改日志:
9 NO.1-20051215 完成LED驱动、显示切换、时钟温度读取
10 NO.2-20051216 完成整点报时、填加注释信息
11 NO.3-20051220 完成了调时、按键音等所以的功能(没有闹钟)
12 NO.3-20051221 增加了十位为0时的消隐功能
13 --------------------------------------------*/
14
15 //------------------------------定义头文件
16 #include <reg51.h>//MCS-51单片机
17 //------------------------------定义缩写字符
18 #define uchar unsigned char
19 #define uint unsigned int
20 //------------------------------定义扬声器接口,低电平使能
21 sbit Bell_Out = P1 ^ 5;//扬声器驱动
22 //------------------------------定义DS18B20音
23 sbit DQ = P1 ^ 6;//ds1820data(单总线)
24 //------------------------------定义DS1302时钟接口
25 sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
26 sbit clock_dat = P3 ^ 6;//ds1302_dat(数据线)
27 sbit clock_Rst = P3 ^ 7;//ds1302_Rst(复位线)
28 //-----------------------------定义数据口
29 #define Led_13 P0 //第1、3屏数据口
30 #define Led_24 P2 //第2、4屏数据口
31 #define Led_E P1 //74HC154的BCD列驱动(P1.0~P1.4)
32 sbit Led_EA = P1 ^ 4;//显示列驱动器(74HC154)使能
33 //-----------------------------独立键盘定义
34 sbit Add_Key = P3 ^ 1;//前位加1键
35 sbit Add2_Key = P3 ^ 0;//后位加1键
36 sbit OK_Key = P3 ^ 2;//确定键
37 sbit int_Key = P3 ^ 3;//中断入口
38 //-----------------------------定义累加器A中的各位
39 sbit a0 = ACC ^ 0;
40 sbit a1 = ACC ^ 1;
41 sbit a2 = ACC ^ 2;
42 sbit a3 = ACC ^ 3;
43 sbit a4 = ACC ^ 4;
44 sbit a5 = ACC ^ 5;
45 sbit a6 = ACC ^ 6;
46 sbit a7 = ACC ^ 7;
47 //------------------------------------定义全局变量
48 bit txx = 0;
49 uchar settime;//定义标志位
50 uchar yy,mo,dd,xq,hh,mm,bn;//定义时间映射全局变量(专用寄存器)
51 static uchar timecount = 0;//定义静态软件计数器变量
52 static uchar pp = 0;//定义静态小时更新用数据变量
53 //------------------------------------函数声明(按字母顺序排列)
54 void Beep(void);
55 void Beep_key(void);
C51 COMPILER V7.50 WANNIANLI 01/09/2006 22:13:53 PAGE 2
56 void Beep_set(void);
57 void clearRAM (void);
58 uchar clock_in(void);
59 void clock_out(uchar dd);
60 void Delay(int num);
61 void DelayM(uint a);
62 void display (void);
63 void display_s (void);
64 void Init_1302(void);
65 void int1 (void);
66 void putin (uchar u);
67 uchar read_clock(uchar ord);
68 void read_clockS(void);
69 void Set_time(unsigned char sel);
70 void setput (uchar k);
71 void Timer0(void);
72 void Timer0_Init(void);
73 void write_clock(uchar ord, uchar dd);
74 uchar DL (uchar);
75 uchar DSS (void);
76
77 //-----------------------------定义显示缓冲寄存器(32个字节全局变量)
78 uchar Ledplay [35];//
79 //-----------------------------定义字符数据表单(二维数组)
80 uchar code no[][10]={
81 //-----------------------------------数字字符表
82 {0x7E,0xFF,0x81,0x81,0xFF,0x7E,0},//0
83 {0x82,0xFF,0xFF,0x80,0}, //1
84 {0xC6,0xE7,0xB1,0x99,0x8F,0x86,0},//2
85 {0x42,0xC3,0x89,0x89,0xFF,0x76,0},//3
86 {0x30,0x28,0xA6,0xFF,0xFF,0xA0,0},//4
87 {0x4F,0xCF,0x89,0x89,0xF9,0x71,0},//5
88 {0x7E,0xFF,0x89,0x8B,0xFB,0x70,0},//6
89 {0x03,0x03,0xF9,0xFF,0x07,0},//7
90 {0x76,0xFF,0x89,0x89,0xFF,0x76,0},//8
91 {0x0E,0xDF,0xD1,0x91,0xFF,0x7E,0},//9
92 //-----------------------------------星期字符表
93 {0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0},//一10
94 {0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0},//二
95 {0x82,0x92,0x92,0x92,0x92,0x92,0x82,0x80,0},//三
96 {0xFE,0xA2,0x9E,0x82,0x9E,0xA2,0xFE,0},//四
97 {0x80,0x89,0xFF,0x89,0x89,0x89,0xF9,0x80,0},//五
98 {0x88,0x68,0x38,0x0E,0x38,0x68,0x88,0},//六
99 {0xFE,0x92,0x92,0x92,0x92,0xFE,0},//日 10+6
100 //-----------------------------------特殊字符表
101 {0x6C,0x6C,0},//“:” 17
102 {0x18,0x18,0x18,0x18,0},//“-” 18
103 {0x06,0x06,0x78,0xFC,0x84,0x84,0x84,0x80,0},//“oC” 19
104 {0x02,0x8E,0xFC,0xFC,0x8E,0x02,0},//“Y”(在调时时表示年)20
105 {0x80,0x7E,0x15,0x15,0x95,0xFF,0},//“月”21
106 {0xFE,0x92,0x92,0x92,0x92,0xFE,0}//“日”22
107 };
108 //-----------------------------------开机画面,显示“DYDIY”
109 uchar code dydiy[]={//显示“DYDIY”
110 0x82,0xFE,0xFE,0x82,0xFE,0x7C,0,
111 0x02,0x8E,0xFC,0xFC,0x8E,0x02,0,
112 0x82,0xFE,0xFE,0x82,0xFE,0x7C,0,
113 0x82,0xFE,0xFE,0x82,0,
114 0x02,0x8E,0xFC,0xFC,0x8E,0x02,0,0x99
115 };
116 //---------------------------------------延时函数 2uS/次
117 void Delay(int num){
C51 COMPILER V7.50 WANNIANLI 01/09/2006 22:13:53 PAGE 3
118 1 for (;num>0;num--);
119 1 }
120 //---------------------------------------延时函数 1MS/次
121 void DelayM(unsigned int a){
122 1 unsigned char i;
123 1 while( --a != 0){
124 2 for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
125 2 } //i 从0加到125,CPU大概就耗时1毫秒
126 1 }
127 //---------------------------------------1302驱动程序(底层协议)
128 void clock_out(unsigned char dd){
129 1 ACC=dd;
130 1 clock_dat=a0; clock_clk=1; clock_clk=0;
131 1 clock_dat=a1; clock_clk=1; clock_clk=0;
132 1 clock_dat=a2; clock_clk=1; clock_clk=0;
133 1 clock_dat=a3; clock_clk=1; clock_clk=0;
134 1 clock_dat=a4; clock_clk=1; clock_clk=0;
135 1 clock_dat=a5; clock_clk=1; clock_clk=0;
136 1 clock_dat=a6; clock_clk=1; clock_clk=0;
137 1 clock_dat=a7; clock_clk=1; clock_clk=0;
138 1 }
139 //---------------------------------------DS1302写入字节(底层协议)
140 unsigned char clock_in(void){
141 1 clock_dat=1;
142 1 a0=clock_dat;
143 1 clock_clk=1; clock_clk=0; a1=clock_dat;
144 1 clock_clk=1; clock_clk=0; a2=clock_dat;
145 1 clock_clk=1; clock_clk=0; a3=clock_dat;
146 1 clock_clk=1; clock_clk=0; a4=clock_dat;
147 1 clock_clk=1; clock_clk=0; a5=clock_dat;
148 1 clock_clk=1; clock_clk=0; a6=clock_dat;
149 1 clock_clk=1; clock_clk=0; a7=clock_dat;
150 1 return(ACC);
151 1 }
152 //----------------------------------------DS1302读数据(底层协议)
153 uchar read_clock(uchar ord){
154 1 uchar dd=0;
155 1 clock_clk=0;
156 1 clock_Rst=0;
157 1 clock_Rst=1;
158 1 clock_out(ord);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -