按S0键,七段数码管管上显示加1,按S1键盘,加2。大于99从0重新开始。(带上流程图、仿真图和编程)

【矩阵键盘按s1-s16显示到16*16点阵和数码管1-f,蜂鸣器单数响】_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:118,378贴子:
【矩阵键盘按s1-s16显示到16*16点阵和数码管1-f,蜂鸣器单数响】收藏
at90c51单片机595锁存器,求帮看看我的程序哪错了,数码管的做对了,蜂鸣器不连续响,点阵是乱的还闪
提供低风险的产品开发,出色的技术支持,更低的系统总成本和更快的上市时间
#include&reg51.h&#define uchar unsigned char#define uint
unsigned int#define ulong unsigned long#define GPIO_DIG P0#define GPIO_KEY P2sbit MOSIO = P3^4;sbit R_CLK = P3^5;sbit S_CLK = P3^6; sbit Beep
= P1^5;uchar KeyVuchar code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08,0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00,0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};//--F字模--//uchar code tab16[]={64,248,68,72,0,0,0,0,0,0,0,0,0,0,0,0,16,31,16,0,0,0,0,0,0,0,0,0,0,0,0,0};//--E字模--//uchar code tab15[]={0,128,64,64,64,64,128,0,0,0,0,0,0,0,0,0,0,15,18,18,18,18,11,0,0,0,0,0,0,0,0,0};//--D字模--//uchar code tab14[]={0,0,128,64,64,68,252,0,0,0,0,0,0,0,0,0,0,7,8,16,16,8,31,16,0,0,0,0,0,0,0,0};//--C字模--//uchar code tab13[] ={0,128,64,64,64,64,128,0,0,0,0,0,0,0,0,0,0,15,16,16,16,16,8,0,0,0,0,0,0,0,0,0};//--B字模--//uchar code tab12[] = {4,252,64,64,64,128,0,0,0,0,0,0,0,0,0,0,0,31,16,16,16,8,7,0,0,0,0,0,0,0,0,0};//--A字模--//uchar code tab1[] = {0,128,64,64,64,128,0,0,0,0,0,0,0,0,0,0,0,12,18,17,9,31,16,0,0,0,0,0,0,0,0,0};//--09字模--//uchar code tab2[] = {0,112,136,4,4,136,240,0,0,0,0,0,0,0,0,0,0,4,8,17,17,8,7,0,0,0,0,0,0,0,0,0};//--08字模--//uchar code tab3[] = {0,48,72,132,132,72,48,0,0,0,0,0,0,0,0,0,0,6,9,16,16,9,6,0,0,0,0,0,0,0,0,0};//--07字模--//uchar code tab4[] = {16,12,4,4,132,100,28,0,0,0,0,0,0,0,0,0,0,0,0,30,1,0,0,0,0,0,0,0,0,0,0,0};//--06字模--//uchar code tab5[] = {0,240,136,68,68,136,48,0,0,0,0,0,0,0,0,0,0,7,8,16,16,8,7,0,0,0,0,0,0,0,0,0};//--05字模--//uchar code tab6[] = {0,252,68,68,68,132,4,0,0,0,0,0,0,0,0,0,0,4,8,16,16,8,7,0,0,0,0,0,0,0,0,0};//--04字模--//uchar code tab7[] = {0,0,192,48,12,252,0,0,0,0,0,0,0,0,0,0,0,3,2,2,18,31,18,2,0,0,0,0,0,0,0,0};//--03字模--//uchar code tab8[] = {0,48,8,132,132,72,48,0,0,0,0,0,0,0,0,0,0,4,8,16,16,9,6,0,0,0,0,0,0,0,0,0};//--02字模--//uchar code tab9[] = {0,48,8,4,132,72,48,0,0,0,0,0,0,0,0,0,0,28,18,17,16,24,4,0,0,0,0,0,0,0,0,0};//--01字模--//uchar code tab10[] = {0,0,8,8,252,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,31,16,16,0,0,0,0,0,0,0,0,0};//--00字模--//uchar code tab11[] = {0,240,8,4,4,8,240,0,0,0,0,0,0,0,0,0,0,7,8,16,16,8,7,0,0,0,0,0,0,0,0,0};uchar code DIG_CODE[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};void HC595SendData(
uchar BT3, uchar BT2,uchar BT1,uchar BT0);void Delay10ms(uint c);void Delay(uint r);void KeyDown();
void main(void){
KeyDown();
GPIO_DIG = DIG_CODE[KeyValue];
}}void KeyDown(void){
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
Delay10ms(1);
if(GPIO_KEY!=0x0f)
GPIO_KEY=0X0F;//
switch(GPIO_KEY)
case(0X0e):KeyValue=3;
case(0X0d):KeyValue=2;
case(0X0b): KeyValue=1;
case(0X07):KeyValue=0;
GPIO_KEY=0XF0; //
switch(GPIO_KEY)
case(0X70):KeyValue=KeyV
case(0Xb0):KeyValue=KeyValue+4;
case(0Xd0): KeyValue=KeyValue+8;
case(0Xe0):KeyValue=KeyValue+12;
for(k = 0; k & 16; k++)
switch(KeyValue)
case 9:HC595SendData(tab2[2*k +1],tab2[2*k],tab0[2*k],tab0[2*k + 1]);case 8:HC595SendData(tab3[2*k +1],tab3[2*k],tab0[2*k],tab0[2*k + 1]);
case 7:HC595SendData(tab4[2*k +1],tab4[2*k],tab0[2*k],tab0[2*k + 1]);case 6:HC595SendData(tab5[2*k +1],tab5[2*k],tab0[2*k],tab0[2*k + 1]);case 5:HC595SendData(tab6[2*k +1],tab6[2*k],tab0[2*k],tab0[2*k + 1]);case 4:HC595SendData(tab7[2*k +1],tab7[2*k],tab0[2*k],tab0[2*k + 1]);case 3:HC595SendData(tab8[2*k +1],tab8[2*k],tab0[2*k],tab0[2*k + 1]);case 2:HC595SendData(tab9[2*k +1],tab6[2*k],tab0[2*k],tab0[2*k + 1]);
case 1:HC595SendData(tab10[2*k +1],tab10[2*k],tab0[2*k],tab0[2*k + 1]);case 0:HC595SendData(tab11[2*k +1],tab11[2*k],tab0[2*k],tab0[2*k + 1]);case 10:HC595SendData(tab1[2*k +1],tab1[2*k],tab0[2*k],tab0[2*k + 1]);case 11:HC595SendData(tab12[2*k +1],tab12[2*k],tab0[2*k],tab0[2*k + 1]);case 12:HC595SendData(tab13[2*k +1],tab13[2*k],tab0[2*k],tab0[2*k + 1]);case 13:HC595SendData(tab14[2*k +1],tab14[2*k],tab0[2*k],tab0[2*k + 1]);case 14:HC595SendData(tab15[2*k +1],tab15[2*k],tab0[2*k],tab0[2*k + 1]);case 15:HC595SendData(tab16[2*k +1],tab16[2*k],tab0[2*k],tab0[2*k + 1]);
while((a&50) && (GPIO_KEY!=0xf0))
Delay10ms(1);
}}void Delay10ms(uint c)
for (;c&0;c--){for (b=38;b&0;b--){for (a=130;a&0;a--);}
}void HC595SendData(
uchar BT3, uchar BT2,uchar BT1,uchar BT0){
for(i=0;i&8;i++){MOSIO = BT3 && 7 ;BT3 &&= 1;S_CLK = 0;S_CLK = 1;}for(i=0;i&8;i++){MOSIO = BT2 &&7;BT2 &&= 1;S_CLK = 0;S_CLK = 1;}for(i=0;i&8;i++){MOSIO = BT1 && 7;BT1 &&= 1;S_CLK = 0;S_CLK = 1;}for(i=0;i&8;i++){MOSIO = BT0 && 7;BT0 &&= 1;S_CLK = 0;S_CLK = 1;}R_CLK = 0;R_CLK = 1; R_CLK = 0; } void Delay(uint r){
for(r; r & 0; r--)
for(s = 200; s & 0; s--);}
我正在学这个,我想问一下HC595SendData(tab2[2*k +1],tab2[2*k],tab0[2*k],tab0[2*k + 1])是什么意思呢
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或数码管显示4×4矩阵键盘的键盘号( 程序解释好了 )大作业_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数码管显示4×4矩阵键盘的键盘号( 程序解释好了 )大作业
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢数码管显示与键盘扫描系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数码管显示与键盘扫描系统
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩8页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢【图文】数码管显示_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
数码管显示
上传于||暂无简介
大小:466.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 数码管 的文章

 

随机推荐