当前位置:首页 > 单片机 > 单片机
[导读]模拟计算器数字输入及显示

1. (1. 开机时,显示“0”

(2. 第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。

2. 电路原理图

 

图4.23.1

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;

(2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

(3. 把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;

(4. 把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;

4. 相关程序设计内容

(1. 行列式键盘输入及按键功能设定;

(2. 动态数码显示;

(3. 数码显示方式处理;

5. 汇编源程序

(略)

6. C语言源程序

#include

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};

unsigned char dispbitcount;

unsigned char temp;

unsigned char i,j;

unsigned char key;

unsigned char keypos;

bit alarmflag;

void change(unsigned char *p,unsigned char count)

{

while(count>0)

{

*(p+count)=*(p+count-1);

count--;

}

}

void main(void)

{

TMOD=0x01;

TH0=(65536-4000) / 256;

TL0=(65536-4000) % 256;

TR0=1;

ET0=1;

EA=1;

while(1)

{

P3=0xff;

P3_4=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

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

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=7;

break;

case 0x0d:

key=8;

break;

case 0x0b:

key=9;

break;

case 0x07:

key=10;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

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

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=4;

break;

case 0x0d:

key=5;

break;

case 0x0b:

key=6;

break;

case 0x07:

key=11;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

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

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=1;

break;

case 0x0d:

key=2;

break;

case 0x0b:

key=3;

break;

case 0x07:

key=12;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

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

for(j=200;j>0;j--);

temp=P3;

temp=temp & 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

key=0;

break;

case 0x0d:

key=13;

break;

case 0x0b:

key=14;

break;

case 0x07:

key=15;

break;

}

if ((key>=0) && (key<10))

{

keypos++;

if(keypos<8)

{

change(dispbuf,keypos);

dispbuf[0]=key;

}

else

{

keypos=8;

alarmflag=1;

}

}

temp=P3;

P1_0=~P1_0;

temp=temp & 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

}

alarmflag=0;

}

}

}

}

void t0(void) interrupt 1 using 0

{

TH0=(65536-4000) / 256;

TL0=(65536-4000) % 256;

P0=dispcode[dispbuf[dispbitcount]];

P2=dispbitcode[dispbitcount];

dispbitcount++;

if (dispbitcount==8)

{

dispbitcount=0;

}

if (alarmflag==1)

{

P1_1=~P1_1;

}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

5月25日,中关村论坛在北京盛大开幕,来自全球知名的行业专家、领军企业齐聚一堂,以“开放合作·共享未来”为主题发布创新科技成果,展开深入交流。适逢创立三十周年的BOE(京东方)携柔性显示、高刷显示等领域的最新技术成果,绿...

关键字: 显示 物联网 显示屏幕

作为目前全国唯一经国务院批准的消费电子领域专业化、国际化展会,中国国际消费电子博览会(简称“电博会”)5月17日在青岛开幕。5万平方米的展区,展示了300余家消费电子、工业互联网领域企业的新产品、新成果。与展同步进行的高...

关键字: 显示 LCD显示 元宇宙

1 月 31 日消息,三星电子现公布 2022 年第四季度财报。三星电子第四季度净利润 23.50 万亿韩元,预估 4.71 万亿韩元。

关键字: 三星电子 电子 LCD 显示

在“2019国际新型显示技术展”上,TechSugar记者采访了四家显示领域的企业,有老兵、有新玩家,他们对产业有着个人独特的见解,公司的发展也处于特殊时期。在这产能过剩问题一直存在的行业,他们到底怎么活下去?

关键字: 显示 国产化 行业

12 月 5 日消息,今年 3 月,荣耀在海外推出了 X9 5G 手机,新机搭载了骁龙 695 芯片,采用 6.81 英寸 2388x1080 分辨率 LCD 屏,刷新率为 120Hz,售 1099 马来西亚林吉特(约合...

关键字: OLED 曲面屏 显示

QD-OLED面板,即量子点面板,是一种使用量子点(英文,quantum dot,QD)的显示设备,量子点是半导体纳米晶体,可以产生纯单色的红光、绿光和蓝光 [1] 。

关键字: 三星 显示 QD-OLED

我们先来说一说什么是排序、为什么要排序。什么是排序,这个很简单,就是把无序的东西按照一定的规则顺序排列成升序或者降序。为什么要排序,有两个原因,一是为了方便后面的查找,如果没有排序的话只能进行线性查找,时间复杂度是O(n...

关键字: 顺序排列 算法 显示

OLED显示屏是利用有机电自发光二极管制成的显示屏。由于同时具备自发光有机电激发光二极管,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性。

关键字: 三星 显示 OLED面板

7 月 12 日消息,今日,Omdia 发布报告称,全球显示面板制造商在 2022 年第三季度的产能利用率预计将降至 73%,这是自 2012 年以来该行业的创纪录低点。

关键字: 显示 面板 制造商

近日,据媒体报道,三星电子成功开发出了一种新的柔性OLED显示屏贴合方法,该技术能够在降低屏幕厚度以及生产成本的同时,制作出更为出色的无边框手机。

关键字: 三星 OLED 屏幕 显示
关闭
关闭