文档库 最新最全的文档下载
当前位置:文档库 › 郭天祥单片机作业

郭天祥单片机作业

郭天祥单片机作业
郭天祥单片机作业

用位操作和总线操作两种方法完成以下题目

1.熟练建立KEIL工程

2.点亮第一个发光管.

#include

sbit D1=P1^0;

void main()

{

D1=0;

}

#include

void main ()

{

P1=0xfe;

}

}

2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时

关闭蜂鸣器,一直重复下去。

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit beep=P2^6;

uchar temp;

void delay();

void main()

{ temp=0xfe;

while(1)

{ P1=temp;

temp=_crol_(temp,1);

beep=0;

delay();

beep=1;

}

}

void delay()

{

uintx,y;

for(x=500;x>0;x--)

for(y=110;y>0;y--);

}

3.8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit beep=P2^6;

uchar temp;

void delay();

void main()

{

while(1)

{ uint i;

temp=0xfe;

for(i=1;i<8;i++)

{ beep=0;

P1=temp;

delay();

beep=1;

temp=_crol_(temp,1); }

for(i=1;i<8;i++)

{ beep=0;

P1=temp;

delay();

beep=1;

temp=_cror_(temp,1);

}

}

}

void delay()

{

uintx,y;

for(x=100;x>0;x--)

for(y=110;y>0;y--);

}

4,用8个发光管演示出8位二进制数累加过程。

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.

