ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:16.76KB ,
资源ID:7891658      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7891658.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈工大单片机实验代码张毅刚版教材10个.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、哈工大单片机实验代码张毅刚版教材10个电路图用张毅刚版教材里给的图!1、流水灯#include#includevoid delay() unsigned char i,j; for(i=0;i255;i+) for(j=0;j255;j+);void main() P2=0xfe; while(1) P2=_crol_(P2,1); delay(); 2、单个外部中断#include#includevoid delay(unsigned char delay_time) unsigned int i,j; for(i=0;i=delay_time;i+) for(j=0;j=100;j+);v

2、oid init_tx() EA=1; EX0=1; IT0=0;void main() P1=0x00; init_tx(); delay(200); while(1) P1=P1; delay(200); void tx0() interrupt 0 P1=0xfe; while(!INT0) P1=_crol_(P1,1); delay(200); P1=0xff;3、定时器#includeunsigned char t=20;sbit button=P32;sbit yellowled=P10; /*定义接口*/void main() TMOD=0x01; /*选择中断方式*/ EA=

3、1; ET0=1; TH0=0x3c; TL0=0x0b; while(button=0) TR0=1; yellowled=1;void tx() interrupt 1 TH0=0x3c; TL0=0xb0; t-; if(t=0) yellowled=yellowled; t=20; 4、双机串行通信#include#define uchar unsigned char#define uint unsigned int#define outk P1#define out1 P0#define out2 P2uchar code seg=0xc0,0xf9,0xa4,0xb0,0x99,0

4、x92,0x82,0xf8,0x80,0x90,0xff;uchar key,send,rec;uchar scan(void);void delay(unit);void main(void) TMOD=0X20; /*设置定时器T1为方式2*/ TH1=0XF2; /*给定时器T1赋初值*/ TH1=0XF2; TR1=1; /*接通定时器T1*/ SCON=0X50; /*串行口方式1,REN=1允许接收*/ PCON=0X00; /* SMOD=0*/ EA=1; ES=1; EX1=1; EX0=1; while(1) outk=0x07; out1=segsend; out2=se

5、grec; uchar scan(void) uchar k=10,m,n,in; delay(10); outk=0x07; if(outk&0x07)!=0x07) for(m=0;m3;m+) outk=(0x01(m+3); for(n=0;nn; if(in&0x01)=0) if(in&0x01)=0) k=n+m*3; break; if(k!=10)break; return(k);void delay(uint j) uchar i; for(;j0;j-) i=250; while(-i); i=249; while(-i); void ext0()interrupt 0

6、EX0=0; key=scan(); if(key!=10)send=key+1; EX0=1;void ext1()interrupt 2 ES=0; SBUF=send; while(!TI); TI=0; ES=1;void com()interrupt 4 RI=0; rec=SBUF;5、单片机与PC串行通信#include void send(unsigned char dat) SBUF=dat; while(TI=0); ; TI=0;void init_tx() EA=1; EX0=1;void delay(void) unsigned char m,n; for(m=0;m

7、250;m+) for(n=0;n250;n+) ;void main(void) init_tx(); TMOD=0x20; SCON=0x40; PCON=0x00; TH1=0xfd; TL1=0xfd; TR1=1; while(1);void tx0() interrupt 0 unsigned char i=0; send(0x01); delay(); i+; 6、扩展82c55并行IO接口#include#include#define uchar unsigned char#define uint unsigned intsbit rst_8255=P35;#define co

8、n_8255 XBYTE0x7003 /*0x7003为82C55的控制寄存器地址*/#define pa_8255 XBYTE0x7000 /*以下定义pa、pb的端口地址*/#define pb_8255 XBYTE0x7001void reset_8255(void);void delay(uint);void main(void) uchar temp; rst_8255=1; /*复位*/ delay(1); rst_8255=0; con_8255=0x82; while(1) temp=pb_8255; /*锁存*/ pa_8255=temp; void delay(uint j

