導航:首頁 > 電器電路 > 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數字電路了相關的資料

熱點內容
電子家電維修怎樣 瀏覽:925
黃樟木傢具屬於什麼檔次 瀏覽:620
汽車維修如何集客 瀏覽:28
交流電路元件參數的測定實驗報告 瀏覽:240
億健跑步機官方維修電話 瀏覽:195
壁掛爐電路板 瀏覽:484
濰坊鼎新防水廠在什麼地方 瀏覽:965
大眾邁騰電路圖 瀏覽:234
西寧百家居裝飾 瀏覽:129
晚安家居真皮床 瀏覽:314
考斯特電路 瀏覽:9
隧道有水怎麼做防水 瀏覽:637
牆上防水漆怎麼選 瀏覽:884
深圳全鋁傢具有哪些 瀏覽:958
水泥基防水怎麼快速鏟除 瀏覽:752
畫電路板的軟體 瀏覽:6
看別人家電腦視頻怎麼下載 瀏覽:457
蘇寧易購售後維修點電話 瀏覽:315
防水卷材為什麼要粘上 瀏覽:811
大連酒店傢具 瀏覽:869