{ //delay(500);大约延时500ms.

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main() //主函数

{

uchar a;

while(1) //大循环

{

a++;

P1=~a;

delay(1000);

}

}

5.8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁5次。重复此过程。

#include

#include

#define uint unsigned int

#define uchar unsigned char

void delay(uint);

uchar temp;

void main()

{ while(1)

{ uint j;

for(j=0;j<2;j++)

{

uint i;

temp=0xfe;

for(i=1;i<8;i++)

{ P1=temp; delay(200);

temp=_crol_(temp,1);

}

for(i=1;i<8;i++)

{

P1=temp; d elay(200);

temp=_cror_(temp,1);

}}

for(j=0;j<5;j++)

{P1=0xff;

delay(300);

P1=0x00;

delay(300);

}

}

}

void delay(uint k)

{

uinti,j;

for(i=110;i>0;i--)

for(j=k;j>0;j--);

}

3.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后

重复整个过程。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar temp;

void delay();

void main()

{

uinti,j;

while(1)

{

temp=0xfe;

for(j=0;j<8;j++)

{

for(i=0;i<8-j;i++)

{

P1=temp;

delay();

temp=_crol_(temp,1);

}

temp=_crol_(temp,j);

P1=0xff;

temp=temp<<1;

}

}

}

void delay()

{

uinti,j;

for(i=200;i>0;i--)

for(j=110;j>0;j--);

}

4.间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往

中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。

#include

#include

#define uint unsigned int

#define uchar unsigned char

void delay();

uchar temp;

void main()

{

uint i; uint j;

for(i=0;i<3;i++)

{

P1=0x55;

delay();

P1=0xaa;

delay();

}

for(i=0;i<3;i++)

{temp=0xfe;

for(j=0;j<7;j++)

{P1=temp; delay();

temp=_crol_(temp,1);

}

for(j=0;j<7;j++)

{

P1=temp;delay();

temp=_cror_(temp,1);

}

} for(i=0;i<3;i++)

{

P1=0x7e;

delay();

P1=0xbd;

delay();

P1=0xdb;

delay();

P1=0xe7;

delay();

}

for(i=0;i<3;i++)

{

P1=0xe7;

delay();

P1=0xdb;

delay();

P1=0xbd;

delay();

P1=0x7e;

delay();

}

for(i=0;i<3;i++)

{P1=0x00;

delay();

P1=0xff;

delay();

}

while(1)

{P1=0xff;}

}

void delay()

{uintx,y;

for(x=300;x>0;x--)

for(y=110;y>0;y--);}

1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设

晶振频率为12MHz

#include

sbit D1=P1^0;

#define uint unsigned int;

#define uchar unsigned char;

uinttt;

void main()

{

TMOD=0x10;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

while(1);}

void exter() interrupt 1

{ TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

if(tt==20)

{tt=0;

D1=~D1;}

}2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。

#include

#include

#define uint unsigned int;

#define uchar unsigned char;

uchartt,temp; temp=0xfe;

void main()

{ TMOD=0X10;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

TR1=1;

ET1=1;

while(1);

}

void time1() interrupt 3

{ TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

tt++;

if(tt==2) tt=0;

if(tt<1)

{

P1=temp;

}

else

{temp=_crol_(temp,1);

P1=temp;}

}

2、同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持

续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1k(hz)的方波。

#include //52单片机头文件

#include //包含有左右循环移位子函数的库

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit beep=P2^6;

uchartt;

uintfre,flag;

void main() //主函数

{

fre=50000;

beep=0;

TMOD=0x11;//设置定时器0,定时器1为工作方式1

TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器0中断

ET1=1;

TR1=1;

TR0=1;//启动定时器0

while(1);//等待中断产生

}

void timer0() interrupt 1 //定时器0中断

{

TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失

TH0=(65536-fre)/256;

TL0=(65536-fre)%256;

tt++;

if(flag<6) //以下几个if分别用来选取不同的频率

if(tt==10)

{

tt=0;

fre=50000;

beep=~beep;

}

if(flag>=6&&flag<12)

{

tt=0;

fre=50000;

beep=~beep;

if(flag>=12&&flag<18) {

tt=0;

fre=10000;

beep=~beep;

}

if(flag>=18&&flag<24) {

tt=0;

fre=5000;

beep=~beep;

}

if(flag>=24&&flag<30) {

tt=0;

fre=2500;

beep=~beep;

}

if(flag>=30&&flag<36) {

tt=0;

fre=1250;

beep=~beep;

}

if(flag>=36&&flag<42) {

tt=0;

fre=625;

beep=~beep;

}

if(flag>=42&&flag<48) {

tt=0;

fre=312;

beep=~beep;

}

if(flag>=48&&flag<54) {

tt=0;

fre=156;

beep=~beep;

}

TR0=1;

void timer1() interrupt 3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

flag++;

if(flag==54)

{

flag=0;

fre=50000;

}

}

4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、D、E、F,重复。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uintaa;

ucharnum;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

void main()

{ P1=0xf0;

P0=0xc0;

TMOD=0X10;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1; ET1=1;

TR1=1;

while(1);

}

void timer0() interrupt 3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

aa++;

if(aa==10)

{aa=0;

if(num==16)

num=0;

P0=table[num]; num++;

}

}

1.利用动态扫描方法在六位数码管上显示出稳定的4321

#include

#include

#define uint unsigned int

#define uchar unsigned char

uintnum=0,tt=0,num1=0;

uchar code table[]=

{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

uchar code table1[]=

{

0x0e,0x00d,0x0b,0x07

} ;

void main()

{

TMOD=0X11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;

while(1){

if(tt==1)

{tt=0; num++;

P0=table[num];

if(num==4)

num=0;

P1=table1[num1];

num1++;

if(num1==4)

num1=0;

}}

}

void timer0() interrupt 1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

tt++;

}

2.用动态扫描方法和定时器1在数码管的前三位显示出秒表,精确到1%秒,即后

两位显示1%秒,一直循环下去。

#include

#include

#define uint unsigned int

#define uchar unsigned char

uintbai,shi,ge, tt,num,temp=0;

void display(uintbai,uintshi,uintge);

void delay(uint);

uchar code table[]=

{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

uchar code table1[]=

{

0x0e,0x00d,0x0b,0x07

} ;

void main()

{

TMOD=0X11;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256; EA=1;ET0=1;TR0=1;

while(1)

{

if(tt==2)

{

tt=0;

bai=temp/100;

shi=temp%100/10;

ge=temp%10; display( bai, shi, ge);

temp++;

if(temp==999)

temp=0;

}

}

}

void display(uintbai,uintshi,uintge) {

P0=table[bai];

P1= table1[3];

delay(2);

P0=table[shi];

P1= table1[2];

delay(2);

P0=table[ge];

P1=table1[1];

delay(2);

}

void timer0() interrupt 1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

tt++;

}

void delay(uint z)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

郭天祥51单片机笔记

1)二极管 导通电流I:3mA-10mA;导通压降v:1.7V。 (排阻计算公式:R = VCC(5V)-v(1.7V)/I(3mA) )。 2)电源指示灯 开关电源:内部有开关控制电流大小,不稳定。 去耦电容:稳压,去波。 3)锁存器(74HC573) OE:OutEnable,低电平有效(必须为低电平)。 输入端:OE(1),LE(11锁存端diola),D(D0(2)-D7(9),一般接P1^0-P1^7)。 输出端:Q(1Q-8Q)。 Z:高阻状态,非高非低电瓶。 LE:为高时,Q端与D同变换;为低电平时,Q端保持上次状态。 sbit LED00 = 0x80; //位指针;指针大小占一个字节;指针控制一个位的值; sfr LED0 = 0x80; //字节指针;指针大小占一个字节;指针控制一个字节的值;4)51库函数 头文件:#include 函数:unsigned char _crol_(unsigned char c, unsigned char b); 描述:The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrinsic function. The _crol_ routine returns the rotated value of c. 5) 蜂鸣器 名称:b:基极;C:集电极;e:发射集; 原理:e极发射电子;当b极接低电平时, ce导通,并且放大电流;当b接高电平时, ce截止。JPFMQ接P3.6管脚。 分类:有源蜂鸣器;无缘蜂鸣器。(源: 震荡源) Proteus:buzzer-有源;sounder、speaker-