9、) /*延时函数*/ uchar i; for(;j0;j-) i=250; while(-i); i=249; while(-i); 7、矩阵键盘#includeunsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void delay() unsigned char i,j; (延时) for(i=0;i=25;i+) for(j=0;j=25;j+);unsigned char key_scan() unsigned char key

10、0,key1; unsigned char key_num=0; P1=0x0f; 先将置高 key0=P1; if(key0!=0x0f) 如果不全为1,可能有键按下 delay(); key0=P1; if(key0!=0x0f) P1=0xf0; key1=P1; if(key0=0x0e) switch(key1) case 0xe0: key_num=0;break; case 0xd0: key_num=1;break; case 0xb0: key_num=2;break; case 0x70: key_num=3;break; default: key_num=0;break;

11、 else if(key0=0x0d) switch(key1) case 0xe0: key_num=4;break; case 0xd0: key_num=5;break; (处理5号键) case 0xb0: key_num=6;break; case 0x70: key_num=7;break; default: key_num=0;break; (无效按键,如多个键同时按下) else if(key0=0x0b) switch(key1) case 0xe0: key_num=8;break; case 0xd0: key_num=9;break; case 0xb0: key_nu

12、m=10;break; case 0x70: key_num=11;break; default: key_num=0;break; else if(key0=0x07) switch(key1) case 0xe0: key_num=12;break; case 0xd0: key_num=13;break; case 0xb0: key_num=14;break; case 0x70: key_num=15;break; default: key_num=0;break; return key_num;void main() unsigned char key_num; do key_nu

13、m=key_scan(); P2=tablekey_num; while(1); 8、1602液晶显示#include#include#define uchar unsigned char#define uint unsigned int#define out P0sbit RS=P20;sbit RW=P21;sbit E=P22;void lcd_initial(void);void check_busy(void);void write_command(uchar com);void write_data(uchar dat);void string(uchar ad,uchar *s)

14、;void lcd_test(void);void delay(uint);void main(void) lcd_initial(); while(1) string(0x82,Hello Welcome); string(0xC2,To China); delay(100); write_command(0x01); delay(100); void delay(uint j) uchar i=250; for(;j0;j-) while(-i); i=249; while(-i); i=250; void check_busy(void) uchar dt; do dt=0xff; E=

15、0; RS=0; RW=1; E=1; dt=out; while(dt&0x80); E=0;void write_command(uchar com) check_busy(); E=0; RS=0; RW=0; out=com; E=1; _nop_(); E=0; delay(1);void write_data(uchar dat) check_busy(); E=0; RS=1; RW=0; out=dat; E=1; _nop_(); E=0; delay(1);void lcd_initial(void) write_command(0x3c); write_command(0

16、x0C); write_command(0x14); write_command(0x01); delay(1);void string(uchar ad,uchar *s) write_command(ad); while(*s0) write_data(*s+); delay(100); 9、DA转换#include#define uchar unsigned char#define uint unsigned int#define out P1sbit DAC_cs=P20;sbit DAC_wr=P21;void main(void) uchar temp,i=255; while(1

17、) out=temp; DAC_cs=0; /*片选端,芯片被选中*/ DAC_wr=0; /*选通,并被锁存*/ DAC_cs=1; /*以下开始转换*/ DAC_wr=1; temp+; while(-i); /*延时函数!,老师帮改的*/ 10、AD转换#include#define uchar unsigned char#define uint unsigned int#define LED P0#define out P1sbit start=P21;sbit OE=P27;sbit EOC=P23;sbit CLOCK=P20;sbit add_a=P24;sbit add_b=P25;sbit add_c=P26;void main(void) uchar temp; add_a=0; add_b=0; add_c=0; while(1) start=0; start=1; start=0; while(1) CLOCK=!CLOCK; if(EOC=1) break; OE=1; temp=out; OE=0; LED=temp;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1