问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...单片机练习 按下16个矩阵键盘依次在数码管上显示1-16的平方...

发布网友 发布时间:2024-10-03 08:17

我来回答

2个回答

热心网友 时间:2024-10-03 08:28

#include <REGX51.H>

#define uchar unsigned char

#define uint unsigned int

uchar Bits=0,Ten=0,Hundred=0,Thousand=0;

uchar code ledshow[10]={ 0x3F,/*0*/

        0x06,/*1*/

        0x5B,/*2*/

        0x4F,/*3*/

        0x66,/*4*/

        0x6D,/*5*/

        0x7D,/*6*/

        0x07,/*7*/

        0x7F,/*8*/

        0x6F,/*9*/} ; //共阴数码管代码

uchar code jz_code[17]={0xff,

                        0xee,0xed,0xeb,0xe7,

0xde,0xdd,0xdb,0xd7,

0xbe,0xbd,0xbb,0xb7,

0x7e,0x7d,0x7b,0x77};  //键盘代码

uint code Data_square[]={0,

                          1,4,9,16,

      25,36,49,64,

      81,100,121,144,

      169,196,225,256};   //平方

void delay(unsigned char a)  //延时

{

unsigned char i;

while(a--)

for(i=100;i>0;i--);

}

uchar kbscan(void)          //键盘扫描

{

  unsigned char hang,lie,key;

    P1=0xf0;

delay(5);

lie=P1;

P1=0x0f;

delay(5);

hang=P1;

for(key=16;key>0;key--)

{

 if(jz_code[key]==(hang|lie)) break;

}

return (key);

}

void data_bcd(void)  //分解平方后的结果

{

 uchar i;

 i= kbscan();

 if(i!=0)

 {

 Bits=Data_square[i]%10;    //个位

 Ten=(Data_square[i]%100)/10;    //十位

 Hundred=(Data_square[i]%1000)/100;//百位

 Thousand=Data_square[i]/1000;     //千位

 }

}

void display(void)//数码管显示,调试方法:数码管间隔跳动函数中 delay(5);四个,调小

{

 data_bcd();

 P0=ledshow[Thousand];

 P2_0=0;

 delay(5);

 P2_0=1;

 P0=ledshow[Hundred];

 P2_1=0;

 delay(5);

 P2_1=1;

 P0=ledshow[Ten];

 P2_2=0;

 delay(5);

 P2_2=1;

 P0=ledshow[Bits];

 P2_3=0;

 delay(5);

 P2_3=1;

}

                  

void main(void)

{  

   P2=0xff;

   while(1)

   {

display();

   }

}

热心网友 时间:2024-10-03 08:23

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P3^6;
sbit elre=P3^7;
sbit K1=P1^4;
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;
uchar code tabled[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delay(uint a)
{
uint i,j;
for(j=a;j>0;j--)
for(i=110;i>0;i--);
}
void key_scan()
{
if(K1==0)
{
uint a;
delay(10);
if(K1==0)
{
while(!K1);

for(a=100;a>0;a--)
{
beep=0;
delay(1);
beep=1;
delay(1);
}
}
}
if(K2==0)
{
uchar j;
delay(10);
if(K2==0)
{
while(!K2);
for(j=0;j<16;j++)
{
P2=0;
P0=tabled[j];
delay(1000);
P0=0xff;
}
}
}
if(K3==0)
{
delay(10);
if(K3==0)
{
while(!K3);
elre=0;
delay(1000);
elre=1;
delay(1000);
}
}
if(K4==0)
{
delay(10);
if(K4==0)
{
while(!K4);
P1=0xaa;
P0=~0xaa;
delay(10000);
P1=0xff;
P0=0xff;
}
}
}
void main()
{
while(1)
{
key_scan();
}
}
这是我自己写的,肯定对的,控制部分是用的三极管
如果你得是锁存器我也可以发给你
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
北大青鸟设计培训:跳槽转行选择什么行业最有发展前途? 贝玲妃翘佳人睫毛膏的上色效果怎么样? 贝玲妃反孔精英轻盈底霜的延展性如何? 贝玲妃蒲公英羞颜胭脂蜜的持妆能力如何? 贝玲妃反孔精英红粉救兵底霜的质地如何? 贝玲妃桃气佐治亚胭脂蜜粉的定妆效果如何? 跪求一篇坚持议论文,有例子,具备议论文三要素,别超出初二学生的... 怎么样集邮 有湖北湖南,广西广东,为啥有江西却没江东?专家:历史上还真有 在芜湖旅行的目的地该如何选择? 打官司获得的利润要交税应该减去律师费那一部分吗? 打官司判决的钱进公司帐要交税吗 打官司赔的钱要上税吗 千牛如何同时登陆多个账号? stc单片机下载程序一直正在检测目标单片机怎么办? 单片机中断函数问题? 单片机程序跑飞的现象、原因以及解决方法 如何用bluesky51单片机开发板用4*4矩阵键盘输入4位简易密码,不用到数... 聊斋志异的聊斋的含义 聊斋志异的聊斋是什么意思 怎么把密室逃脱之墨黑色房间弄进空间里 密室逃脱5墨黑色房间为什么名字填了看不到也不能开始? 教程上的一段单片机程序,有bug,有时候总按出0来,不知道怎么回事,大神... 医用碘伏过敏,伤口上面红肿还有小泡泡 执业药师再次注册时继续教育学分不够怎么办 ...像普通贴纸那样搞半天也搞不开来!而且它上面有一层透明的纸,是... 一张透明的塑料,放在灯光上面,表现出来的是散光的,五光十色的感觉.这是... 欧洲杯冠军队可以获得哪项荣誉? 欧洲冠军可以获得什么奖项 欧洲杯冠军可以获得哪项荣誉 欧洲杯冠军有哪项荣誉 用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方... 发现他人冒充笔迹写借条怎么办? 需要怎么让别人借条还钱 人与狗发生过的感人故事有哪些? WPS保存失败是什么原因? 德克-诺维茨基选秀顺位排名多少 NBA里有哪些德国球员 ...甜蜜的爱果、神父下海记、魔之恋、迟到的理由、美人计、皆大欢喜... ...0123456789ABCDEF,六个数码管是连续不同的六个数? 可以把迷羊的新书《魔之恋》、《菊花台》、《恩将仇报》《鬼迷心窍... ...两条大鱼,一条小鱼,其中一条红色的大鱼好像快不行了,但是一看还活的... 包袱什么意思 关电脑无缘无故死机,卡在正在关机的页面. ...系统重装过了,唯独卡在正在关机的页面,小圆圈一直在转 51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真+... 三星手机a3000有变音功能吗 三星a3000手写怎样输入 三星a3000音量在耳机怎么切还 中药治疗鳞状细胞癌:患者65岁,于15年8月份查出患肺癌,12月份确定为中央... 肺癌鳞状细胞癌中医治疗好吗