新唐项目-数码显示

项目简介

  基于新唐芯片MS51FB9AE芯片设计T10机种视窗板原理图PCB,并编写其对应数码显示功能程序。

项目实现

  通过新唐芯片MS51FB9AE芯片,结合AD实现视窗板PCB绘制,结合数码管,实现数码显示功能。

具体步骤

  通过IC规格书,设计对应IO控制对应功能,以 原理图 为例:

MS51FB9AE数码显示原理图

  以 PCB图 为例:

MS51FB9AE数码显示PCB

  以 数码管扫描 为例:

  1void SegDisplay(u8 Num)
  2{
  3 switch(Num) 
  4 {
  5  case 0:
  6   SEG_A=0;
  7   SEG_B=0;
  8   SEG_C=0;
  9   SEG_D=0;
 10   SEG_E=0;
 11   SEG_F=0;
 12   SEG_G=1;
 13   SEG_DOT=0;
 14   break;
 15  case 1:
 16   SEG_A=1;
 17   SEG_B=0;
 18   SEG_C=0;
 19   SEG_D=1;
 20   SEG_E=1;
 21   SEG_F=1;
 22   SEG_G=1;
 23   SEG_DOT=0;
 24   break;
 25  case 2:
 26   SEG_A=0;
 27   SEG_B=0;
 28   SEG_C=1;
 29   SEG_D=0;
 30   SEG_E=0;
 31   SEG_F=1;
 32   SEG_G=0;
 33   SEG_DOT=0;
 34   break;   
 35  case 3:
 36   SEG_A=0;
 37   SEG_B=0;
 38   SEG_C=0;
 39   SEG_D=0;
 40   SEG_E=1;
 41   SEG_F=1;
 42   SEG_G=0;
 43   SEG_DOT=0;
 44   break;
 45  case 4:
 46   SEG_A=1;
 47   SEG_B=0;
 48   SEG_C=0;
 49   SEG_D=1;
 50   SEG_E=1;
 51   SEG_F=0;
 52   SEG_G=0;
 53   SEG_DOT=0;
 54   break;
 55  case 5:
 56   SEG_A=0;
 57   SEG_B=1;
 58   SEG_C=0;
 59   SEG_D=0;
 60   SEG_E=1;
 61   SEG_F=0;
 62   SEG_G=0;
 63   SEG_DOT=0;
 64   break;
 65  case 6:
 66   SEG_A=0;
 67   SEG_B=1;
 68   SEG_C=0;
 69   SEG_D=0;
 70   SEG_E=0;
 71   SEG_F=0;
 72   SEG_G=0;
 73   SEG_DOT=0;
 74   break;
 75  case 7:
 76   SEG_A=0;
 77   SEG_B=0;
 78   SEG_C=0;
 79   SEG_D=1;
 80   SEG_E=1;
 81   SEG_F=1;
 82   SEG_G=1;
 83   SEG_DOT=0;
 84   break;
 85  case 8:   
 86   SEG_A=0;
 87   SEG_B=0;
 88   SEG_C=0;
 89   SEG_D=0;
 90   SEG_E=0;
 91   SEG_F=0;
 92   SEG_G=0;
 93   SEG_DOT=0;
 94   break;
 95  case 9:
 96   SEG_A=0;
 97   SEG_B=0;
 98   SEG_C=0;
 99   SEG_D=0;
100   SEG_E=1;
101   SEG_F=0;
102   SEG_G=0;
103   SEG_DOT=0;
104   break; 
105  case 0x0a: //"NULL"
106   SEG_A=1;
107   SEG_B=1;
108   SEG_C=1;
109   SEG_D=1;
110   SEG_E=1;
111   SEG_F=1;
112   SEG_G=1;
113   SEG_DOT=1;
114   break;
115  default:  //"--"
116   SEG_A=1;
117   SEG_B=1;
118   SEG_C=1;
119   SEG_D=1;
120   SEG_E=1;
121   SEG_F=1;
122   SEG_G=0;
123   SEG_DOT=0;
124   break;
125 }      
126}
127
128
129void SegScan(void)
130{ 
131 MODEL_A=1;
132 SEAT_A1=1;
133 SEAT_A2=1;
134 WATER_A1=1;
135 WATER_A2=1;
136 if(LED_DC_BATTERY) 
137 {
138  //_enadc=0;   //close the ad
139  Flag_DC_Battery=1; //close the seg      
140 }
141 else
142 {
143  //_enadc=1;   //open the ad
144  Flag_DC_Battery=0; //open the seg 
145 }
146
147 if((Temp_Seat_Value_H==0)&&(Temp_Seat_Value_L==0)&&(Temp_Seat_Value_H==0)&&(Temp_Seat_Value_L==0)&&(Mode==0))
148 {
149  Temp_Water_Value_H=8;
150  Temp_Water_Value_L=8;
151  Temp_Seat_Value_H=8;
152  Temp_Seat_Value_L=8;
153  Mode=0x7f;
154 }
155  
156 if((Temp_Water_Value_H==0)&&(Temp_Water_Value_L==0))
157 {
158  Temp_Water_Value_H=0x0b;
159  Temp_Water_Value_L=0x0b;
160 }
161             
162 if(((Temp_Seat_Value_H==0)&&(Temp_Seat_Value_L==2))||((Temp_Seat_Value_H==0)&&(Temp_Seat_Value_L==0)))
163 {
164  Temp_Seat_Value_H=0x0b;
165  Temp_Seat_Value_L=0x0b;
166 }
167 
168 i++;
169 if(Flag_DC_Battery==0)
170 {
171  Water_Value_H=Temp_Water_Value_H;
172  Water_Value_L=Temp_Water_Value_L;
173  Seat_Value_H=Temp_Seat_Value_H;
174  Seat_Value_L=Temp_Seat_Value_L;
175  Mode &= 0xFF;
176 }
177 else
178 {
179  Water_Value_H=0x0a;
180  Water_Value_L=0x0a;
181  Seat_Value_H=0x0a;
182  Seat_Value_L=0x0a;
183  Mode &= 0x81;
184 }
185 
186 switch(i)
187 { 
188  case 1:
189   MODEL_A=1;
190   SegDisplay(Water_Value_H);
191   WATER_A1=0;
192   break;
193  case 2:
194   WATER_A1=1;
195   SegDisplay(Water_Value_L);
196   WATER_A2=0;
197   break;
198  case 3:
199   WATER_A2=1;
200   SegDisplay(Seat_Value_H);
201   SEAT_A1=0;
202   break;
203  case 4:
204   SEAT_A1=1;
205   SegDisplay(Seat_Value_L);
206   SEAT_A2=0;
207   break;
208  case 5:
209   SEAT_A2=1; 
210   //SEG_A=0;
211   //SEG_B=0;
212   //SEG_C=0;
213   //SEG_D=0;
214   //SEG_E=0;
215   //SEG_F=0;
216   //SEG_G=0;
217   MODEL_A=0;
218   i=0;
219  default:
220   break; 
221 } 
222}

  本文完整源码已上传本人gitee,点击查看

版权