郭天祥资料大全

研究生郭天祥放弃15万年薪回校自主创业 编者按: 国家统计局哈尔滨调查队最新调查数据显示,目前哈市大学生毕业去向中,自主创业者仅占调查人数的8.7%,这个比率在五个去向中是非常低的。今年高校毕业生就业形势严峻,国家有关部门大力提倡大学生自主创业,并出台了很多优惠、扶持政策。为了鼓励和支持大学生自主创业,从今天开始,本报推出“创业难贵在坚持”系列新闻故事,在为那些正在创业路上艰难行走的青年学子提供鼓励和支持的同时,也期盼有关部门能对创业学子所遇到的困难给与必要的重视和尽可能的帮助。 在读大学本科和研究生的6年中,郭天祥在学校的创新实验室足足待了4年。 今年,即将从哈尔滨工程大学硕士研究生毕业的郭天祥和该校的7名本科生、研究生共同组建了一家公司。虽然公司刚刚起步,但是他们在行业中已小有名气,首年销售额预计会达到一个令人惊喜的数额。 实验室成了家 “2002年刚入校时,我就给自己设定了一个目标,将来一定要自己去创业。大二下学期,我突然感觉到:如果想在自己的专业领域进行创业,必须要先学会动手。所以,我就找到同学商量一起参加学校的电子设计竞赛。”郭天祥说。 在首次尝试中,他失败了。当时学校教电路基础课的付永庆教授被两个年轻人的求知热情感动了,将他们吸纳入创新实验室工作。这之后,实验室便成了郭天祥的另一个家。 “单片机相当于电子产品的大脑,如果这个核心控制器件失灵的话,那么家里的电冰箱、微波炉、电视、空调等电子产品恐怕都要变成废品了。”得悉这个信息之后,郭天祥将自己的研究方向定在了单片机上。 当时苦于没有硬件实验环境,身边又没有会的人可以请教,郭天祥只好上网查找资料自学。看见网上有卖单片机学习板的,他省下生活费狠心买了一块300多元的单片机学习板做练习用。“那时我每天就摆弄单片机,自己一个人摸索非常难懂的汇编语言。快放暑假时,终于做出来第一个单片机作品——一个电子钟。” 为寻找锻炼的机会,郭天祥每天早上起床后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍遍地重复看,几乎每天都要熬到第二天凌晨两点。这一年中,郭天祥陆续参加了国家及省级竞赛,也获得了不少奖项。 放弃15万年薪回校创业 2007年9月,郭天祥以实习生的身份到一家太阳能公司做硕士课题。实习期间,他经常与技术人员热烈讨论并交流,在一次次研发思路碰撞中,他们的产品创新思路也在一步步地改进完善。

郭天祥老师51单片机中矩阵键盘显示程序

3.键盘的应用,第一排。 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; void delay(uint); uchar code table[]= { //段选的数字决定显示的数字,这里的是数字0~15 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,}; uchar num,temp; void main() { dula=0; wela=1; P0=0xc0; //位选6数码管 wela=0; while(1) { P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break;

case 0x7e:num=4; break; } } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } dula=1; P0=table[num-1]; dula=0; } } void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

郭天祥新概念51单片机C语言教程例题

