九齐单片机,proteus仿真时数码管为什么没显示
来源:整理 编辑:智能门户 2023-09-01 13:26:10
本文目录一览
1,proteus仿真时数码管为什么没显示
proteus仿真时数码管没显示是设置程序出问题,具体方法以实例操作如下准备软件:proteus软件、uVision2软件。1、打开proteus软件。2、这里用到74HC573锁存器,直接用P0口连接锁存器。3、可以实现位选,也可以位选,大大节省了IO,这里记得加上上拉电阻,否则不显示。4、选用6位共阴数码管。5、把位选和段选的线连接对应好。6、打开uVision2软件。7、共阴数码管的段编码如下8、编写动态显示主程序,图中为第一位数码管显示“1”。9、补齐6位数码管的显示代码后,编译代码。10、在proteus中选择对应的代码进行仿真,proteus中效果如图。11、真实的硬件效果是从1-6同时显示在屏幕中。1.程序缺少循环,跑飞了。2.电阻太大。不亮,原因并不在单片机上。你就是把单片机删除掉,只是保留电阻和数码管,数码管都不会亮。把电阻,改成330欧姆,试试看。你电路都画错了,首先数码管最好用三极管或者驱动芯片去驱动,其次,你这IO口都输出低电平了数码管怎么会亮?要么把最小系统全部去掉,要么搭建完整的最小系统电路,只搭一部分好像不行。。。。。。你把ALE拉高,在加上复位系统,再式一下
2,ref192 输出电压怎么是37v
AD7705(5V)一般都使用2.5V基准源(高精度AD大多如此),这跟一些单片机自带AD不同,使用2.5V外部基准源时,AD的精度要大大高于使用5V基准源(特别是5V电压直接取自电源),只要5V电源稍微波动一点,AD的精度到哪里去都不知道了。基准电压源是当代模拟集成电路极为重要的组成部分,它为串联型稳压电路、A/D和D/A转化器提供基准电压,也是大多数传感器的稳压供电电源或激励源。另外,基准电压源也可作为标准电池、仪器表头的刻度标准和精密电流源。实现方式1. 电阻分压:2. 只能作为放大器的偏置电压或提供放大器的工作电流。这主要是由于其自身没有稳压作用,故输出电压的稳定性完全依赖于电源电压的稳定性。3. 2.普通正向二极管4. 不依赖于电源电压的恒定基准电压,但其电压的稳定性并不高,且温度系数是负的,约为-2mV/℃5. 3.齐纳二极管6. 可克服正向二极管作为基准电压的一些缺点,但其温度系数是正的,约为+2mV/℃7. 4.温度补偿性齐纳二极管8. 体积小、重量轻、结构简单便于集成;但存在噪声大、负荷能力弱、稳定性差以及基准电压较高、可调性较差等缺点。这种基准电压源不适用于便携式和电池供电的场合。9. 5.带隙基准源(采用CMOS,TTL等技术实现)10. 运用半导体集成电路技术制成的基准电压源种类较多,如深埋层稳压管集成基准源、双极型晶体管集成带隙基准源、CMOS集成带隙基准源等。“带隙基准源”是七十年代初出现的一种新型器件,它的问世使基准器件的指标得到了新的飞跃。11. 由于带隙基准源具有高精度、低噪声、优点,因而广泛应用于电压调整器、数据转换器(A/D, D/A)、集成传感器、大器等,以及单独作为精密的电压基准件,低温漂等许多微功耗运算放。
3,如何在multisim10绘制元件
如果只是画示意图,直接画就可以了,如果要仿真,则必须有spice模型。1。source库:包括电源、信号电压源、信号电流源、可控电压源、可控电流源、函数控制器件6个类。 2。basic库:包含基础元件,如电阻、电容、电感、二极管、三极管、开关等; 3。diodes:二极管库,包含普通二极管、齐纳二极管、二极管桥、变容二极管、pin二极管、发光二极管等。 4。transisitor库:三极管库,包含npn、pnp、达林顿管、igbt、mos管、场效应管、可控硅等; 5。analog库:模拟器件库,包括运放、滤波器、比较器、模拟开关等模拟器件 6。ttl库:包含ttl型数字电路 如7400 7404等门bjt电路。 7。coms库:coms型数字电路 如74hc00 74hc04等mos管电路。 8。mcu model: mcu模型,multisim的单片机模型比较少,只有8051 pic16的少数模型和一些rom ram等 9。advance periphearls库:外围器件库,包含键盘、lcd、和一个显示终端的模型。 10。mixc digital:混合数字电路库,包含dsp、cpld、fpga、pld、单片机-微控制器、存储器件、一些接口电路等数字器件。 11。mixed:混合库,包含定时器、ac/da转换芯片、模拟开关、震荡器等; 12。indicators:指示器库,包含电压表、电流表、探针、蜂鸣器、灯、数码管等等显示器件。 13。power:电源库,包含保险丝、稳压器、电压抑制、隔离电源等 14。misc:混合库,包含晶振、电子管、滤波器、mos驱动、和其他一些器件等 15。rf:rf库,包含一些rf器件,如高频电容电感、高频三极管等 16。elector mechinical:电子机械器件库,包含传感开关、机械开关、继电器、电机等。。
4,89C51单片机的p3口接一个共阳极的数码管
//电路说明如下。
//单片机:使用51系列兼容的即可;
//4×4矩阵键盘:接在P1口;
//两位数码显示器: P0口输出七段码,P2口输出位选码。
//==============================================================
//C语言程序如下。
/*************************************************************
* 文件名: KEY_LED.c
* 功能 : 对4×4矩阵键盘进行输出,在数码管后两位显示按键值。
**************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
//uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};
uchar code table[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
/**************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms * x
* 输入 : x (延时一毫秒的个数)
* 输出 : 无
***************************************************************/
void Delay_1ms(uint x)
{
uint i;
uchar j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
/**************************************************************
* 名称: Keyscan()
* 功能: P1外接4×4按键, 按照扫描法读出键值
* 输出: 按键值0~15/如无键按下, 返回16
***************************************************************/
uchar Keyscan(void)
{
uchar i, j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
for(j = 0; j < 4; j++) { //循环四次
P1 = Buffer[j]; //在P1高四位分别输出一个低电平
temp = 0x01; //计划先判断P1.0位
for(i = 0; i < 4; i++) { //循环四次
if(!(P1 & temp)) //从P1低四位,截取1位
return (i + j * 4); //返回取得的按键值
temp <<= 1; //判断的位,左移一位
} }
return 16; //判断结束,没有键按下,返回16
} //呵呵,实质性的语句不过8行,就是这么简练!
/**************************************************************
* 名称: Display(uchar k)
* 功能: 将参数分成十位、个位分别显示
* 输入: k (键盘数值)
* 输出: P0口输出七段码,P2口输出位选码
***************************************************************/
void Display(uchar k)
{
P2 = 0; //消隐
P0 = table[k / 10];
P2 = 0x02; Delay_1ms(5); //显示5ms十位
P2 = 0; //消隐
P0 = table[k % 10];
P2 = 0x01; Delay_1ms(5); //显示5ms个位
}
/**************************************************************
* 名称 : Main()
* 功能 : 主函数
***************************************************************/
void Main(void)
{
uchar Key_Value = 16, Key_Temp1, Key_Temp2; //两次读出的键值
while(1) {
//---------以下读入按键、消掉、等待按键释放
P1 = 0xff;
Key_Temp1 = Keyscan(); //先读入按键
if(Key_Temp1 != 16) { //如果有键按下
//Delay_1ms(10); //延时一下
Display(Key_Value); //可用显示代替延时
Key_Temp2 = Keyscan(); //再读一次按键
if (Key_Temp1 == Key_Temp2)//必须是两次相等
Key_Value = Key_Temp1; //才保存下来,这就是消除抖动
while(Keyscan() <= 16); //等待按键释放
}
//---------以下是对按键的处理
Display(Key_Value); //显示键值
}
}
5,单片机的十进制记数法的原理
1.基本知识
十进制
基数为10,逢10进1。在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。
二进制
基数为2,逢2进1。在二进制中,使用0和1两种符号。
八进制
基数为8,逢8进1。八进制使用8种不同的符号,它们与二进制的转换关系为:
0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111
十六进制
基数为16,逢16进1。十六进制使用16种不同的符号,它们与二进制的转换关系为:
0:0000 1:0001 2:0010 3:0011 4:0100 5:0101 6:0110 7:0111
8:1000 9:1001 A:1010 B:1011 C:1100 D:1101 E:1110 F:1111
二进制数的运算
算术运算:加法
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(向高位进1)
算术运算:减法
0 ? 0 = 0 0 ? 1 = 1(向高位借1) 1 ? 0 = 1 1 - 1 = 0
逻辑运算:或(∨)
0 ∨ 0 = 0 0 ∨ 1 = 1 1 ∨ 0 = 1 1 ∨ 1 = 1
逻辑运算:与(∧)
0 ∧ 0 = 0 0 ∧ 1 = 0 1 ∧ 0 = 0 1 ∧ 1 = 1
逻辑运算:取反
0取反为1 1取反为0
注意:算术运算会发生进位、借位,逻辑运算则按位独立进行,不发生位与位之间的关系,其中,0表示逻辑假,1表示逻辑真。
2.转换为十进制
二进制化为十进制
例:将二进制数101.01转换成十进制数
(101.01)2 = 1×22 + 0×21 + 1×20 + 0×2-1 + 1×2-2 = (5.25)10
八进制化为十进制
例:将八进制数12.6转换成十进制数
(12.6)8 = 1×81 + 2×80 + 6×8-1 = (10.75)10
十六进制化为十进制
例:将十六进制数2AB.6转换成十进制数:
(2AB.6)16 = 2×162 + 10×161 + 11×160 + 6×16-1 = (683.375)10
3.转换为二进制
八进制化为二进制
规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变。
例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)2
十六进制化为二进制
规则:每1位十六进制数改写成等值的4位二进制数,次序不变。
例: (3A8C.D6)16 = (0011 1010 1000 1100.1101 0110)2 = (11101010001100.1101011)2
十进制整数化为二进制整数
规则:除二取余,直到商为零为止,倒排。
例:将十进制数86转化为二进制
2 | 86…… 0
2 | 43…… 1
2 | 21…… 1
2 | 10…… 0
2 | 5 …… 1
2 | 2 …… 0
2 | 1 …… 1
结果:(86)10 = (1010110)2
十进制小数化为二进制小数
规则:乘二取整,直到小数部分为零或给定的精度为止,顺排。
例:将十进制数0.875转化为二进制数
0.875
× 2
1.75
× 2
1.5
×2
1.0
结果:(0.875)10 = (0.111)2
4.转换为八进制
二进制化为八进制
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。
小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
例:(11001111.01111)2 = (11 001 111.011 110)2 = (317.36)8
十六进制化为八进制
先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。
例: (1CA)16 = (000111001010)2 = (712)8
说明:小数点前的高位零和小数点后的低位零可以去除。
十进制化八进制
方法1:采用除8取余法。
例:将十进制数115转化为八进制数
8| 115…… 3
8| 14 …… 6
8| 1 …… 1
结果:(115)10 = (163)8
方法2:先采用十进制化二进制的方法,再将二进制数化为八进制数
例:(115)10 = (1110011)2 = (163)8
5.转换为十六进制
二进制化为十六进制
整数部份从最低有效位开始,以4位为一组,最高有效位不足4位时以0补齐,每一组均可转换成一个十六进制的值,转换完毕就是十六进制的整数。
小数部份从最高有效位开始,以4位为一组,最低有效位不足4位时以0补齐,每一组均可转换成一个十六进制的值,转换完毕就是十六进制的小数。
例:(11001111.01111)2 = (1100 1111 .0111 1000)2 = (CF.78)16
八进制化为十六进制
先将八进制化为二进制,再将二进制化为十六进制。
例:(712)8 = (111001010)2 = (1CA)16
十进制化为十六进制
方法1:采用除16取余法。
例:将十进制数115转化为八进制数
16| 115…… 3
16| 7 …… 7
结果:(115)10 = (73)16
方法2:先将十进制化为二进制,再将二进制化为十六进制。
?
文章TAG:
九齐单片机 proteus仿真时数码管为什么没显示