前段时间用pcf8563芯片做了个电子时钟,这个芯片自动走时间,我只用去读和写就行了,pcf8563要加一个后备电池,这样就不怕单片机掉电了。这个不太符合你的要求,不过这是我现成的,我可不想在这里重新写代码。代码不是很规范,但是能正常运行。
你在Keil里建个工程,下面一段是displayc的代码:
#include "at89x51h"
#include "PCF8563h"
//#include "TG12232h"
#define Key_Set P2_2
#define Key_Add P2_1
#define Key_Sub P2_0
//#define LCD_CS P2_5
//#define LCD_DATA P2_6
//#define LCD_CLK P2_7
void Key_down();
void Displaybuffer(char Location);
//void LCD_Display();
unsigned char LedTable[10]={0x3f,0x03,0x6d,0x67,0x53,0x76,0x7e,0x23,0x7f,0x77};
bit state=0;
char set=0;
void main()
{
unsigned char i,j,n=2;
P1=0;
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
ET0=1;
EA=1;
// P8563_init();
P2=0xff;
P3=0x02;
P1=LedTable[8];
// while(n--)
for(i=0;i<250;i++)
for(j=0;j<6;j++)
{
delay(10);;
P3<<=1;
if(P3==0x80)
P3=0x02;
delay(10);
}
delay(5000);
// lcd_init();
// set_lcd_position(0,1); //汉字定位到上行左端
// lcd_display(0,0,"Welcome to use!");
// lcd_display(1,0," LeoZheng ");
// delay(1000);
// lcd_send_com(0x01);//清除
// lcd_display(0,0,"20 / /");
while(1)
{
Key_down();
Displaybuffer(set);
// LCD_Display();
}
}
void Time0_H() interrupt 1
{
static unsigned char i=0;
TH0=0x4c;
TL0=0x00;
i++;
if(i==8)
{
i=0;
state=~state;
}
}
/
void LCD_Display()
{
lcd_display_char(0,2,((g8563_Store[6]&0xf0)>>4)+0x30);//年
lcd_display_char(0,3,(g8563_Store[6]&0x0f)+0x30);//
}/
void Key_down()
{
// static char set=0;
unsigned char buffer;
if(!Key_Set)
for(buffer=0;buffer<250;buffer++)
_nop_();
if(!Key_Set)
{
if(set==0)
{
writeData(0x0,0x20);//使时间停止
TR0=1;
}
set++;
if(set==4)
{
set=0;
TR0=0;
writeData(0x0,0x00);
}
while(!Key_Set)
Displaybuffer(set);
}
if(!Key_Add)
for(buffer=0;buffer<250;buffer++)
_nop_();
if(!Key_Add)
{
if(set==0)
return;
P8563_gettime();
buffer= g8563_Store[set-1];
buffer=((buffer&0xf0)>>4)10+(buffer&0x0f);
if(buffer>=59)
buffer=0;
else if(buffer>=23 && set==3)
buffer=0;
else
buffer++;
buffer=(buffer/10<<4)+(buffer%10);
writeData(set+1,buffer);
while(!Key_Add)
Displaybuffer(set);
}
if(!Key_Sub)
for(buffer=0;buffer<250;buffer++)
_nop_();
if(!Key_Sub)
{
if(set==0)
return;
P8563_gettime();
buffer= g8563_Store[set-1];
buffer=((buffer&0xf0)>>4)10+(buffer&0x0f);
if(buffer == 0)
{
if(set==3)
buffer=23;
else
buffer=59;
}
else
buffer--;
buffer=(buffer/10<<4)+(buffer%10);
writeData(set+1,buffer);
while(!Key_Sub)
Displaybuffer(set);
}
}
void Displaybuffer(char Location)
{
unsigned char i;
P8563_gettime();
//
if(Location==1 && state==0)
{
P1=0;
P3=0;
goto sec_bit1;
}
P3=0x02;
P1=LedTable[g8563_Store[0]&0x0f]; //sec
sec_bit1:
for(i=0;i<250;i++);
P1=0;
if(Location==1 && state==0)
{
P1=0;
P3=0;
goto sec_bit2;
}
P3=0x04;
P1=LedTable[(g8563_Store[0]&0xf0)>>4];
sec_bit2:
for(i=0;i<250;i++);
P1=0;
//
if(Location==2 && state==0)
{
P1=0;
P3=0;
goto min_bit1;
}
P3=0x08;
P1=LedTable[g8563_Store[1]&0x0f]; //min
min_bit1:
for(i=0;i<250;i++);
P1=0;
if(Location==2 && state==0)
{
P1=0;
P3=0;
goto min_bit2;
}
P3=0x10;
P1=LedTable[(g8563_Store[1]&0xf0)>>4];
min_bit2:
for(i=0;i<250;i++);
P1=0;
//
if(Location==3 && state==0)
{
P1=0;
P3=0;
goto hour_bit1;
}
P3=0x20;
P1=LedTable[g8563_Store[2]&0x0f]; //hour
hour_bit1:
for(i=0;i<250;i++);
P1=0;
if(Location==3 && state==0)
{
P1=0;
P3=0;
goto hour_bit2;
}
P3=0x40;
P1=LedTable[(g8563_Store[2]&0xf0)>>4];
hour_bit2:
for(i=0;i<250;i++);
P1=0;
P3=0x02;
//
}
这下面一段是pcf8563h的代码:
#ifndef __PFC8563_H__
#define __PFC8563_H__
#include <intrinsh>
#define uchar unsigned char
sbit SDA=P2^4;
sbit SCL=P2^3;
//extern void _nop_ (void);
//extern void delay(unsigned int ms);
uchar g8563_Store[7]; /时间交换区,全局变量声明/
uchar code c8563_Store[7]={0x01,0x02,0x07,0x09,0x04,0x02,0x12}; /写入时间初值:秒,分,时,日,周,月,年(BCD码)
07:59:00/
void delay(long time)
{while(time--);
}
/
内部函数,延时1
/
void DD()
{
//delay(1);
// uchar i;
// for(i=0;i<250;i++)
_nop_();
_nop_(); /根据晶振频率制定延时时间/
}
/
内部函数,I2C开始
/
void Start()
{ EA=0;
SDA=1;
SCL=1;
DD();
SDA=0;
DD();
SCL=0;
}
/
内部函数,I2C结束
/
void Stop()
{
SDA=0;
SCL=0;
DD();
SCL=1;
DD();
SDA=1;
DD();
EA=1;
}
/
内部函数,输出ACK ,每个字节传输完成,输出ack=0,结束读数据,ack=1;
/
void WriteACK(uchar ack)
{
SDA=ack;
DD();
SCL=1;
DD();
SCL=0;
}
/
内部函数,等待ACK
/
void WaitACK()
{ uchar errtime=20;
SDA=1;
DD(); /读ACK/
SCL=1;
DD();
while(SDA)
{ errtime--;
if(!errtime)
{
Stop();
SDA=0; //自己加的
}
}
SDA=1; //自己加的
SCL=0;
DD();
}
/
内部函数输出数据字节
入口:B=数据
/
void writebyte(uchar wdata)
{
uchar i;
for(i=0;i<8;i++)
{
if(wdata&0x80) SDA=1;
else SDA=0;
wdata<<=1;
SCL=1;
DD();
SCL=0;
}
WaitACK(); //I2C器件或通讯出错,将会退出I2C通讯
}
/
内部函数输入数据
出口:B
/
uchar Readbyte()
{
uchar i,bytedata;
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
bytedata<<=1;
bytedata|=SDA;
SCL=0;
DD();
}
return(bytedata);
}
/
输出数据->pcf8563
/
void writeData(uchar address,uchar mdata)
{
Start();
writebyte(0xa2); /写命令/
writebyte(address); /写地址/
writebyte(mdata); /写数据/
Stop();
}
/
输入数据<-pcf8563
/
uchar ReadData(uchar address) /单字节/
{ uchar rdata;
Start();
writebyte(0xa2); /写命令/
writebyte(address); /写地址/
Start();
writebyte(0xa3); /读命令/
rdata=Readbyte();
WriteACK(1);
Stop();
return(rdata);
}
void ReadData1(uchar address,uchar count,uchar buff) /多字节/
{ uchar i;
Start();
writebyte(0xa2); /写命令/
writebyte(address); /写地址/
Start();
writebyte(0xa3); /读命令/
for(i=0;i<count;i++)
{
buff[i]=Readbyte();
if(i<count-1) WriteACK(0);
}
WriteACK(1);
Stop();
}
/
内部函数,读入时间到内部缓冲区
/
void P8563_Read()
{ uchar time[7];
ReadData1(0x02,0x07,time);
g8563_Store[0]=time[0]&0x7f; /秒/
g8563_Store[1]=time[1]&0x7f; /分/
g8563_Store[2]=time[2]&0x3f; /小时/
g8563_Store[3]=time[4]&0x07; /星期/
g8563_Store[4]=time[3]&0x3f; /日/
g8563_Store[5]=time[5]&0x1f; /月/
g8563_Store[6]=time[6]; /年/
}
/
读入时间到内部缓冲区----外部调用
/
void P8563_gettime()
{
P8563_Read();
if(g8563_Store[0]==0)
P8563_Read(); /如果为秒=0,为防止时间变化,再读一次/
}
/
写时间修改值
/
//void P8563_settime()
//{
// uchar i;
// for(i=2;i<=8;i++) { writeData(i,g8563_Store[i-2]); }
// writeData(6,g8563_Store[3]);
//}
/
P8563的初始化-----外部调用
/
/
void P8563_init()
{
uchar i;
if((ReadData(0xa)&0x3f)!=0x8) //检查是否第一次启动,是则初始化时间
{
// for(i=0;i<=6;i++) g8563_Store[i]=c8563_Store[i]; //初始化时间
// P8563_settime();
writeData(0x0,0x00);
writeData(0xa,0x8); //8:00报警
writeData(0x1,0x12); //报警有效
writeData(0xd,0xf0);
}
}
/
#endif
书名 新概念51单片机C语言教程——入门、提高、开发、拓展全攻略(含光盘1张)
作者
作译者 郭天祥
出版社 电子工业出版社
ISBN 978-7-121-07893-4
定价 6900元
出版日期 2009-01
页码
版次
装帧
开本 16
▼内容简介
本书从实际应用入手,以实验过程和实验现象为主导,循序渐进地讲述51单片机C语言编程方法以及51单片机的硬件结构和功能应用。全书共分5篇,分别为入门篇、内外部资源 *** 作篇、提高篇、实战篇和拓展篇。本书内容丰富,实用性强,书中大部分内容均来自科研工作及教学实践,许多C语言代码可以直接应用到工程项目中。本书配套光盘提供13讲近30学时的教学视频和本书实例代码,可使读者更快更好地掌握单片机知识和应用技能。本书作者还可提供与本书配套的单片机实验板。
本书可作为大学本、专科单片机课程教材,适合于51单片机的初学者和使用51单片机从事项目开发的技术人员,也可供从事自动控制、智能仪器仪表、电力电子、机电一体化等专业的技术人员参考。
▼图书目录
第1篇 入 门 篇
11 单片机概述
111 什么是单片机
112 单片机标号信息及封装类型
113 单片机能做什么
114 如何开始学习单片机
12 51单片机外部引脚介绍
13 电平特性
14 二进制与十六进制
141 二进制
142 十六进制
15 二进制的逻辑运算
151 与
152 或
153 非
154 同或
155 异或
16 单片机的C51基础知识介绍
161 利用C语言开发单片机的优点
162 C51中的基本数据类型
163 C51数据类型扩充定义
164 C51中常用的头文件
165 C51中的运算符
166 C51中的基础语句
167 学习单片机应该掌握的主要内容
21 Keil工程建立及常用按钮介绍
211 Keil工程的建立
212 常用按钮介绍
22 点亮第一个发光二极管
23 while语句
24 for语句及简单延时语句
25 Keil仿真及延时语句的精确计算
26 不带参数函数的写法及调用
27 带参数函数的写法及调用
28 利用C51库函数实现流水灯
第2篇 内外部资源 *** 作篇
31 数码管显示原理
32 数码管静态显示
33 数码管动态显示
34 中断概念
35 单片机的定时器中断
41 独立键盘检测
42 矩阵键盘检测
51 模拟量与数字量概述
52 A/D转换原理及参数指标
53 ADC0804工作原理及其实现方法
54 D/A转换原理及其参数指标
55 DAC0832工作原理及实现方法
56 DAC0832输出电流转换成电压的
方法
第6章 串行口通信原理及 *** 作流程
61 并行与串行基本通信方式
62 RS-232电平与TTL电平的转换
63 波特率与定时器初值的关系
64 51单片机串行口结构描述
65 串行口方式1编程与实现
66 串行口打印在调试程序中的应用
第7章 通用型1602,12232,12864液晶
*** 作方法
71 液晶概述
72 常用1602液晶 *** 作实例
73 常用12232液晶 *** 作实例
74 常用12864液晶 *** 作实例
第8章 I2C总线AT24C02芯片应用
81 I2C总线概述
82 单片机模拟I2C总线通信
83 E2PROM AT24C02与单片机的通信
实例
第9章 基础运放电路专题
91 运放概述及参数介绍
92 反相放大器
93 同相放大器
94 电压跟随器
95 加法器
96 差分放大器
97 微分器
98 积分器
第3篇 提 高 篇
第10章 定时器/计数器应用提高
101 方式0应用
102 方式2应用
103 方式3 应用
104 52单片机定时器2介绍
105 计数器应用
第11章 串行口应用提高
111 方式0应用
112 方式2和方式3应用
113 单片机双机通信
114 单片机多机通信
第12章 指针
121 指针与指针变量
1211 内存单元、地址和指针
1212 指针变量的定义、赋值与
引用
122 指针变量的运算
123 指针与数组
1231 指针与一维数组
1232 指针与多维数组
124 指针与函数
1241 指针作为函数的参数
1242 指向函数的指针
1243 指针型函数
125 指针与字符串
1251 字符串的表达形式
1252 字符指针作为函数参数
1253 使用字符指针与字符数组的
区别
126 指针数组与命令行参数
1261 指针数组的定义和使用
1262 指向指针的指针
1263 指针数组作为main()函数的命令行
参数
127 指针小结
1271 指针概念综述
1272 指针运算小结
1273 等价表达式
128 C51中指针的使用
1281 指针变量的定义
1282 指针应用
第13章 STC系列51单片机功能介绍
131 单片机空闲与掉电模式应用
132 “看门狗”概念及其应用
133 用软件实现系统复位
134 内部扩展RAM的应用
135 扩展P4口的应用
136 内部E2PROM的应用
137 STC89系列单片机内部A/D应用
138 STC12系列单片机内部A/D应用
139 STC12系列单片机的PCA/PWM
介绍
1310 STC12系列单片机的SPI接口
介绍
1311 STC12系列单片机的“576MHz”超速
运行
第4篇 实 战 篇
第14章 利用51单片机的定时器设计一个
时钟
141 如何从矩阵键盘中分解出独立按键
142 原理图分析
143 实例讲解
第15章 使用DS12C887时钟芯片设计
高精度时钟
151 时钟芯片概述
152 DS12C887时钟芯片介绍
153 如何用TX-1C实验板扩展本实验
154 原理图分析
155 实例讲解
第16章 使用DS18B20温度传感器设计
温控系统
161 温度传感器概述
162 DS18B20温度传感器介绍
163 实例讲解
第17章 太阳能充/放电控制器
171 控制器原理图分析
172 控制器板上元件介绍
173 实例讲解
第18章 VC、VB(MSCOMM控件)与
单片机通信实现温度显示
181 VC MSCOMM控件与单片机通信实现
温度显示
182 VB MSCOMM控件与单片机通信实现
温度显示
第5篇 拓 展 篇
第19章 使用Protell 99绘制电路图全
过程
191 绘制电路板概述
192 建立工程
193 制作元件库
194 添加封装及制作PCB封装库
195 错误检查及生成PCB
196 布线电气特性设置
197 自动布线和手动布线
第20章 ISD400x系列语音芯片应用
201 ISD400x系列语音芯片介绍
202 ISD400x系列语音芯片 *** 作规则
203 ISD400x系列语音芯片应用实现
第21章 电机专题
211 直流电机原理及应用
212 步进电机原理及应用
213 舵机原理及其应用
第22章 常用元器件介绍
221 二极管
222 电容
223 场效应管
224 光耦
225 蜂鸣器
226 继电器
227 自恢复保险
228 瞬态电压抑制器
229 晶闸管(可控硅)
2210 电荷泵
第23章 直流稳压电源专题
231 整流电路
232 滤波电路
233 稳压电路
234 集成稳压模块的使用
235 串联开关型稳压电源
第24章 运放扩展专题
241 简单低通滤波器
242 “电流-电压”转换电路
243 光电放大器
244 精密电流源
245 可调参考电压源
246 复位稳定放大器
247 模拟乘法器
248 全波整流器和平均值滤波器
249 正弦波振荡器
2410 三角波发生器
2411 自动跟踪对称电源
2412 可调实验电源
2413 运放相关术语表
附录A 天祥电子开发实验板简介
A1 TX-1C 51单片机开发板(配套详细
视频教程)
A2 AVR单片机开发板(配套详细视频
教程)
A3 PIC单片机开发板(配套详细视频
教程)
A4 J-Link全功能ARM仿真器
A5 三星S3C44B0 ARM7入门级开
发板
A6 三星S3C44B0 ARM7提高级开
发板
A7 TX-51STAR 51单片机开发板(配套
详细视频教程)
参考文献
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用本程序在AT89S52单片机上已经调试成功,有什么问题,大家多多交流指教使用这款LCD应该要注意的问题<br>一定要在VO与VDD及VSS这三个脚间接一个20K的电位器<br>电位器的中间脚接VO,其它二脚接VDD和VSS<br>然后调节电位器的大小,直到有显示为止。欢迎大家提出意见
#include <reg52h>
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
sbit cs = P3^3;
sbit std = P3^1;
sbit sclk = P3^0;
void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);
uchar code tab1[]={
"天行健君子以自强不息"
"地势坤君子以厚德载物"
};
uchar code tab31[]={
"北京欢迎你WelcometoBeijing"
};
uchar code tab32[]={
/-- 调入了一幅图像:F:\梁\画图\HOCO12832bmp --/
/-- 宽度x高度=128x32 --/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x13,0x10,0x03,0xFE,0x00,
0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x3F,0x30,0x1F,0xFF,0xC0,
0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x8C,0x03,0xF0,0x00,0x7F,0xE0,0x7C,0x01,0xE0,
0x03,0xFF,0xF0,0x00,0x00,0x00,0x01,0x36,0x06,0xC0,0x00,0x5F,0xC0,0xFF,0xFC,0x60,
0x01,0xFF,0xF0,0x00,0x00,0x00,0x02,0x1B,0x0F,0x80,0x00,0xFF,0x01,0xFE,0x0F,0x30,
0x00,0xEF,0xF0,0x00,0x00,0x00,0x02,0x6D,0x9F,0x00,0x00,0x3E,0x03,0xFF,0xF1,0x90,
0x00,0xFF,0xF8,0x00,0x00,0x00,0x04,0x36,0xFE,0x00,0x01,0xFF,0x07,0xFF,0xFC,0x90,
0x00,0xEF,0xFF,0xFF,0x80,0x00,0x04,0xDB,0x7E,0x00,0x03,0xFF,0x87,0xFF,0xFC,0xD0,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x04,0x6D,0xFC,0x00,0x07,0xFF,0x8F,0xFF,0xFE,0x50,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x36,0xFC,0x10,0x07,0xFF,0x8F,0xFF,0xFE,0x90,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x1B,0xF8,0x10,0x07,0xFF,0xCF,0xFF,0xFE,0x80,
0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x04,0x0F,0xF8,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0x07,0xFF,0xFF,0xF0,0x00,0x04,0x07,0xF0,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x02,0x03,0xF0,0x20,0x07,0xFF,0xFF,0xFF,0xBA,0x00,
0x00,0xFD,0xFF,0xFF,0xFC,0x00,0x02,0x03,0xF0,0x20,0x03,0xFF,0xFF,0xDF,0xB8,0x00,
0x00,0xC1,0xC0,0x3F,0xFC,0x00,0x01,0x01,0xE0,0x40,0x00,0xFF,0xFF,0xDF,0xB0,0x00,
0x00,0x81,0xC0,0x3F,0xCE,0x00,0x00,0x81,0xE0,0x80,0x00,0x7F,0xFF,0xDF,0xA0,0x00,
0x00,0x81,0x80,0x1D,0xCF,0x00,0x00,0x41,0xE1,0x00,0x00,0x3F,0xFF,0x9B,0x00,0x00,
0x01,0x83,0x80,0x1F,0xC7,0x80,0x00,0x21,0xE2,0x00,0x00,0x1F,0xFD,0xB6,0x00,0x00,
0x01,0xC3,0x00,0x0E,0xE6,0x80,0x00,0x19,0xEC,0x00,0x00,0x07,0xFE,0x20,0x00,0x00,
0x00,0xC3,0x00,0x07,0x67,0x40,0x00,0x07,0xF0,0x00,0x00,0x03,0x3E,0x00,0x00,0x00,
0x00,0x02,0x00,0x03,0xE7,0xA0,0x00,0x00,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,
0x00,0x06,0x00,0x03,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,
0x00,0x06,0x00,0x07,0x03,0x00,0x77,0x46,0x74,0x24,0x80,0x06,0x04,0x00,0x00,0x00,
0x00,0x1C,0x00,0x06,0x00,0x00,0x55,0x45,0x54,0x57,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x1C,0x00,0x0E,0x00,0x00,0x45,0x45,0x74,0x57,0x80,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x00,0x00,0x55,0x45,0x44,0x74,0x80,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x76,0x47,0x54,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code tab5[]={
/-- 调入了一幅图像:F:\梁\画图\COCKbmp --/
/-- 宽度x高度=128x64 --/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x19,0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xBF,0xFF,0xFC,0x00,0x7F,0xFC,0x00,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xC0,0x7C,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x0F,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x08,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xF2,0x10,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x20,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x7E,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0x3C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1F,0x7C,0x20,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xF2,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x78,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x40,0x04,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/----初始化-----/
void init_lcd (void)
{
wr_lcd (comm,0x30); /30---基本指令动作/
wr_lcd (comm,0x01); /清屏,地址指针指向00H/
delay (100);
wr_lcd (comm,0x06); /光标的移动方向/
wr_lcd (comm,0x0c); /开显示,关游标/
}
/----上半屏显示汉字或字符----/
void chn_dispup (uchar code chn)
{
uchar i,j;
wr_lcd (comm,0x30); //30---基本指令动作
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j16+i]);
}
/----下半屏显示汉字或字符---/
void chn_dispdown (uchar code chn)
{
uchar i,j;
wr_lcd (comm,0x30); /30---基本指令动作/
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j16+i]);
}
/---上下半屏顺序显示汉字或字符----/
void chn_disp1 (uchar code chn)
{
uchar i,j;
wr_lcd (comm,0x30); /30---基本指令动作/
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j16+i]);
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j16+i]);
}
/----显示图形----/
void img_disp (uchar code img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令 *** 作
wr_lcd (comm,y+j); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x1+i); //再将水平的字节坐标(X)写入绘图RAM 地址。
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j16+i2]); //写入第一个Bytes
wr_lcd (dat,img[j16+i2+1]); //写入第二个Bytes
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令 *** 作
wr_lcd (comm,y+j-32); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x2+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j16+i2]); //写入第一个Bytes
wr_lcd (dat,img[j16+i2+1]); //写入第二个Bytes
}
}
wr_lcd (comm,0x36);
}
/--------显示点阵-----------/
void lat_disp (uchar data1,uchar data2)//data1,data2是要显示的数据
{
uchar i,j,k,x;
x=x1;
for(k=0;k<2;k++)
{
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令 *** 作
wr_lcd (comm,y+j2); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //功能设置:一次送8位数据,基本指令集
wr_lcd (dat,data1); //写入第一个Bytes
wr_lcd (dat,data1); //写入第二个Bytes
}
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令 *** 作
wr_lcd (comm,y+j2+1); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令 *** 作
wr_lcd (dat,data2); //写入第一个Bytes
wr_lcd (dat,data2); //写入第二个Bytes
}
}
x=x2;
}
wr_lcd (comm,0x36);
}
/--------------清DDRAM------------------/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (180);
}
/---------------------------------------/
void wr_lcd (uchar dat_comm,uchar content)
{
uchar a,i,j;
delay (50);
a=content;
cs=1;
sclk=0;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
sclk=0;
}
std=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
sclk=0;
std=0;
sclk=1;
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=0;
}
}
}
/-----------------------------------/
void delay (uint us) //delay time
{
while(us--);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/------------------主程序--------------------/
void main ()
{
SP=0x5f;
init_lcd ();
while (1)
{
clrram();
lat_disp (0x00,0x00); //显示点阵
delay1 (8000);
clrram();
lat_disp (0xcc,0xcc); //显示点阵
delay1 (8000);
clrram();
chn_disp1 (tab1); //上下半屏顺序显示汉字或字符
delay1 (8000);
clrram();
lat_disp (0xff,0x00); //显示点阵
delay1 (8000);
img_disp (tab5); //显示图形
delay1 (8000);
clrram();
chn_dispup (tab31); //上半屏顺序显示汉字或字符
delay1 (8000);
clrram();
chn_dispdown (tab31); //下半屏顺序显示汉字或字符
delay1 (8000);
}
}
基于单片机的仪表车床简易数控系统的实现
第2章 数控系统的设计要求
21概述
该数控系统是为了适应国内众多的普通机床改造而设计的主要考虑四个方面:
①经济性
既然是用于普通机床的数控化改造,因此,必须充分考虑系统的成本,这是保证达到系统设计目的的关键。这里的成本包括整个系统的成本,包括数控系统、伺服驱动系统及机械传动系统等,其核心在于数控系统的方案选择。
②方便性
数控系统的方便性,又叫“宜人性”,主要反映在系统的编辑部分。编辑(编程)部分是人和系统直接打交道的部分,即所谓的“人机界面”。人机界而应当对用户友好,也就是说编辑(编程)部分应当尽量给用户提供力便、快捷舒适的 *** 作使用环境。系统需从以下几个途径来体现:
●汉化按键,方便各种层次的 *** 作者使用。
●输入、检索、修改尽量一体化。即输入时可以检索、修改,检索时可以修改、输入,并且自动显示程序段号。
●快速检索,即能对程序进行上下翻页显示。
③实用性
经济则数控系统的设计不应追求功能的大而全,应以实用为原则。一般的机械加工只要能具有以下功能即可满足需要:
●直线、圆弧插补。插补速度要充分考虑被机床本身的内在素质,如刚性、抗震性、耐磨性等,不宜过高。
●速度衔接技术,即速度升/降速控制。速度衔接技术可以保证系统在加工过程中实现2段程序间的速度平滑连接,从而避免造成加工刀痕或平台,保证精度。
●动态坐标显示。
●加工程序的掉电保护能力。
●电动刀架控制。采用电动刀架,用软件进行控制,可以提高生产效率。
●细分技术。细分技术是当今经济型数控系统的一项重要技术。它可以有效解决步近电机的低频振荡问题,同时使机床脉冲当量细化,提高控制精度;另外,还可以提高低速加工时的出刀。
④可靠性
由于数控系统工作环境十分恶劣,必须有足够的可靠性才能保证系统稳定运行。
22数控系统的性能指标
按照广述设计要求及设想,数控系统的性能指标可归纳为:
●X,Z两轴联动,开环控制方式。
●ISO国际数控标准格式代码编程。
●快速定位。
●具有直线、圆弧插补能力。
●能与上价机串行通信、具有简单的联网能力。
●最大编程尺寸999999mm,z轴脉冲当量001mm,x轴脉冲当量0005mm,最大进给速度为0083m/s(5m/min)。
●预留螺纹加工功能的接口。
●具有连动、点动2种手动加工方式,以及自动连续加工方式。
第3章 总体方案的确定
31系统总体方案
本系统在研制过程中,紧紧围绕可靠性、方便性、低成本等设计要求。确定总体方案如下:
311基于单片机的系统结构
按照上述设计思想,本系统采用基于单片机的系统结构。这种方案结构简单,成本低。考虑到扩展性,主系统采用89S58单片机。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
1一个个8位的CPU
2、26个特殊功能寄存器(Special Function Register)
3、一个片内振荡器及时钟电路
4、全静态工作:0Hz-24KHz
5、32条可编程I/O线
6、2个16位可编程定时计数器
7、5个中断优先级2层中断嵌套中断
8、2个全双工串行通信口
9、电源控制模式:低功耗的闲置和掉电模式
10、8031 CPU与MCS-51 兼容
11、4个8位并行(Parallel)I/O口
12、三级程序存储器保密锁定
13、128B 内部RAM
14、内部硬件看门狗电路
15、4k Bytes Flash片内程序存储器(寿命:1000写/擦循环)
16、一个SPI串行接口,用于芯片的在系统编程
17、可寻址64KB的外部ROM和外部RAM的控制电路
这些我们称为单片机的资源(Souce),单片机的应用就是怎么充分合理地利用这些资源,来解决实际中的问题
312人机界面
(1)采用液晶显示界面
作为一个简易型数控系统,采用了12232汉字图形点阵液晶显示模块,带背光字符型液晶模块作为主显示界面,不采用数码管显示。这样做的目的有3个:
●液晶显示方式具有显示容量大、可以显示所有字符及自定义字符的能力。至于不能显示图形以实现加工曲线动态显示的缺陷,可以通过上仪机模拟仿真加工来弥补。
●液晶显示模块自身具有控制器,可以减轻主CPU的负担。
●使系统具有菜单驱动的基本素质。采用菜单驱功方式实现编辑模块的全屏幕编辑功能,达到友好的人机界面要求。
●可显示汉字和图形。
(2)采用双功能按键设计,简化键盘
系统设计中充分考虑功能的需要、 *** 作方便的需要及系统复杂性的要求三者之间的关系确定系统的大多数按键为双功能键,使得整个系统界面简洁。
313采用开环控制方式
系统设计的目的决定了系统只能采用开环控制方式。在开环型位置控制系统中,只能采用步进电机作为伺服执行单元。这是由步进电机车身的特性决定的。关于步进电机的特性等详细内容参见本章后续有关章节。
开环控制系统的数控机床结构简单,成本较低,仅适用于加工精度要求不很高的中小型数控机床,特别是简易经济型数控机床。
这类系统比较简单,价格最便宜,可以用于小型车床、铣床、钻床和线切割机床。如下图是常见的两坐标简易数控系统的组成框图。系统软件固化在单片机的存储器中,加工程序可通过键盘或磁带机输入,经系统软件进行编辑处理后输出一个系列脉冲,再经光电隔离,功率放大后大驱动两台步进电机,分别控制机床两个方向的运动,完成位置、轨迹和速度的控制。根据需要,微机还可通过继电器电路,实现对诸如主轴起停、变速、各种辅助电机起停、刀架转位、工件爽紧松开等动作的自动控制,使整个加工过程自动进行。
图3-1开环步进电机与单片机连接电路
单片机控制步进电机拖动的开环系统具有价廉,技术成熟等优点,因而使用较多。但这种系统还存在拖动力矩偏小,过载能力差、速度偏低,精度不够高及其价格随力矩增加成指数卜升等缺点。为此,选用时要注意在适当的范围内发挥其优势。一般主要适用于拖动力矩小于15Nm的小型机床,如C616,C618,C620,C6140等普通车床。对于转矩要求大、功能要求多的机床(如铣床、镗床、钻床及镗铣床)和高精度机床(如坐标镗床)就难于使用,需要开发与其适应的其他经济型数控系统。
314功能精简,提高可靠性
设计具备简易型数控系统必需的基本功能
●直线、圆弧插补能力。
●端面、台阶的循环加工。
●点动、连动、自动3种运行方式。
●申行通信能力。
32系统功能模块及其分析
321系统功能模块与总体框架
(1)系统 *** 作界面
按照上述
图3-2 系统的人机界面图
复位——系统在死机、工作出错等情况下的总清键,使系统回复设计的原始状态。
运行——自动运行用户的零件加工程序,包括程序的语法检查、数据处理、编译、插补运算及步进电机控制等。
暂停一—自动加工的暂停,是一个乒乓键,按一次,加工暂停,再按一次,继续加工。
换刀一—用于手工换刀,每按一次.电动刀架转一个工位,本系统中为90度。
手动——与“←、↑、→、↓”配合,以实现动作台的连动;在编辑程序时为光标移动键。数字1—9均为双功能键、用于程序输入、用“上下档”键进行切换。
G—一准备功能键,用于ISO加工程序输入。
M——辅助功能键,用于冷却泵的启/停、程序的结束等程序段的输入。
插入—一用于程序编辑过程中“插入修改”方式的切换。也是乒乓键,用块光标或下划线光标指示。
删除——在插入方式下,删除当前的字符;在修改方式下,删除当前光标位置字符。
上页一—程序上翻到上一程序段。相当PC机的PageUp键。
下页——程序下翻到下一程序段。与上页键一样是一个屏幕编辑键。相当PC机的PageDown键。
回车——确认键。
Esc——相当于PC机的Esc键。
(2)系统功能模块与总体框架
系统从总体上分为人机界面模块、伺服执行模块、电动刀架拧制模块、串行通信模块及基于AT89S51单片机的主控模块等5大模块,参见图3-2。各模块的功能分别是:
图3-3 系统模块与总体框架
①人机界面模块
该模块主要完成人机的对话与交流,物理上表现为显示器与键盘,核心功能是加工程序的编辑。由于采用全程菜单驱动形式.使该模块具有较好的友善性。
②伺服执行模块
该模块主要由脉冲分配器、伺服驱动及步进电机等组成,是一个执行单元,按照主机的指令完成工作台与刀具的相对运动,实现车削加工。其速度特性、矩频特性等直接影响加工的精度和速度。
③电动刀架控制模块
采用2继电器方式的4方电动刀架.用软件完成刀架的换刀动作,即刀架电机的正转拾刀→换刀→反转锁紧,是经济型数控系统必不可少的部分,可以提高加工效率,大大减少在加工过程中因手工换刀带来的误差。
④串行通信模块
该模块的功能是完成与上位机的串行通信,采用三线制方式,使系统具有基本的组网能力。
⑤主控模块
主要包括零片微处理器(也括监控程序)、加工程序存储单元及与其他模块的接口电路要完成程序编辑、加工程序处理、软件插补达贸、电动刀架饺制及行程限位保护等。
322系统软件框架
如图3-4展示了系统软件框图。系统上电后,执行初始化程序、键盘扫描程序。如有“计数显示”、“计数清零”、“点动”等功能键按下,执行其各自的工作子程序后返回初始化程序,并显示其相应的提示符。顺序控制程序也设计成子程序模块,它的主要功能是读入各行程开关及压力继电器的信号状态组合,经分析判断,输出一系列控制信号,完成对工件的自动加工。如按下“点动”键,则显示点动提示符,执行顺序控制程序,即返回初始化程序,如按下“连动”功能键,则首先置连动工作标记(此时,除“返回”键外,其余各键均用软件屏蔽),然后开中断,等待,刀具检测信号,收到中断请求信号后,执行中断服务程序。在中断服务控制中,先后执行顺序控制子程序,键盘扫描及显示子程序,并记录和显示数据。完成一次顺序控制或有“返回”键按下,则返回主程序。回到主程序后,仍判断是否有“返回”键按下,如有,则返回初始化程序。否则,重新等待中断。
采用模块化设计:
①点动,连动,换刀
该模块主要实现工作台在x,z两轴上正、反2个方向的点动、连动 *** 作,以及手动控制换刀等,用于方便对刀、工作原点设置等。
②自动
该模块主要实现加工程序的处理(包括程序语法检查、程序编译、数据处理等)、插补运算步进电机的控制及自动换刀控制等。
③参数设置
该模块主要实现刀具补偿参数设置、间隙补偿参数设置等自动加工参数的设置。
④编辑模块
该模块主要实现零件加工程序的键盘编辑、输入。
⑤通信模块
该模块主要实现与上位机或其他智能设备的串行通信,可用于加工程序的传送等。
图3-4 系统软件原理框图
第4章 硬件系统设计
41主模块设计
411主模块中关键器件及其选型
(1)单片机
本系统采用PHILIPS公司的8位单片机AT89S51为控制核心。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,全静态工作,RAM可扩展到64K字节,5个中断优先级,2层中断嵌套中断,32个外部双向输入/输出(I/O)口,2个16位可编程定时计数器。外接一片2764EPROM,作为监控程序的程序存储器和存放常用零件的加工程序。再选用一片6264RAM用于存放需要随机修改的零件程序、工作参数。采用译码法对扩展芯片进行寻址,采用74LS138译码器完成此功能。8279作为系统的输入输出口扩展,分别接键盘的输入、输出显示,8255接步进电机的环形分配器,分别并行控制X轴和Z轴的步进电机。另外,还要考虑机床与单片机之间的光电隔离,功率放大电路等
图4-1单片机系统原理框图
(2)数据存储器的选用
系统采用单片机作为控制核心,最高速度为33MHz,我们用到221184MHz。速度高对外部电路特别是外部数据,程序存储器扩展电路要求很高。必须满足在CPU读数据或程序指令时,外部数据或程序指令已准备好了。所以必须进行芯片的时序校验。为了使系统工作可靠我们也进行存储器的校验。
首先,对存储器作一介绍。单片机存储器分为内部存储器和外部存储器,内部存储器又分为内部数据存储器和程序存储器,同样,外部存储器也分为程序和数据存储器。本系统采用AT89S51为核心单元,其本身带有128B的RAM和4KB的Flash内部程序存储器。对于数据存储器,内外两部分是独立编址的,用不同指令来访问不同的数据存储器,即,MOV访问片内,MOVC访问片外,外部可扩展到64K,由于在外部数据存储器和I/0是统一编址的,应给I/0留一定的空间,且本系统要求留有一定的扩展空间,所以本系统扩展采用的芯片是6264。Y62256是HUNDAI公司的一种高速低功耗32K的
CMOS的静态RAM,采用现代公司的高速CMOS工艺技术。HY62265具有数据保持模式,以确保在最低供电电压下2V数据有效。使用CMOS技术,电源电压在2OV~55V之间,数据保持电流几乎没有影响。HY62256适合使用在低压和电池供电工作环境。M28256用于扩展程序存储器,是一种采用ST微电子公司拥有知识产权的多极性硅技术制造的。在3V或}V供电条件下具有快谏低功耗工作模式。电路已被设计成可提供与微控制器柔性接口特征。可使用软件或硬件进行数据循环测试或位功能锁定。可以使用标准的JEDEG运算法则进行软件数据保护。电路扩展如图4-2所示。
图4-2 存储器扩展
(3)总线驱动、数据、地址锁存及译码电路
由于单片机的数据线和低位地址线共用必须加地址锁存器进行低位地址锁存。使用74LS373作为地址锁存器,当应用系统规模过大,扩展所接芯片过多,超过总线的驱动能力时,系统将不能可靠工作,此时应加用总线驱动器来减少读数据的持续时间。整个系统可扩展的外部数据总共为64K,由于单片机外部数据存贮器和工/0是统一编址的,我们将低32K作为外部扩展的数据存储器,高译码电路采用两片74LS138,用了32K作为I/0使用或留给以后扩展用。由于外设使可编程器件,所以在使用138作译码时需要产生两种译码地址:一种是地址连续,一种是段地址连续。其中Ll,L5可作为系统再次扩展时用。译码地址输出在图4-3中已给出,Y0-Y7作为单地址芯片片选信号,Y8-Y15可作为可编程芯片片选信号,如8254可编程计数器。译码电路如图4-3
图4-3译码电路
412主模块电原理图设计
本系统选用AT89S51CPU作为数控系统的中央处理机。主程序框图如图4-4。外接一片2764EPROM,作为监控程序的程序存储器和存放常用零件的加工程序。再选用一片6264RAM用于存放需要随机修改的零件程序、工作参数。采用译码法对扩展芯片进行寻址,采用74LS138译码器完成此功能。8279作为系统的输入输出口扩展,分别接键盘的输入、输出显示,8255接步进电机的环形分配器,分别并行控制X轴和Z轴的步进电机。另外,还要考虑机床与单片机之间的光电隔离,功率放大电路等。
8255A可编程并行I/O口扩展芯片可以直接与MCS系列单片机系统总线连接,它具有三个8位的并行I/O口,具有三种工作方式,通过编程能够方便地采用无条件传送、查询传送或中断传送方式完成CPU与外围设备之间的信息交换。
CPU对8279的控制是先读回8279的状态字,查看PIFORAM中有无字符 ,若有将根据字符个数读出所有字符,并进行相应处理;若无,则直接返回。CPU对8279的监视采用查询方式,对8279分配的数据口地址为8000H,状态口地址为8001H,CPU每隔10ms定时中断查询一次,所有显示采用查询段码表的方式实现,简化了程序设计过程,提高了程序质量。
图4-4主程序框图
42输入/输出模块设计
421 I/O模块电原理图设计
8279作为系统的输入输出口扩展,分别接键盘的输入、输出显示。8279是可编程接口芯片,通过编程使其实现相应的功能,编程的过程实际上就是CPU向8279发送控制指令的过程。在软件设计中,显示方式采用了8个字符显示,左入方式,编码扫描键盘,双键锁定。I/O模块电原理图如图4-5所示。
图4-5 I/O模块电原理图
图4-6 8279工作程序框图
422步进电机控制接口
X,Z两轴采用3相6拍步进电机,并口8255向控制端口写控制字,PUSLE来实现对步进电机的控制。8255接步进电机的环形分配器,通过3片4N25光电隔离,分别形成X、Z所需的3相控制信号,送往步进电机驱动电源,分别并行控制X轴和Z轴的步进电机。芯片YB013实现硬件环分任务,;达林顿光隔离管4N25实现计算机弱点部分和步进电机强电部分的隔离,既起功率放大作用,又充当无触点开关,实现对计算机的保护。单片机控制步进电机连接如图4-7所示。
图4-7 单片机控制步进电机
423刀具控制接口
(1)电动刀架及其工作原理
电动刀架的机械部分类似于蜗轮机构,实现刀具的抬升、旋转(交换刀具位置)及下降锁紧,这里着重讨论实现上述动作所必须的硬件条件和电路原理。
在图4-8中,继电器KA1,KA2实现电动刀架的动作切换控制,主要完成刀架电机的正、反转切换。在刀架旋转过程中,每个工位上的霍尔元件会依次切换为有效状态,系统根据T1,T2,T3及T4状态的变化,可以推断出目前的刀号,并判断是否为当前所选用刀具,一旦符合,则电机反向旋转,锁紧刀具。电动刀架各时序的切换反间隔是系统控制的关键,反向锁紧所用时间取决于电动刀架生产厂家的推荐指标,过长会引起电机发热甚至烧毁。为保证电动刀架安全运行,在电动刀架交流380V进线处加装快速熔断器和热继电器。
图4-8电动刀架的电原理图
(2)电动刀架与单片机的接口
电动刀架与系统的硬件接口主要是控制电机正、反转信号J1,J2及刀号反馈信号TI,T2,T3和T4。上述信号均光电隔离后与单片机系统接口。
电动刀架软件控制流程如图4-9所示,采用查询方式。
图4-9电动刀架控制流程
程序为:
#include <AT89S51h>
#include <absacch>
#define N1 XBYTE[ ]
typedef unsigned char uchar
void adc0809(uchar idata x);
void delay();
void main()
{
static uchar idata ad[4];
adc0809(ad);
}
void adc0809(uchar idata x)
{
uchar i,ad_adr;
uchar motor=1;
ad_adr=&N1;
for(i=0;i<4;i++)
{
If(ad_adr=i)
{
delay1( );
KA1=1;
delay2( );
return();
}
else KA1=0
}
}
void delay1(motor==0)
{
uchar j;
for(j=0;j<20000;j++)
{;}
}
void delay2(void)
{
uchar j;
for(j=0;j<150000;j++)
{;}
}
424急停、暂停、行程限位接口电路
限位开关为常开状态;因此,X十,X一,Z十,Z一正常输人为低电平状态。因此如果行程开关被压合,向INT0发出中断信号,系统进行复位,步进电机的脉冲消失,也就无法继续前行,起到保护机床的目的。本系统采用三输入端与非门74HC10的输出端作为一个共用的中断信号接至单片机的INT0,用于实时处理紧急停车、暂停、限位报警功能。电路如图4-8所示:
43串行通信电路
本系统由两部分构成,上位机系统和下位机系统,由于上位机主要完成管理显示等工作,下位机完成控制功能,所以上位机和下位机的数据传输实时性要求不高,我们采用串口通信。使用RS232标准,MAX232进行电频的转换。串口RS232标准,它是美国电子工业协会(Electronic Industry Association)的推荐标准。本系统采用9针连接器,其定义见表4-1。本系统采用三线制TXD,RXD,GND连接,以使电路简单。
表4-1 连接器定义表
串口通讯电路主要由MAX 232电平转换电路构成。MAX232是MAXIM公司产品,一种电平转换芯片。可以将TTL转换成RS232,或RS232转换成TTL。满足单片机和普通计算机的通讯电平转换要求。电路如图4-10所示。
图4-10 通信接口电路
44人机界面模块设计
441单片机应用系统中常用显示方式及其比较
在单片机应用系统中,目前比较常用的显示介质有数码管(LED)、液晶显示(LCD)及CRT等,在家用电器中用的比较多的是真空荧光屏(VFD)。现就各自特点简述如下:
(1)数码管
数码管是一种主动发光器件。所谓主动发光.是指环境越暗越清晰。分为7段数码管和“米”字数码管2种。前者用于显示ARCⅡ码,显示信息量小;后者除了可显示ARCⅡ字符外,还可显示一些自定义的比较复杂的字符。数码管按驱动电流分,又可分为普通亮度、高亮、超高亮等。数码管由于其廉价而且扩展方便等特性,—直是单片机系统中用得最多、最广的一种显示器件。国内有不少型号的数控系统、尤其是早期的数控系统,广泛采用数码管作为显示界面。
(2)液晶显示
液晶显示器是一种被动发光器件。所谓被动发光,是指环境越亮越清晰,黑暗环境下必须加入背光才能清晰显示。分为字段型液晶显示器、字符型液晶显示器及图形点阵液晶显示器。字段型只能显示ASCII字符,字符型可以显示ASCII字符,显示效果比字段型好,而且可以显示少量的自定义字符;图形点阵液晶显示器是目前在单片机系统中比较流行的新型显示器件,可以显示所有字符及图形,由于其可以显示汉字的特性,被广泛用于国内智能设备中,国内的数控系统也开始广泛采用。
(3)CRT
CRT显示器分为单色和彩色2种,在数控系统中,尤其是高档数控系统中应用日益广泛。其特点是成本低、显示容量大;可以显示所合字符、图形及汉字;采用视频专用接口电路MC6847等与单片机接口,比较复杂,因而在—般的应用中比较少见。
(4)真空荧光屏
真空荧光屏简称VFD(vacuunm fluorescent display module),是一种新型的显示器件。它由3个基本电极——阴极(灯丝)、阳极及栅做封装在一个真空的玻璃容器内构成。阴极是涂敷了金属氧化物的钨丝;栅极是极细的金属网;阳极为段或点阵型的导电电极,它上面的荧光物质可显示相应的字符或符号。栅极和阳极之间加有正电压,从阴极发射出来的电子被这个正电压加速,碰擅到阳极表面的荧光物质产生辐射,发出波长为505nm左右的谈绿色荧光。通过按制栅极和阳极之间的电压,就可以显示各种字符。VFD由于其以下特点而被广泛应用于家用电器、商场POS机以及新型的仪器仪表中。①亮度高,并且不存在视角问题,②工作温度范围宽、寿命长;②外围电路简单,只需十5v电源就可以工作,提供准8位数据总线接口;④功耗低。但这种显示器目前用在数控系统上还比较少。
442点阵液晶显示模块
(1)字符型液晶显示模块
本数控系统采用字符点阵液晶显示模块DM12232。该模块具有以下特点:
●能显示122列32行
●电源VDD33V~5V(内置升压电路,无需负压)
●与微处理器接8位或4位并行/ 3位串行
●多种软件功能:自定义字符、画面移动、光标显示、睡眠模式等功能
●配置LED背光
}
灵月之翼 0 | 激活我的百度空间 | 我的消息(0/0) | 百度空间 | 百度首页 | 退出 骑士电子传承电子技术 分享成长感受 主页博客相册|个人档案 |好友 查看文章
汽车倒车雷达系统的设计与实现2009-09-30 10:22引 言
随着中国经济的持续增长和汽车价格的持续下降,越来越多的家庭拥有了私家车。在享受汽车给人们带来便利的同时,由于倒车而产生的问题也日益突出。据初步调查统计,15%的汽车事故是由汽车倒车“后视”不良造成的。早期的倒车防撞仪可以测试车后一定距离范围的障碍物从而发出警报,后来发展到根据距离分段报警。随着人们对汽车驾驶辅助系统易用性要求的提高,对汽车倒车雷达的要求也越来越高。本文设计的基于单片机AT89C51的倒车雷达,采用美国DAL-LAS半导体公司生产的DS18B20单总线型数字温度传感器进行温度补偿提高了测距精度,采用OC-MJ12232C_3液晶显示模块对车距进行实时显示和ISD4004语音芯片实现了倒车雷达语音报警的功能,并可以根据距离的不同做出不同的语音提示。由于采用了超声波专用集成电路芯片LM1812,有效地提高了系统的可靠性和稳定性。
1 超声波测距原理
超声传感器是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件。超声波测距原理是利用单片机在超声波传感器发射超声波的同时单片机的T0计数器开始计数,当检测到回波信号后单片机的T0计数器停止计数。测得的时间和声速相乘就可以得到超声波往返过程中走过的路程,所以所测距离S为声波传输距离的一半:
S=Ct/2
式中:S为超声波发射点与被测障碍物之间的距离;C为声波在介质中的传输速率;t为超声波发射到超声波返回的时间间隔。声波在空气中传输速率为:
式中:T为绝对温度;C0=331.45 m/s。
采用单片机脉冲计数的方法,可精确测出t的值。假设单片机幕�髦芷谖猅机,则有t=NT机,则测得的距离为:
2 系统硬件电路设计
2.1 系统结构
系统框图如图1所示。该系统由单片机控制电路、超声波发射与接收电路、温度补偿电路、LCD显示电路以及语音报警电路等几部分组成。单片机AT89C51是整个系统的核心部件,协调各部分电路的工作。单片机在超声波信号发射的同时开始计时,超声波信号在空气中传播遇到障碍物后发生反射,反射的回波信号经过处理后输入到单片机的INTO端产生中断,计数器停止计数。通过计数器测得的脉冲数可得到超声波信号往返所需要的时间,从而达到测距的目的。超声波探头选用TCF40-25TR1型收发一体式超声波传感器,谐振频率为40 kHz;超声发射与接收电路采用LM1812专业集成电路,不仅外围元件较少,电路简单,而且有更好的稳定性及可靠性;温度补偿电路采用一线制数字温度传感器DS18B20,利用声速和温度之间的关系对声速进行校正,从而消除温度对声速的影响;语音报警电路采用ISD4004,可实现汽车倒车过程中的语音报警。
2.2 单片机控制电路
系统控制部分的核心是ATMEL公司生产的AT89C51。AT89C51采用40引脚的双列直插式封装(DIP)形式,内部由CPU,4 KB的ROM,256 B的RAM,2个16位的定时/计数器T0和T1,4个8位的I/O端口和一个全双工串行通信口等部分组成。AT89C51单片机具有系统结构简单,成本低,可靠性高,低功耗等特点。特别是内部集成了4 KB的FLASH程序存储器,使单片机系统的结构更加简单,也使其得到了广泛的应用。同时,它还具有高级语言编程的特点,指令丰富,软件开发简单。AT89C51单片机是整个系统的核心部件,其作用是控制超声波专用集成芯片LM1812的发射和接收,对计时器的计数结果进行数据处理后送入LCD显示以及控制语音报警电路工作。
2.3 超声波发射和接收电路
本系统采用超声波专用集成电路LM1812作为超声波发射和接收电路的主控芯片。LM1812是一种通用型超声波收发器,主要用在各种各样的测距、定向和通信中。芯片包括一个脉冲调制C类发射器,一个高增益接收器,一个脉冲调制检测器及噪音抑制电路。LM1812第1脚外
vaela
第1篇入门篇
11单片机概述
111什么是单片机
112单片机标号信息及封装类型
113单片机能做什么
114如何开始学习单片机
1251单片机外部引脚介绍
13电平特性
14二进制与十六进制
141二进制
142十六进制
15二进制的逻辑运算
151与
152或
153非
154同或
155异或
16单片机的C51基础知识介绍
161利用C语言开发单片机的优点
162C51中的基本数据类型
163C51数据类型扩充定义
164C51中常用的头文件
165C51中的运算符
166C51中的基础语句
167学习单片机应该掌握的主要内容
21Keil工程建立及常用按钮介绍
211Keil工程的建立
212常用按钮介绍
22点亮第一个发光二极管
23while语句
24for语句及简单延时语句
25Keil仿真及延时语句的精确计算
26不带参数函数的写法及调用
27带参数函数的写法及调用
28利用C51库函数实现流水灯
第2篇内外部资源 *** 作篇
31数码管显示原理
32数码管静态显示
33数码管动态显示
34中断概念
35单片机的定时器中断
41独立键盘检测
42矩阵键盘检测
51模拟量与数字量概述
52A/D转换原理及参数指标
53ADC0804工作原理及其实现方法
54D/A转换原理及其参数指标
55DAC0832工作原理及实现方法
56DAC0832输出电流转换成电压的方法
第6章串行口通信原理及 *** 作流程
61并行与串行基本通信方式
62RS-232电平与TTL电平的转换
63波特率与定时器初值的关系
6451单片机串行口结构描述
65串行口方式1编程与实现
66串行口打印在调试程序中的应用
第7章通用型1602,12232,12864液晶 *** 作方法
71液晶概述
72常用1602液晶 *** 作实例
73常用12232液晶 *** 作实例
74常用12864液晶 *** 作实例
第8章I2C总线AT24C02芯片应用
81I2C总线概述
82单片机模拟I2C总线通信
83E2PROMAT24C02与单片机的通信实例
第9章基础运放电路专题
91运放概述及参数介绍
92反相放大器
93同相放大器
94电压跟随器
95加法器
96差分放大器
97微分器
98积分器
第3篇提高篇
第10章定时器/计数器应用提高
101方式0应用
102方式2应用
103方式3应用
10452单片机定时器2介绍
105计数器应用
第11章串行口应用提高
111方式0应用
112方式2和方式3应用
113单片机双机通信
114单片机多机通信
第12章指针
121指针与指针变量
1211内存单元、地址和指针
1212指针变量的定义、赋值与引用
122指针变量的运算
123指针与数组
1231指针与一维数组
1232指针与多维数组
124指针与函数
1241指针作为函数的参数
1242指向函数的指针
1243指针型函数
125指针与字符串
1251字符串的表达形式
1252字符指针作为函数参数
1253 使用字符指针与字符数组的区别
126指针数组与命令行参数
1261 指针数组的定义和使用
1262指向指针的指针
1263 指针数组作为main()函数的命令行参数
127指针小结
1271指针概念综述
1272指针运算小结
1273等价表达式
128C51中指针的使用
1281指针变量的定义
1282指针应用
第13章STC系列51单片机功能介绍
131单片机空闲与掉电模式应用
132“看门狗”概念及其应用
133用软件实现系统复位
134内部扩展RAM的应用
135扩展P4口的应用
136内部E2PROM的应用
137STC89系列单片机内部A/D应用
138STC12系列单片机内部A/D应用
139STC12系列单片机的PCA/PWM介绍
1310STC12系列单片机的SPI接口介绍
1311STC12系列单片机的“576MHz”超速运行
第4篇实战篇
第14章利用51单片机的定时器设计一个时钟
141如何从矩阵键盘中分解出独立按键
142原理图分析
143实例讲解
第15章使用DS12C887时钟芯片设计高精度时钟
151时钟芯片概述
152DS12C887时钟芯片介绍
153如何用TX-1C实验板扩展本实验
154原理图分析
155实例讲解
第16章使用DS18B20温度传感器设计温控系统
161温度传感器概述
162DS18B20温度传感器介绍
163实例讲解
第17章太阳能充/放电控制器
171控制器原理图分析
172控制器板上元件介绍
173实例讲解
第18章VC、VB(MSCOMM控件)与单片机通信实现温度显示
181VCMSCOMM控件与单片机通信实现温度显示
182VBMSCOMM控件与单片机通信实现温度显示
第5篇拓展篇
第19章使用Protell99绘制电路图全过程
191绘制电路板概述
192建立工程
193制作元件库
194添加封装及制作PCB封装库
195错误检查及生成PCB
196布线电气特性设置
197自动布线和手动布线
第20章ISD400x系列语音芯片应用
201ISD400x系列语音芯片介绍
202ISD400x系列语音芯片 *** 作规则
203ISD400x系列语音芯片应用实现
第21章电机专题
211直流电机原理及应用
212步进电机原理及应用
213舵机原理及其应用
第22章常用元器件介绍
221二极管
222电容
223场效应管
224光耦
225蜂鸣器
226继电器
227自恢复保险
228瞬态电压抑制器
229晶闸管(可控硅)
2210电荷泵
第23章直流稳压电源专题
231整流电路
232滤波电路
233稳压电路
234集成稳压模块的使用
235串联开关型稳压电源
第24章运放扩展专题
241简单低通滤波器
242“电流-电压”转换电路
243光电放大器
244精密电流源
245可调参考电压源
246复位稳定放大器
247模拟乘法器
248全波整流器和平均值滤波器
249正弦波振荡器
2410三角波发生器
2411自动跟踪对称电源
2412可调实验电源
2413运放相关术语表
附录A天祥电子开发实验板简介
A1TX-1C51单片机开发板(配套详细视频教程)
A2AVR单片机开发板(配套详细视频教程)
A3PIC单片机开发板(配套详细视频教程)
A4J-Link全功能ARM仿真器
A5三星S3C44B0ARM7入门级开发板
A6三星S3C44B0ARM7提高级开发板
A7TX-51STAR51单片机开发板(配套详细视频教程)
参考文献
以上就是关于谁能给我一个四位8段数码管时钟电路图,并附带C语言程序。全部的内容,包括:谁能给我一个四位8段数码管时钟电路图,并附带C语言程序。、关于C语言入门、求MS12232/12832液晶屏的51单片机串口驱动程序---并口的比较多,串口的太少见了。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)