单片机课程设计小结_单片机课程设计小结怎么写
单片机课程设计?
LCALL DELAY要LED的亮度有变化,一是施加一个可变电压源或者电流源,显然这个属于模拟控制过程。一是控制LED发光的时间,就是施加一个周期固定的,占空比可调的方波电压源,控制占空比可得到不同的亮度感知,这个属于数字控制过程。
单片机课程设计小结_单片机课程设计小结怎么写
单片机课程设计小结_单片机课程设计小结怎么写
那么这里就选择控制占空比的方法就是了it key2=P3^1;。
PLC课程设计小结!
6结束语
本文利用PLC对磨机润滑系统的温度,压力等的与调节。通过PLC与单片机通信,实现对温度的外部显示,具有很好的经济性。本系统在系统中使用调试成功,实现了对温度、压力、油箱液位的自动采集和实时调节、报警等功能以及对主机的控制,为现代工业控制的生产起到了积极作用,整个系统结构简单,作方便、灵活,具有较好的实际价值和使用性。
由于设计水平有限和时间的仓促,本文中难免有错误和不妥之处,请给予批评指正。
7总LJMP TSR7结
通过本次设计,让我很好的锻炼了理论联系实际,与具体项目、课题相结合开发、设计产品的能力。既让我们懂得了怎样把理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决。
在本次设计中,我们还需要大量的以前没dula=0;有学到过的知识,于是图书馆和INTERNET成了我们很好的助手。在查阅资料的过程中,我们要判断优劣、取舍相关知识,不知不觉中我们查阅资料的能力也得到了很好的锻炼。我们学习的知识是有限的,在以后的工作中我们肯定会遇到许多未知的领域,这方面的能力便会使我们受益非浅。
在设计过程中,总是遇到这样或那样的问题。有时发现一个问题的时候,需要做大量的工作,花大量的时间才能解决。自然而然,我的耐心便在其中建立起来了。为以后的工作积累了经验,增强了信心。
单片机实验与课程设计
if(min==10)在外部中断里面定义一个变量,
//晶振 12MHz
#include
//定时50ms
#define TH = (65536 - 50000)>>8 // 高位初值;
#define TL = (65536 - 50000)%256// 低位初值;
#define LED P0 //设高电平点亮LED;
unsigned char timer_cnt = 0;
unsigned char extern_flag = 0;
void main()
{TMOD = 0x10;//使用定时器1
EA = 1;
ET1 = 1;
TR1 = 1;
TH1 = TH;// 高位初值;
TL1 = TL;// 低位初值;
EX0 = 1;//开启外部中断;
while(1)
{if(extern_flag)
{if(timer_1sflag)LED = 0X55;
elMOV A,B_BIT ;取十位数se LED = ~LED;//按位取反即可;
}/ 定时50ms/
void timer1() interrupt 3
{TH1 = 0x3C;
TL1 = 0x0B0;
timer_cnt++;
{timer_cnt = 0;
timer_1sflag = !timer_1sflag;
/ 外部中断函数1/
void Extern() interrupt 2 using1//中断向量符号为2;
{extern_flag = 1;
}请采纳,参考!
单片机课程设计
}if(timer_cnt > 20)}18B20是个温度传感器,通过单总线协议与CPU通信,CPU获得温度数据后通过IO口驱动LCD显示出来,按键可能用于显示模式的转换,比如摄氏/华氏,也许还有时钟什么的。不过这个显示部分并不是一个好的设计,U2、U3本来都可以省掉的,减少器件数量不仅仅是降低成本,还减少了故障率,从而提高可靠性
单片机课程设计
你写的要求太宽泛,我就随便给你两个,你参考下,根据你的题目修改下,这你应该可以的吧
总结随便找点,我也不知道你的具体要求,就不发了
给你个流水灯的,循环点亮程序
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: MOV A,#0FFH
CLR C
RLC A;
MOV P2,A
CALL DELAY
LOOP: MOV R2,#07H
LOOP1: RLC A
MOV P2,A
CALL DELAY
{s=0;DJNZ R2,LOOP1
MOV R2,#07H ;设置右移次数7次
MOV P2,A ;输出到P2
CALL DELAY ;
DJNZ R2,LOOP2 ;右移7次
JMP LOOP
DELAY: MOV R7,#20 ;延时0.3s
D1: MOV R6,#30
D2: MOV R5,#
DJNZ R5,$
DJNZ R6,DDJNZ R7,$2
DJNZ R7,D1
RET
END
数码管的,可以循环显示012345678ABCDEF的,共阳极接法
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: NOP
START: MOV R2,#0
MOV R5,#16
NEXT: MOV DPTR,#TAB
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
INC R2
LOOP: DJNZ R5,NEXT
MOV R5,#16
MOV R2,#0
JMP START
DELAY: MOV R0,#10 ;延时0.5s
DELAY0: MOV R7,#100
DELAY1: MOV R6,#
DJNZ R6,$
DJNZ R7,DELAY1
DJNZ R0,DELAY0
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH
END
单片机课程设计
LCALL DELAY附2:程序
ORG 0000H
LJMP START
ORG 0003H
LJMP JIA
ORG 0013H
LJMP JIAN
ORG 0030H
FLAG1 BIT F0 ;DS18B20存在标志位
DQ BIT P2.2
TEMPER_L EQU 29H
TEMPER_H EQU 28H
A_BIT EQU 35H
B_BIT EQU 36H
START:
MOV IE,#85H
MOV 30H,#30
SHEZHI:MOV R1,#30H
ACALL DISPLAY
MOV P2,#0FFH
MOV A,P1.熟练掌握C51系统仿真开发系统的应用。2
MOV C,ACC.0
JNC SHEZHI
LJMP MAIN
DISPLAY:MOV A,@R1;将29H中的十六进制数转换成10进制
MOV B,#10 ;10进制/10=10进制
DIV AB
MOV B_BIT,A ;十位在A
MOV A_BIT,B ;个位在B
MOV DPTR,#TAB ;指定查表启始地址
SETB P3.7 ;选中个数码管
MOV A,A_BIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV P1,A ;送出个位的7段代码
LCALL DELAY ; 调用延时
CLR P3.7
SETB P3.6 ;选中第二个数码管
MOVC A,@A+DPTR ;查十位数的7段代码
MOV P1,A ;送出十位的7段代码
LCALL DELAY
CLR P3.6
RET
JIA:
MOV P2,#0FFH
MOV A,P2
MOV C,ACC.0
JC OUT
INC @R1
OUT:
RETI
JIAN:
MOV P2,#0FFH
MOV A,P2
MOV C,ACC.0
JC OUT1
DEC @R1
OUT1:
RETI
DELAY: ;延时子程序
MOV R5,#120
NOP
NOP
D1: MOV R6,#100
D2: DJNZ R6,D2
DJNZ R5,D1
RET
;主程序开始
MAIN:
LCALL INIT_18B20
;LCALL RE_CONFIG
LCALL GET_TEMPER
LJMP CHANGE
INIT_18B20: SETB DQ
NOP
CLR DQ
MOV R0,#0FBH
TSR1: DJNZ R0,TSR1 ;延时
SETB DQ
MOV R0,#25H
TSR2: JNB DQ ,TSR3
DJNZ R0,TSR2
TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在
CLR P0.5 ;二极管指示
AJMP TSR5
TSR4: CLR FLAG1
TSR5: MOV R0,#06BH
TSR6: DJNZ R0,TSR6
TSR7:SETB DQ ;表明不存在
RET
;读转换后的温度值
GET_TEMPER:
SETB DQ
LCALL INIT_18B20
JB FLAG1,TSS2
RET ;若不存在则返回
TSS2: MOV A,#0CCH ;跳过ROM
LCALL WRITE_18B20
MOV A,#44H ;发出温度转换命令
LCALL WRITE_18B20
;LCALL DISPLAY ;延时
LCALL INIT_18B20
MOV A,#0CCH ;跳过ROM
LCALL WRITE_18B20
MOV A,#0BEH ;发出读温度换命令
LCALL WRITE_18B20
LCALL READ2_18B20 ;读两个字节的温度
RET
;写DS18B20程序
WRITE_18B20:
MOV R2,#8
CLR C
WR1:
CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
;读18B20程序,读出两个字节的温度
READ2_18B20:
MOV R4,#2 ;低位存在29 H,高位存在28H
MOV R1,#29H
RE00: MOV R2,#8
RE01: CLR C
SETB C
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
;读出的温度进行数据转换
CHANGE: MOV A,29H
MOV C,28H.0 ;将28H中的位移入C
RRC A
MOV C,28H.1
RRC A
MOV C,28H.2
RRC A
MOV C,28H.3
RRC A
MOV 29H,A
MOV R1,#29H
LCALL DISPLAY ;调用数码管显示子程序
CLR C
MOV A,30H
SUBB A,29H
JC BJ
LJMP MAIN
BJ:CPL P0.0
CPL P0.1
LJMP MAIN
;
D1MS: MOV R7,#80 ;1MS延时(按12MHZ算)
RET
;
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
单片机课程设计的介绍
bit timer_1sflag;单片机课程设计,是很多高校,电子信息专业、自动化专业、通信专业等学生在校学习期间,必须完成的一项重要的动手实践活动,但现在很多高校的课程设计流于形式,是典型的欺软怕硬。凌阳教育根据对大学生整体动手能力和实践能力的培养要求,精心选择了单片机课程设计与工程应用实例,典型实例包括了单片机接口、A/D转换、D/A转换、道路交通灯控制、温度测量、微机通信、LED点阵字符显示、电子万年历、等。使学生在学习完后,能真正从事单片机或嵌入式的开发工作。包括项目概述、项目要求、系统设计、硬件设计、软件设计、系统仿真及调试,提供完整的程序清单和电路原理图。采了实际应用项目实例,力求理论和实践相结合,同时考虑培养学生解决工程实际问题和综合应用的能力。典型实例都来自实际工程应用,有助于学生动手能力的判断程序(如果温度超过设定区则报警)培养和锻炼。
单片机课程设计
void keyscan();你说的也不具体些。
}void display()按键定义的话,很简单,一个增一个减,两个够了
读按键技术的话,书上很多,就是读到有按键输入,延时10ms在读取按键,仍在的话,输入有效,进入按键处理。比如增加占空比或减少占空比。
至于PWM脉宽调制,有两个要素频率和占空比吧。通过电路可以转换成电压。
我以前用HOLTEK单片机做过白炽灯调光的,用可控硅调节,用PWM调节可控硅的占空比就可以调光,但导通角调的不好灯就会闪烁。
QQ5188
你需要指导什么呢?这是个很初级的课题啊。
按键 和 显示 都能在网上找到编好的程序模块,修改一下直接就能用。PWM是占空比之类的东西,调节方波的占空比就能调节灯光亮暗,也就是延时时间的问题。。可以用一个算法,外面用变阻器输入单片机一个电压信号,经过运算转化成一个适合的数,用来作为调用延迟子程序的参数。。
谁知道啊!!!!??
单片机的课程设计
}}一年前写的,看看吧,好像是6位数码管,三个按键的
#include
#define uchar unsigned char
#define uint unsigned int
//
uchar code tempdu[]={0xbd,0x84,0xd9,0xcd,0xe4,0x6d,0x7d,0x85,0xfd,0xed,0x0};
uchar code tempwe[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
//
/位定义/
it dula=P2^6; //数码管段选
it wela=P2^7;
it key1=P3LOOP2: RRC A ;右移1位^0;
it key3=P3^2;
uint ms;
uchar s,min,id;
void timer0_init();
void display();
void delay(uint xms);
void main()
{timer0_init();
while(1)
{keyscan();
display();
if(id==1)
{TR0=1;
}else
{TR0=0;
}void timer0() interrupt 1
{TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ms++;
if(ms==1000)
{ms=0;
s++;
if(s==60)
min++;
{min=0;
s=0;
ms=0;
void keyscan()
{if(key1==0)
{if(key1==0)
{while(key1==0)
{TR0=1;
display();
}TR0=0;
if(key2==0)
{if(key2==0)
{while(key2==0)
{display();
}id++;
if(id==2)
{id=0;
}if(key3==0)
{if(key3==0)
{while(key3==0)
{display();
}if(TR0!=1)
{TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
ms=0;
s=0;
min=0;
void timer0_init()
{TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=0;
}void delay(uint xms)
{uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
{P0=0x0;
P0=0xff;
wela=1;
P0=tempwe[1]; //要显示的数码管
dula=1;
P0=tempdu[min];//要显示的数
delay(1);
P0=0xff;
wela=1;
P0=tempwe[1]; //要显示的数码管
dula=1;
P0=0x02; //要显示的数//小数点显示
delay(1);
P0=0xff;
wela=1;
P0=tempwe[2]; //要显示的数码管
dula=1;
P0=tempdu[s/10];//要显示的数
delay(1);
P0=0xff;
wela=1;
P0=tempwe[3]; //要显示的数码管
dula=1;
P0=tempdu[s%10];//要显示的数
delay(1);
P0=0xff;
wela=1;
P0=tempwe[3]; //要显示的数码管
dula=1;
P0=0x02; //要显示的数//小数点显示
delay(1);
P0=0xff;
wela=1;
P0=tempwe[4]; //要显示的数码管
dula=1;
P0=tempdu[ms/100];//要显示的数
delay(1);
P0=0xff;
wela=1;
P0=tempwe[5]; //要显示的数码管
dula=1;
P0=tempdu[ms%100/10];//要显示的数
delay(1);
P0=0xff;
wela=1;
P0=tempwe[6]; //要显示的数码管
dula=1;
P0=tempdu[ms%10];//要显示的数
delay(1);
}求采纳为满意回答。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。