keil uvision的简单运用——数码管的实现
单片机的使用
51单片机入门
相信很多人对51单片机并不陌生,而且有很多人可能在很久之前就接触并且学习51单片机,51单片机能够存在这么长时间,并且始终被人们所利用和提起就一定有他的道理存在,而现实生活中的51单片机就是以一个“万金油”的角色存在,下面我们就简单的说一下51单片机实现数码管的操作。文中我的单片机型号是STC12C5A16AD
如何建立一个keil文件
1、首先我们需要安装一个keil uvision的软件,相信大家对keil并不陌生,我们这里使用的keil uvision 软件,keil是一个公司的名字,在2005年被arm公司收购,uvision是由keil公司开发的集成开发环境(IDE),可以进行代码编辑,文件管理,程序的编译调试等。具体安装包可以在网上下载,也可以通过公众号<软件安装管家>中回复,keil uvision4(但是软件安装管家会经常性的维护,所以可能无法获得),所以后面附上了云盘地址:pan.baidu.com/s/1kCVxnp0HBD0516TQKL3I_Q;密码:x9a6.
2、建立空白.c文件夹。
2.1打开软件:
2.2建立新工程文件,如果已经汉化的话是打开工程,未汉化是打开project栏。下拉栏中的新建工程或者 new project。
命名为sum(我们一般习惯于把文件的名字都写成英文)
选择型号Atmel 中的AT89C52,然后点击确定。之后会让你确定是否建立一个文件,点击确认即可
2.3建立空白文档
文件或者file点击新建或者new file
2.4保存或者save as成.c文件。
2.5点击工程栏中的目标1的加号未汉化版见图所示相应位置,打开源组,并且右击源组,找到把“文件加到源组”或者“add file to…”
2.6 添加.c文件,文件类型未C source file
2.7左边工程栏会增加一个main.c的c文件,
2.8“魔法棒”生成Hex文件,点击我鼠标位置的“魔法棒”
2.9 更改时钟频率,与单片机上的晶振的频率相等,我的单片机是11.0592,然后点击输出(未汉化点击相应的位置)在面板点击生成Hex文件
然后我们就可以在main.c中编写程序了
3、数码管例程如下:
代码例程
#include<reg51.h>
#define uint unsigned int// 宏定义 uint 和 uchar
#define uchar unsigned char
void delay_1ms(uint n)//1ms的延迟函数
{
uint i,j;
for(i=n;i>0;i--)
{
for(j=400;j>0;j--);//调整1ms,400与单片机的固有频率有关
}
}
uchar code PX[]={0XFE,0XFD,0XFB,0XF7};//片选
uchar code DX[]=
{
0XC0,0XF9,0XA4,0XB0,
0X99,0X92,0X82,0XF8,
0X80,0X90,0X88,0X83,
0XC6,0XA1,0X86,0X8E
}; //段选 //为方便使用我列出了数码管显示值的数表,根据单片机原理图完成显示值数表
void display_1()//四个数码管交替显示0-f
{
uchar i;
for(i=0;i<16;i++)
{
P2 = PX[i%4];
P0 = DX[i];
delay_1ms(1000);
}
}
void main()
{
while(1) //因为单片机的周期极短所以我们使用while(1)循环使单片机一直循环显示我们要表现的
{
display_1();//调用display_1的函数
}
}
代码段中的显示值数表可自己列写,我这里举出我所使用单片机所列的表
4、拷入到单片机
此时我们可选择使用stc-isp软件,logo如下,并且需要有端口转串口的驱动
4.1打开文件,并选择单片机型号,在单片机上有标注单片机型号
4.2打开程序文件并选择刚刚生成的Hex文件
4.3 关闭单片机,点击下载/编程,然后打开单片机(单片机是冷启动)
然后就会在单片机显示1-F延时1s循环变化的现象