c语言显示数字p1=0x5b,模拟计算器数字输入及显示
原标题:模拟计算器数字输入及显示
吴鉴鹰单片机开发板地址
店铺:【吴鉴鹰的小铺】
地址:【https://item.taobao.com/item.htm?_u=ukgdp5a7629&id=524088004171】
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;
}
}
喜欢本文的亲们,欢迎点赞
技术源于积累,成功来自执着
——单片机精讲吴鉴鹰返回搜狐,查看更多
责任编辑:
c语言显示数字p1=0x5b,模拟计算器数字输入及显示相关推荐
- 模拟计算器数字输入及显示
1. 实验任务 (1. 开机时,显示"0" (2. 第一次按下时,显示"D1":第二次按下时,显示"D1D2":第三 ...
- python绘制直方图显示数字_Python实现绘制双柱状图并显示数值功能示例
本文实例讲述了Python实现绘制双柱状图并显示数值功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 import matplotlib.py ...
- linux点阵数字图案,LED8X8点阵显示数字0-9数字
下面是电路图: /* 名称:8X8LED点阵显示数字 说明:1.8X8LED点阵屏循环显示数字0~9,刷新过程为动态变换完成. 2.行扫描为XX,接P1口,列扫描为YY,接P3口 */ #includ ...
- 一分钟学会自定义右上角显示数字的ImageView
平时在一些app上会看到一些图标的右上角会显示数字,如微信的头像右上角显示信息数量,淘宝的购物车图标右上角显示商品数量.本人最近也在努力学习自定义控件,下面是本人实现的一个简陋的带数字的ImageVi ...
- 关于0.96 OLED显示屏显示数字
在使用0.96 OLED显示屏的时候,我发现显示数字是一个大问题,特别是关于显示浮点型数据,自己折腾了一番,目前虽然浮点型显示上还有不小的问题,但可以满足最低级别的需求. 首先声明,本文中使用的程序是 ...
- c语言共阴极数码管数字6,共阴数码管 显示数字 C语言程序
共阴数码管显示数字C语言程序#include void Delay(unsigned char a) { unsigned char i; while( --a != 0) { for(i = 0; ...
- 单片机 c语言 数字 0 9,单片机点阵式LED显示技术数字“0-9”
1.实验任务利用8X8点阵显示数字0到9的数字. 2.电路原理图 图4.25.1 3.硬件系统连线(1).把"单片机系统"区域中的P1端口用8芯排芯连接到"点阵模块&qu ...
- 设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。
(2)计算功能:实现加.减.乘.除等双目运算,开平方.百分数等单目运算: (3)辅助功能:按钮"C"清空文本框:按钮"←"退格,删除文本框中最右边的一个字符. ...
- c语言中乱显示数字,同时显示不同的数字
在上一讲的代码中几个数码管只能同时显示相同的数字和字母,这一讲我们实现同时3个数码管点亮但每个数码管显示的数字都不一样,所以我们做一个用来显示一个变量一秒后自加1的显示效果. 例如,此时时间过去了16 ...
最新文章
- 【廖雪峰python入门笔记】list_按照索引访问
- linux kernel devel和kernel source的区别
- dede单独显示查到了多少条记录的方法
- php的array跟go的array,实现类似php的array_column方法
- Scala入门到精通——第二十一节 类型参数(三)-协变与逆变
- ssl1624-小萨的烦恼【图论,最短路,Floyd】
- 综述 | 万字长文带你入门近几年深度学习的重要研究成果
- android m在哪下载地址,android m预览版SDK下载地址 android m预览版SDK下载网址
- linux下载镜像的命令wget,Linux wget命令整站下载做网站镜像
- AOAPC I: Beginning Algorithm Contests 题解
- Day 5内存管理,定义变量
- 浅谈前后端路由与前后端渲染
- pitch、yaw、roll三个角
- java百度云盘,看完直呼内行
- Debian 10 安装fonts-noto-cjk
- WorldFirst万里汇推出港币和离岸人民币账户!
- 三个数差的平方公式推导过程_学懂因式分解 你只差这8个完全平方公式推导结论 立马见效...
- you-get视频解析下载
- 结对开发——求二维环形数组所有子矩阵最大和的问题
- jQuery思维导图
热门文章
- 【面试题】HashMap 面试 21 问
- spark学习-37-Spark的SortShuffleManager
- SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
- 记一次项目代码重构:使用Spring容器干掉条件判断
- 关于spring的配置文件总结
- struts2的国际化(即实现网站整体中英文切换)实例
- JavaScript小效果的实现(笔记)
- phpexcel删除行_使用PHPExcel删除行
- 隐形Euler方法的java程序_常微分方程的解法 (二): 欧拉(Euler)方法
- English trip -- MC(情景课)3 C Do you have a sister?