目录 例2.2.1编写程序,点亮第一个发光二极管(part2_1.c P27 ).............. - 4 -例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42) ......................................................................................... - 5 -例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。(part2_4.c P48)................................................................................................................................... - 5 - 例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。(part2_5.c P49) ........................................................................................................................... - 6 -例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.c P53) ........................................................................................................................ - 6 -例3.2.1编写程序使第一个数码管显示8(part2.1_.1c P59)..................... - 8 -例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。(part2.1_2.c P61) ............................................................................ - 8 -例3.3.1第一个数码管显示1,时间为0.5s,然后关闭它,立即让第二个数码 管显示2,时间为0.5s,在关闭它……一直到最后一个数码管显示6,时间同样为0.5s,关闭它之后再回来显示第一个数码管,一直循环下去。(part2.1_3.c P62)................................................................................................................................... - 9 -例3.5.1利用定时器0工作方式1,在实验板上实现第一个发光管以1s亮灭闪烁。(part2.1.4.c P74) ................................................................................... - 11 -例3.5.2用定时器0的方式1实现个第一发光二极管以200ms间隔闪烁,用定时器1的方式1实现数码管前两位59s循环计时。(part2.1_5.c P75)... - 12 -例4.1.1用数码管前两位显示一个十进制数,变化范围为00~59,开始时显示00,每按下S2键一次,数值加1;每按下S3键一次,数值减1;每按下S4键一次,数值归零;按下S5键一次,利用定时器功能使数值开始自动每秒加1,再次按下S5键,数值停止加1,保持显示原数。(part2.2_1.c P82) ......... - 14 -例4.2.1实验班上电时,数码管不显示,顺序按下矩阵键盘后,数码管上依次显示0~F,六个数码管同时静态显示即可。(part2.2_2.c P87)............... - 17 -例5.3.1用单片机控制ADC0804进行数模转换,当拧动实验板上A/D旁边的电位时,在数码管的前三位以十进制方式显示出A/D转换后的数字量(8位

郭天祥之十天学会单片机视频配套程序-实用!

Lesson1作业 1、用位操作点亮第一个发光管.适用 TX-1C单片机实验板 晶振为11.0592M /*********************************************************/ #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 2 、用总线操作点亮第一个发光管. /*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 3、用位操作点亮最后一个发光管. /*********************************************************/ #include //52单片机头文件 sbit led8=P1^7; //单片机管脚位声明 void main() //主函数 { led8=0; //将单片机P1.7口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。} 4、用总线操作点亮最后一个发光管. /*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。}

郭天祥单片机C语言课后答案

郭天祥单片机C语言课后答案

郭天祥十天学通单片机 TX-1C单片机实验板 所有课作业+答案,特别整理,供单片机爱好与学习者使用 讲次内容细节 第一讲学单片机预备知识、 如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。点亮一个发光管, 第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用 第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深 用单片机的定时器及中断设计一个60秒定时器第五讲独立键盘、矩阵键盘 的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应

用 第六讲AD、DA的工作原理 及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法 第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。 第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作 第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、 目前非常通用的一种通信机制 第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信) 第十一讲用DS12C887时钟芯片设计一个高精度时钟D S12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、

(完整版)郭天祥_十天学通单片机_所有课后作业+答案

lesson1 对照TX-1C单片机学习板原理图写程序 用位操作和总线操作两种方法完成以下题目 1.熟练建立KEIL工程 2.点亮第一个发光管. 3.点亮最后一个发光管 4.点亮1、3、5、7 5.点亮二、四、五、六 6.尝试让第一个发光管闪烁 7.尝试设计出流水灯程序 =========================================================== =========================================================== lesson2 第一个发光管以间隔200ms闪烁 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。 用8个发光管演示出8位二进制数累加过程。 8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全

部熄灭再以300ms间隔全部闪烁5次。重复此过程。 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。 =========================================================== =========================================================== lesson3 1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。 2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 3、同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波。 4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、 D、E、F,重复。 lesson4

郭天祥的学ARM和学单片机一样简单视频教程1.08G

郭天祥的学ARM和学单片机一样简单视频教程1.08G 第一章嵌入式开发系统概况(70分钟)(第一讲) 一、开发平台硬件资源 二、开发平台软件资源及文档 三、开发平台硬件安装 四、开发平台软件安装 1、VMARE虚拟机的安装 2、LINUX操作系统的安装 3、交叉环境GCC的安装编译 第二章测试程序讲解 一、整板测试(33分钟)(第二讲) 1、在u-boot下用串口下载测试程序 2、对各个实验进行演示操作,测试相应模块的功能 3、在u-boot下用网口下载测试程序 二、ADS1.2 开发环境使用及启动代码分析(第二讲) 1、ADS1.2 开发环境使用(22分钟) (1)、工程的建立 (2)、工程的编译分析 (3)、硬件的仿真调试 2、启动代码分析(80分钟) (1)、代码启动流程分析 (2)、相关寄存器配置分析 (3)、44binit.s讲解 (4)、option.s讲解 (5)、memcfg.s讲解 (6)、main.c讲解 (7)、相应头文件讲解 三、S3C444B0X I/O口与中断的分析(第三讲) 1、S3C444B0X I/O口(37分钟) (1)、I/O口寄存器配置 (2)、I/O口控制LED代码分析 (3)、UART寄存器配置及代码简要分析 2、中断(46分钟) (1)、中断模式 (2)、中断寄存器配置 (3)、仿真调试按键外部中断的程序流程 四、AD温度采集显示、音频接口、NAND flash 读写(第四讲) 1、AD温度采集显示(30分钟) (1)、AD工作原理 (2)、AD寄存器配置 (3)、LM35温度传感器介绍 (4)、代码分析

