单片机的c语言程序设计与应用答案
‘壹’ 急求《单片机c语言程序设计实训100例——基于8051+Proteus仿真》第三部分综合设计C语言源代码
这本书一共5章节,你说第三部分指的哪里?
第五章才是综合设计部分啊,而且这部分有好多例程,也不知道你要哪部分?
第1章 8051单片机C语言程序设计概述 1
1.1 8051单片机引脚 1
1.2 数据与程序内存 5
1.3 特殊功能寄存器 6
1.4 外部中断、定时器/计数器及串口应用 8
1.5 有符号与无符号数应用、数位分解、位操作 9
1.6 变量、存储类型与存储模式 11
1.7 关于C语言运算符的优先级 13
1.8 字符编码 15
1.9 数组、字符串与指针 16
1.10 流程控制 18
1.11 可重入函数和中断函数 19
1.12 C语言在单片机系统开发中的优势 20
第2章 Proteus操作基础 21
2.1 Proteus操作界面简介 21
2.2 仿真电路原理图设计 22
2.3 元件选择 25
2.4 调试仿真 29
2.5 Proteus与Vision 3的联合调试 29
2.6 Proteus在8051单片机应用系统开发的优势 30
第3章 基础程序设计 32
3.1 闪烁的LED 32
3.2 双向来回的流水灯 34
3.3 花样流水灯 36
3.4 LED模拟交通灯 38
3.5 分立式数码管循环显示0~9 40
3.6 集成式数码管动态扫描显示 41
3.7 按键调节数码管闪烁增减显示 44
3.8 数码管显示4×4键盘矩阵按键 46
3.9 普通开关与拨码开关应用 49
3.10 继电器及双向可控硅控制照明设备 51
3.11 INT0中断计数 53
3.12 INT0及INT1中断计数 55
3.13 TIMER0控制单只LED闪烁 58
3.14 TIMER0控制数码管动态管显示 62
3.15 TIMER0控制8×8LED点阵屏显示数字 65
3.16 TIMER0控制门铃声音输出 68
3.17 定时器控制交通指示灯 70
3.18 TIMER1控制音阶演奏 72
3.19 TIMER0、TIMER1及TIMER2实现外部信号计数与显示 75
3.20 TIMER0、TIMER1及INT0控制报警器与旋转灯 77
3.21 按键控制定时器选播多段音乐 79
3.22 键控看门狗 82
3.23 双机串口双向通信 84
3.24 PC与单片机双向通信 90
3.25 单片机内置EEPROM读/写测试 95
第4章 硬件应用 99
4.1 74HC138译码器与反向缓冲器控制数码管显示 100
4.2 串入并出芯片74HC595控制数码管显示四位数字 103
4.3 用74HC164驱动多只数码管显示 106
4.4 并串转换器74HC165应用 110
4.5 用74HC148扩展中断 112
4.6 串口发送数据到2片8×8点阵屏滚动显示 115
4.7 数码管BCD解码驱动器CD4511与DM7447应用 117
4.8 62256RAM扩展内存 119
4.9 用8255实现接口扩展 121
4.10 可编程接口芯片8155应用 124
4.11 串行共阴显示驱动器控制4+2+2集成式数码管显示 129
4.12 14段与16段数码管演示 133
4.13 16键解码芯片74C922应用 136
4.14 1602字符液晶工作于8位模式直接驱动显示 139
4.15 1602液晶显示DS1302实时时钟 148
4.16 1602液晶屏工作于8位模式由74LS373控制显示 153
4.17 1602液晶屏工作于4位模式实时显示当前时间 155
4.18 1602液晶屏显示DS12887实时时钟 159
4.19 时钟日历芯片PCF8583应用 167
4.20 2×20串行字符液晶屏显示 174
4.21 LGM12864液晶屏显示程序 177
4.22 TG126410液晶屏串行模式显示 184
4.23 Nokia7110液晶屏菜单控制程序 192
4.24 T6963C液晶屏图文演示 199
4.25 ADC0832 A/D转换与LCD显示 211
4.26 用DAC0832生成锯齿波 215
4.27 ADC0808 PWM实验 217
4.28 ADC0809 A/D转换与显示 220
4.29 用DAC0808实现数字调压 221
4.30 16位A/D转换芯片LTC1864应用 223
4.31 I2C接口存储器AT24C04读/写与显示 225
4.32 I2C存储器设计的中文硬件字库应用 233
4.33 I2C接口4通道A/D与单通道D/A转换器PCF8591应用 237
4.34 I2C接口DS1621温度传感器测试 241
4.35 用兼容I2C接口的MAX6953驱动4片5×7点阵显示器 246
4.36 用I2C接口控制MAX6955驱动16段数码管显示 250
4.37 I2C接口数字电位器AD5242应用 254
4.38 SPI接口存储器AT25F1024读/写与显示 257
4.39 SPI接口温度传感器TC72应用测试 264
4.40 温度传感器LM35全量程应用测试 268
4.41 SHT75温湿度传感器测试 272
4.42 直流电机正、反转及PWM调速控制 278
4.43 正反转可控的步进电机 281
4.44 ULN2803驱动点阵屏仿电梯数字滚动显示 284
4.45 液晶显示MPX4250压力值 286
4.46 12864LCD显示24C08保存的开机画面 289
4.47 用M145026与M145027设计的无线收发系统 293
4.48 DS18B20温度传感器测试 296
4.49 1-Wire式可寻址开关DS2405应用测试 303
4.50 MMC存储卡测试 307
第5章 综合设计 316
5.1 带日历时钟及温度显示的电子万年历 316
5.2 用8051+1601LCD设计的整型计算器 321
5.3 电子秤仿真设计 328
5.4 1602液晶屏显示仿手机键盘按键字符 332
5.5 用24C04与1602液晶屏设计的简易加密电子锁 336
5.6 1-Wire总线器件ROM搜索与多点温度监测 341
5.7 高仿真数码管电子钟设计 356
5.8 用DS1302与12864LCD设计的可调式中文电子日历 360
5.9 用T6963C液晶屏设计的指针式电子钟 366
5.10 T6963C液晶屏中文显示温度与时间 370
5.11 T6963C液晶屏曲线显示ADC0832两路A/D转换结果 372
5.12 温度控制直流电机转速 374
5.13 用74LS595与74LS154设计的16×16点阵屏 377
5.14 用8255与74LS154设计的16×16点阵屏 379
5.15 红外遥控收发仿真 381
5.16 GP2D12红外测距传感器应用 388
5.17 三端可调正稳压器LM317应用测试 395
5.18 数码管显示的K型热电偶温度计 399
5.19 交流电压检测与数字显示仿真 403
5.20 用MCP3421与RTD-PT100设计的铂电阻温度计 407
5.21 可接收串口信息的带中英文硬字库的80×16 LED点阵屏 414
5.22 模拟射击训练游戏 422
5.23 GPS仿真 427
5.24 温室监控系统仿真 431
5.25 基于Modbus总线的数据采集与开关控制系统设计仿真 437
建议你到脚本之家网站去搜索一下看看有没有这本书的电子档。
‘贰’ 我要的是用51单片机的C编程,两条分别是:1) 单个LED灯的亮或灭实验,写出源程序并编译下载运行;谢谢你
#include<reg52.h>
#include<intrins.h>
unsigned char a;
void main()
{
int i, j;
a = 0xfe;
while(1) {
a = _crol_(a, 1);
P1 = a; //单个LED灯,接在P1的任意引脚
for(j = 100; j > 0; j--)
for(i = 1000; i > 0; i--);
}
}
‘叁’ 求一份单片机的C语言程序设计与应用 - 基于Proteus仿真 第二版 课后答案 (姜志海 赵艳雷),谢谢啦
这本书的作者都是我的老师啊,不过我这没有这本书的答案啊,有问题可以问我,我可能可以帮到你。呵呵
‘肆’ 跪求同济大学魏鸿磊单片机原理及应用(C语言编程)课后习题答案
#include<stdio.h>
#include<stdlib.h>
void swap(int*a,int*b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void select_sort(int A[],int n)
{
register int i,j,min,m;
for(i=0;i<n-1;i++)
{
min=i;//查找最小值
for(j=i+1;j<n;j++)
{
if(A[min]>A[j])
{
min=j;
}
}
if(min!=i)
{
swap(&A[min],&A[i]);
printf("第%d趟排序结果为:\n",i+1);
for(m=0;m<n;m++)
{
if(m>0)
{
printf("");
}
printf("%d",A[m]);
}
printf("\n");
}
}
}
int main(void)
{
int n;
while(scanf("%d",&n)!=EOF) /* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */
{
int i;
int*A=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&A[i]);
}
select_sort(A,n);
printf("最终排序结果为:\n");
for(i=0;i<n;i++)
{
if(i>0){
printf("");
}
printf("%d",A[i]);
}
printf("\n");
}
return 0;
}
‘伍’ 设计个单片机c语言程序,设计任务 1. 用键盘开关控制两种模式的选择,分别是单计时模式和连续多个计时模式
这个可以吗?肯定要改下
/*****************************************************/
//实验六数码管电子钟
//by 阿朱 [email protected] 转载请注明来源
//通电后,数码管电子钟一直处于秒表状态,蜂鸣5秒响一次,要求使用T0,T1中断
//与一般的应用不同,本实验在数码管前面未使用译码器
//思路:定时器中断的使用:
//1、初始化
//注意:P0口的P0.4接蜂鸣
/*****************************************************/
/*****************************************************/
//数码管数据 p2口,高电平有效
//数码管控制p0.0~P0.3,低电平有效
//P0.4输出,接蜂鸣器
//P1输入,接矩阵键盘 矩阵键盘定义: P1.0-P1.3为列线,P1.4-P1.7为行线
/*****************************************************/
/*****************************************************/
//本节知识要点:
//中断
/*****************************************************/
#include <AT89X52.H>
//宏定义
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
/*****************************************************************************
* TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; *
* TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
* 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 *
* 间为1ms*65536=65.536ms *
******************************************************************************/
#define V_TMOD 0x01 //工作方式1
#define V_TH0 0x3C //50ms延时常数 C=50000 //0XDC
#define V_TL0 0xB0 //50ms延时常数 C=50000 /0X58
//#define V_TH1 0xFF //5ms延时常数 C=5000 //0XDC
//#define V_TL1 0xFB //5ms延时常数 C=5000 /0X58
#define V_TH1 0xDC //1ms延时常数 C=1000 //0XDC
#define V_TL1 0x58 //1ms延时常数 C=1000 /0X58
#define MAXFUN 6 //功能切换,表示最多的功能状态,
sbit k10=P1^0;
//sbit BEEP = P3^7; //蜂鸣器驱动线----------------请修改为sbit BEEP = P0^4;
uchar bee; //蜂鸣器01开关
uchar key; //键顺序吗
uchar fun=10; //功能状态, <= MAXFUN
uchar it0=0,it1; //Timer0中断计数
uchar text=0; //数字
//uchar text_ctrl[4]={0xFE,0xFD,0xFB,0xF7}; //位选通值, 11111110, 11111101, 11111011, 11110111
uchar text_ctrl[4]={0xE,0xD,0xB,0x7}; //位选通值, 00001110, 00001101, 00001011, 00000111
//uchar text_code[11]={ 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff};//0,1,2,3,4,5,6,7,8,9,关显示,数码管码表,高电平有效
//uchar text_code[17]= {0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,0x30,0x25,0xa9,0x26,0xa1,0xb1};//数码管代码
uchar text_code[11]={ 0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6,0xff};//0,1,2,3,4,5,6,7,8,9,关显示,数码管码表,高电平有效
uchar text_index=0; //当前显示第几个
uchar dis_buf[4]; //显示缓存
uchar refresh=0; //刷新否 T1蜂鸣
uchar min=0; //minutes
uchar sec=0; //scconds
uchar hour=0; //scconds
uchar onsetup=0;
uchar keydown0=0,keydown1=0;
uchar data PWM=0xFf ; //PWM值增加,则占空比减小,LED 灯渐暗。
/*****************************************************/
// 延时子程序
/*****************************************************/
void delay0(uchar x) //x*0.14MS
{
uchar i;
while(x--)
for (i = 0; i<13; i++) {}
}
/*****************************************************/
//T1蜂鸣
/*****************************************************/
void beepT1()
{
if(refresh >0 )
{
refresh++;
bee=!bee;
if(refresh>=30)
refresh = 0;
}
}
/*****************************************************/
//文字输出
/*****************************************************/
void textout()
{
//P0 = 0xff; // 先关闭所有数码管
P2 = dis_buf[text_index]; //传入数字的码
bee = bee<<4;
P0 = text_ctrl[text_index]|bee; //选择位
//P0 = bee; //选择位
text_index++; //下一位
if( text_index >=4 )
text_index = 0;
}
/*****************************************************/
//键扫描子程序
/*****************************************************/
void keyscan(void)
{
uchar temp;
key = -1; //不按键
P1=0x0F; //低四位输入
delay0(12);
temp=P1; //读P1口
temp=temp&0x0F;
temp=~(temp|0xF0);
if(temp==1)
key=0;
else if(temp==2)
key=1;
else if(temp==4)
key=2;
else if(temp==8)
key=3;
else
key=16;
P1=0xF0; //高四位输入
delay0(12);
temp=P1; //读P1口
temp=temp&0xF0;
temp=~((temp>>4)|0xF0);
if(temp==1)
key=key+0;
else if(temp==2)
key=key+4;
else if(temp==4)
key=key+8;
else if(temp==8)
key=key+12;
else
key=16;
if( key!= -1)
fun = key;
//key =0;
//dis_buf=text_code[key]; //查表得键值
}
/*****************************************************/
//判断键是否按下
/*****************************************************/
int keydown(void)
{
P1=0xF0;
if(P1!=0xF0)
{
keyscan();
//delay0(250);
return 1;
//
//beep();
// while(P1!=0xF0); //等待键释放
}
return 0;
}
/*****************************************************/
//设置显示缓存
/*****************************************************/
void settext(uchar text0,uchar text1,uchar text2,uchar text3)
{
dis_buf[0]=text_code[text0];
dis_buf[1]=text_code[text1];
dis_buf[2]=text_code[text2];
dis_buf[3]=text_code[text3];
}
/*****************************************************/
//fun10
//秒表 mm:ss
/*****************************************************/
void fun10()
{
it0++;
if( it0==20 ) //1s
{
it0=0;
sec++;
if(sec==60)
{
sec = 0;
min++;
if(min==60)
{
min =0;
}
}
refresh = 1;
dis_buf[1] = text_code[min%10];
dis_buf[0] = text_code[min/10];
dis_buf[3] = text_code[sec%10];
dis_buf[2] = text_code[sec/10];
}
}
/*****************************************************/
//fun11
//时钟 hh:mm
/*****************************************************/
void fun11()
{
it0++;
if( it0==20 ) //1s
{
it0=0;
sec++;
if(sec==60)
{
sec = 0;
min++;
if(min==60)
{
min =0;
hour++;
if(hour==12)
{
hour =0;
}
//dis_buf[1] = text_code[hour%10];
//dis_buf[0] = text_code[hour/10];
}
refresh = 1;
}dis_buf[1] = text_code[hour%10];
dis_buf[0] = text_code[hour/10];
dis_buf[3] = text_code[min%10];
dis_buf[2] = text_code[min/10];
}
}
/*****************************************************/
//fun12
//倒计时
/*****************************************************/
void fun12()
{
it0++;
if( it0==20 ) //0.1s
{
it0=0;
sec--; //sec must >=1
if(sec==0)
{
sec = 60;
min--;
//dis_buf[1] = text_code[min%10];
//dis_buf[0] = text_code[min/10];
if(min==0)
{
min =60;
}
}
refresh = 1;
dis_buf[1] = text_code[min%10];
dis_buf[0] = text_code[min/10];
dis_buf[3] = text_code[sec%10];
dis_buf[2] = text_code[sec/10];
}
}
/*****************************************************/
//fun13
//设置时间:hh:mm
/*****************************************************/
void fun13()
{
onsetup =1;
sec=0;
min=0;
hour=0;
dis_buf[1] = text_code[min%10];
dis_buf[0] = text_code[min/10];
dis_buf[3] = text_code[sec%10];
dis_buf[2] = text_code[sec/10];
}
/*****************************************************/
//fun3
//设置时间:hh:mm
/*****************************************************/
void fun130()
{
if( keydown1!= keydown0)
{
keydown0 = keydown1;
if(keydown1==0 ) return;//按键弹起
if(onsetup==1)
hour = key*10;
else if(onsetup==2)
hour += key;
else if(onsetup==3)
min = key*10;
else if(onsetup==4)
min += key;
onsetup++;
dis_buf[1] = text_code[hour%10];
dis_buf[0] = text_code[hour/10];
dis_buf[3] = text_code[min%10];
dis_buf[2] = text_code[min/10];
}
}
/*****************************************************/
//fun14
//设置
/*****************************************************/
void fun14()
{
sec=0;
min=0;
hour=0;
}
/*****************************************************/
// 定时器0中断服务程序, 用于数码管的动态扫描
//T0定时器,50ms激发一次,间隔1秒执行一次输出(需要20次)
/*****************************************************/
void timer0() interrupt 1
{
//TR1=0 ;
TH0=V_TH0; //1ms延时常数
TL0=V_TL0; //频率调节
//TH1=PWM ;
//TR1=1 ;
keydown1 = keydown();
//if( keydown1!= keydown0)
{
if( fun <=9 )
fun130();
else
switch(fun)
{
case 10:fun10();break;
case 11:fun11();break;
case 12:fun12();break;
case 13:fun13();break;
case 14:fun14();break;
default:break;
}
}
}
/*****************************************************/
// 定时器1中断服务程序, 用于数码管的动态扫描
//T1定时器,5ms激发一次,间隔5ms执行一次输出
/*****************************************************/
void timer1() interrupt 3
{
//TR1=0;
//TH1=PWM ;
//处理一行
TH1 = V_TH1;
TL1 = V_TL1;
it1++;
//if( it1==200 )
{
it1=0;
beepT1();
textout();
}
}
/*****************************************************/
//系统初始化
// 函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
/*****************************************************/
void init(void)
{
//变量初始化
bee=1;
P0 = 0xFF;
P2 = 0xFF;
text_index = 0;
dis_buf[0]=text_code[0];
dis_buf[1]=text_code[0];
dis_buf[2]=text_code[0];
dis_buf[3]=text_code[0];
//定时器初始化/
TMOD=V_TMOD;
TH0=V_TH0; //延时常数
TL0=V_TL0; //延时常数
TH1=PWM; //脉宽调节
TL1=0;
IE = 0x82;
ET0=1; //定时/计数器T0中断允许
ET1=1; //定时/计数器T1中断允许
TR0=1 ; //T0启动
TR1=1 ; //T1启动*/
}
/*****************************************************/
//主程序
//处理按键时加上了按键消抖
/*****************************************************/
void main(void)
{
init(); //系统初始化
while(1);
//连run()都没了
}
/*****************************************************/
//蜂鸣
/*****************************************************
void beep()
{
uchar i,j;
for (i=0;i<100;i++)
{
for(j=20;j>7;j--)
{
delay0(j);
BEEP=!BEEP; //BEEP取反
}
}
BEEP=1; //关闭蜂鸣器
}
*/
‘陆’ 单片机的C语言应用程序设计的编辑推荐
《单片机的C语言应用程序设计》(第4版)的特点是取材于原文资料,总结实际教学和应用经验,实例较多,实用性强。本书中C语言是针对8051特有结构描述的,这样,即使无编程基础的人,也可通过本书学习单片机的C编程。《单片机的C语言应用程序设计》(第4版)可作为高等院校相关专业、培训班和全国大学生电子设计竞赛的教材,也可作为从事单片机应用的技术人员的参考用书。
‘柒’ 单片机c语言编程
单片机C语言程序设计入门课程,说起来容易,说起来难。学习单片机C语言,首先要了解这两个东西是什么。单片机入门编程主要是学习C语言,其次是电路和编程语言。单片机C语言程序设计学习中必读的模拟电、数字电、电路三本书,为接下来的学习做铺垫。看书的目的是因为网上教程太多,容易出现偏差。其实只要能懂电路原理,就能开发单片机软件。简介单片机又称单片微控制器,不是执行某种逻辑功能的芯片,而是将一个计算机系统集成到一个芯片中。相当于一台微型计算机,与计算机相比,单片机只是缺少I/O设备。综上所述,芯片变成了电脑。它体积小、重量轻、价格低,为研究、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理和结构的最佳选择。单片机已经广泛应用于智能仪器、实时工业控制、通讯设备、导航系统、家用电器等领域。自20世纪90年代以来,单片机技术得到了发展。随着时代的进步和科技的发展,这项技术的实际应用也越来越成熟,单片机被广泛应用于各个领域。如今,人们越来越重视单片机在智能电子技术中的发展和应用,单片机的发展进入了一个新的时期。无论是自动测量的实践,还是智能仪器的实践,都可以看到单片机技术的身影。在当前的产业发展过程中,电子产业是一个新兴的产业。在工业生产中,人们已经成功地应用了电子信息技术,将电子信息技术与单片机技术相结合,有效地提高了单片机的应用效果。作为计算机技术的一个分支,单片机技术在电子产品领域的应用丰富了电子产品的功能,为智能电子设备的开发和应用提供了新的途径,实现了智能电子设备的创新和发展。以上内容参考:网络-单片机
你应该先学习C语言。你可以读谭浩强和单片机的书,循序渐进。别担心。基础好,什么都能说。
如果你没学过微机原理,建议你先学完再买本上海马超的书,一周就能看懂了~
不认同无意义的光。《C编程》确实创造了一时的辉煌,这种辉煌很可能会延续下去,但不代表就是最好的。这本书之所以流行,是因为当时没有办法学习C,这本书很好理解。但是现在这本书太落后了,甚至3版还在用老标准,现在大家普遍用C99标准。老标准不能用Dev C编译而且好像提问者应该知道C的基础,推荐《单片机C语言编程及实例》这本书。直接搜索就能找到PDF版本的下载。-马克·提埃洛
看谭浩强老师的。清华大学出版的《饥饿》。
‘捌’ 单片机的c语言应用程序设计和c51程序设计有什么区别
你这个问题不是很好
c51就属于对单片机的c语言程序设计了,只不过是针对51系列单片机的c语言应用程序设计。
单片机的c语言应用程序设计就包括对各种单片机的c程序了,AVR,MSP430,PIC……
当然,你这个问题也有可能是抠字眼的问题,就是“应用程序设计”和“程序设计”的区别了,程序设计可以分为系统程序和应用程序的设计.
‘玖’ 单片机的C语言的内容简介
本书是普通高等教育“十一五”国家级规划教材。本书以标准C语言和MCS-51单片机为基础,全面系统地介绍单片机的C语言程序设计与应用的基本问题,是一本重在应用、兼顾理论的实用教程。主要内容包括:单片机的C语言概述、C51语言程序设计基础、单片机内部资源和外部扩展资源的C51语言编程、μVision2集成开发环境的使用、MCS-51系列单片机简介等。本书包含大量单片机的C语言设计实例,并提供免费电子课件。
本书可作为高等学校电气与电子信息专业和计算机专业的本专科教材,也可供从事单片机应用与产品开发工作的工程技术人员学习参考。
‘拾’ 单片机原理与应用及c51程序设计 第二版 课后习题答案 杨加国 谢维成编着
指导教师签字
学生签字
2009年3月15日
题目来源
指导教师推荐□v 自选□ 其它□
题目类别 基础研究□ 应用研究□v 其它□
一、调研资料的准备
时钟模块主要是用于对时、分、秒、年、月、日和星期的计时。该模块采用的芯片为DS12C887 时钟芯片。此芯片集成度高,其外围的电路设计非常的简单,且其性能非常好,计时的准确性高。
DS12C887为双列直插式封装。其具体与单片机的连接如下所述:AD0~AD7双向地址/数据复用线与单片机的P0口相联,用于向单片机交换数据;AS 地址选通输入脚与单片机的 ALE 相联用于对地址锁存,实现地址数据的复用;CS 片选线与单片机的 P2.6 相联,用于选通时钟芯片;DS 数据选通读输入引脚与单片机的读选通引脚相联,用于实现对芯片数据的读控制;R/W 读/写输入与单片机的写选通引脚相联,用于实现对时钟芯片的写控制;MOT 直接接地,选用 INTEL 时序。IRQ引脚与 8051 的 INT1 相连,用于为时间的采集提供时间基准。
二、选题依据
当前,在世界范围内,一个以微电子技术,计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。为使我国尽快实现经济信息化,赶上发达国家水平,必须加速发展我国的信息技术和信息产业。而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。
三、选题目的
本次实验的完成证明了单片机的储存功能, 从另一个角度上,我们可以看到这种功能的发展前景。当前,时髦的储存器比比皆是,我们的这个小小的设计也许在这些MP3,MD3面前算不了什么, 但是如果我们能在这个领域发展到微型芯片的程度,我们也许可以领导一代储存器的新潮流。
四、选题要求
五、进度安排
第一阶段 2008年12月---2009年2月 资料准备阶段
大量阅读与该课题有关的资料及相关的论文,酝酿课题实施方案及相关措施
第二阶段 2009年3月---2009年4月中旬 初稿写作
根据开题报告及指导教师对课题内容、完成形式的要求得到相应的资料及结果。及时听取导师的意见,完善方案措施;继续开展研究;争取有一定的成果并完成初稿接受检查。
第三阶段 2009年4月中旬
根据导师对初稿的评定结果进行改进,以利于论文的继续进行。
第四阶段 2009年4月下旬---2009年6月定稿
完成毕业论文的写作并交导师评阅,根据导师提出的要求进行必要修改,进一步完善论文的攥写
六、完成毕业论文所需条件
在指导教师的帮助下,通过仔细查阅书籍、期刊,进一步在互联网上搜索学习与选题有关的专业知识,完成对相关知识的掌握。并适当进行调研及相关实验等。
七、主要参考文献
《单片机原理与接口技术》,余锡存主编,西安电子科技大学出版社,2001.7.
《MCS-51单片机原理与应用》,蔡美琴主编,高等教育出版社,1992.8.
《单片机原理与应用技术》,张友德、谢伟毅主编,机械工业出版社,2004.3.
单片机原理接口与应用》,黄遵熹主编,西北工业大学出版社,2002.5.
《单片机原理与应用》,刘华东主编,电子工业出版社,2003.8.
刘文涛.MCS-51单片机培训教程(C51版).北京:电子工业出版社,2005.
《51系列单片机及C51程序设计》,王建校、杨建国主编,科学出版社,2002.4.
《单片机原理与应用》,朱月秀、濮阳槟、骆经备主编,科学出版社,2004.3.
《新编单片机原理与应用》,潘永雄主编,西安电子科技大学出版社,2003.2.
《单片机原理与应用》,孙俊逸主编,清华大学出版社,2006.2.
《单片机原理与应用》,李全利主编,清华大学出版社,2006.2.
《单片机原理及其接口技术》第二版,胡汉才主编,清华大学出版社,2004.2.
夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001.
杨将新,李华军,刘东骏.单片机程序设计及应用.北京:电子工业出版社,2006.
谢维成,杨加国.单片机原理与应用及C51程序设计.北京:清华大学出版社,2006.
评委评语及其建议:
选题依据充分,意义、目的明确,调研资料准备丰富,进度安排合理;完成任务所需条件具备,可以进行论文的写作。
评委签字:
系(院、部)部盖章:
2009 年 3月10-16 日