标题:
求单片机程程设计
[打印本页]
作者:
baby8661
时间:
2009-6-17 22:34
标题:
求单片机程程设计
本帖最后由 baby8661 于 2009-6-18 14:25 编辑
哪位高手会的,麻烦帮个忙啊!万分感激!
题目如下:系统设置2个功能键“学号”键和“帮助”键,一行6位的LED显示器,每按下一个键时就能显示相应的要求(1、开机。上电显示“8,8,8,8,8,8”;2、在按下“学号”键时,6位显示器显示学好的后6位,如“440123”;3、在按下“帮助”键时。6位显示器显示“helpyu")
麻烦帮编写个程序!不会啊,我学的不是机电专业,也不是自动化,但偏要我们弄这个,头大!哪位大侠会的帮帮忙!越快越好!
谢谢大家的热心帮忙!本人是学焊接的!
作者:
小枫
时间:
2009-6-17 22:39
兄弟 你一不是自动化 二不是计算机 三不是测控 怎么要学单片机呢?
作者:
haberliu
时间:
2009-6-17 22:43
你什么专业
这是一个很简单的程序
我给你一个有功能按键的程序你看哈
照着改就可以了
作者:
haberliu
时间:
2009-6-17 22:45
#include "reg52.h"
#define THCO 0xee
#define TLCO 0x0
unsigned char code Duan[]={0x3F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char Data_Buffer[4]={0,0,0,0,};
sbit P10=P1^0; //数码管位码口定义
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit LED1=P2^3; //LED灯的定义
sbit LED2=P2^4;
sbit LED3=P2^5;
sbit LED4=P2^6;
sbit P20=P2^0; //按键的定义
sbit P21=P2^1;
sbit P22=P2^2;
sbit P32=P3^2;
sbit louder=P1^4; //蜂鸣器的定义
bit flag=0; //标志的定义
bit start=1;
int f=0;
unsigned char Msec=0;//静态变量的定义
unsigned char Sec=0;
unsigned char Min=0;
unsigned char Hour=0;
unsigned char Count=0;
unsigned char Count1=0;
unsigned char Bit=0;
unsigned char mode=0;
unsigned char record=0;
unsigned char show=0;
unsigned char show1=0;
unsigned char mask[3][4]; //子函数声明
void rember();
void display();
void stop();
void delay();
void main() //主函数
{
louder=1;
TMOD=0x11; //定时器初始化,5ms定时
TH0=THCO;
TL0=TLCO;
TR0=1; //外部中断0,边沿触发方式
ET0=1;
EA=1;
while(1)
{
if(f==1)
{
louder=!louder;LED1=!LED1; delay(); LED1=1;
}
if(f==2)
{
louder=!louder; delay();LED2=!LED2; delay();LED2=1;
}
if(f==3)
{
louder=!louder; LED3=!LED3;delay(); LED3=1;
}
if (start==1)
if (show==0)
{
if(mode==0)
{
Data_Buffer[0]=Sec/10;
Data_Buffer[1]=Sec%10;
Data_Buffer[2]=Msec/10;
Data_Buffer[3]=Msec%10;
}
if(mode==1)
{
Data_Buffer[0]=Min/10;
Data_Buffer[1]=Min%10;
Data_Buffer[2]=Sec/10;
Data_Buffer[3]=Sec%10;
}
if(mode==2)
{
Data_Buffer[0]=Hour/10;
Data_Buffer[1]=Hour%10;
Data_Buffer[2]=Min/10;
Data_Buffer[3]=Min%10;
}
}
}
}
void timer0() interrupt 1
{
TH0=THCO;
TL0=TLCO;
P1=0X1F;
Count++;
Bit++;
if(Bit>=4)Bit=0;
switch(Bit)
{
case 0: P10=0;break;
case 1: P11=0;break;
case 2: P12=0;break;
case 3: P13=0;break;
}
if(Bit==1&&flag==1)
P0=0x80|Duan[Data_Buffer[Bit]]; //小数点的输出
else P0=Duan[Data_Buffer[Bit]];
if(Count%100==0)flag=!flag;
if(Count%2==0)Msec++; //跑秒计算
if(Count==200) //秒计算
{
Count=0;
Msec=0;
Sec++;
}
if(Sec==60) //分的计算
{
Sec=0;
Min++;
}
if(Min==60) //小时的计算
{
Min=0;
Hour++;
}
if(Hour==24)Hour=0;
if (P20==0||P21==0||P22==0||P32==0) //判断是否有键按下
{
Count1++;
if(Count1>=60)
{
Count1=0;
if(P20==0)
{
mode++; if(mode==3) mode=0;
}
else if (P21==0) rember();
else if (P22==0) display();
else if (P32==0) stop();
}
}
}
void rember() //记录子函数
{ record++;
if(record==4)record=0;
else if( record==1)
{ LED1=!LED1;LED1=1;
mask[0][0]=Sec/10;
mask[0][1]=Sec%10;
mask[0][2]=Msec/10;
mask[0][3]=Msec%10;
}
else if(record==2)
{ LED2=!LED2;LED2=1;
mask[1][0]=Sec/10;
mask[1][1]=Sec%10;
mask[1][2]=Msec/10;
mask[1][3]=Msec%10;
}
else if(record==3)
{ LED3=!LED3;LED3=1;
mask[2][0]=Sec/10;
mask[2][1]=Sec%10;
mask[2][2]=Msec/10;
mask[2][3]=Msec%10;
}
}
void display() //显示子函数
{
show++;
switch(show)
{
case 1: Data_Buffer[0]=mask[0][0];
Data_Buffer[1]=mask[0][1];
Data_Buffer[2]=mask[0][2];
Data_Buffer[3]=mask[0][3];
f=1;break;
case 2: Data_Buffer[0]=mask[1][0];
Data_Buffer[1]=mask[1][1];
Data_Buffer[2]=mask[1][2];
Data_Buffer[3]=mask[1][3];
f=2;break;
case 3: Data_Buffer[0]=mask[2][0];
Data_Buffer[1]=mask[2][1];
Data_Buffer[2]=mask[2][2];
Data_Buffer[3]=mask[2][3];
f=3;break;
case 4: Msec=0;Sec=0;
Data_Buffer[0]=Sec/10;
Data_Buffer[1]=Sec%10;
Data_Buffer[2]=Msec/10;
Data_Buffer[3]=Msec%10;
f=0;louder=0;break;
}
if(show==5)show=0;
}
void stop()
{
start=!start;
}
void delay()
{
int i=0;
for(;i<=25;i++);
}
作者:
飘落尘心
时间:
2009-6-17 23:04
膜拜楼上
作者:
jiu63577
时间:
2009-6-17 23:04
也,你还牛劈呀。。。
作者:
伯牙抚琴
时间:
2009-6-17 23:14
楼上的楼上的程序 写的太 长了吧
实现楼主说的功能汇编用不了都少
作者:
羽翼April
时间:
2009-6-17 23:19
[quote]楼上的楼上的程序 写的太 长了吧
实现楼主说的功能汇编用不了都少
伯牙抚琴 发表于 2009-6-17 23:14
[/quote
还是C简单明了点,汇编记起来太恼火了。
作者:
爱的誓言
时间:
2009-6-17 23:26
我还是自动化专业的都没弄懂单片机哦...
作者:
daobiancao9
时间:
2009-6-17 23:45
本来说给你写个简单明了的,但是既然有高手出手,就不丢人了哈,你读懂就行了,8051有密保的,放心,老师不会知道你的源程序是怎样的
作者:
baby8661
时间:
2009-6-18 14:22
我学的是材料成型及控制工程(焊接方向)。我们要学这种东西,无语啊!
作者:
baby8661
时间:
2009-6-18 14:24
4#
haberliu
先谢谢这兄弟,我要的是单片机程序,你给的是C语言啊!
作者:
小b
时间:
2009-6-21 22:21
c51程序,就是用C语言写的撒!
定义相应端口就行啦!!!
作者:
daobiancao9
时间:
2009-6-26 17:27
12#
baby8661
难道你想用汇编吗?
作者:
313331290
时间:
2009-6-26 17:49
呵呵 我们刚刚实习完
作者:
baby8661
时间:
2009-6-28 17:39
本人自己编完了!哈哈·····
作者:
313331290
时间:
2009-6-28 20:32
支持 啊
欢迎光临 重科益欣社区 (http://bbs.xx215.cn/)
Powered by Discuz! 7.2