(5)、仿真演示实验 2、音频(32分钟) (1)、WAV格式及结构分析 (2)、IIS相关寄存器配置及代码分析 (3)、硬件结构分析 (4)、仿真演示实验 3、 NAND Flash (41分钟) (1)、NAND Flash与NOR Flash区别 (2)、芯片参数分析 (3)、硬件结构分系 (4)、对应芯片手册的读写时序分析代码 (5)、仿真演示实验 五、USB D12从设备(108分钟)(第五讲) 1、USB协议介绍 2、下位机代码简要分析 3、DRIVER STUDIO软件的安装 4、上位机驱动sys、inf文件生成概述 5、上位机应用程序的实现 (1)、工程的建立 (2)、代码编写及分析 (3)、对应应用程序编写下位机程序实现USB通信 第三章 ucos讲解(145分钟)(第六讲) 一、uC/OS-II的简单应用 1、uC/OS-II简介 (1)、MAIN函数的结构 (2)、任务的结构 (3)、重要uC/OS-II API函数介绍 (4)、多任务的机制 2、代码分析 (1)、启动代码分析 (2)、相关函数和结构体的介绍 (3)、任务的创建 (4)、S3C44B0X定时器介绍 3、邮箱的实现 (1)、邮箱的建立 (2)、程序流程分析 (3)、仿真演示实验 4、事件的实现 (1)、事件的建立 (2)、程序流程分析 (3)、仿真演示实验 5、uC/OS-II实现AD对LM35温度采集 (1)、uC/OS-II文件目录介绍

郭天祥单片机液晶显示

51单片机郭天祥书本学习 第七章通用型1602学习 前言:由于郭天祥老师的视频和书本上的内容不太配套,所以在学习单片机时,新手难免很困惑,所以我就跟大家分享一下我的学习方法吧 书本中例7.2.2 用C语言编程,实现在1602液晶的第一行显示‘Hello everyone!’,在第二行显示‘Welcome to here!’,右侧移入,速度自定。 大家先看看单片机实验板的原理图1 图1 1602/12864液晶屏 可知道LCD 1602的4、5、6接线分别是4-RD-RS(控制写数据还是写指令的);5-WR-RW(控制写还是读的);6-LCDE-E(使能端,给脉冲信号的),见图2:

图2 1602局部图 关于这三个接线的设置,请看下图中央控制器(CPU)图3: 图3 中央控制器

图4 P2口与LCD 1602的内部连接图 请看图4 其中P2^7; //使能端 P2^6; // 指令或数据 P2^5; // 读或写 好了,有了这些相信大家在看视频的过程中就可以编程了,下面是我编的程序。 #include #define uchar unsigned char #define uint unsigned int uchar code table[]="Hello everyone!"; uchar code table1[]="Welcome to here!"; sbit lcden=P2^7; //使能端 sbit lcdrs=P2^6; // 指令或数据 sbit lcdwr=P2^5; // 读或写

uchar num; void delay(uint z)//延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com)//写指令{ lcdrs=0; lcdwr=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date)//写数据{ lcdrs=1; lcdwr=0;

郭天祥十天学会单片机C语言郭天祥---课后习题答案

郭天祥十天学通单片机TX-1C单片机实验板 所有课作业+答案,特别整理,供单片机爱好与学习者使用 本文亲测可用! 讲次内容细节 第一讲学单片机预备知识、 如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。点亮一个发光管, 第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。 第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用 第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深 用单片机的定时器及中断设计一个60秒定时器 第五讲独立键盘、矩阵键盘 的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用 第六讲AD、DA的工作原理 及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法 第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。 第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作 第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、 目前非常通用的一种通信机制 第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信) 第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。(本节由学生自己设计电路) 第十二讲使用Protell99绘制电路图全过程Protell99软件使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工 第十三讲Altium designer 6.5绘制电路图全过程最顶级电路板设计软件Altium Designer使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工 lesson1

单片机资料百度盘

