找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4819|回复: 3
打印 上一主题 下一主题
收起左侧

拿到51hei开发板后写的第一个程序,请指教!

[复制链接]
跳转到指定楼层
楼主
ID:37685 发表于 2012-4-3 02:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计要求:按下S4键则灯由上向下流动然后灯全亮,按下S5键则灯由下向上流动然后灯全灭,蜂鸣器报警 这个这么久我才做出来 我擦.

#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char
sbit WEI=P2^7;      //U2 74HC573的LE端    数码管的位选端
sbit DUI=P2^6;      //U1 74HC573的LE端    数码管的段选位
sbit SJ=P1^4;       //LED发光管的使能端

sbit spk=P2^2;   //蜂鸣器
sbit S4=P3^6;  //按键S4
sbit S5=P3^7;    //按键S5
uint num;
uint i;
uint j;
uchar code table_1[]={
0x7F,0x3F,0x1F,0x0F,
0x07,0x03,0x01,0x00
};

uchar code table_2[]={
0x01,0x03,0x07,0x0F,
0x1F,0x3F,0x7F,0xFF
};



void delay(uint Z)
{
for(i=Z;i>0;i--)
for(j=0;j<1000;j++);
}

void main()
{
SJ=0;  //开LED总使能
WEI=1;   //让位选的U2 74hc573处于直通状态
DUI=1;   //让段选的U2 74hc573处于直通状态
P0=0xff; //让所有数码管不显示,防止数码管干扰
WEI=0;   //锁存,让位选的74hc573保持现在的状态不变,也就是一直不显示,如果不写这几行,数码管和点阵也会显示
DUI=0;   //锁存,让段选的74hc573保持现在的状态不变,也就是一直不显示,如果不写这几行,数码管和点阵也会显示
while(1)
{
if( S4==0)
{
spk=1;
for(num=0;num<8;num++) 
 {P0=table_1[num];delay(100);}
}
else if (S5==0)
{
for(num=0;num<8;num++)
   {P0=table_2[num];delay(100);}
spk=0;
}
}
} 

我写的第一个程序

用了一个多小时

遇到几个问题,想请教一下:

 

  第一就是 电路 LED是P0控制的 跟视频有不一样的  能不能列个单那样的  跟视频不一样的连接的地方 我找起来方便些 ,不弄也无所谓 不是什么问题


 

  编程遇到的问题  变量难道必须是 全局变量吗  在 for(num=0;num<8;num++) 这里定义 uint num到时候 编译错误 是什么情况 我搞不懂


 

  还有就是 按键 操作 能不能用 switch语句实现 我想写 但是 switch(变量)这个变量这里不知道怎么处理,怎么去识别按键  这个是不是集合一个函数(假如有这么一个函数,专门用来识别按键的,返回的是按键的标志位,就像中断返回的interrupt一样)


[此贴子已经被作者于2012-4-3 2:31:55编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2012-4-3 02:43 | 只看该作者

1.只有流水灯和视频的电路不一样哦,其他都基本一样,只是端口的区别而已,流水灯部分的教程在:http://www.51hei.com/bbs/dpj-4882-1.html

 

2.变量当然可以定义函数内部的变量啊,但是一定要定义在函数的头部哦.

 

3.switch当然可以用,开发板附带的的光盘提供了1个很经典实用switch开关分支的程序“矩阵键盘_c_按键显示1-16平方”你可以参考下他的源代码

回复

使用道具 举报

板凳
ID:37736 发表于 2012-4-3 18:40 | 只看该作者

1.第一部分 使能 看电路 就明白了

2.就是这程序里面的for循环num是全局变量 我可不可以写成for(uint num=0;num<8;num++)这样的形式来声明呢?为什么会报错  在vs里面这样用是没问题的

3.switch可以用 我只是说明了下我的想法 关于那个案例我还没有看,具体情况可能以后会请教

回复

使用道具 举报

地板
ID:1 发表于 2012-4-4 02:58 | 只看该作者
2.c语言里面没有那个用法的哦,必须要先声明了才能使用的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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