接口实验报告(6)

2019-08-30 21:46

disdata[7]=16; if(disdata[2]==0) {

disdata[2]=0x10;//如果十位为零则不显示 } display(); }

void int0() interrupt 0 using 0 {

count++;

if (dat_t>=1000) {

speed=(count-1)*10/12; dispflag=1; count=0;

dat_t=0; }

}

void timer0() interrupt 1 using 1 {

TH0=0xfc; //定时器装载初值,设置脉冲信号的占空比 1ms (65536-1000=fc18) TL0=0x18; time++; dat_t++;

if(time>period) time=0;

if(time<=PWM_h) /*高电平持续时间结束,变低*/ PWM_out=1; /*经过反相器反相*/

else if((time>PWM_h)&&(time<=period)) /*周期时间到,变高*/ { // time=0;

PWM_out=0; /*经过反相器反相*/ }

// if(time==period) time=0; }

void main() {

uchar flag0=0; P1=0x00;

PWM_out=0; speed=0;

speed_disp();

TMOD=0x01; /*定时器0方式1*/

TH0=0xfc; //定时器装载初值,设置脉冲信号的占空比 1ms (65536-1000=fc18) TL0=0x18; dat_t=0;

ET0=1; /*开定时器0中断*/ TR0=1; /*启动定时器0*/ IT0=1; EX0=1; EA=1; while(1) {

if(mRun==0) {

EA=1; /*开CPU中断*/ flag0=1; if (dispflag==1) {

dispflag=0;

speed_disp(); } }

if(mRun==1) {

EA=0; /*关CPU中断*/ PWM_out=0; if( flag0==1) { speed=0;

speed_disp(); flag0=0; } }

} }

附加题

修改程序,使电机从高速到低速再到高速,反复循环 程序

#include

typedef unsigned char uchar; typedef unsigned int uint; sbit PWM_out=P1^7; sbit mRun=P2^0; sbit Din=P1^0;// sbit CLK=P1^1;//

uint period=300; uint time=0; uint PWM_h=80; uint count=0; uint speed=0; uint dat_t=0; uint turn_flag=1; uchar dispflag=0;

uchar data disdata[8]; unsigned char code LED_Map[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,0,0x40 };//0-F , ,-

void delay(int count) {

unsigned int i;

for(i=0;i

uchar LED_code[8]; uchar i,j,chr,sel;

/////////////// for(i=0;i<8;i++)

LED_code[i]=LED_Map[disdata[i]]; // LED_code[i]=0x3f;

for(i=0;i<8;i++) {

chr= LED_code[i]; //

if(i==1) chr= chr|0x80; sel=0x80; for(j=0;j<8;j++) {

Din=chr&sel; CLK=0;

sel=sel>>1; delay(1); CLK=1; delay(1); } } }

void speed_disp()//速度显示 {

// speed=123;

disdata[0]=speed/100;//取10位 disdata[1]=speed0/10;//取个位 disdata[2]=speed;//取个位 disdata[3]=16; disdata[4]=16; disdata[5]=16; disdata[6]=16; disdata[7]=16; if(disdata[2]==0) {

disdata[2]=0x10;//如果十位为零则不显示 } display(); }

void int0() interrupt 0 using 0 {

count++;

if (dat_t>=1000) {

speed=(count-1)*10/12; dispflag=1; count=0;

dat_t=0; }

}

void timer0() interrupt 1 using 1 {

TH0=0xfc; //定时器装载初值,设置脉冲信号的占空比(65536-1000=fc18)

1ms

TL0=0x18; time++; dat_t++;

if(time>period) time=0;

if(time<=PWM_h) /*高电平持续时间结束,变低*/ PWM_out=1; /*经过反相器反相*/

else if((time>PWM_h)&&(time<=period)) /*周期时间到,变高*/ { // time=0;

PWM_out=0; /*经过反相器反相*/ }

// if(time==period) time=0; }

void main() {

uchar flag0=0; P1=0x00; PWM_out=0; speed=0;

speed_disp();

TMOD=0x01; /*定时器0方式1*/

TH0=0xfc; //定时器装载初值,设置脉冲信号的占空比(65536-1000=fc18) TL0=0x18; dat_t=0;

ET0=1; /*开定时器0中断*/ TR0=1; /*启动定时器0*/ IT0=1; EX0=1; EA=1; while(1) {

if(mRun==0) {

EA=1; /*开CPU中断*/ flag0=1; if (dispflag==1) {

dispflag=0;

speed_disp(); PWM_h=200;

turn_flag=0;

1ms


接口实验报告(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018届高考语文语言连贯补写句子专练(高考真题及名校模拟题汇编

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: