2017-04-15 05:35:26 wangzdq 阅读数 818
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3414 人正在学习 去看看 朱有鹏

惠普打印机已经被广泛的应用,但在51单片机和ARM中,由于内存容间太小,cpu速度有限而不能驱动惠普打印机。

U2P-016就可以很好解决这样的问题,通过串口就可完成对惠普打印机的控制

特点
1、可以实现画点、画线、画圆等基本操作,还可以画贝赛尔曲线;
2、实现图形填充,图片打印等功能;
3、支持汉字打印,TRUETYPE字库;
3、高速USB接口连接,打印速度快;
4、UART接口,操作简单,波特率115200bit/s;
5、支持惠普所有激光打印机LaserJet;
6、支持惠普所有喷墨打印机DeskJet\officejet\inkjet;
7、工作电压5V;
8、DB9串口,向外扩展方便

链接
https://item.taobao.com/item.htm?id=546397165604


实物


打印效果如下




单片机
2013-06-09 22:18:00 a379039233 阅读数 4841
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3414 人正在学习 去看看 朱有鹏

      单片机就是一个小的计算机,不过他没有计算机那么好,方便的输入输出设备,计算机的输入设备就是鼠标,键盘等,方便的很,输出设备就是显示器,将输出非常清晰的显示在屏幕上。但是单片机的输入输出都是他的引脚,需要通过编程控制。

       单片机和PC机相同的地方就是都有CPU(我把单片机的微控制器核也叫CPU),内存(单片机的ROM,RAM,FLASH等),时钟系统,中断系统,定时器等等。

      一, 单片机最小系统就是单片机能够运行起来的必要条件:

   1.电源 2.晶振 3.复位电路  没有电源就没有能源,就不能工作;没有晶振,就没有时钟电路,就没有节拍,指令就不能按一定的步调运行;没有复位电路,单片机就很不可靠,会出现“死机”、“程序走飞(PC)”等现象。
   
   二,一些重要概念
    1. 我们对单片机编程不过就是设置单片机内部的寄存器和端口引脚以便输出高低电平控制其他(连接在单片机上)器件而已。
    2. 编程中最重要的是1:配置时钟,2:配置IO口,3:配置复位方式,看门狗设置等等
       次要的是:中断(外部,定时器,串口),串口,ADC,XRAM读写,内部FLASH等。   
    3. 1个机器周期 =12个时钟周期(晶振的振荡周期)   
    4. while(1);让单片机一直工作,等待中断!防止程序跑飞等。
    5. 51单片机共111条汇编指令,
7种寻址方式:
1.立即寻址 MOV A,#01H
2.直接寻址 MOV A,20H
3.寄存器寻址 MOV A,R3(A,B,Cy,DPTR)

4.寄存器间接寻址 MOVA,@R0  R1
5.变址寻址 MOVC  A, @A+DPTR
6.相对寻址 SJMP   rel; (PC)←(PC) + 2(指令长度) +  rel
7.位寻址 位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。
MOV 00h,C,MOV  20H.0, C  ,PSW.6
 
     6. XRAM(分内外)读写 
      1> XBYTE[address]=data   写数据
         data=XBYTE[address]   读数据;
   2>char xdata *mydat;
      ......
      mydat=(char xdata*)0x0030;
      *mydat=31;
   3>汇编方式
	mov dptr,#1000h
	mov a,#55h
	movx @dptr,a
      7.  读端口信号是必须先向端口写“1”,然后再读,这就是单片机口信号的准双向的含义。切记!
      8.  模拟输入或数字I/O,推挽(强)或漏极开路输出(IO,inout)

 
9. 一些寄存器默认设置即可,配置了可能会有警告。usb clock.clksel=1  10. Keil C 里面Lib库文件的生成与调用,可以自己做lib。
11. ram高128位只能间接寻址。idata,一些人可能没有用到idata,发现data不够用。
12 1s=1000ms=1000000us=1000000000ns.
13.
x M晶振定时 y ms: TH1 = (65536 - (x/12)*y*1000) / 256;     TL1 = (65536 - (x/12)*y*1000) % 256;16位的哦,亲!
假设C8051F020单片机的晶振是22114800Hz,测每秒计22114800个数 经过12分频后,每秒计22114800÷12=1842900个数,如果设置计数器初值是 0xfe90(即十进制65165),则需要计的数的个数为65535-65165=360,那么定时器的 时间为(360÷1842900)(S)≈0.195ms,即0.2ms。
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long #define bool  bit
 
#include<C8051F330.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long //引脚定义
sbit In1= P0^3; sbit In2= P0^7; sbit In3= P1^3; sbit In4= P1^7; sbit Out1= P0^3; sbit Out2= P0^7; sbit Out3= P1^3; sbit Out4= P1^7;
//----------------------------------------------------------------------------- //功能:延时 //入口参数:yc //出口参数:无 //-----------------------------------------------------------------------------
void delay(uint time)
{
  while(--time);
}
//----------------------------------------------------------------------------- //功能:单片机C8051F330初始化 //入口参数:无 //出口参数:无 //-----------------------------------------------------------------------------
void Mcu_Init(void) { 
  PCA0MD&=~0x40;                 //禁止内部看门狗  
  OSCICN = 0x83;                 //内部振荡控制寄存器,使能H-F,八分频  
OSCICL = 0x00;                 //期望输出频率也是24.5MHz
  CLKSEL = 0x00;                  //系统时钟取自内部高频振荡器  
RSTSRC = 0x04;                 //检测到时钟丢失时允许系统复位
}
 
 
//----------------------------------------------------------------------------- //功能:MCU I/O口配置 //入口参数:无 //出口参数:无 //-----------------------------------------------------------------------------
 
