部分代码预览:
#include"mytype.h" //包含总合的头文件
#define DATA P2 //定义P0口为数据端
//定义按键I/O口
sbit key0=P0^6; //正反转、停止模式切换按键
sbit key1=P0^7; //加速按键
sbit key2=P0^2;
sbit key3=P0^1; //减速按键
//sbit PWM=P0^0;
//****************
uchar table2[16]=" _DGUT_ ";//第1行液晶显示
uchar table1[16]= "000 Chen ZiXing";//第2行液晶显示
uchar number_table[10]="0123456789";
sbit lcden=P3^2;//液晶使能端
sbit lcdrs=P3^5;//液晶读写控制端
sbit wela=P3^3;
//uchar number;
uchar ge=0,shi=0,bai=0;
//****************
//定义全局变量flag=0,
uchar speed=0,speed1=0; //正反转的标志位,0停止,1正转,2反转
uint num; //定时器1的计数变量
int quan;
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=310;y>0;y--);
}
void write_com(uchar com)//液晶写地址函数
{
lcdrs=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//液晶写数据函数
{
lcdrs=1;
P2=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()//液晶初始化函数
{
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void Lcd_display()//液晶显示函数,主要是刷新转速专用
{
uint i;
table1[0]=number_table[bai];
table1[1]=number_table[shi];
table1[2]=number_table[ge];
write_com(0x80+0x40);
for(i=0;i<3;i++)
{
write_data(table1[i]);
delay(1);
}
}
void main()
{
uchar number;
time_init(); //定时器初始化
PWM_Init(); //PWM初始化
UART1_Init(9600);//串口初始化
DATA=0x00; //数据端初始化为0
init();
write_com(0x80);
for(number=0;number<16;number++)
{
write_data(table2[number]);
delay(10);
}
write_com(0x80+0x40);
for(number=0;number<16;number++)
{
write_data(table1[number]);
delay(10);
}
PWM_SET(46,0);//进去先让电机速度为零
while(1)
{
keyscan(); //按键扫描
/******用定时器1计算时间,每1秒算一次速度直接显示*******/
if(num>=20)//num 是T1计数器计数变量,numG=20时为1秒
{
TR0=0;TR1=0;//关定时器0/1中断
num=0;//计数变量清零
ge=quan%10;quan=quan/10;
shi=quan%10;quan=quan/10;
bai=quan%10;
Lcd_display(); //LCD显示控制
quan=0;//圈数记录清零
TR1=1;TR0=1; //开定时器0/1中断
}
/*******************************************************************/
}
}
void time_init()
{
TMOD=0x15; //设置定时器0为计数模式,定时器1为定时模式,都为工作方式1
TH0=(65536-1)/256;
TL0=(65536-1)%256;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
ET1=1; //开定时器1中断
TR1=1; //启动定时器1
EA=1; //开启总中断
}
//*************************************************************//
//函数:keyscan()
//功能:实现按键扫描、同时控制电机速度
//
//////********************************************************//
void keyscan()
{
if(key0==0||key1==0||key2==0)
{
delay_ms(10);//延时去抖
if(key0==0)
{
UART1_SendStr("a");
if(speed<9)speed++;
else if(speed1<9){speed=0;speed1++;}
// else speed=9;
PWM_SET(speed1*10+speed,0);
while(!key0);
}
else if(key1==0)
{
UART1_SendStr("q");
if(speed>0)speed--;
else if (speed1>0){speed1--;speed=9;}
PWM_SET(speed1*10+speed,0);
while(!key1);
}
else if(key2==0)
{
UART1_SendStr("key2");
while(!key2);
}
write_com(0x80);
write_data(number_table[speed1]);
write_data(number_table[speed]);
}
}
上一篇:基于单片机PWM的直流电机调速系统+H桥驱动电路驱动原理图
下一篇:51单片机+编码器+42步进电机的源程序
推荐阅读
史海拾趣
在20世纪中叶,西铁城公司迎来了一次重要的技术突破。1956年,公司成功研制出防震手表,并通过了空中坠表实验,这一创新轰动了整个行业。防震手表的推出不仅提升了西铁城产品的品质,也进一步巩固了其在全球腕表市场中的地位。这一技术的成功应用,也显示了西铁城在精密加工和测量技术方面的实力。
在20世纪中叶,西铁城公司迎来了一次重要的技术突破。1956年,公司成功研制出防震手表,并通过了空中坠表实验,这一创新轰动了整个行业。防震手表的推出不仅提升了西铁城产品的品质,也进一步巩固了其在全球腕表市场中的地位。这一技术的成功应用,也显示了西铁城在精密加工和测量技术方面的实力。
进入21世纪,西铁城公司在技术创新方面继续取得显著进展。其中,光动能技术的开发是公司历史上的一大里程碑。1995年,西铁城推出了第一只光动能手表,这一技术能够吸收任何可见光源并转化为动能,为腕表提供持续的动力。随后,公司不断对光动能技术进行改进和优化,使其更加精确、高效。这一技术的成功应用,不仅提升了西铁城产品的竞争力,也为整个电子行业带来了新的发展方向。
随着公司规模的不断扩大,ABL Heatsink开始重视品牌建设和市场推广。公司加大了在广告、展会等方面的投入,提升了品牌知名度。同时,ABL Heatsink还积极参与行业交流活动,与同行分享经验和技术,进一步巩固了公司的行业地位。
随着技术的不断发展,茂达电子在产品研发上不断取得突破。公司投入大量人力、物力进行技术研发,并与多家国内外著名大学和研究机构合作,共同推进模拟集成电路设计的创新。经过不懈的努力,茂达电子成功推出了一系列世界领先的半导体器件产品,赢得了市场的广泛认可。
随着技术的不断发展,茂达电子在产品研发上不断取得突破。公司投入大量人力、物力进行技术研发,并与多家国内外著名大学和研究机构合作,共同推进模拟集成电路设计的创新。经过不懈的努力,茂达电子成功推出了一系列世界领先的半导体器件产品,赢得了市场的广泛认可。
本帖最后由 paulhyde 于 2014-9-15 08:56 编辑 Intel Atom系统显示驱动4.0版 和Atom处理器配套是945GC+ICH7芯片组,虽然945GC 的原型945G系列的显示驱动已经不再更新,不过intel 对945GC 却是关爱有加,专门为其开发有专用驱动,而且还保持 ...… 查看全部问答∨ |
小弟最近在做wince上面的usb转串口驱动,用的是public下面的usbser,编译到系统里面后能识别usb转串口的线了,并模拟为串口1,但是操作的时候用一款usb转串口线只能收,发不出来,用另外一款收发都有数但是数不对现象就像是串口速率不一样,但是这 ...… 查看全部问答∨ |
请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 还有如何提取内置在笔记本中的EASYPORT的驱动? 谢谢!13956302025 heroxgy@163.com&n ...… 查看全部问答∨ |
各位同仁,大家好. 首先我向各位同仁表示歉意,在此留下广告信息. 我公司是韩国FIDELIX半导体. www.fidelix.co.kr 我公司的主要产品是PSRAM,MOBILE SDRAM,MOBILE DDR(KGD/BGA) 哪位同仁有相 ...… 查看全部问答∨ |
本帖最后由 dontium 于 2015-1-23 13:38 编辑 这是我的程序: #include \\"DSP28_Device.h\\" #include \\"DSP28_Globalprototypes.h\\" // Prototype statements for functions found within this file. // interrupt void ISRTimer2( ...… 查看全部问答∨ |
|