导航:首页 > 电器电路 > C数字电路了

C数字电路了

发布时间:2022-01-31 04:29:25

1. 求C程序(程序设计基础)和数字电子技术的期末应急知识。

c语言很难一下子学好,高智商除外,你可以试着看看那些数组什么的,把开头结尾的套路,和for循环什么的多看看,我考前也就看了三四天,考了80多,平时也没怎么好好学

2. 现在已经学会了c语言,数字电路,模拟电路,半导体物理,ACD制图,不知道以后能干什么,好迷茫

3. 请问,数字电路A*(ABC)+B*(ABC)+C*(ABC)逻辑电路化简

摘要 亲,您好!您的问题我这边已经看到了,正在努力整理答案,稍后五分钟给您回复,请您稍等一下~

4. 用C语言编一个数字电子时钟的程序

1.这是用windows api写的程序。所以要求是纯c的话就没有办法了
2.其中定时用了两种方法。一种是用取消息。另一种是延时队列。这里只使用了取消息的方法。延时队列由于我机器上是vc6.0,CreateTimerQueue在本人机器上无法使用,需要新的sdk,所以没有加以验证,但取消息的方式是可行的。
3.稍稍验证了下,基本满足要求。
-------------------------------------------
程序如下:
// DigitalClock.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <winbase.h>

typedef struct _st_time{
int hour;
int min;
int sec;
}ST_TIME;

ST_TIME g_Time; // The struct contain the hour,min and sec.
HANDLE g_hStdout; //
WORD g_cxCenter, g_cyCenter; // Center of the screen.
HANDLE g_DoneEvent; // The program could be over.
BOOL g_ThreadTerminated; // The Thread should be terminated.

#define SECOND_CIRCLE 60
#define MINUTE_CIRCLE 60
#define HOUR_CIRCLE 24

void TimeIncreaseSecond(ST_TIME & st)
{
st.sec ++;
if (st.sec >= SECOND_CIRCLE)
{
st.sec -= SECOND_CIRCLE;
st.min++;
if (st.min >= MINUTE_CIRCLE)
{
st.min -= MINUTE_CIRCLE;
st.hour++;
if (st.hour >= HOUR_CIRCLE)
{
st.hour -= HOUR_CIRCLE;
}
}
}
}

void PrintTimeToScreen(HANDLE hStdout, short cxCenter, short cyCenter, ST_TIME st)
{
char buf[64] = {0};
COORD crdPos;
// make it format to output.
sprintf (buf, "%02d:%02d:%02d", st.hour, st.min, st.sec);
crdPos.X = cxCenter - 4;
crdPos.Y = cyCenter;
SetConsoleCursorPosition(hStdout, crdPos);
printf(buf);
}

#ifdef USE_TIMERQUEUE
// if we use the timer queue function.
// Its procre is in this.
void CALLBACK TimerRoutine (LPVOID lpParam, BOOL TimerOrWaitFired)
{
if (lpParam == NULL)
{
printf ("NULL parameters.\n");
}
else
{
ST_TIME *st = (ST_TIME *)lpParam;
TimeIncreaseSecond(st);
PrintTimeToScreen(g_hStdout, g_cxCenter, g_cyCenter, *st);
}
}

#else

DWORD WINAPI TimerThreadProc(LPVOID lpParam)
{
#define ID_TIMER_SECOND 1
MSG msg;
BOOL ret;

ST_TIME *st = (ST_TIME *)lpParam;

SetTimer(NULL, ID_TIMER_SECOND, 1000, NULL);
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);

while (!g_ThreadTerminated && (ret = GetMessage (&msg, NULL, 0, 0)) != 0)
{
if (ret == -1)
{
//process fatal event.
}
else if (msg.message == WM_TIMER)
{
TimeIncreaseSecond(*st);
PrintTimeToScreen(g_hStdout, g_cxCenter, g_cyCenter, *st);
}
else
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
return 1;
}
#endif

// If the ctrl+break combined key pressed. call this function.
// It set the g_DoneEvent. this terminate the program.
BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
{
switch (fdwCtrlType)
{
case CTRL_BREAK_EVENT:
// Terminate the program.
printf ("Terminate.\n");
SetEvent(g_DoneEvent);
return TRUE;
default:
return FALSE;
}
}

BOOL InitApplication()
{
// Get the stdin and stdout handle.
HANDLE hStdIn;
hStdIn = GetStdHandle(STD_INPUT_HANDLE);
if (hStdIn == INVALID_HANDLE_VALUE)
return FALSE;
g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
// Set the mode, make the input echo.
DWORD fOldMode;
GetConsoleMode(hStdIn, &fOldMode);
fOldMode |= ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT;
SetConsoleMode(hStdIn, fOldMode);

// Set the window buffer.
// make a line 40 columns.
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
GetConsoleScreenBufferInfo(g_hStdout, &csbiInfo);
csbiInfo.srWindow.Right = 40;

// get the center point.
g_cxCenter = csbiInfo.srWindow.Right / 2;
g_cyCenter = csbiInfo.srWindow.Bottom / 2;

// Set the window.
SetConsoleWindowInfo(g_hStdout, TRUE, &csbiInfo.srWindow);
return TRUE;
}

