哈工大单片机实验代码张毅刚版教材10个Word格式.docx

上传人:b****4 文档编号:6235673 上传时间:2023-05-06 格式:DOCX 页数:19 大小:16.87KB
下载 相关 举报
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第1页
第1页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第2页
第2页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第3页
第3页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第4页
第4页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第5页
第5页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第6页
第6页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第7页
第7页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第8页
第8页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第9页
第9页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第10页
第10页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第11页
第11页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第12页
第12页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第13页
第13页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第14页
第14页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第15页
第15页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第16页
第16页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第17页
第17页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第18页
第18页 / 共19页
哈工大单片机实验代码张毅刚版教材10个Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

哈工大单片机实验代码张毅刚版教材10个Word格式.docx

《哈工大单片机实验代码张毅刚版教材10个Word格式.docx》由会员分享,可在线阅读,更多相关《哈工大单片机实验代码张毅刚版教材10个Word格式.docx(19页珍藏版)》请在冰点文库上搜索。

哈工大单片机实验代码张毅刚版教材10个Word格式.docx

EX0=1;

IT0=0;

P1=0x00;

init_tx();

delay(200);

{

P1=~P1;

voidtx0()interrupt0

P1=0xfe;

while(!

INT0)

P1=_crol_(P1,1);

P1=0xff;

3、定时器

unsignedchart=20;

sbitbutton=P3^2;

sbityellowled=P1^0;

/*定义接口*/

{

TMOD=0x01;

/*选择中断方式*/

ET0=1;

TH0=0x3c;

TL0=0x0b;

while(button==0)

TR0=1;

yellowled=1;

voidtx()interrupt1

TL0=0xb0;

t--;

if(t==0)

yellowled=~yellowled;

t=20;

}

4、双机串行通信

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineoutkP1

#defineout1P0

#defineout2P2

ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

ucharkey,send,rec;

ucharscan(void);

voiddelay(unit);

voidmain(void)

TMOD=0X20;

/*设置定时器T1为方式2*/

TH1=0XF2;

/*给定时器T1赋初值*/

TR1=1;

/*接通定时器T1*/

SCON=0X50;

/*串行口方式1,REN=1允许接收*/

PCON=0X00;

/*SMOD=0*/

ES=1;

EX1=1;

outk=0x07;

out1=seg[send];

out2=seg[rec];

ucharscan(void)

uchark=10,m,n,in;

delay(10);

if((outk&

0x07)!

=0x07)

for(m=0;

m<

3;

m++)

outk=~(0x01<

<

(m+3));

for(n=0;

n<

n++)

{

in=outk;

in=in>

>

n;

if((in&

0x01)==0)

{

k=n+m*3;

break;

}

if(k!

=10)break;

return(k);

voiddelay(uintj)

uchari;

for(;

j>

0;

j--)

i=250;

while(--i);

i=249;

voidext0()interrupt0

EX0=0;

key=scan();

if(key!

=10)send=key+1;

voidext1()interrupt2

ES=0;

SBUF=send;

TI);

TI=0;

voidcom()interrupt4

RI=0;

rec=SBUF;

5、单片机与PC串行通信

#include<

voidsend(unsignedchardat)

SBUF=dat;

while(TI==0);

;

voiddelay(void)

unsignedcharm,n;

250;

for(n=0;

TMOD=0x20;

SCON=0x40;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

while

(1);

unsignedchari=0;

send(0x01);

i++;

}

6、扩展82c55并行IO接口

absacc.h>

sbitrst_8255=P3^5;

#definecon_8255XBYTE[0x7003]/*0x7003为82C55的控制寄存器地址*/

#definepa_8255XBYTE[0x7000]/*以下定义pa、pb的端口地址*/

#definepb_8255XBYTE[0x7001]

voidreset_8255(void);

voiddelay(uint);

uchartemp;

rst_8255=1;

/*复位*/

delay

(1);

rst_8255=0;

con_8255=0x82;

temp=pb_8255;

/*锁存*/

pa_8255=temp;

voiddelay(uintj)/*延时函数*/

7、矩阵键盘

unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

(延时)

=25;

unsignedcharkey_scan()

unsignedcharkey0,key1;

unsignedcharkey_num=0;

P1=0x0f;

先将p1.0~P1.3置高

key0=P1;

if(key0!

=0x0f)如果P1.4~P1.7不全为1,可能有键按下

=0x0f)

P1=0xf0;

key1=P1;

if(key0==0x0e)

switch(key1)

{

case0xe0:

key_num=0;

break;

case0xd0:

key_num=1;

case0xb0:

key_num=2;

case0x70:

key_num=3;

default:

elseif(key0==0x0d)

switch(key1)

case0xe0:

key_num=4;

key_num=5;

(处理5号键)

key_num=6;

key_num=7;

(无效按键,如多个键同时按下)

elseif(key0==0x0b)

key_num=8;

key_num=9;

key_num=10;

key_num=11;

elseif(key0==0x07)

key_num=12;

key_num=13;

key_num=14;

key_num=15;

returnkey_num;

unsignedcharkey_num;

do{

key_num=key_scan();

P2=table[key_num];

}while

(1);

8、1602液晶显示

#defineoutP0

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

voidlcd_initial(void);

voidcheck_busy(void);

voidwrite_command(ucharcom);

voidwrite_data(uchardat);

voidstring(ucharad,uchar*s);

voidlcd_test(void);

lcd_initial();

string(0x82,"

HelloWelcome"

);

string(0xC2,"

ToChina"

delay(100);

write_command(0x01);

uchari=250;

voidcheck_busy(void)

uchardt;

do

dt=0xff;

E=0;

RS=0;

RW=1;

E=1;

dt=out;

}while(dt&

0x80);

voidwrite_command(ucharcom)

check_busy();

RW=0;

out=com;

_nop_();

voidwrite_data(uchardat)

RS=1;

out=dat;

voidlcd_initial(void)

write_command(0x3c);

write_command(0x0C);

write_command(0x14);

voidstring(ucharad,uchar*s)

write_command(ad);

while(*s>

0)

write_data(*s++);

9、DA转换

#defineoutP1

sbitDAC_cs=P2^0;

sbitDAC_wr=P2^1;

uchartemp,i=255;

out=temp;

DAC_cs=0;

/*片选端,芯片被选中*/

DAC_wr=0;

/*选通,并被锁存*/

DAC_cs=1;

/*以下开始转换*/

DAC_wr=1;

temp++;

while(--i);

/*延时函数!

,老师帮改的*/

10、AD转换

#defineLEDP0

sbitstart=P2^1;

sbitOE=P2^7;

sbitEOC=P2^3;

sbitCLOCK=P2^0;

sbitadd_a=P2^4;

sbitadd_b=P2^5;

sbitadd_c=P2^6;

add_a=0;

add_b=0;

add_c=0;

start=0;

start=1;

CLOCK=!

CLOCK;

if(EOC==1)

break;

OE=1;

temp=out;

OE=0;

LED=temp;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2