|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于单片机设计的简易计算器 能实现基本的加减乘除和清零; r; N( _, n) s- V$ V, G
( f- O- | Q, a( u* m: R
7 M3 g0 G. k# k# |+ A
" S" ^, r+ d& C, e+ h; u; o" U这是用STC59C52单片机做的计算器,使用数码管显示,能实现基本的加减乘除和清零
& `% |, X: Q/ S
6 W3 i) q9 m8 ^9 E' K0 r
8 l5 D, E7 }- }) I
+ Y/ l- Z+ m8 F! @
+ S) i. o; ^# @源程序:$ q5 O( Z5 B, p0 K; R
/*****利用单片机设计的简易计算器********/* {5 ?7 F/ ]8 q7 a* A/ I, P% F) K
/***** 单片机型号:STC59C52 ********// Z3 E( k$ E1 R4 y* ]% w6 ^7 ^8 ` m
/* " B' ]. v0 T' `# n8 j, \
*采用4*4键盘,4行线,4列线
# b7 c+ p8 _: `5 \7 Q6 e *键盘行线列线接P1 IO口
) j& l/ y. s3 s$ t* a" ?" G! q *数码管接P0口; w: A2 A: d7 |: z+ S7 u
*/
7 J! u0 t$ A3 Y& ?( n/ P#include <reg52.h>2 K& u% E, j- a2 f# [$ d; Z4 Y! H
#define uchar unsigned char! P+ k3 A/ f( N* K
#define uint unsigned int6 E' G* r$ t: J0 ?4 h9 B& p
sbit dula=P2^6;//573段选使能1 u% w8 y8 P5 ?, p- t6 k P
sbit wela=P2^7;//573位选使能9 Q7 C5 e4 ] s- h0 [
, |3 J$ `; G. H; e
# W C+ p3 v8 h8 Q& w; E7 w: isbit beep=P3^2;//蜂鸣器
X1 h, I' a1 x8 d! k: [, z; H
5 a( Q) K0 {" j) z' V
! ~. y& I- M6 m2 ?" K$ C
9 P' R9 ~0 b* @$ @0 l1 R; Q* ~5 h" L' H1 i* ]3 J& a
uchar temp,key;//按键变量, C& d1 G& P0 V
uchar fun;//加,减,乘,除,标志位, M6 @1 N# @. R' o) s
long int num1,num2,res;//num1与num2是2个要运算的变量,res是结果$ T- x" f" r* \1 t$ I# v3 {" A$ H
uchar aa,dis;//aa 2个运算数标志位 dis 2个运算数与结果标志4 Q0 g) }8 Z: [8 Z; T
uchar code table[]={
& \6 k0 \- X; g; D' k9 J& ] 0x00,0x3f,0x06,0x5b,
+ `/ _$ j: \8 r/ Y 0x4f,0x66,0x6d,0x7d,6 a' C& Y1 @. u+ F9 w* h6 r
0x07,0x7f,0x6f,0x77,
4 |$ j, A! n+ h& b# r- _2 W 0x7c,0x39,0x5e,0x79,0x71};//数码管段码
) n2 h6 h2 v) X/ V3 m3 }uchar code weixuan[]={
3 S) c P$ V. Q0 s* U) { 0xdf,0xef,0xf7,8 S" m* A* m- u; d1 I' u! j6 p
0xfb,0xfd,0xfe};//数码管位码, }* l; }& C/ t' M) N5 T9 H$ e
2 o) Q: e5 C" a3 p: H& H4 X& `) G6 f
void delay(unsigned char i)//延时
5 a9 h6 s5 r$ z3 Z; X) Y' R{
1 E7 L+ ]0 r; f' t8 C/ [' Tuchar j,k;+ l' d6 g5 R( c$ Z1 l0 y
for(j=i;j>0;j--)' | a d% z& L( Q
for(k=125;k>0;k--);
% {! S5 v7 H6 L}$ t7 O2 R/ U- k1 w$ R# q
0 k1 E0 h: f+ t% ^$ z, r5 h# k
! E$ J2 U( ?3 G% l' P+ O# xvoid bee()//蜂鸣器
/ t4 b- k7 R: |6 l{. A+ q# u2 a+ M
beep=0;
2 r; u: g5 Z2 N delay(255);
* B0 B' T3 Q; f+ |- s delay(255);/ d! X/ F# f1 I4 j, t+ \ I
beep=1; * ]$ W4 v3 a" V
}- _' @' S6 i0 ]& z% i( t; z
. @& F$ Z6 N; c0 q
: v$ r# i r, c; Q( f) @//按键检测
9 R/ |4 i8 v' f3 W, X4 Z//如果没有按键按下,则key取Init()函数中所赋值为16
9 l7 C5 U) y# Hvoid key_scan()' ~3 W5 S2 y, l! V
{& X3 d+ i1 Y& A- i
P1=0xfe;//先置第一行线为低,其余为高 5 \5 J1 a& B; s* o, V( I3 @
//高四位为列线,低四位为行线$ H: o G0 B1 ^4 y6 E' Q
temp=P1;/ K% J! |) ` v
temp=temp&0xf0;7 d7 v* Y! i- p- O% g$ I; O: ^
//进行与运算,把结果赋给temp
- d7 y/ g' y: g# D$ H" { //此时temp = 0xf03 A) g! S3 P# X, r8 |! J
if(temp!=0xf0) /*判断temp的高四位是否有0,如果有零的话,则此时temp != 0*/
. `, s( g7 i! V/ e5 u! Z {% y. w& q% S+ }8 y4 j/ [
delay(10);
O. i5 |0 |+ W: i J4 ^ temp = P1;
& n% E) K7 b5 Q3 [: K' a( [ temp=temp&0xf0;
8 J' ~ c+ p0 [2 d- w4 J5 s if(temp!=0xf0)
, R6 s* y# B) o, K+ U% [0 g. V {
4 o( b+ z; m j/ k6 w6 g3 o temp=P1;
3 c _1 f( [4 Q! T# V" t6 C$ O2 c switch(temp)+ y g' B! }0 o
{
- L% ~+ j, ?+ C3 W case 0xee: //此时按键坐标为1行1列
$ y0 w% }0 Y9 A' Y( g/ X. f1 ]! | key=1;5 s6 h+ f- P r4 J( X. W' F
break;! K3 N+ M8 O4 t
case 0xde:; z! K% ]3 l$ c& h4 u
key=2;# Z% C' A9 D* l, A) x& E. ~; J
break;
! w: \% J& d& W+ `0 ~4 ^2 {6 s case 0xbe:' `4 g9 I' V8 D( m9 ]4 w
key=3;% S- x$ Y/ y6 A& O) ?5 J1 e( a
break;* m' U4 S/ w# d9 E9 F
case 0x7e:
' \1 [# l' D0 f2 U) w+ K- T key=12;" B, s- }6 T7 N2 W# {2 [/ Q
break;3 S2 Q) ?( @$ c
}
4 R8 @) p$ ~0 m$ o5 p5 T V while(temp!=0xf0) //等待按键释放+ C# i1 d. O8 |# [. w
{% W! U$ `( w$ n1 |- ^/ D$ I
temp=P1;
; V t5 W" d" M% K. @4 s/ Y temp=temp&0xf0;5 p! p$ J% ], h F& F
}2 v' Y( K6 V8 ^% |
}
6 `2 u/ t! K9 y- ^2 F$ n0 p }! B% z% z& O+ o" c+ }; K
P1=0xfd;
' n i- B/ [! K6 L temp=P1;
1 F( n1 T( c$ U temp=temp&0xf0;
* W+ S" x- z7 {$ ~ if(temp!=0xf0)
& ?# v$ A/ n6 H, r( Z {/ b6 l# N. Q) y- M1 o3 b
delay(10);- t6 ^4 r7 u9 R: `
temp = P1;
7 _! U. s# X2 J7 Z0 j& L9 o temp=temp&0xf0;: O& l0 v( c' c6 n$ j& D1 G
if(temp!=0xf0)
) k* F# _& h g {
5 |1 y5 y' h/ \$ [' A temp=P1;
+ o# r: x% G$ {3 r& ~% T switch(temp)
" a# g- L$ V: z2 Y9 A. @ {
8 {5 H. n+ D; y: {$ U5 X case 0xed:9 [3 r; w4 f2 D: D+ {& i4 x `
key=4;
f1 T( Z. u1 ~/ R7 O# A5 l7 d+ J: G break;3 E: M; O/ N V( C# s
case 0xdd:! Q6 B$ g, S/ i0 j7 l2 [! ~. K
key=5;
' H: T% F1 r) B! H break;6 W( ^+ k1 w* y
case 0xbd:" c) ~: S* e, F5 L3 }
key=6;0 R; I% ?- V9 X5 K( ~# G
break;
- _& S7 ~' G* ~ case 0x7d:1 u* F/ K8 x8 N+ d
key=13;6 o. N* u. Q! z+ k( B3 W+ p
break;2 \; F# ]( |. S1 Q2 h& q
}
- I" Z' e: H3 M* L- t: \5 w while(temp!=0xf0)
" D, m$ U$ Q' q9 E& N {! B/ c" h" z2 Y$ p0 U
temp=P1;" o# G0 a0 @8 l' }3 Z+ o) {; H5 E
temp=temp&0xf0;
7 ~8 U j* h8 W4 l5 V( |4 g8 s } h1 E2 Z/ a; M/ L' B4 F- L# ]
} n/ J. O. N' Z5 `; E2 L {
}
8 {. i5 F `+ Y& `6 t P1=0xfb;
5 E5 p2 j7 H& [6 | temp=P1;, r/ W& U) o/ q5 d& p* ~+ `$ ^
temp=temp&0xf0;' _9 ^$ h& y8 s5 p# T4 U
if(temp!=0xf0). B; X% f9 Z: Z: [# q, O+ |
{
8 }1 D* E$ _+ J% ]0 I delay(10);
( `% ~* }6 O% \" p G" W- ~ temp = P1;
& h3 N. u; p- f4 [8 k+ p temp=temp&0xf0;
^( h) _ e( v( _' U' x if(temp!=0xf0)
7 w! k9 K3 s* h5 U( E4 h4 z {
. F2 n, m7 u' W. M: p temp=P1;- _9 a7 h$ W# h, Y0 V" R' l: {
switch(temp)2 f7 E) Z' e$ Y
{+ b; ] ~) C3 Q' q4 B3 r
case 0xeb:
* i9 F- y) ~! L8 u! Y) w) F' C$ w key=7;
" I2 T( M" u$ X break;
( F9 N5 |8 a3 H1 A; V3 N' O' D case 0xdb:* d8 Q( \$ }: n+ l& D5 y
key=8;2 f4 p0 F8 o' D5 O c0 H
break;
7 }* x% {) B4 v, j) d& @ case 0xbb:
- R# p% K8 {; u5 j% z key=9;, P, K" A; y( O! }& e% y
break;
6 }8 g$ V" [5 i case 0x7b:
) [# ^3 q n7 J4 W0 _ key=14;- k! c+ q+ C. f2 |0 t C# v2 _
break;
& N% I: y8 s% ]% s( } }
5 }) ]. b" \: H* d3 l5 G& W/ Q5 [ while(temp!=0xf0) Q, a5 D" y4 b8 U; d
{" f& {: g( R4 f9 V1 B T3 O9 S% i
temp=P1;6 C, D- B: b; k- v& p! X1 F# C
temp=temp&0xf0;+ t( N3 B: s9 B
}- p6 _6 q$ p/ m; `# B$ o
}2 X, c* G/ }8 E- b+ B
}
`3 [) O9 Y/ X T P1=0xf7;/ b$ P$ t5 P8 S7 [3 i& y
temp=P1;/ \2 {* v ] F
temp=temp&0xf0;
F( t! z5 ^8 y$ E3 J/ M/ z if(temp!=0xf0)" F J% c9 O1 w% T' x1 h
{
" [. V# [3 U! ], z3 V delay(10);
* ~' a0 i0 L% k7 N5 c- z temp = P1;
2 @% ^% X- `6 T( U$ u# t9 b8 N temp=temp&0xf0;
3 e4 w- u) v( Y5 J7 c$ r if(temp!=0xf0)
, U/ l4 p- Q! F6 `# i# L# [ {! z/ O" l8 A" G) b
temp=P1;
3 N- b" A( f. I/ ]& a9 } switch(temp)
, B! N2 X5 B4 x! {- f, P9 V, S {
& z5 n: |, ^2 g( O) S- Y* K4 ^" N case 0xe7:) J8 b7 ]4 q2 m. _; \
key=10;
% _3 R8 Q7 A; ?5 X- e; T$ j break;
+ c. z9 {1 ~9 R1 ]" ]/ h case 0xd7:9 D5 G7 i8 d( |0 i& i6 p8 ~
key=0;3 s h& }8 W. \ F* r
break;/ q0 C+ _: ~5 O* S$ T
case 0xb7:; C( B' E( t6 T
key=11;
0 m+ N/ d/ |& F0 A+ N break;6 w+ \* U5 W# ~
case 0x77:/ M! z# `& A. D( a8 j
key=15;
0 _% y& M) W, q( x/ H/ j; I break;2 W2 v# {2 r; `+ f/ D1 m! x
}
$ U; _: M3 k, Y# z; h* \ while(temp!=0xf0)
0 z' v; `# W' ? {8 U0 s8 @. v$ d
temp=P1;
# V5 w, w F( {+ \7 q8 p temp=temp&0xf0;
1 @8 [+ u7 n9 u! s' O1 U: C3 ] }
6 z$ i v2 i2 T, m; G3 w+ Z( F }
9 Z7 _0 D% M6 a9 n5 m }
: F) M! W* M B}3 W2 u {7 _6 y1 G" C, q
/*uchar temp,key;//按键变量
, I4 q- S$ P) s4 [5 W6 Ouchar fun;//加,减,乘,除,标志位
/ \' }0 ?* y4 Y* d; l5 U4 Q, dlong int num1,num2,res; //num1与num2是2个要运算的变量,res是结果+ H; {1 Q! I, W4 h( s# b2 L9 O; X* A$ y
uchar aa,dis;//aa 2个运算数标志位 dis 2个运算数与结果标志7 m9 c) D1 y$ K( |8 e
*/
2 T: O; n1 Y( }" uvoid Init()//初始化5 j' {- Y. Z) T' d) S; x& ]
{ a5 M1 C0 ]; g" v% t' N
num1=0;
0 S0 v# l5 ]+ I0 a4 v num2=0;
7 h Q& {8 s" U 5 s7 |: H6 u9 U$ q
//P0 = 0; //关闭所有段选; K1 i2 m p% O( d$ j/ K5 X+ j
wela=1;
$ p c& N. U) z; o6 \) R$ l3 q P0=0xdf;//11011111. L0 x) `/ U# d. v' R8 o% {. M
wela=0;
, H0 n2 V* c4 ?
* J' h6 Z; O% P5 B7 d3 Q% [ dula=1;# V8 @) {6 d/ a
P0=table[1];//显示0
7 D1 V# y, L/ a0 p; Y$ y dula=0;
) V2 B7 t$ r7 ?# N" A0 L v" `+ j* z $ @2 D" M! K! ~ s" a$ H
key=16;& O2 i+ l# d7 a0 \6 Y1 m
aa=0;
/ o* g: W! |- T+ h0 Z dis=0;
" X* U* i5 ~4 h/ w0 z res=0;
0 x: i. \2 p. J9 f}) |3 F2 T$ H% E
8 E' r% \" [* G5 \
) H' u4 p9 a O2 a) x1 T$ R, M
void dis_play(long int nm)//显示函数. X* o/ k2 y) J! C+ h
{
' o' ?$ B% w$ _" t" i uchar a1,a6;//a1位段选变量,a6为位选变量5 i8 L3 Z$ H# g# Z8 K% {4 t0 j
long int shu;
! t1 |- n6 N: U: ^6 Y$ c shu=nm;& ?, @5 M& g+ u* Y6 F
if(shu==0)
, j( g/ h/ S1 ?/ r {% O5 h7 V9 ^( A9 }! T
wela=1;
& }( u" r5 x9 {* I4 K! z P0=0xdf;+ h( [" s( D8 r* r6 K ?
wela=0;
1 i& M0 b$ v" l) D% O dula=1;
( J h. Q$ @+ G$ s1 b3 M: C P0=table[1];2 z$ I Z$ z" S8 c
dula=0;$ o4 W3 U& V2 c8 I T, W3 b
}) Y1 A% I0 S( A9 u4 f! S- P
else
; k1 o, o# w" g1 F: U9 s {1 H6 `5 M! M/ g( e5 i
for(a6=0; a6<6; a6++)$ P& ?2 B. G* T Q
{
# V+ n# H* _+ z) q) y a1=shu%10;//shu%10 shu比10小 a1=shu本身; z# E! s- `) C* B
if(shu!=0)
4 s- |" T/ P [3 M/ f: { {$ g* G' T+ b7 f8 d
a1=a1+1;
$ F! A$ R2 P0 `( O4 b% r3 i7 `5 x }
- m/ \5 u( N" U& o/ t7 | shu=shu/10;//shu/10 shu比10小 shu为0/ ~3 n) n. A$ K3 q
P0=table[a1];. H0 m0 O4 Y8 c V6 d) L
dula=1;
+ u6 q* M. d6 E8 p dula=0;
$ g& e4 i0 }* S: l" j P0=weixuan[a6];
9 }" q0 A0 n! e* F6 ]6 ^ wela=1;+ f: ^5 u6 C- {1 p" z. m
wela=0;
1 c @' M b" O delay(5);
w( [+ ~0 L' ^/ T } & Q0 Y# e* y" J. Y, D1 x
}
7 k1 r {4 Q) j( b% M ~}5 \0 A: y7 o, o; o
void display()//显示选择函数,dis 0或1显示运算数,dis为2显示结果
% W( Q* m! A5 j' L{) A2 z) ^% T2 {7 y
switch (dis)
: {. W4 W/ q' D/ T {
: _1 B6 r# Q" I! t7 {4 ~! i* p2 _. w case 0:* ]3 V0 h( R3 u+ c$ g- h
{. X, @& z5 H) y: g
dis_play(num1);. C; M8 h2 G% x0 ]% E* d2 r
} * }5 ]* u1 X7 C+ f
break;
4 @0 d, B/ ~( u case 1:/ g4 Q5 d# H& T$ k3 `
{
+ y n- F; O! z. M8 ? V dis_play(num2);
, E: H z8 n5 k }
X; |$ v% @1 j# P" }, L4 f/ Q* j# d break;9 p- g, S, w, {* s9 ^
case 2:
: d2 W1 d# n" t9 h1 z {
5 f& S) b7 [. O" ^! o( V/ K7 S {8 F dis_play(res);) I% {$ X$ j& ^4 N1 v: ~( o
}
% J2 l$ \. c$ { ^% w) O, ~ break;
/ c6 J) f% t) @0 L2 ~. v1 f }
/ \0 c& `' I5 Z& P}
, @2 u9 e; k; d: c2 ~# s0 {
. @: z5 y. ^" g- a9 M+ Z9 H/ w
& ^) ^: ^, W! C+ F% l1 ?" ^, b5 kvoid shanshuo()//数码管闪烁
6 B e! q0 h" N! P1 z" l{% \ q4 H( i! C) L- p
wela=1;
3 `& |8 [' {% {. b8 I* A8 t P0=0xff;
. \, r1 J1 D' m5 @ wela=0;4 n5 l9 u1 f, k; O$ a3 u4 ^4 ]
delay(255);# T1 k1 b% c( v+ f8 i- F* M
}, _8 n) ]+ _* q& v8 a9 n* g
: I% i. S6 S* I$ T8 z, n
0 r* V) x" a7 Z' x1 Z/*uchar temp,key;//按键变量
$ k9 k+ ~/ z$ Z: C. n( W0 ?uchar fun;//加,减,乘,除,标志位! D6 d/ n+ g8 {+ s" m
long int num1,num2,res; //num1与num2是2个要运算的变量,res是结果3 Y6 I: a0 n3 z9 E3 ]
uchar aa,dis;//aa 2个运算数标志位 dis 2个运算数与结果标志" g4 L9 _, u* S1 I9 R
*/
1 u# Z8 J. u+ c' o) A! x- m# _/ ?void check()//运算函数
1 H& A* S% ~: m8 f) j4 O( \1 s8 x{3 O3 Z# [; u$ k# R: Q
if(key!=16)
- x$ F/ F$ q# }( G; u {
3 ]. Y( m; i9 p% K6 f% l9 C bee();% A2 L7 }9 j& o3 h- `
if(key>=10)
- ?- {# c; \) f) ?6 M) B {
- k) q0 N! M3 K# q7 O1 i* b switch (key)
4 y9 P6 u% r/ }" H* [0 { {0 Q/ }* W( v, q$ c8 B: _
// CE
7 [+ V, u4 l6 g' Y case 10:1 Z9 y4 p: I; V) \
Init();6 P5 ^% w1 Q) o+ |& y* P
break; ( j0 @+ e1 |5 f! G0 J; ]/ ]1 d9 g' Y& K
// =/ B9 z+ E$ V" z P0 ]0 E2 Q y
case 11:5 u/ {9 \" Q m. j
{
+ p6 k* `( @) Y: y! |8 l0 t. S, S1 Z1 g switch (fun)//加,减,乘,除选择标志位
4 f; a0 R8 g5 X {3 k* Y3 r9 K1 n, E- l+ W, V
case 0: o ^# l& H: i. Q' ~+ ~0 d
res=num1+num2,dis=2;( W* U V$ i3 A7 q" Z- [7 V
break;//加法) r' z0 }3 O5 S) z4 Z* i8 ~
case 1:. p ^$ f, j' \9 ]
res=num1-num2,dis=2;4 E0 G$ {( `% k
break;//减法
, g6 s4 i' ~! L$ T0 Q6 _. w1 r case 2:res=num1*num2,dis=2;
T2 A# K( Y- ^, z break;//乘法 J4 j S' G4 @
case 3:res=num1/num2,dis=2;
7 A3 }3 O2 C9 Q" ^ break;//除法# n5 d2 t4 b) _: K
}
' D3 O' ~& F& H5 ` };/ s3 g+ t4 A* W
break;: d9 s3 _8 i& F/ I' W* \! R
// +
2 |: N# H5 d9 E6 b case 12:
) |* J/ O& J4 l1 ?, }8 l9 y4 Z" l fun=0,aa=1,shanshuo();
2 i% O( j6 H# g0 W break;
, m4 e8 s, L# c. V. @ // - \$ C1 s3 i/ @
case 13:6 q! Y+ g' q6 Q4 S
fun=1,aa=1,shanshuo();
/ y. e6 p- p8 _ break;
/ e) v7 C0 g' A* e // * : M2 y8 K5 k6 S
case 14:
$ z; X2 _4 K+ X) [: C' s* C fun=2,aa=1,shanshuo();: s' o5 b W+ t
break;
! m1 e$ P* ~0 c // /
9 Z- Z1 c0 E+ ]& T, L case 15:% {1 D: c( w+ Z
fun=3,aa=1,shanshuo();
7 x3 A5 Q' N' A! {. p3 @; S! v break;
4 V$ a+ U4 h, @. S: {4 R }( h$ ?% J9 m5 N! J8 M- A
}
/ r& b# M) a5 D. b% Q" [4 b! V else
2 Z7 B7 K6 _6 r0 o6 g- l {
$ p( P. @# w* n7 U) L switch (aa)//运算变量赋值标志位
$ ~" M# E5 x' E3 g! I X) a {
/ z3 I2 ?) `# R! H7 F case 0:8 {1 S3 H3 i! L3 G$ C
{
9 k% e2 V# Y$ s num1=num1*10+key;//把按键检测到的值赋给num1运算变量1 . U U( Z8 A8 i7 S/ @; q
}; \$ K: m6 G" Z% Y M
break;
8 E. L3 F. ?: Z7 \ l( g8 K. u case 1:
" @8 e8 n* A- B2 B; _ {
7 D9 g4 z" \4 x- v8 O' ~ dis=1;( y# H$ _/ y( r( F, w! S
num2=num2*10+key;//把按键检测到的值赋给num2运算变量28 S/ ^+ @2 l+ G2 P8 }. m4 ^# n
};" v* U* K2 s2 p6 n1 v3 L, Q
! N V, q. t2 Q' d( j
9 n; O: @+ f4 W2 F4 Z9 G# _! F: X+ ?4 n5 ^" _+ ?4 i* C7 W2 ]
/ x& |, b8 i. a; }9 n/ w8 d
…………余下代码请下载附件…………
7 X, y- i2 j5 J2 A' @4 s0 W
. r5 S7 I7 j! |2 E0 ?
; M# u- w9 V, \' o+ w1 T5 _下载:) P6 L! v+ Q+ F7 |$ W0 c2 q7 c
5 D/ B& I. k- X# W; {- A/ y! V6 ^1 U |
|