BOOL (HANDLE hStdout, WORD cxCenter, WORD cyCenter, ST_TIME & time)
{
#define GAPS_LEFT_COLON (-2)
#define GAPS_RIGHT_COLON (1)
#define GAPS_LEFT_UNDERLINE_START (-4)
#define GAPS_MIDDLE_UNDERLINE_START (-1)
#define GAPS_RIGHT_UNDERLINE_START (2)
// __:__:__
// So the left ":" center -2
// so the right ":" center + 1
// so the left "_" center - 4;
// so the lfet "_" center - 1;
// so the right "_" center + 2;
COORD crdPos;
crdPos.X = cxCenter + GAPS_LEFT_COLON;
crdPos.Y = cyCenter;
SetConsoleCursorPosition(hStdout, crdPos);
printf (":");

crdPos.X = cxCenter + GAPS_RIGHT_COLON;
SetConsoleCursorPosition(hStdout, crdPos);
printf (":");
crdPos.X = cxCenter + GAPS_LEFT_UNDERLINE_START;
SetConsoleCursorPosition(hStdout, crdPos);

scanf ("%d", &time.hour);
crdPos.X = cxCenter + GAPS_MIDDLE_UNDERLINE_START;
SetConsoleCursorPosition(hStdout, crdPos);
scanf ("%d", &time.min);
crdPos.X = cxCenter + GAPS_RIGHT_UNDERLINE_START;
SetConsoleCursorPosition(hStdout, crdPos);
scanf ("%d", &time.sec);

if (time.hour < 0 || time.hour > HOUR_CIRCLE ||
time.min < 0 || time.min > MINUTE_CIRCLE ||
time.sec < 0 || time.sec > SECOND_CIRCLE)
return FALSE;
return TRUE;
}

