c语言数码管3位译码地址,三位数码管显示实验总结

记录记录这个实验过程,由于这个实验并没有要求要提交实验工程,懒狗本人用的是老师的工程文件

模 4 计数器顶层电路图(含管脚分配的)截图+文字说明

84c1520e26bfd67f700754e55fafde59.png

此处管脚分配在模4计数器作为元件的顶层电路,可见输入clk在pin91。

f1d78810a7824f90d5cbc4b31364ea32.png

下面是对其顶层电路图的说明:

首先是ENT ENF都接高电平,表示当CLRN不为0时一直处于计数状态。输出只取低二位设其为q1q0,其后还接着一个与非门表示当输入为11时准备使CLRN有效,但是会先存入到触发器中,因此对于00的输出实际上存在了两个时间周期。

模4计数器下载现象描述并举证从验证实验时的现象上如何看出你实现的电路行为正确并下结论。

反正没人看没有必要把视频搬过来咯

下图为我实现的模4计数器仿真结果

732ef832f1a37c0aa44707eab5cce38d.png

下载现象进行了三次时钟调整,clk频率递增。Clk的pin为91,pin为86的二极管表示q1,pin为81的二极管表示q0情况。二极管发亮表示1。首先第一个时钟时频率较低,我们可以看到二极管在00->01->10->11间循环,符合仿真结果。细心一点会发现00时间比其他情况时间更长一点,符合我们上面说的couter4中00出现两个时间周期情况。从这两点可以看出实现的模4计数器电路行为正确。后面对实验板的时钟频率进行增加,会发现循环过程变快,以至于最后人会看见两个灯”同时亮”的现象,实际上还是循环亮的过程。

比较仿真验证与下载验证2种方法

仿真验证实际上比较客观,在理想情况下对输入的时钟以及信号进行分析,得出结果。特别是功能仿真,只保证理想条件下的正确性。因此一般利用功能仿真来验证正确性。时序仿真

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于51单片机和C语言的按键计数程序,同时使用数码管显示计数结果: ```c #include <reg52.h> sbit Key = P3^2; sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; unsigned int Count = 0; unsigned char DisplayBuffer[2] = {0, 0}; void Delay(unsigned int i) // 延迟函数 { while(i--); } void WriteMax7219(unsigned char address, unsigned char dat) // 向数码管写入数据 { LSC = 0; for(int i = 0; i < 8; i++) { if(i == 0) LSA = 1; else if(i == 1) LSB = 1; else if(i == 2) LSC = 1; else { P1 = ((address << 8) + dat) >> (i - 3); Delay(1); P3 = 0x01; Delay(1); P3 = 0x00; } } } void InitializeMax7219() // 初始化数码管 { WriteMax7219(0x09, 0x00); // 译码方式:BCD码 WriteMax7219(0x0a, 0x03); // 亮度 WriteMax7219(0x0b, 0x07); // 扫描界限 WriteMax7219(0x0c, 0x01); // 关闭掉电模式 WriteMax7219(0x0f, 0x00); // 显示测试:正常显示 } void DisplayCount() // 显示计数结果 { DisplayBuffer[0] = Count % 10; DisplayBuffer[1] = Count / 10; WriteMax7219(1, DisplayBuffer[0]); WriteMax7219(2, DisplayBuffer[1]); } void main() { InitializeMax7219(); // 初始化数码管 while(1) { if(Key == 0) // 按键检测 { Delay(1000); // 延时去抖 if(Key == 0) { Count++; // 计数器加1 DisplayCount(); // 显示计数结果 Delay(1000); // 延时去抖 while(Key == 0); } } } } ``` 本程序使用 `P3^2` 作为按键输入,使用 `P2^2~P2^4` 控制数码管选,使用 `P1` 控制数码管数据,使用 `P3^0` 控制数码管时钟。本程序使用数码管芯片 MAX7219 实现驱动,具体的 MAX7219 驱动原理请参考相关文献。 在主循环中,程序会不断检测按键是否按下,如果按下则计数器加1,并显示计数结果。需要注意的是,有时按键可能会出现抖动,因此程序中使用了一个简单的延时去抖算法来解决这个问题。 最后,本程序实现的是一个简单的计数器,如果需要实现更多功能,例如清零、加减、多数码管显示等,可以在本程序的基础上进行扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值