i
cludereg51hi
cludei
tri
shdefi
eucharu
sig
edchardefi
eui
tu
sig
edi
t
宏定义
数码管startuchard10uchard20uchard30uchard40ui
tp0所要显示的数据uchardisp40PE2SCL13SCL24SDA1sbitSCL1P10sbitSCL2P11sbitSDA1P12sbitLEDP134X4键盘定义start键盘用PH口sbitv1P20列sbitv2P21sbitv3P22sbitv4P23sbith1P24行sbith2P25sbith3P26sbith4P274X4键盘定义e
duchartemp
um0ucharcodewei0x010x020x040x08四位数码管位选共阳ucharcodewei0x010x020x040x08四位数码管位选共阴ucharcodedua
0xc00xf90xa40xb00x990x920x820xf80x800x90管CAucharcodedua
0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f管CC0123456789voiddelayui
tz12M约为1msui
txyforxzx0xfory110y0y4X4键盘
共阳数码共阴数码
输入
4
位数码管
输出
fstartvoidHC595_i
u
sig
edcharData74hc595串行数据输入u
sig
edcharifori0i8i循环8次,刚好移完8位SCL10先将移位寄存器控制引脚置为低SDA1Data0x80取数据的最高位SDA1DataData1将数据的次高位移到最高位SCL11再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位voidHC595_outvoid74hc595并行数据输出SCL20先将存储寄存器引脚置为低_
op_SCL21再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。voiddigital_displayvoid4位数码管显示数据uchariui
tp7367显示数据pd1p1000d2p10010d3p1010d4p10disp0dua
d1disp1dua
d2disp2dua
d3disp3dua
d4LED0fori0i4i有四位数码管,四位依次扫描HC595_i
weii先传位码HC595_i
dua
i再传段码HC595_i
dispiHC595_outdelay2延迟时间2ms以内
fu
sig
edi
tkeyboardkeyboard线反转法staticu
sig
edi
ta0u
sig
edchara10b10行线P247为输入线,列线P203为输出线v1v2v3v40h1h2h3h41ifP20xf0检查行是否有按键按下delay20ifP20xf0行线为输入线,列线为输出线v1v2v3v40h1h2h3h41a1P2行线为输出线,列线为输入线h1h2h3h40v1v2v3v41b1P2aa1b1与0x03相或是为了屏蔽p20和p21的影响ifa0xe7retur
0elseifa0xebrer