void PORT_Init (void) {    
P0MDOUT  = 0x88;                         //P0.3,P0.7推挽输出   
P1MDOUT  = 0x88;                  //P1.3,P1.7推挽输出   
XBR0     = 0x00;  
  XBR1     = 0x40;                  //使能交叉开关和弱上拉 }
//----------------------------------------------------------------------------- // 功能:所有设备初始化 //----------------------------------------------------------------------------- // 入口参数:无 // 出口参数:无 //-----------------------------------------------------------------------------
 
void Init_Device (void) {   
Mcu_Init();   
PORT_Init();
} void main() {
     Init_Device();     
delay(10);          
     while(1){            }
 
}
2019-02-22 22:27:02 LuDanTongXue 阅读数 586
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3414 人正在学习 去看看 朱有鹏

程序下载地址:
https://download.csdn.net/download/ludantongxue/10971448
对应硬件线路连接见上章:
https://blog.csdn.net/LuDanTongXue/article/details/87869557
对应单片机程序见上章:
https://blog.csdn.net/LuDanTongXue/article/details/87869806

程序界面:
上位机图片

程序参数说明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

各个曲线段参数设置举例:
第一段S曲线加速30°:1转/秒启动,5转/秒结束
在这里插入图片描述

第二段匀速运动120°:5转/秒匀速
在这里插入图片描述

第三段S曲线减速30°:5转/秒启动,0.5转/秒结束
在这里插入图片描述

第四段S曲线反转加速30°:0.5转/秒启动,5转/秒结束
在这里插入图片描述

第五段匀速反转运动120°:5转/秒匀速
同第二段

第六段S曲线反转减速30°:5转/秒启动,1转/秒结束
在这里插入图片描述

至此各个曲线段对应的数组均已生成,将各数组复制到单片机程序即可(记得更改数组名称)。(微信ID:saskingku)

2019-12-15 23:30:48 huwei039 阅读数 14
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3414 人正在学习 去看看 朱有鹏

单片机自定义串口打印程序
#include <stdarg.h>
#include <stdio.h>
void printf(const char* format, …)
{
uint8_t buf[256]; //申请打印内容缓存,不得超过256字节
uint32_t len = 0; //实际打印的字符串大小
uint32_t index = 0;

	va_list ap;
	va_start(ap, format);
	len = vsnprintf((char*)buf, 256, format, ap);  //将需要打印的数据,转化为字符串,保存在buf中。
	
	if(len > 0)	//逐个打印字符
	{
		while(len--)
		{
			USART_SendData(USART1, buf[index]);
			index++;
			while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET);
		}
	}
	va_end(ap);

}

2017-04-21 10:50:42 u010770993 阅读数 812
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3414 人正在学习 去看看 朱有鹏
  研一的时候实验室刚买的MakerBot打印机,到现在已经廉颇老矣……试着打印了个Arduino的盒子,刚开始打印基底的时候还挺平整,后面不知道是受力不均还是咋的,四周边角开始弯曲变形。没记错的话这台打印机当时价值2w多RMB,现在上淘宝一搜,遍地是几千RMB一台的3D打印机,甚至还有不少1千出头的……真是感叹国内发展太快了。再不回国就跟不上时代前沿了啊!

3D打印Arduino单片机盒子

  日本的IT产业不止是中国人吐槽,印度人也在吐槽。前阵子他跟他一哥们儿在日本某企业招聘网站投递资料,硬是搞半天没弄明白从哪里点进去(英文界面)。而且应聘进度,其网站是不会通过任何自动系统发送邮件通知你的。三哥吐槽说日本是不是生活在七八十年代。

3D打印Arduino单片机盒子

  虽然跑题了……悟……接着跑题吧。最近隔壁实验室一中国人同学说要发会议论文了,我问他啥会议,他说是个水会。然后我照着名字一查,IEEE……直接给跪在那儿。他跟我解释说,都是中国人在投,不是很水吗?我说……是……水啦……但是我发的连中国人都不想投……其实国内资金少,有限的资金都定点打击了,不入流的期刊根本不会投……所以一个期刊要是没中国人投可以肯定它水的没药救了。

3D打印Arduino单片机盒子

  小时候得在心中装下梦想,长大才会生根发芽。其实穷不是问题,梦想要远大。梦想本来就不是短期能够实现的东西,甚至不是这辈子能够实现的东西。比如当科学家,或者长大后听过的稍微详细点的梦想“要当大牛科研,就要发《Nature》、《Science》这样的顶级期刊”。只有这样,当你走进一个图书馆的时候,才会在图书馆角落发现惊喜。庆应无论是矢上还是日吉图书馆,一楼最近的地方总有一个位置摆放着各种期刊,除了时尚杂志,其它之中一定会有3、4种顶级学术刊物。而这些刊物都是原版英文的,其实没多少人看得懂。但是你用手翻一翻,小时候的梦想就似乎映入眼帘。那专业的排版,那些似懂非懂的future technology,无论当前的硕士研究或者博士研究做得多么水,就业前景多么残酷,你都会看到希望。而你不会像那些没有梦想的人一样,整天去酒吧喝酒麻醉自己。我想,这就是梦想的作用吧。作为人类一直以来追求和探索的桥梁,或者说原动力,梦想总是基于现实又高于现实的。它决定了现实在你心中的位置,未来生活在你面前的哪个方向。

3D打印Arduino单片机盒子

单片机小知识总结

阅读数 2019

单片机

博文 来自: ReCclay

51单片机实现时钟

阅读数 662

单片机

博文 来自: u011732358

压力曲线

阅读数 19

没有更多推荐了,返回首页