一、51单片机 1、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者 资料下载链接:https://https://www.wendangku.net/doc/c03554255.html,/cJzLQdrBfp2KD 访问密码8f77 2、普中51单片机学习光盘 https://www.wendangku.net/doc/c03554255.html,/s/1pK0c4BL 3、郭天祥----十天征服单片机 https://www.wendangku.net/doc/c03554255.html,/s/1i4N2Hrn 4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著) https://https://www.wendangku.net/doc/c03554255.html,/cYAYJtgFJNUup 访问密码9eb1 5、力天电子51单片机视频教程 https://www.wendangku.net/doc/c03554255.html,/s/1hrulifU 6、天狼星51单片机视频教程 链接:https://www.wendangku.net/doc/c03554255.html,/s/1pKsD3b9 密码:scy4 8、STC12C5A60S2例程 https://https://www.wendangku.net/doc/c03554255.html,/cjPpH7uBBbIr8 访问密码a471 二、AVR单片机 1、郭天祥--十天学会AVR单片机视频教程 https://https://www.wendangku.net/doc/c03554255.html,/cwVbV5mWw9pxk 访问密码34ba 1、锐志电子AVR单片机视频教程

https://https://www.wendangku.net/doc/c03554255.html,/cweRHU4JUSypY 访问密码64b2 2、手把手AVR单片机视频教程 https://https://www.wendangku.net/doc/c03554255.html,/cm926G3YrWKhG 访问密码dccb 3、DY_miniAVR单片机光盘资料 https://https://www.wendangku.net/doc/c03554255.html,/c3fIFUrWu4LEG 访问密码0036 4、AVR代码生成器 https://https://www.wendangku.net/doc/c03554255.html,/c3fILqj5h3aT9 访问密码2061 5、AVR开发工具 https://https://www.wendangku.net/doc/c03554255.html,/c3fI3satMGmSh 访问密码d356 6、AVR例程 https://https://www.wendangku.net/doc/c03554255.html,/c3fIFfSgCzhWE 访问密码48c1 三、msp430单片机 1、郭天祥---十天学会msp430单片机 https://https://www.wendangku.net/doc/c03554255.html,/cYAYvyxDBaHgr 访问密码4dca 2、力天msp430单片机视频教程 https://https://www.wendangku.net/doc/c03554255.html,/cYAY83HwRumTn 访问密码d66c 3、msp430 c语言.pdf https://https://www.wendangku.net/doc/c03554255.html,/cYAY577Ucc7b2 访问密码86b3 4、msp430教程.pdf https://https://www.wendangku.net/doc/c03554255.html,/cYAYtXwXYesgC 访问密码ccbf 5、IAR C 430标准库函数.pdf https://https://www.wendangku.net/doc/c03554255.html,/cYAYnInwURHZx 访问密码52ef

基于郭天祥单片机数码管的电子钟(含闹钟、整点报时)

基于单片机数码管的电子钟(郭天祥系列单片机) 1、功能说明 (1)本电子钟可以显示当前时刻、年月日和闹钟时刻。不同 时间的显示可以用key4来切换。 (2)、独立键盘key1-key4(左到右)调节不同功能,7段数 码管显示。 (3) 整点提示功能:当时间为整点时,蜂鸣器会滴滴滴响,响20秒; (4) 闹铃功能:本程序有闹铃功能,当定时时间到时,闹铃会滴滴滴报警,报警30秒; (5)附加功能:当在闹铃和整点时,8个发光二极管会闪亮; (6)时、分、秒之间和年、月、日之间也是用“.”分割。 2、键盘控制 (1)key1-键移动调整单位,每按一次移动一个单位,可调整时分秒、年月日和闹钟时间。比如:在显示时分秒时,按下key1键,可通过key2和key3对‘秒’加减;再按一下key1,可对‘分’加减;再按一下key1,可对‘时’加减;再按key1,时间开始走动(2)key2-加1;key3-减1; (3)key4-键切换时分秒、年月日和闹铃时间的显示。比如:当前为时分秒,按一下key4,则显示年月;再按一下,则显示闹铃时间;再按一下,则显示时分秒时间。

附录:C语言程序 //设计项目:带闹铃的电子钟 //功能: key1-键:开始/调时分秒/调年月日/调定时 // key2-键:加1 // key3-键:减1 // key4-键:切换页面 #include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; sbit bear=P2^3; uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71}; uchar sec1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2; void keyscan(); void display(uchar hour,uchar min,uchar sec); void delay(uint z) { uint x,y; for(x=0;x

51单片机 头文件详解教程

