编程实现:通过P1口依次逐个点亮8个发光二极管,频率为5HZ,并循环
首先搞清LED管是高电平导通还是低电平导通。
如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭。
具体程序:
#define uint unsigned int
#define uchar unsigned char
void delay(uint time_out)
{
uint i,j;
for(i=0;i<time_out;i++)
{
for(j=0;j<110;j++)
{;}
}
}
void main(){
while(1)
{
P1=0xfe; //第1个管亮
delay(500);
P1=0xfd; //第2个管亮
delay(500);
P1=0xfb; //依次类推
delay(500);
P1=0xf7;
delay(500);
P1=0xef;
delay(500);
P1=0xdf;
delay(500);
P1=0xbf;
delay(500);
P1=0x7f;
delay(500);
}
}
程序大致如此,delay函数负责延迟500ms.有问题自己再调试调试
#include
#define LED P1 //宏定义,使用LED代替P1口(相当于LED=P1)
#define uchar unsigned char //用uchar代替unsigned char方便操作
#define uint unsigned int
/*------------------time ms延时函数-----------------*/
void delay_ms(uint time)
{
uchar tres;
for(;time>0;time--)
{
tres=;
while(tres--);
}
void in()
{
uchar t;
LED=0X01;//P1=B
while(1)//ˀѭ»·,²»ͣµĵぁº͏¨ðLED
{
for(t=0;t
附件里有Proteus仿真、Keil C工程和程序文件,可以看看效果。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//变量
uchar Count,LED;
//主程序
void main()
{
P0=0xff;
Count=0;
LED=0x01;
TMOD=0x01;
//12MHZ晶振 C51单片机对其12分频
//实际定时器“加1”频率为1MHZ 也就是1us
//用定时器中断时间间隔 是从“开启定时器加1”到“溢出”的时间
//对于工作在模式1的定时器0来说 也就是从“开启定时器加1”到“(TH0 TL0)=(0xff 0xff)+1”的时间
//0xffff+1=65536
//如果(TH0 TL0)初始值是(65536-50000) 那么初始值到溢出需要“加1”50000次
//1次是1us 50000次就是50000us=50ms
//如果我们对定时器的中断次数进行计数,每20次算作一个时间段,那么这样的一个时间段就是20*50ms = 1000ms = 1s
//这就是利用定时器计时的原理
//因为TH0和TL0分别是高字节和低字节,所以赋初值时也要将(65536-50000)分成高低字节分别赋值给TH0和TL0
//高字节 是除以256后的到的商 低字节 是除以256后的到的余数
//另外,因为在模式1中,每次定时器溢出后,单片机不会自动对TH0和TL0重新赋值
//所以每当定时器中断,我们都要首先对TH0和TL0人工重新赋值
TH0=(65536-50000)/256;//50ms 定时
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;//启动T0
while(1)
{
//显示
P1=LED;
}
}
//T0 中断函数
void Int_T0() interrupt 1
{
//另外,因为在模式1中,每次定时器溢出后,单片机不会自动对TH0和TL0重新赋值
//所以每当定时器中断,我们都要首先对TH0和TL0人工重新赋值
TH0=(65536-50000)/256;// 恢复初值
TL0=(65536-50000)%256;
//Count每中断一次加1 以20为周期 每当等于20时候说明1s到了
if(++Count==4)
{
Count=0;
LED=_crol_(LED,1);
}
}
利用定时\/计数器产生定时时钟,由P1口控制8个指示灯,编写程序(c语言写...
重置初值,清除溢出位 } TR0=0; \/\/ 关闭定时器}void main(){ while(1) { P1=_crol_(P1); delay(); \/\/ 延时 } 你要告诉我你的单片机的时钟频率,不然没法计算计数初值的
1.P1口作输出口,接八只发光二极管(高电平输出使二极管点亮
主函数 ---*\/ void main (void){ unsigned char i; \/\/定义一个无符号字符型局部变量 i 取值范围 0~255 Delay(50000);while (1) \/\/主循环中添加其他需要一直工作的程序 { P1=0xfe; \/\/赋初始值 for(i=0;i<8;i++) \/\/加入 for循环,表明for循环大括号中的程序循环执行8次 ...
c语言 LED灯闪烁程序实现P1、P2口闪烁三次熄灭,到P3、P4口闪烁三次在...
{ count=0; \/\/计数变量清零,为下一次计数做准备 P10=!P10; \/\/IO口取反,即LED亮灭变化 } } } \/\/定时器0中断处理子程序 void Time0() interrupt 1 using 0 { TH0=0xdc;TL0=0x00; \/\/设定时值为10ms count++; \/\/计数加一 } 另外,团IDC网上有许多产品团购,便宜有口碑 ...
.利用单片机的P1口接8个发光二极管(对应8位二进制数),P3.1接1个开关...
{ delay_ms(12);\/\/消抖 if(P3^1==0) return 1;} return 0;} void main(){ uchar cnt=0,key;uchar led[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};while(1){ key=key_scan();if(key==1) \/\/按键按下了 { if(cnt++>=8)cnt=0;} P1=led[cnt];} } 纯...
编程题 硬件电路中由8051单片机P1口控制8个放光二极管,编程实现依次...
首先搞清LED管是高电平导通还是低电平导通。如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭。具体程序:define uint unsigned int define uchar unsigned char void delay(uint time_out){ uint i,j;for(i=0;i<time_out;i++){ for(j=0;j<110;j++){;} } } void main(){...
流水灯 利用单片机的P1口控制LED的发光闪烁,在利用编程实现模拟广告灯...
define uchar unsigned char define uint unsigned int uchar temp,num;uchar code table[]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};void delay(uint a){ uint x,y;for(x=a;x>0;x--)for(y=300;y>0;y--);} void main(){ temp=0xFE;for(num=0;num<8;num++){ P1=temp...
用汇编使P3口输入,P1口输出完整的程序
题目的要求是否是将I\/O端口P3做为输入口,读取P3外部引脚上的数据,以及将P1端口做为输出瑞口输出数据?51单片机用准双向I\/O方式读取端口引脚数据时,为保证准确获取引脚上的数据,需要将该端口的输出锁存器置“1”,所以在读取P3端口上的输入数据时,先要进行下面给出的操作:……MOV A, #0FFH M...
P1口接有8个发光二极管,要求编程使八个发光二极管从左到右轮流点亮,每...
include <AT89X51.H> void init_t0(void);void t0_int(void) interrupt 1;int i = 8; \/\/循环次数为8 void main(){ P1 = 0xff; \/\/初始化LED,8个LED全灭,(假设低电平点亮)init_t0() ;while(1); \/\/循环等待定时中断 } void init_t0() \/\/定时器0初始化程序 { TMOD = 0x...
51单片机的程序问题 将累加器A中低四位的状态,通过P1口的高4位输出.
低半字节交换- A=3210_0000 ANL P1,#0FH ;清P1口高四位 --P1=0000_9999 ORL P1,A ;使P1.7~P.1.4按A中初始值的A.3~A.0值置位 --- P1 = 3210_9999 这就实现了:累加器A中低四位3210,通过P1口的高4位8888的位置输出。
单片机C语言中,如何读取P1口的数据,并将P1口读入的数据送到P0口输出
你这个程序是对的。但是有一点忽略了:P1口作为输入口,应该先置为ff 完整程序:while(1){ P1=0xff;\/\/这个就是忽略的地方 i=P1;P0=i;} 另外,下面这个也可以,以经过软件仿真通过。P1=P0;
笪月隆舒: 用这个,12M晶振 大约0.5秒一位.ORG 0300H MOV A,#1 LOOP:MOV P1,A PUSH PSW LCALL DELAY POP PSW RLC A JNC LOOP RLC A SJMP LOOP DELAY:NOP NOP NOP NOP NOP NOPDJNZ R1,DELAYDJNZ R2,DELAY
南皮县13774184898: 选用P1口作为输出口,接8只发光二极管,编程实现使8个发光二极管每隔200ms循环依次左移点亮. - ?
笪月隆舒: #include <reg51.h> #define LED P1 //宏定义,使用LED代替P1口(相当于LED=P1) #define uchar unsigned char //用uchar代替unsigned char方便操作 #define uint unsigned int /*------------------time ms延时函数-----------------*/ void delay_ms(uint ...
南皮县13774184898: 用单片机的p1口控制8个低电平有效的Led,要求8个LED 逐个循环点亮,画出电路图,编写对应c语 - ?
笪月隆舒: 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
南皮县13774184898: 单片机编程循环点亮P1口上的8个灯(任一时刻仅有一个灯亮)使用CJNE - ?
笪月隆舒: ORG 00H AJMP MAIN ORG 30H MAIN:MOV A,#0FEH MOV R3,#8 MAIN1:MOV P1,A RL A ACALL D05S DJNZ R3,MAIN1 AJMP MAIN D05S:MOV R0,#5 MOV R1,#200 MOV R2,#250 DJNZ R2,$ DJNZ R1,$-4 DJNZ R0,$-8 RET END
南皮县13774184898: 在开发板上完成用P1口控制发光二极管以不同的形式循环点亮的功能.使8个发光二极管从右往左逐一点亮. - ?
笪月隆舒: //如果要别的效果,只须把 P1=P1<<1;中的1改成2,4,6,8 #include void delay(unsigned int z); void main(void) {char k;P1 =0x01; //灯的初始值,P1口最低位为高,其它位为低delay(100);//延时,while(1){for(k=0;k<7;k++)//循环左移{P1...
南皮县13774184898: 用c语言编程当p1口为输入来控制8盏灯的程序设计 - ?
笪月隆舒: #include<reg52.h> void delay(unsigned int cnt) { while(--cnt); } main() { P1=0xfe; //给初始化值 换算成二进制是1111 1110 while(1) { delay(30000);//延时程序 P1<<=1; //左移一位 该语句等效于 P1=P1<<1 P1|=0x01; //最后一位补1,该语句等效于 P1=P1|0x01 符号"|"表示"或" if(P1==0x7f) //检测是否移到最左端?"=="表示检测符号2端的值是否相等 {delay(30000); P1=0xfe; //重新赋值 } } }
南皮县13774184898: 用汇编语言写编程,p1口作为控制端口,使D1区的八个L E D 依次循环点亮,延时一分钟.?
笪月隆舒: ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB ET0 SETB EA MOV R2,#20 MOV R3,#60 MOV A,#0FEH MOV P1,A ...
南皮县13774184898: 设计用8031单片机P1口为输出口控制8只发光二极管循环点亮.1、 画出接口图. 2、 写出控制程序. - ?
笪月隆舒:/*----------------------------------------------- 名称:流水灯 编写:杨光楼 日期:2009.5 修改:无 内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动...
南皮县13774184898: 利用mcs51单片机p1口控制8只发光二极管循环点亮,采用定时器t0,使之工作在方式1中断实现2秒时间间隔编程/ - ?
笪月隆舒: unsigned char a,count;void main() {P1=0xff;a=0x01;count=0//**********************************// TMOD=0x21; /*每2.5mS产生定时0中断,时钟11.0592MHZ*/TH0=55536/256; //定时器0置为10ms定时器,TL0=55536%256;while(1){;} }...
南皮县13774184898: P1口输出八盏发光二极管从左向右依次逐个点亮后再丛右向左逐个灭灯(延时1s).〔急需程序,请各位高人帮 - ?
笪月隆舒: 在此有一个粗略的构思,希望对你有所帮助,由于有一段时间没有做东西了,可能有些生疏,如有不足或是错误的地方,敬请原谅! 在这里用了两个按钮开关来分别触发中断,如不需要中断触发可将WAIT_A,和WAIT_B删除,并将JMP ...