单片机应用技术c语言版答案
单片机c语言编程入门教程说难不难,说易不易,学习单片机c语言首先就要明白这两样东西是啥?单片机入门编程主要是学C语言,其次就是电路跟编程语言。
单片机c语言编程学习必看的关于模电,数电,电路这三本书,为接下来的学习做铺垫。看书的目的是因为网上的教程太多太混杂,容易带偏,做单片机软件开发其实只要看得懂电路原理就可以了。
简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期。
无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。
作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
以上内容参考:网络-单片机
❷ 单片机应用技术c语言版 李文华编着的课后习题答案
是这个吗?
❸ 单片机技术及应用(基于Proteus的汇编和c语言版)求大神指导。问题在图
#include<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar
#definePin00x01
#definePin10x02
#definePin20x04
#definePin30x08
#definePin40x10
#definePin50x20
#definePin60x40
#definePin70x80
/****************************************/
voidinit() //初始化函数
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}/////////////////////////
sbitkey0=P1^0;
sbitkey1=P3^0;
#defineK_RUNPin1
#defineK_ZTPin0
u8key=0xff;//消抖后的有效按键值
u8key_down=0x00;//按键下降沿扫描结果,1有效
u8key_up=0x00; //上升沿扫描结果,1有效
u8key_sc=0xff;//上次扫描的按键值
//按键扫描程序
voids(){
staticu8temp0;
staticu8ms;
u8temp=0;
if(key0==1)temp|=Pin0;
if(key1==1)temp|=Pin1;
if(temp==temp0){//按键消抖
if(++ms>=5){//连续5次扫描的值一样,则认为是稳定状态
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿扫描
key_up=(~key_sc)&key;//下降沿扫描
key_sc=key;
}
///////////////////////
#defineSIZE13
codeu8table[]={~Pin0,~Pin1,~Pin2,~Pin3,~Pin4,~Pin5,~Pin6,~Pin7,
~Pin6,~Pin5,~Pin4,~Pin2,~Pin1,};
u8ledzt=Pin7;//led任务zt为0xff表示待机
u16ledjs;//倒计时
voidled_start(){//启动程序
if((ledzt&(~Pin7))!=0)ledjs=500;
ledzt&=0x3f;
}
voidled_zt(){//暂停程序
ledzt|=Pin6;
}
voidledcx(){//led流程程序
if(ledzt<SIZE){
if(ledjs==0){
ledzt++;
if(ledzt==SIZE)ledzt=0;
ledjs=500;
}
P2=table[ledzt];
}
}/***********************************/
voidmain()//主函数
{
init();//系统初始化
TR0=1;//定时器开始计时
while(1){
s();//读取按键值
if((key_down&K_RUN)!=0){
led_start();
}
if((key_down&K_ZT)!=0){
led_zt();
}
ledcx();
}
}
/****************************/
voidtimer0()interrupt1//1ms定时器
{
TH0=(65536-1000)/256;//重载初值
TL0=(65536-1000)%256;
if((ledjs>0)&&(ledzt<0xc0))ledjs--;
}
❹ 单片机编程知识九大问答知识
单片机编程知识九大问答知识
为帮助大家更加了解单片机编程知识,下面,我为大家分享单片机编程知识问答知识,希望对大家有所帮助!
搞单片机开发,一定要会C吗?
答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好。
而C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。
综上所述,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。
当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好?
答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。
C语言和汇编语言在开发单片机时各有哪些优缺点?
答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的.一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。
对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题,而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。
如果对单片机C语言有兴趣,HOLTEK的单片机就有提供C编译器,可以到HOLTEK的网站免费下载使用。
C或汇编语言可以用于单片机,C++能吗?
答:在单片机开发中,主要是汇编和C,没有用C++的。
在教学中要用到8088和196芯片单片机教材,请问哪里可以找到关于这方面的书或资料?
答:有关这方面的教材,大学里常用的一本是《IBM-PC汇编语言程序设计》清华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 张晓冬 等编着 )和《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷 陈涛 ,机械工业出版社 出版)等,可以在较大型的科技书店里查找或者直接从网上订购。
初学者到底是应该先学C还是汇编?
答:对于单片机的初学者来说,应该从汇编学起。因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基础。
我是一名武汉大学电子科技大3的学生,学了电子线路、数字逻辑、汇编和接口、C语言,但是总是感觉很迷茫,觉好象什么都不会,怎么办?
答:大学过程是一个理论过程,实践的机会比较少,往往会造成理论与实践相脱节,这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远。一般从大三会开始接触到一些专业课程,电子相关专业会开设相关的单片机应用课程并且会有简单的实验项目,那么要充分把握实验课的机会,多多地实际上机操作练习。平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借此机会2-3个人合作做一个完整系统,会更有帮助。到了大四毕业设计阶段,也可以选择相关的课题作些实际案例增长经验。做什么事情都有个经验的积累过程,循序渐进。
请问作为学生,如何学好单片机?
答:学习好单片机,最主要的是实践,在实践中增长经验。在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目。而且如果单片机微机原理是一门主课的话,相信学校会安排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有帮助。而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志。可能的话,可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来。
如何才能成为单片机的高手啊?
答:要成为单片机高手,应该多实践,时常关注单片机的发展趋势;经常上一些相关网站,从那里可以找到许多有用的资料。
;❺ 单片机应用技术的目录
序
前言
第1章单片机技术概述
1.1微型计算机的基本概念、组成及分类
1.1.1微型计算机的组成
1.1.2微型计算机的分类
1.2单片机技术发展的特点
1.3常见的单片机
1.3.18051内核的单片机
1.3.2其他单片机
1.4单片机的应用
1.4.1单片机的应用范围
1.4.2单片机应用系统的设计
1.5习题
第2章STC12C5410AD的增强型8051内核
2.1STC12C5410AD单片机的引脚
2.2STC12C5410AD单片机的结构
2.2.1STC12C5410AD单片机的内部结构
2.2.2CPU结构
2.3STC12C5410AD单片机的存储器
2.3.1存储器空间及存储器
2.3.2数据Flash存储器的操作
2.4习题
第3章数字输入/输出端口
3.1STC12C5410AD单片机的I/O口及工作模式
3.2STC12C5410AD单片机I/O口的结构
3.3STC12C5410AD单片机I/O口的使用
3.4习题
第4章指令系统
4.1助记符语言
4.1.1助记符语言概述
4.1.2操作码
4.1.3操作数
4.2指令格式及分类
4.2.1汇编语言的概念及格式
4.2.2指令代码的存储格式
4.2.3指令中的符号约定
4.3寻址方式
4.4数据传送类指令
4.4.1数据传送指令
4.4.2数据交换指令
4.4.3栈操作指令
4.5逻辑操作类指令
4.5.1对累加器A进行的逻辑操作
4.5.2双操作数逻辑操作指令
4.6算术运算类指令
4.6.1加减运算指令
4.6.2乘除运算指令
4.6.3增量、减量指令
4.6.4二一十进制调整指令
4.7位操作指令
4.7.1位数据传送指令
4.7.2位状态控制指令
4.7.3位逻辑操作指令
4.7.4位条件转移指令
4.8控制转移类指令
4.9习题
第5章汇编语言程序设计及仿真调试
5.1汇编语言程序设计基础知识
5.1.1伪指令
5.1.2汇编语言程序设计的一般步骤和基本框架
5.2汇编语言程序设计举例
5.3利用KeilμVision2集成开发环境调试程序
5.3.1KeilμVision2集成开发环境简介
5.3.2KeilμVision2集成开发环境中调试8051单片机汇编语言程序的方法
5.4利用ISP工具将程序下载到单片机中验证程序
5.4.1ISP下载程序的运行过程
5.4.2使用ISP工具下载程序的步骤
5.5习题
第6章C语言程序设计及仿真调试
6.1C语言程序设计基础
6.1.1数据类型
6.1.2基本运算符和表达式
6.1.3C语言程序设计
6.1.4函数
6.1.5指针
6.1.6结构与联合
6.1.7枚举和位运算
6.1.8预处理
6.2KeilC对ANSIC的扩展
6.2.1KeilC51扩展关键字
6.2.2KeilC51指针
6.2.3KeilC51函数
6.2.4STC12C5410AD单片机C51程序框架
6.3习题
第7章中断
7.1中断的概念
7.2STC12C5410AD单片机的中断系统及其管理
7.2.1中断源及其优先级管理
7.2.2单片机中断处理过程
7.2.3中断请求的撤除
7.2.4关于外部中断
7.2.5中断程序编程举例
7.2.6中断使用过程中需要注意的问题
7.3习题
第8章定时/计数器
8.1STC12C5410AD单片机的定时/计数器
8.1.1定时/计数器的结构及工作原理
8.1.2定时/计数器方式和控制寄存器
8.1.3定时/计数器的工作方式
8.1.4定时/计数器量程的扩展
8.1.5定时/计数器编程举例
8.1.6定时/计数器应用中应注意的问题
8.2STC12C5410AD的PCA/PWM模块
8.2.1PCA/PWM模块的结构
8.2.2PCA/PWM模块的特殊功能寄存器
8.2.3PCA/PWM模块的工作模式
8.2.4PCA/PWM模块韵应用
8.3习题
第9章串行通信
9.1通信的一般概念
9.1.1并行通信与串行通信
9.1.2串行通信的两种基本方式
9.2STC12C5410AD单片机的串行接口
9.2.1串行接口的控制寄存器
9.2.2串行接口的工作方式
9.2.3多处理机通信
9.2.4波特率的设定
9.2.5串行接口通信应用举例
9.2.6计算机与单片机之间的串行通信
9.3STC112C5410AD单片机的SPI接口
9.3.1SPI接口的结构
9.3.2SPI接口的数据通信
9.3.3SPI接口的应用举例
9.4习题
第10章模数转换器
10.1模数转换器的结构及相关寄存器
10.1.1模数转换器的结构
10.1.2参考电压源
10.1.3与ADC有关的特殊功能寄存器
10.2模数转换器的应用
10.3习题
第11章复位、省电方式和时钟
11.1复位
11.2省电方式
11.2.1省电方式的控制
11.2.2省电方式的应用
11.3时钟
11.4习题
第12章单片机应用系统设计举例
12.1系统要求
12.2需求分析
12.3系统硬件设计
12.4系统软件设计
12.5习题
附录
附录ASTC12C5410AD单片机指令表
附录BSTC12C5410单片机寄存器定义文件STC12.INC内容
附录CSTC12C5410AD单片机寄存器头文件STC12.H内容
附录DMSComm控件简介
附录E逻辑符号对照表
附录FASCII码表
参考文献
……
❻ 单片机应用技术,C语言。例题。用while和for两种循环方式书1.3.5.7.9……99的所有数
C语言是一种编程语言,是一种工业嵌入式微控制器是一个平台,是用C语言链接编辑代码的工具,然后移植到单个芯片上运行,两者的结合,使该最终移植的程序到(如手机,MP4,MP3等)上的嵌入式产品,请确保您可以完美兼容,运行。
这是当然的关系,具体操作比较复杂,如微控制器(MCU已经过时了,主要是在一系列与ARM开发板,为博创科技2410开发板)是什么系统(Linux的\ WinCE的等),并且即使在这些系统中使用的编辑版本,等等,等等,这些有差异,但总的过程是相同的。
❼ 用单片机C语言控制6位密码锁。要求有一个清除键和确认键,密码输错了会有报警音。请高手帮助了
我找到了一个,来自《51单片机C语言应用技术开发大全》
SCH图正在绘制中。。。
#include <REGX51.H>//51单片机的头文件
typedef unsigned char uchar; //类型定义,定义uchar类型
typedef unsigned int uint; //类型定义,定义uint 类型
//键盘子程序相关说明。
#define BLANKCHAR 10 //定义空白常量
#define PCHAR 11 //定义字符P常量
#define OPENCHAR 12 //定义开锁字符常量
#define ALARMCHAR 13 //定义字符A常量
#define LINECHAR 14 //定义字符-常量
#define BACKKEY 0X0D //定义退格键常量
#define ENTERKEY 0X0F //定义确认键常量
#define LOCKKEY 0X0E //定义闭锁键常量
#define NO_KEY 20 //定义无按键返回值
#define KEYPORT P2 //定义键盘端口
//Delay1Ms
void Delay1Ms()
{
uint i;
for (i=0;i<1000;i++);
}
//定义按键扫描码表 按键扫描时,4位列线和4位行线组成字节数据表
uchar code KEYCODE[]=
{0XEE,0XED,0XEB,0XE7,
0XDE,0XDD,0XDB,0XD7,
0XBE,0XBD,0XBB,0XB7,
0X7E,0X7D,0X7B,0X77};
uchar KeyPre; //保存上次扫描按键的键值
uchar KeyUp;
//用于控制按键去抖动操作。1:扫描时去抖动 2:等待释放 3:释放时去抖动。
#define LEDPORT P0 //定义显示器段码输出端口
#define LEDCON P1 //定义显示器位控制端口
uchar code SEGCODE[]=
{0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,// 0~9的共阳极代码
0xff,//不显示的共阳极段码
0X8C,//字符P的共阳极段码
0X8F,//┝的共阳极段码
0X88,//字符A的共阳极段码
0XBF,//字符-的共阳极段码
};
//定义LED位码控制码
uchar code BITCODE[]={0Xfe,0Xfd,0Xfb,0Xf7,0Xef,0Xdf,0Xbf,0X7f};
uchar DispBuf[6]; //保存显示的字符
bit DispNormal; //控制显示时,是正常显示还是闪烁显示。
uchar DispCnt; //控制闪烁显示时的频率。
#define SHORT_TIME 10 //蜂鸣器响200ms
#define LONG_TIME 100 //蜂鸣器响2s
#define LONGER_TIME 9000 //蜂鸣器响3 minutes
sbit ALARMCON=P3^4; //定义报警控制引脚
bit AlarmEnable; //是否报警或声音提示
uint AlarmTime; //控制报警时间长度
sbit LOCKCON=P3^3; //定义电子锁控制引脚
uchar code PassWord[]={1,2,3,4,5}; //定义初时密码表
uchar PassInBuf[6]; //保存输入的密码字符
uchar PassPosi; //用户输入密码字符存放在PassInBuf[]的位置。
bit TimerBit; //20ms定时时间到
uchar SysMode; //系统所处模式 0:输入密码模式 1:报警模式 2:开锁模式
uchar ErrorCnt; //用户连续输入密码出错次数。
/*
入口参数:
FillChar:写入缓冲区的字符
出口参数:无
*/
void Fill_Buf(uchar FillChar)
{
uchar i;
for(i=0;i<6;i++)
{
DispBuf[i]=FillChar;//用字符FillChar填充DispBuf[i]
PassInBuf[i]=FillChar; //用字符FillChar填充PassInBuf [i]
}
}
void Fill_Buf_P()
{
Fill_Buf(BLANKCHAR); // DispBuf[1..5]= ' '
DispBuf[0]=PCHAR;// DispBuf[0]='P'
}
void Fill_Buf_O()
{
Fill_Buf(BLANKCHAR); // DispBuf[1..5]= ' '
DispBuf[0]=OPENCHAR; // DispBuf[0]='┝'
}
void Fill_Buf_A()
{
Fill_Buf(LINECHAR); // DispBuf[1..5]= ' -----'
DispBuf[0]=ALARMCHAR; // DispBuf[0]='A'
}
/*
入口参数:
DispPosi:要显示数据的LED号。
DispChar:要显示的内容。
出口参数:无
*/
void Disp_Led_Sin(uchar DispChar,uchar DispPosi)
{
LEDPORT=SEGCODE[DispChar];//输出显示段码
LEDCON&=BITCODE[DispPosi];//输出显示位码
Delay1Ms(); //延时1MS
LEDCON|=0X3F;//关闭显示器
}
/*(2)关闭显示函数Disp_Led_OFF。
函数Disp_Led_OFF在显示器上显示空白字符,主要用在闪烁显示。函数通过6次调用Disp_Led_Sin实现所需功能。代码如下:*/
void Disp_Led_OFF()
{
uchar i;
LEDCON|=0X3F;// 关闭显示器
for(i=0;i<6;i++)
{
Disp_Led_Sin(BLANKCHAR,i);//逐个显示空白字符
}
}
void Disp_Led_All()
{
uchar i;
LEDCON|=0X3F; // 关闭显示器
for(i=0;i<6;i++)
{
Disp_Led_Sin(DispBuf[i],i); //显示DispBuf[]中的数值
}
}
void Disp_LED()
{
DispCnt++;
DispCnt%=10;
if(DispCnt==0)
{
DispNormal=~DispNormal;//200ms将闪烁显示控制位取反
}
if(SysMode==1)
{//报警模式,闪烁显示
if(!DispNormal)
{
Disp_Led_OFF();//显示空白字符
return;
}
}
Disp_Led_All();//显示DispBuf[]中的数值
}
/*
入口参数:
stime:蜂鸣器鸣叫时间。
出口参数:无
*/
void Sys_Speaker(uint stime)
{
AlarmEnable=1;//允许报警
AlarmTime=stime;//报警时间长短
}
void Sys_Alarm()
{
if(AlarmEnable==1)
{//允许报警
ALARMCON=0;//报警
AlarmTime--;
if(AlarmTime==0)
{//停止报警时间到
AlarmEnable=0;
ALARMCON=1;//禁止报警
if(SysMode==1)
{//报警发生在模式1时,要返回模式0
SysMode=0;
Fill_Buf_P();//显示P
}
}
}
}
/*
入口参数:无
出口参数:按键值或无按键
*/
uchar Find_Key()
{
uchar KeyTemp,i;
KEYPORT=0xf0;//行线输出0,列线输出全1
KeyTemp=KEYPORT;//读按键端口值
if(KeyTemp==0xf0)
return NO_KEY;//无键按下,返回
KEYPORT=KeyTemp|0x0f;//列线输出,行线输入
KeyTemp=KEYPORT;//读取按键端口值
for(i=0;i<16;i++)
{
if(KeyTemp==KEYCODE[i])//根据按键端口扫描值,查找按键值
return i;//返回按键值
}
return NO_KEY;
}
/*
入口参数:无
出口参数:按键值或无按键
*/
uchar Scan_Key()
{
uchar KeyTemp;
KeyTemp=Find_Key();//扫描键盘,获得按键值
if(KeyTemp==NO_KEY)
{
if(KeyUp<2)
{//无按键按下,返回
KeyUp=0;
return NO_KEY;
}
if(KeyUp==2)
{//按键要释放,延时去抖动
KeyUp=3;
return NO_KEY;
}
if(KeyUp==3)
{//按键释放,返回键值
KeyUp=0;
return KeyPre;
}
}
else
{
if(KeyUp==0)
{//有键按下,保存键值
KeyUp=1;
KeyPre=KeyTemp;
}
else if(KeyUp==1)
{//去抖动后,再次测到有按键按下
if( KeyPre==KeyTemp)
KeyUp=2;
else
KeyPre=KeyTemp;
} else if(KeyUp==3)
{//等待按键释放
KeyUp=2;
}
}
return NO_KEY;
}
/*
入口参数:
Key:按键值
出口参数:无
*/
void Key_Process(uchar Key)
{
uchar i;
if(Key==NO_KEY)
return ;//无按键,不处理
switch(SysMode)
{
case 0://输入密码
switch(Key)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
DispBuf[PassPosi]=LINECHAR;//显示'-'
PassInBuf[PassPosi]=Key;//保存用户输入的密码
if(PassPosi<5)
PassPosi++;//调整密码输入位置
Sys_Speaker(SHORT_TIME);//发按键提示音
break;
case BACKKEY://退格键
DispBuf[PassPosi]=BLANKCHAR;//显示' '
PassInBuf[PassPosi]=BLANKCHAR;//清除当前位置的密码
if(PassPosi>1)
PassPosi--;//调整显示位置
Sys_Speaker(SHORT_TIME);//发按键提示音
break;
case ENTERKEY://确定按键
for(i=0;i<5;i++)
{//比较用户输入密码与系统预设密码是否一致
if(PassInBuf[i+1]!=PassWord[i])
break;
}
if(i>=5)
{//输入密码正确
Fill_Buf_O();//显示开锁状态
PassPosi=1;
LOCKCON=1;//开锁
ErrorCnt=0;
Sys_Speaker(LONG_TIME);//发长提示音
SysMode=2;//转模式2
}
else
{
ErrorCnt++;//出错次数加一
if(ErrorCnt>2)
{//次数超过3次
ErrorCnt=0;
Fill_Buf_A();//显示报警状态
PassPosi=1;
Sys_Speaker(LONGER_TIME);//发报警音
SysMode=1;
}
else
{//出错次数少于3次,用户重新输入
Fill_Buf_P();
PassPosi=1;
Sys_Speaker(LONG_TIME);
}
}
break;
case LOCKKEY://闭锁键
Fill_Buf_P();//显示P
PassPosi=1;
Sys_Speaker(SHORT_TIME);
break;
}
break;
case 2://开锁状态
if(Key==LOCKKEY)
{//用户按动闭锁按键
Fill_Buf_P();
SysMode=0;
LOCKCON=0;//闭锁
Sys_Speaker(SHORT_TIME);
}
break;
}
}
void Ini_Timer0()
{
TMOD&=0XF0;
TMOD|=0X01;// 初始化T0,模式1
TR0=0;
TH0=(65536-20000)/256;//T0 赋计数初值
TL0=(65536-20000)%256;
TR0=1;//启动T0
ET0=1;//允许T0中断
}
void Timer0() interrupt 1
{
TR0=0;
TH0=(65536-20000)/256; //T0 赋计数初值
TL0=(65536-20000)%256;
TR0=1;
TimerBit=1;//定时时间到
}
void Ini_System()
{
PassPosi=1;
LOCKCON=0;//闭锁
Ini_Timer0();//初始化T0
Fill_Buf_P();
EA=1;//允许系统中断
}
void main()
{
uchar KeyTemp;
Ini_System();
while(1)
{
if (TimerBit==1)
{//定时时间到
Disp_LED();//刷新显示器
Sys_Alarm();//报警处理
KeyTemp=Scan_Key();//扫描按键
Key_Process(KeyTemp);//按键处理
TimerBit=0;
}
}
}
❽ 求一份单片机答辩的题目和答案 我不是计算机专业的 简单点就行 拜托了
36个单片机新手入门问题:
1.C语言和汇编语言在各有哪些优缺点? 2.初学者到底是应该先学C还是汇编? 3.400减50,程序语句上如何SUBB实现呢?
4.C或汇编语言可以用于单片机,C++能吗? 5.学了电子线路、C语言,感觉很迷茫怎么办? 6.8位机还能延续多久?
7.搞单片机开发,一定要会C吗? 8.请问作为学生,如何学好单片机? 9.单片机的生命期还有多长?
10.当开发项目时,用C还是用汇编开发好? 11.如何才能才为单片机的高手啊? 12.符合44PIN的80系列8位单片机的MCU有哪些?
13.请问那里可以找到关于这方面的书或资料? 14.女性是否适合单片机软件编程这个行业? 15.从51转到ARM会有困难吗?
16.利用单片机来检测手机电池的充放电时间? 17.商业级芯片和工业及芯片区别? 18.低辐射MCU方法可以减少,有什么别的方法?
19.96单片机开发系统时,有那些注意事项? 20.在demo板上采样电压,不稳定,如何消除? 21.在车载DVD系统中,如何设计电子防震系统?
22.电子防震技术中,那些IC或器件可供选择? 23.如何进行编程可以减少程序的bug? 24.有没有解决加密问题又不破坏MCU的方法?
25.如何使生成的代码具有和汇编一样的效率? 26.ARM单片机和哪种内核的单片机比较接近? 27.测试中如何用一些比较短的时间来工作?
28.怎样学51系列和cygnal系列单片机? 29.MCU的C汇编优化,有没有通用的原则? 30.估计一个算法的MIPS,有什么好的途径?
31.AT89S51,复位RAM中数据被修改怎么回事? 32.如何正确的使用IO功能? 33.频率100kHz,atiny15那样怎么办?
34.单片机应注重哪几个方面的学习? 35.汽车电子用的单片机是8位多,还是32位? 36.复用技术的使用在实际应用?
单片机开发与测试中的若干问题:
1.Delta-Sigma软件测量方式,是什么概念? 2.要同时用到3个counter,该怎么办? 3.有那些是衡量系统的稳定性的标准?
4.芯片封装及设计过程中需要注意哪些问题? 5.抗干扰技术对软件的可靠性怀疑。怎么办? 6.12M的晶振,如何实现480MB/S数据传输率呢?
7.当今世界单片机的应用与发展有什么不同? 8.在中国,单片机在哪方面有较好的前景? 9.高性能要求选用32位单片机这样认为对吗?
10.51系统过渡到ARM系统,要注意哪些事情? 11.能否用PSoC嵌入式代替部分单片机系统呢? 12.如何理解如下概念?
13.选用什么型号的仿真器和编程器比较好? 14.C语言是否有关于位操作地址的指令 15.运行以后看到从R0到R7都被占用,为什么?
16.发电机系统,如何设计复位电路? 17.PWM做到100kHz(8bit上)的方法有哪些? 18.医疗电子应用的最多是几位单片机?
19.单片机对modem要进行哪些初始化操作? 20.各种各样的输入怎么样与MCU进行通讯? 21.两个串口、16KEPROM、512个字节的RAM?
22.在嵌入式开发中软件抗干扰有哪些问题? 23.语音识别会不会是单片机下个消费热点? 24.如何设计实现低成本测量电池组电压的装置?
25.调用函数会不会影响定时/计数器的中断? 26.LM4915是什么IC? 27.被嵌套高优先级中断程序怎样返回主程序?
28.介绍单片机系统的故障自诊断的知识? 29.如何使照的相片可存储,看的时候可调用? 30.将Wafer切割成Die后对单个Die进行?
31.测试整个MCU的功能是否正确? 32.如何测试程序达到较高的测试覆盖度? 33.MCU逻辑电路是测试合格的,如何解决呢?
34.cpu一直工作在复位状态,会不会有问题? 35.单片机系统的故障相关问题如何解决?
holtek单片机常见问题汇总:
1.Holtek的数据手册在哪里下载? 2.学单片机缺乏实践经验请问该怎么办? 3.A/D,D/A的采样速率有什么优势?
4.学习ARM是否比学习单片机更有使用前景? 5.遥控的编解码思路和设计流程是怎样的? 6.Holtek的编程语句是否就是C51或是相关?
7.介绍一下MCU的测试方法。 8.如何理解预分频,12时钟模式等概念? 9.请推荐配套的编译仿真烧录的硬软件?
10.在ARM编程中又应当如何? 11.采用什么方法来测试单片机系统的可靠性? 12.Holtek如何解决测试问题?
13.如何使PIC16F87X宽温度内误差尽量小呢? 14.如何适当的喂狗,判定软体的运行时间? 15.RISC架构的单片机它的主要特点是什么?
16.RISC和CISC内核的MCU,代码量哪个更大? 17.单片机的I/O口何种状态能获得最低功耗? 18.Holtek和AT系列编程有何不同?
19.Holtek和AT系列有FLASH可电擦写的型号? 20.Holtek的单片机能符合该项应用要求吗? 21.WATCHDOG功能的单片机,如何确认其起作用?
22.能否推荐一个DSP或现在的高速单片机? 24.HT48系列单片机支持串行通信吗? 24.返回指令能用跳转指令替代到主程序中?
8051单片机设计教程与实例---指令基础教程
1.什么是嵌入式系统? 2.单片机的技术发展历史 3.单片机应用模式
4.单片机的开发过程 5.单片机基本结构与工作原理 6.单片机内部资源的配置
7.单片机的外部特性 8.80C51的SFR运行管理模式 9.单片机I/O端口及应用特性
10.80C51单片机存储器系统及操作方式 11.单片机的指令系统 12.指令系统的分类与速解
13.指令的应用例子 14.定时器/计数器的基本结构与操作方式 15.定时器/计数器的SFR
16.定时器/计数器的工作方式 17.定时器/计数器的编程和使用 18.定时器应用举例
19.中断系统的基本组成 20.中断系统中的SFR 21.中断响应的自主操作过程
22.串行口的基本结构与操作方式 23.串行口的特殊功能寄存器 24.串口的工作方式
25.汇编语言应用程序设计的一般格式 26.汇编语言程序的设计方法 27.常用的伪指令
28.简单结构程序 29.分支结构程序 30.循环结构程序
31.子程序结构程序 32.查表程序 33.查键程序
8051单片机设计教程与实例---实战程序设计
1.显示程序 2. 闪烁LED小灯的设计 3.闪烁LED控制程序
4.闪烁LED小灯主程序图 5.数码管时钟电路的设计 6.8*8点阵LED字符显示器的设计
7.数码管时钟电路的主程序 8.8路输入模拟信号数值显示电路的设计 9.8路输入模拟信号数值显示电路程序
10.单键学习型遥控器的设计 11.单键学习型遥控器的程序 12.电路主要性能指标
13.15路电器遥控器的设计 14.系统的功能实现方法 15.遥控发射及接收控制程序流程图
16.自行车里程/速度计的设计 17.系统内存的规划 18.系统内存设计的程序
19.自动往返行驶小汽车的设计 20.系统内存资源的分配 21.系统内存资源的程序
22.遥控小汽车的设计 23.发射板控制程序的设计 24.汽车行驶信息发送与接收器的设计
25.数据帧的编码格式及发送/接收过程 26.汽车行驶信息发送与接收器的程序 27.系统调试中的问题及解决方法
28.数控调频发射台的设计 29.内存单元的使用要求 30.W78E516B的功能特点
31.W78E516B中的几个特殊寄存器 32.W78E516B在线编程的规则 33.W78E516B在线编程的硬件电路
34.W78E516B应用系统的程序设计 35.电子定时器的设计 36.电子定时器的程序
37.电子定时器的程序流程图
单片机相关资料
(1)单片机的图形化编程方法探讨 (2)单片机应用编程技巧 (3)单片机自身的抗干扰若干措施
(4)单片机编音乐程序 (5)用89C51做直流稳压电源 (6)王款主流CMMB调谐器的特性比较
(7)红外遥控器控制的风扇温控器 (8)用单片机89S52制作计算器 (9)用单片机89C51制作程控交换机
(10)数据采集和记录系统单片机AT89C51 (11)简单的制作AT89SXX的单片机教程板 (12)热敏电阻温度计:液晶版
(14)热敏电阻温度计 (15)使用DS1307的数字闹钟 (16)SPI闪存编程器的制作
(17)8051SBC单片机微处理器学习板 (18)Atmel 89系列编程器的制作 (19)ISP微控制器编程
(20)制作简单的S51学习板 (21)89S52单片机开发板 (22)keil 与protues安装的详细步骤和说明
详见:http://www.51c51.com/JIAOXUE4.HTM
❾ 单片机C语言应用技术题目求解答
你下载一个软件。以后就不用再来问了。51单片机波特率计算软件