/********************************** 51单片机头文件 单片机头文件原理及内部接口技术 王俊涛整理修改 QQ:853210627 page页码为郭天祥《新概念51单片机c语言教程》中页码 将其复制到文本文档改扩展名为.h ***********************************/ /*-------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __REG51_H__ #define __REG51_H__ /* BYTE Register */ // 四个IO口全部能位寻址 sfr P0 = 0x80; //三态双向IO口P0口 //低8位地址总线/数据总线 sfr P1 = 0x90; //准双向IO口P1口 //用户专用 sfr P2 = 0xA0; //准双向IO口P2口 //高8位地址总线/无外部ram或rom时为用户IO口sfr P3 = 0xB0; //双功能 //1.准双向IO口P3口 //2.P30 RXD串行数据接受 // P31 TXD串行数据发送 // P32 外部中断0 信号申请 // P33 外部中断1 信号申请 // P34 定时/计数器T0 外部计数脉冲输入 // P35 定时/计数器T1 外部计数脉冲输入 // P36 WR 片外RAM写脉冲信号输入

51单片机的AD转换

51单片机的AD转换 姓名:史旭超学号:0845531133 专业:电子信息工程 摘要:AD转换器是一种能把输入模拟电电压或电电流变成与它成正比的数数字量,即能把被控对对象的各种模拟信息变成计计算机可以识别的数字信息。在单片机测控系统中,被采集的实时信号多为连续变化的模拟量,由于单片机只能处理数字量,所以就需要将连续变化的模拟量转换成数字量,即A/D转换。本次设计中AD转换器选用ADC0809,将其与单片机,8255共同构成转换电路。关键词:ADC0809 单片机8255 汇编语言 一、芯片介绍 1.A/D转换芯片0809引脚与功能简介 ADC0809是由美国国家半导体公司推出的8位逐次逼近式A/D转换器,包括8位模/数转换器、8通道多路转换器和与微处理器兼容的控制逻辑。8通道多路转换器能直接连通8个单端模拟信号中的一个。ADC0809与C51单片机有3种接口方式:查询方式、中断方式和等待延时方式。每采集一次一般需100us。中断方式下,A/D转换结束后会自动产生EOC信号。 (1)ADC0809内部逻辑结构如下图所示: 图1 ADC0809的内部逻辑结构 ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字

量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。 (2) ADC0809引脚结构功能 D7-D0:8位数字量输出引脚。 IN0-IN7:8位模拟量输入引脚。 VCC:+5V工作电压。 GND:地。 REF(+):参考电压正端。 REF(-):参考电压负端。 START:A/D转换启动信号输入端。 ALE:地址锁存允许信号输入端。 (以上两种信号用于启动A/D转换). EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。 CLK:时钟信号输入端(一般为500KHz)。 A、B、C:地址输入线。 图2 ADC0809引脚分布 (3)ADC0809通道选择 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示:

单片机天才郭天祥的大学经历

致阅读本书的大学生朋友 在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。 2007年,我以全新的教学方式推出了一套讲述51单片机的教学视频课程——“十天学会单片机”,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。为此,从2007年9月至2008年7月,我用了近十个月的时间将本书写完。本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机“过来人”的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。 我的大学 写这篇文章的时候,我正处于硕士研究生毕业论文的准备阶段,眼睁睁看着我的大学生活即将画上句号,再看看身边有很多低年级的学生们一天天把时间白白荒费掉,我在心里替他们惋惜,在即将结束我的大学生活之际,我将我的大学几年的有意义的生活与大家分享,看过这篇文章后也许能让那些有梦想的同学为了实现自己的人生目标少走些弯路,大家要相信,大学校园——将为你提供一生最好的学习环境。 我高中毕业于新疆伊宁市三中,2002年考入哈尔滨工程大学信息与通信工程学院电子信息工程专业,2006年以创新人才免试保送哈尔滨工程大学硕士研究生,现在已经是我在学校的最后一个学期了。记得我刚入校的时候对电子知识一点也不懂,之前我比较喜欢经商,想着好好努力,将来开个公司,做做生意,所以第一志愿报了经济管理学院,结果没被经管学院录取,而被调剂到信通学院,现在想来也算是走对了。在上大学之前,我的梦想是上大学后,一定要当班长,一定要当学生会的干部。所以我从上大一就开始加入学校的学生会,非常积极地竞选班干部,后来也如了我的愿,班长也当了,学生会干部也做了不少。因为刚上大一的时候根本不知道大学里具体要学什么知识,每天就是上课,那时一节课也不敢逃,每天的生活就是去上课、吃饭、打球和踢球,然后回宿舍瞎侃,上床睡觉。周末时,找几个同学逛逛街什么的,每