int main(int argc, char* argv[])
{
InitApplication();
(g_hStdout, g_cxCenter, g_cyCenter, g_Time);

// create a event to tell the program to terminate.
g_DoneEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
#ifdef USE_TIMERQUEUE
HANDLE hTimerQueue, hTimer;
hTimerQueue = CreateTimerQueue();
if (!CreateTimerQueueTimer(&hTimer,
hTimerQueue, TimerRoutine, &g_Time, 1000, 0, 0))
{
printf("CreateTimerQueueTimer failed (%d)\\n", GetLastError());
return 3;
}
#else
// create the thread.
HANDLE hThreadTimer;
DWORD dwThreadId;
g_ThreadTerminated = FALSE;
hThreadTimer = CreateThread(NULL, 0,
TimerThreadProc, &g_Time, 0, &dwThreadId);
if (hThreadTimer == NULL)
{
}
#endif
SetConsoleCtrlHandler(CtrlHandler, TRUE);
if (WaitForSingleObject(g_DoneEvent, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)\\n", GetLastError());
#ifdef USE_TIMERQUEUE
if (!DeleteTimerQueue(hTimerQueue))
printf("DeleteTimerQueue failed(%d) \\n", GetLastError());
#else
g_ThreadTerminated = TRUE;
if (WaitForSingleObject(hThreadTimer, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)\\n", GetLastError());
#endif
return 0;
}

--------------------------------------------
下面是纯c的。
有几个问题:
1.textmode函数在turboc中没有办法使用,不知道是什么问题,而borland c就可以。
2.无论怎么设置,自己的ctrlbreak函数在上述两个环境中都不能被调用,非常遗憾。所以不能够优雅的退出。只能按两次ctrlbreak。
下面是程序。
------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define ABORT 0

int jump_out_loop = -1;
int jump_out(void)
{
jump_out_loop = 1;
printf("Abort ..\n");
return ABORT;
}
int main(void)
{
struct text_info ti;
int center_x, center_y;
int hour, min, sec;
char str_out[64] = {0};
clrscr();
/*textmode(BW40);*/
/*textmode在turbo c下设置会出问题*/
gettextinfo(&ti);
center_x = ti.winright / 2;
center_y = ti.winbottom / 2;
gotoxy(center_x - 4, center_y);
cprintf(" : : ");
gotoxy(center_x - 4, center_y);
cscanf("%d", &hour);
gotoxy(center_x - 1, center_y);
cscanf("%d", &min);
gotoxy(center_x + 2, center_y);
cscanf("%d", &sec);
/* check input valid or not */
{}
setcbrk(1);
ctrlbrk(jump_out);
/*jump_out没有起到作用,实在不好意思.*/
/*
if (getcbrk())
printf("crtl break is on\n");
else
printf("is off\n");
*/

while (1)
{
delay(1000);
sec++;
if (sec >= 60)
{
sec -= 60;
min++;
if (min >= 60)
{
min -= 60;
hour++;
if (hour >= 24)
{
hour -= 24;
}
}
}
sprintf(str_out, "%02d:%02d:%02d", hour, min, sec);
gotoxy(center_x - 4, center_y);
cprintf(str_out);
}
/* getch();*/
return 0;
}

5. C语言与模拟电子技术,数字电子技术的联系

模拟电路就像人的嘴巴(嘴巴可以张大缩小),眼睛(左/右/上/下/转),手(拉,拽,托等动词),脚(跑,走等);嘴巴,眼睛,手,脚这些动作所花的时间和幅度(就是频率) 一 一对应,嘴巴张大和缩小必须要保持一个标准的恰到好处的,那说话就不会很累,属正状态 但遇到你不喜欢的人不想搭理他,懒着和他讲话,产生一种对抗的状态,负状态,通过正负状态这个过程你知道人有时莫名奇妙生气或者开心可以理解为模拟量,但干扰性很差,环境影响比较多嘈杂声淹没你的声音,为了让别人知道你的声音,你会作一些让他们注意到你,发现你的状态是好是坏就是放大。
数字电路:可以这样理解 上楼梯一高一低,模拟是一个大量,数字就是在这个模拟人开心的状态,我用1表示,心情低落时用0表示,这样的好处就是防干扰会好点,比如:我要上班,我可以用很多种方法上班,我分析一下哪个是最有效率的方法执行。一次两次反反复复就形成了一套自己的方法。
C语言:就像人的大脑,有思想 早晨起来洗脸,刷牙我会用思想来控制那些手啊脚啊等(可以理解为元件分工功能模块),简单粗略说一下。
这样分析,你就能知道他们之间的关系了,缺一不可。

6. C语言里从原码到反码与数字电路里从原码到反码的表示方法相不相同

必须相同的呀。在硬件上只是在加法器的外面加上了一个求补器,一样的原理。。

观楼主英俊潇洒,风流倜傥,必当世豪杰,大侠闲暇之余,关注0x30网络贴吧,必成千秋霸业,建不世之功。

7. 数字电路(a⊕b)⊕(c⊕d )实现了什么功能

先把表达式化简,然后画出真值表。就可以出出是实现什么功能。

8. 学PLC是不是要先学习数字电路和C语言

不用。
只要掌握一般电力拖动控制线路即可。本人工作需要,有人稍微指点了一下梯形图的基本知识,实际就是线圈、按钮等强电控制的翻版,相当于汉语与英语吧。
强电的电器原理图之于梯形图,就像汉语是我们的官方语言,普通话,而梯形图,特定场合下的特殊语言,通俗的讲,梯形图是PIC的通用语言,您到了英美使馆,只好讲英语。用PLC,最直接的机器语言,就是梯形图。
当然,随着不断的深入,您会发现PLC具有无限可操性,您有多丰富的想象,PLC就能实现什么样的功能。
梯形图的基本原则是“路径唯一”,我的理解是每一个元件指向它的和它所指向的(表述的并不十分清楚和恰当)路径唯一。这是一个顺序问题,即逻辑上的,还有就是有时候逻辑是对的,还要考虑时序,即先后顺序,器件的扫描时间、分辨率等,说不太好。最直接的办法,手头如有PLC,按照自己的思路写一段程序,监控PLC,实践一下。抛砖引玉,惭愧!

9. 我是计算机专业的大一女生,我们学了C语言,数字电子技术基础,我们现在比较闲,所以想自学些东西

ppt制作

ps
matlab
web制作
Js语言(以上是按重要性排序)
我也是计算机的,编程才是王道

10. 数字电路

不错 呵呵 另外回答一下楼上的 20 时序电路不含有记忆功能的器件 这是错误的 时序电路肯定有触发器这样的记忆电路 所以原题正确

阅读全文

与C数字电路了相关的资料

热点内容
深圳格力空调维修售后 浏览:820
潮湿环境下维修使用多少伏 浏览:681
油棒电路图 浏览:875
小汽车拉瓦维修多少钱 浏览:795
英之腾家具 浏览:587
全富家具 浏览:476
安家电视剧怎么做微信推广 浏览:596
日照家电一套多少钱 浏览:972
红木家具式样 浏览:2
大赢家电影什么时候可以看 浏览:74
苹果没有保修卡能保修 浏览:867
扬州美的空调售后维修电话 浏览:881
樱花校园怎么创造家具 浏览:954
浙江世康家具 浏览:212
迈腾变速箱坏保修 浏览:207
电动车轮胎的保修期 浏览:102
林木家具沙发 浏览:361
衡阳市王中王家具 浏览:82
维修十项原则是什么 浏览:254
兰图腾家具 浏览:798