需要一个单片机程序,烧进去简单的进行一下单片机的连接就好,这是作业
前面自己定义按钮的端口和LED的端口,加载必要的头文件
main()
{
while(1) //无限循环查询按键状态
{
if(key1==1) //如果开关1被按下
{
LED=1; //点亮LED
}
if(key2==1) //如果开关2被按下
{
LED=0; //熄灭LED
}
}
}
这个简单,假设五个LED分别接P1.0~P1.4,低电平点亮LED,
KEY1接P3.0,KEY2接P3.1,按键按下时为低电平
那么:
MAIN:
JB P3.0,LS000
JB P3.1,LS004
LJMP MAIN
LS000:MOV P1,#0
LJMP MAIN
LS004:MOV p1,#0FFH
LJMP MAIN
END
下面是秒表程序,但每个电路硬件设计不同,程序也就不一样的,我把我数码管地方的电路图也发你,看看。如和你的电路一样,直接烧入就可以了,如不一样,你还要按你的电路把程序改一下。
#include<reg51.h>
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit lcden=P3^4;
sbit rs=P3^5;
unsigned char halt,j,k,a1,a0,b1,b0,c1,c0,s,f,m,n=255;
unsigned int pp;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1)
{
dula=0;
P0=table[shi2];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[shi1]|0x80;
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[fen2];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
P0=table[fen1]|0x80;
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);
P0=table[miao2];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
P0=table[miao1];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
}
void keyscan()
{
if(lcden==0)
delay(10);
if(lcden==0)
{
halt=1;
}
if(rs==0)
halt=0;
}
void main()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
ET0=1;
EA=1;
while(1)
{ keyscan();
if(halt==0)
{
TR0=1;
if(pp==20)
{ pp=0;
m++;
n--;
P1=n;//闪烁灯
if(m==60)
{
m=0;
f++;
if(f==60)
{
f=0;
s++;
if(s==99)
{
s=0;
}
}
}
}
a0=s%10;
a1=s/10;
b0=f%10;
b1=f/10;
c0=m%10;
c1=m/10;
display(a1,a0,b1,b0,c1,c0);
}
else
TR0=0;
display(a1,a0,b1,b0,c1,c0);
}
}
void time0() interrupt 1
{TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}
求一个51单片机C语言程序编程
实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb\/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,...
求一个51单片机延时1秒的程序,用汇编!!
DEL1S:MOV R7,#10 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,DJNZ R6,D2 DJNZ R7,D1 RET 说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等 2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5 ...
求一个单片机控制时钟的程序,要求一个键切换,其余两个键分别对切换好...
void delay(unsigned int num) \/\/延时程序 { while(--num);} void hand_time(void) \/\/时间调整 \/\/时间数据调整 { if(time[2]==60) {time[1]++;time[2]=0;} else if (time[2]>60) time[2]=59;if(time[1]==60) {time[0]++;time[1]=0;} else if (time[1]>60...
那个大神帮我写这个程序,是单片机的,题的要求,看图
include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_A=P3^0; \/\/东西向指示灯sbit YELLOW_A=P3^1;sbit GREEN_A=P3^2;sbit RED_B=P3^3; \/\/南北向指示灯sbit YELLOW_B=P3^4;sbit GREEN_B=P3^5;sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;\/\/...
单片机高手给帮忙写个程序吧(急急)
现在急需一个单片机的程序;题目是基于spce061a的温度检测显示储存系统的程序,温度传感器使用的是DS18B20液晶显示是使用得1602,外扩了一个存储器1024,具体要求是:每1.采集温度,精... 现在急需一个单片机的程序;题目是基于spce061a的温度检测显示储存系统的程序,温度传感器使用的是DS18B20 液晶显示是使用得1602 ,外扩了一...
需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半...
void delay1s(uint i) \/\/1s延时程序 { for(;i>0;i--){delay1ms(1000);} } void main(){ led=0;while(1){ if (s==0){ delayms(20);if (s==0);{delay1s(60);led=1; } } if(led==1){delay1s(1800);led=0; } } } 如果对时间要求精确,则要用到定时器,还要确保电路...
急求高手给写一个51单片机程序~注意:只要汇编语言~不要C语言~~急急急...
include "reg51.h"sbit P1_0=P1^0;void main(){ TMOD=0X10;\/\/T1 定时功能工作方式1 TH1=0X0B;\/\/写入初值 TL1=0XE0;TR1=1;while(1){ while(TF1)\/\/ { TF1=0;P1_0=!P1_0;\/\/P1.0取反 } } } void time1_int(void) interrupt 3 { TH1=0X0B;TL1=0XE0;\/\/P1_0=!P1_0;\/...
求一个基于51单片机的C语言程序,要求从串口接收一组数据,然后将其通过...
\/\/{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};\/\/ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 void Delay(unsigned int tc) \/\/延时程序 { while( tc != 0 ){unsigned int i;for(i=0; i<100; i++);tc--;} } void LED() \/\/LED显示接收到的数据 { sh...
如何编写一段程序,单片机是51系列的,要求编写8个LED灯有三种以上的闪烁...
MOV A,#11100111B MOV P1,A ACALL YANSHI MOV A,#11011011B MOV P1,A ACALL YANSHI MOV A,#10111101B MOV P1,A ACALL YANSHI MOV A,#01111110B MOV P1,A ACALL YANSHI DJNZ R4,D5 ACALL YANSHI MOV R0,#3 LOOP: MOV A,#01010101B MOV P1,A ACALL YANSHI MOV A,#10101010B ...
一个完整的单片机c语言程序包含哪几个部分?
个人觉得,一个完整C程序至少应该包含头文件、初始化、主程序四个部分,头文件是程序编译预处理的重要组成部分,缺了它就无法生成目标代码;初始化部分包含变量初始化和端口初始化;主程序是一个C程序的核心代码,由此执行或调用一些具有特定功能的函数模块以完成程序的预设功能。
勤点益妥: 需要用专门的程序别写软件(如Keil C51)生成.HEX文件,然后将编程器(电子市场都有卖的)联到电脑上,单片机按在编程器上,编程器自带的有烧程序用的小软件,用软件打开刚才那个.HEX文件,把它烧进去就可以了.
张掖市15312387788: 如何让能让程序烧到51单片机 - ?
勤点益妥: 先在KEIL中编译生成HEX文件 (如果编译完了目录内没有找到HEX文件,在项目设置里,C51项中,勾上生成HEX文件选择) 再用COM51来烧. (这个参照软件说,较简单.一般先载入HEX文件再点个AUTO就可以了)
张掖市15312387788: 如何将程序代码烧录进STC单片机 详细?? - ?
勤点益妥: STC 先安装软件到计算机中, 然后进行下面的操作. 以下是烧录程序的主要界面. 烧录过程非常简单, 操作也非常简单. 图中红色的五个大数字就 表示了整个过程.简简单单的五步就可以了(实际上只需 4 步). 启动本烧录程序后, 第一...
张掖市15312387788: 将程序烧进单片机有哪几种方法? - ?
勤点益妥: 方法多着,要看你的单片机支持哪几种的,我知道的有四五种吧 并行编程(高压编程),ISP,串口直接写入的(STC的),JTAG等.最常用的是ISP(在线编程),自制简单成本低. 现在出的单片面都支持ISP,如51的AT89S51,AVR的全系列ATMEGA8 PIC等. 高压编程支持的芯片多,但成本高,不易自制,可下51的如AT89C51,AT89S51等
张掖市15312387788: 单片机如何烧入程序? - ?
勤点益妥: 那要看你用什么单片机,比如STC的单片机,直接搞个串口,在搞个STCISP就能把程序烧进去,AVR的用专门的下载器,MSP430一般用JLINK烧写
张掖市15312387788: 单片机怎么把程序写进去啊 - ?
勤点益妥: 单片机程序要导入单片机需要转化成hex文件,在编译器上自带有,就是在你编译程序的时候自动生成hex文件,然后烧入对应单片机,在具体的你可以截图再问.因为不清楚你是什么情况
张掖市15312387788: 单片机程序,求一个简单的单片机程序,谢谢 - ?
勤点益妥: 硬件电路就不行,单片机可以直接驱动 LED,,但一个数码管子是 多个LED组成的,多个LED的总电流比较大,单片机无法承受 况且你这种组合数码管,8个段信号是4个数码管共用的,要想显示不同的数字,必须有位驱动才行,即数码管的4个位选(共用阳极或共用阴极)必须受单片机控制才行,这时就需要放大电路(集成电路或4 个三极管),而不象单个数码管公共端可以接地或接电源 如果硬件达不到要求,或者别人没有电路图,再好的程序也不能显示
张掖市15312387788: 单片机怎么把写好的源代码烧进去呢? - ?
勤点益妥: 1、使用下载线将目标代码烧到单片机里. 2、使用烧录器,将目标代码烧到单片机里.
张掖市15312387788: 单片机怎样烧程式,一般需要什么硬件 - ?
勤点益妥: 楼主你好:首先,单片机烧写程序需要的通过相应引脚,将软件生成的HEX文件下载到单片机中,但是得说的是不同类的单片机,其编程引脚也是不尽相同的.就拿比较常用的AT89s52单片机来说,其编程引脚为P1.5、P1.6、P1.7三个脚;如...
张掖市15312387788: 单片机里已经有了一个程序,怎么把另一个程序烧进去 - ?
勤点益妥: 看什么型号的单片机了,但你要有下载器或下载线,安装烧录软件,选择要烧录的文件,点“下载 ,开始烧录,原来的程序就就自动擦除了