单片机视频教程全集分享_华清远见

单片机视频教程全集分享 万事开头难,想要学习单片机的同学们,在一开始也许会迷茫。华清远见为大家分享单片机视频教程全集,希望对你们的单片机学习之路有一定的帮助。在我们学习单片机视频教程全集之前,现在了解一下单片机要如何学习。 学习单片机需要什么基础? C语言:简单的C语言基础就可以,甚至于刚开始的时候,数组、指针等知识都不需要会。但是为了将来的发展,希望大家可以好好将C语言学好。 了解51单片机的基本结构:关于这一点,只需要看几天书就可以了。或者说在大家开始学51单片机的时候,花点时间看看就可以,无需深究,只需了解。 具备以上两点,你就可以开始单片机的学习了。 学习单片机需要准备什么? 一套好的单片机学习板,单片机是个实实在在的东西,不动手实践根本学不会!如果你确定你要学习单片机的话,你必须有一套学习板;如果你手头没有一套单片机学习板,就想学习单片机,你还是放弃吧。不知道如何选择的,可以翻看之前分享的文章(单片机学习板如何选择) 一本好的单片机的教材和一些单片机学习网,单片机教材的话,个人推荐郭天祥老师的《新概念51单片机》。 一台电脑,电脑主要是用来编写程序的。学习单片机或者C语言的时候,不要只是在那看代码,我们需要亲自动手敲代码。 一家靠谱的单片机培训机构,想要系统学习单片机的话,建议还是找一家专业的培训机构,例如华清远见。参加单片机培训机构不仅学习时间短,而且学习效果有保障,几个月培训就能实现入门到精通。 学习单片机的步骤 1、熟悉单片机的原理,结构; 2、学好数电,模电,为设计电路打好基础; 3、熟练使用C语言,多学习别人的程序; 4、对操作系统原理有一定的了解; 5、Protel至少要有点基础; 6、要实际动手调试电路的能力。

郭天祥十天学会单片机中的源程序

Lesson2-1 #include sbit p1_1=P1^0 unsigned int a void main() { while(1) { a=51000; p1_1=0; while(a--); a=51000; while(a--); p1_1=1; a=51000; while(a--); a=51000; while(a--); } }

Lesson2-2 #include #define uint unsigned int #define uchar unsigned char sbit D1=P1^0; //void delay(); void delay(uint); void main() { while(1) { D1=0; delay(100); D1=1; delay(100); } } /* void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--); }*/ void delay(uint z) { uint x; uchar y; for(x=z;x>0;x--) for(y=20;y>0;y--); }

Lesson2-3 #include #include #define uint unsigned int #define uchar unsigned char uchar temp,num,num1; sbit beep=P2^3; void delay(uint); void main() { temp=0xfe; while(1) { for(num1=0;num1<3;num1++) { for(num=0;num<8;num++) { P1=temp; beep=0; delay(100); temp=_crol_(temp,1); P1=0xff; beep=1; delay(100); } } for(num1=0;num1<3;num1++) { for(num=0;num<8;num++) { P1=temp; beep=0; delay(100); temp=_cror_(temp,1); P1=0xff; beep=1; delay(100); } } while(1);

郭天祥十天学会单片机例程

#include //52系列单片机头文件 sbit led1=P1^0; //声明单片机P1口的第一位 void main() //主函数 { led1=0; /*点亮第一个发光二极管*/ } #include //52系列单片机头文件 void main() //主函数 { P1=0xaa; } #include //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位 uint i,j; void main() //主函数 { while(1) //大循环 { led1=0; /*点亮第一个发光二极管*/ for(i=1;i>0;i--) //延时 for(j=110;j>0;j--); led1=1; /*关闭第一个发光二极管*/ for(i=1000;i>0;i--) //延时 for(j=110;j>0;j--); } }

#include //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位void delay1s(); //声明子函数 void main() //主函数 { while(1) //大循环 { led1=0; /*点亮第一个发光二极管*/ delay1s(); //调用延时子函数 led1=1; /*关闭第一个发光二极管*/ delay1s(); //调用延时子函数 } } void delay1s() //子函数体 { uint i,j; for(i=500;i>0;i--) for(j=110;j>0;j--); } #include //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位void delayms(uint); //声明子函数 void main() //主函数 { while(1) //大循环 { led1=0; /*点亮第一个发光二极管*/ delayms(200); //延时200毫秒 led1=1; /*关闭第一个发光二极管*/ delayms(800); //延时800毫秒 } } void delayms(uint xms) {

相关文档
相关文档 最新文档