找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

keil 中变态的c语言问题-急!

[复制链接]
admin 发表于 2012-9-2 17:19:46 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
数码管移位扫描显示.rar (18.65 KB, 下载次数: 1)
此程序是一个键盘扫描,数码管移位显示的c语言程序,用的是89s52的单片机;思路大概就是:将键盘扫描到的数值在数码管上移位显示,就像平常的计算器那样输入,最新输入的数据始终显示在最右端,第一次键盘输入的数据显示在数码管最左端……然后依次。
#include<regx52.h>
#include<keyscan.h>//键盘扫描子程序
#define uint unsigned int
#define uchar unsigned char
uchar i=0;uchar j;
uchar code seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//段码,共阳型,0-9,a-f
uchar code scan[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选,分别选择从右到左的数码管
uchar counter[8];//记录8位数码管每位的值
void main()
{
uchar n=0;
while(1)
{
n=0;
n=keyscan();

/* for(j=6;j>=0;j--)
counter[j+1]=counter[j]; */ //用此for语句代替下面的几条移位语句不能显示,用以下的则能显示。此,问题1
if(n%17) //如果键盘有输入,则移位一次。键盘子程序返回1-16,可是这句好像没起什么作用,按键一次其内的语句就无限次的执行,以至8位数码管显示的都是一个数值
{//此,问题2
counter[7]=counter[6];
counter[6]=counter[5];
counter[5]=counter[4];
counter[4]=counter[3];
counter[3]=counter[2];
counter[2]=counter[1];
counter[1]=counter[0];
counter[0]=n-1;
}
P0=seg[counter];
P3=scan;

i++;
if(i==8) i=0;
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 09:29 , Processed in 0.057934 second(s), 14 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表